  /* ---- Cameras Decoded dashboard design language (audited 2026-09-11) ---- */
  :root{
    --green:#8deb00; --green-2:#b6ff45;
    --green-dim:rgba(141,235,0,.07); --green-glow:rgba(141,235,0,.22);
    --bg:#050705; --dark:#08080a;
    --surface:#0e0f11; --surface-2:#131518;
    --border:rgba(255,255,255,.08); --border-strong:rgba(255,255,255,.14);
    --text:#f7f8f5; --secondary:rgba(255,255,255,.66); --muted:rgba(255,255,255,.42);
  }
  @property --angle { syntax:'<angle>'; initial-value:0deg; inherits:false; }
  *{box-sizing:border-box; -webkit-tap-highlight-color:transparent;}
  html{scroll-behavior:smooth;}
  body{
    margin:0; background:var(--bg); color:var(--text);
    font-family:Montserrat,system-ui,-apple-system,"Segoe UI",sans-serif;
    font-size:15px; line-height:1.5;
    min-height:100vh;
    padding-bottom:calc(48px + env(safe-area-inset-bottom,0px));
  }
  /* ---- shared-chrome guard (2026-09-15) ----
     /styles/design-system.css is injected site-wide by master-loader AFTER this
     stylesheet and restyles body as a centered flex container
     (display:flex;justify-content:center;align-items:center;padding:20px),
     which collapses the Darkroom's own layout on every device and browser.
     The Darkroom manages its own layout, so opt out explicitly. !important:
     the shared sheet loads later and would otherwise win. */
  body{display:block !important;justify-content:normal !important;align-items:normal !important;
    padding:0 !important;padding-bottom:calc(48px + env(safe-area-inset-bottom,0px)) !important;}
  body::before{ /* fixed green glow + blueprint grid, per dashboard */
    content:""; position:fixed; inset:0; z-index:-1; pointer-events:none;
    background:
      radial-gradient(50% 40% at 20% 30%, rgba(141,235,0,.12), transparent 50%),
      radial-gradient(45% 40% at 80% 70%, rgba(141,235,0,.08), transparent 45%),
      repeating-linear-gradient(0deg, rgba(141,235,0,.04) 0 1px, transparent 1px 24px),
      repeating-linear-gradient(90deg, rgba(141,235,0,.04) 0 1px, transparent 1px 24px),
      var(--bg);
  }
  .mono{font-family:"Space Mono",ui-monospace,monospace;}

  /* ---- sticky topbar (dashboard mobile-head language) ---- */
  .topbar{
    position:sticky; top:0; z-index:50;
    background:rgba(8,8,10,.82); -webkit-backdrop-filter:blur(14px); backdrop-filter:blur(14px);
    border-bottom:1px solid var(--border);
  }
  .topbar-in{max-width:820px;margin:0 auto;height:66px;display:flex;align-items:center;gap:12px;padding:0 20px;}
  .mark{width:34px;height:34px;border-radius:10px;background:var(--green);display:grid;place-items:center;
    font:700 15px "Space Mono",monospace;color:#0b0e08;box-shadow:0 0 18px var(--green-glow);flex:0 0 auto;}
  .topbar-titles{min-width:0;flex:1;}
  .topbar-titles b{display:block;font-size:14px;letter-spacing:-.01em;}
  .topbar-titles span{font-size:10px;color:var(--muted);font-family:"Space Mono",monospace;letter-spacing:.14em;text-transform:uppercase;}
  .xp-pill{display:flex;align-items:center;gap:8px;min-height:44px;padding:0 14px;border:1px solid var(--border-strong);
    border-radius:12px;background:var(--surface);font:700 12px "Space Mono",monospace;}
  .xp-pill b{color:var(--green);font-size:14px;}

  .wrap{max-width:820px;margin:0 auto;padding:26px 20px 0;}

  /* ---- hero ---- */
  .eyebrow{font:700 10px "Space Mono",monospace;letter-spacing:.16em;text-transform:uppercase;color:var(--green);margin:0 0 10px;}
  h1{margin:0 0 10px;font-size:clamp(28px,6vw,42px);line-height:1.06;letter-spacing:-.04em;font-weight:800;max-width:16em;}
  h1 .g{color:var(--green);text-shadow:0 0 26px rgba(141,235,0,.4);}
  .lede{margin:0 0 20px;color:var(--secondary);font-size:14px;max-width:60ch;}

  /* ---- tree switcher ---- */
  .switch-label{font:700 10px "Space Mono",monospace;letter-spacing:.14em;color:var(--muted);text-transform:uppercase;margin:0 0 10px;}
  /* signature text shimmer (Field Manual .fm-mshimmer recipe — white sheen):
     a slow bright sweep across the label. Static under reduced motion. */
  @keyframes drShimmer{to{background-position:-200% 0;}}
  .dr-shimmer{
    background:linear-gradient(100deg,rgba(255,255,255,.42) 40%,rgba(255,255,255,.95) 50%,rgba(255,255,255,.42) 60%);
    background-size:200% 100%;-webkit-background-clip:text;background-clip:text;
    -webkit-text-fill-color:transparent;color:transparent;}
  @media (prefers-reduced-motion:no-preference){
    .dr-shimmer{animation:drShimmer 4.5s linear infinite;}
  }
  .switcher{display:flex;gap:10px;overflow-x:auto;padding:2px 2px 10px;margin:0 -2px;scrollbar-width:none;}
  .switcher::-webkit-scrollbar{display:none;}
  .tree-pill{flex:0 0 auto;display:flex;align-items:center;gap:10px;min-height:52px;padding:8px 16px 8px 10px;
    position:relative;border-radius:14px;border:1px solid transparent;color:var(--green);
    background:
      linear-gradient(120deg,rgba(255,255,255,.10),rgba(255,255,255,0) 42%),
      linear-gradient(165deg,rgba(141,235,0,.20) 0%,rgba(141,235,0,.07) 60%,rgba(141,235,0,.13) 100%);
    box-shadow:inset 0 1px 0 rgba(255,255,255,.09),0 6px 22px rgba(141,235,0,.10);
    font:700 13px Montserrat,system-ui,sans-serif;cursor:pointer;transition:transform .18s ease,filter .18s ease;}
  .tree-pill::before{
    content:'';position:absolute;inset:-0.5px;border-radius:inherit;padding:0.5px;
    background:conic-gradient(from var(--angle),transparent 20%,var(--green) 40%,transparent 60%,var(--green) 80%,transparent 100%);
    -webkit-mask:linear-gradient(#000,#000) content-box,linear-gradient(#000,#000);
    -webkit-mask-composite:xor;mask:linear-gradient(#000,#000) content-box,linear-gradient(#000,#000);
    mask-composite:exclude;pointer-events:none;opacity:.35;}
  .tree-pill small{font:700 9px "Space Mono",monospace;letter-spacing:.1em;color:var(--muted);}
  .tree-pill .tp-ic{width:36px;height:36px;border-radius:10px;background:var(--green-dim);display:grid;place-items:center;flex:0 0 auto;}
  .tree-pill .tp-ic svg{width:18px;height:18px;color:var(--green);}
  .tree-pill[aria-pressed="true"]{box-shadow:inset 0 1px 0 rgba(255,255,255,.09),0 0 18px rgba(141,235,0,.30);}
  .tree-pill[aria-pressed="true"]::before{opacity:.7;}
  .tree-pill.soon{opacity:.55;cursor:not-allowed;}
  .tree-pill.soon::before{animation:none;opacity:.22;}
  .tree-pill.soon .soon-tag{font:700 9px "Space Mono",monospace;color:#0b0e08;background:var(--green);
    border-radius:6px;padding:3px 7px;letter-spacing:.08em;}
  .tree-pill:not(.soon):active{transform:scale(.97);}
  .tree-pill:focus-visible{outline:3px solid var(--green);outline-offset:2px;}
  @media (prefers-reduced-motion:no-preference){
    .tree-pill::before{animation:drSpin 6s linear infinite;}
  }

  /* ---- up next: neon border card (static glow; the animated conic border corrupts mobile Safari compositing) ---- */
  .chase{position:relative;border-radius:18px;background:var(--surface);border:1px solid rgba(141,235,0,.45);
    box-shadow:0 0 22px rgba(141,235,0,.14), 0 24px 65px rgba(0,0,0,.25);}
  .upnext{margin:18px 0 6px;padding:18px;display:grid;grid-template-columns:1fr;gap:14px;
    box-shadow:0 24px 65px rgba(0,0,0,.25);animation:cardEnter .4s cubic-bezier(.22,1,.36,1);
    background-image:url('/media/dossier-weave.jpg');background-size:640px auto;background-blend-mode:soft-light;}
  @keyframes cardEnter{from{opacity:0;transform:translateY(6px);}to{opacity:1;transform:none;}}
  .upnext-top{display:flex;align-items:center;gap:12px;}
  .upnext-ic{width:52px;height:52px;border-radius:14px;background:var(--green-dim);display:grid;place-items:center;flex:0 0 auto;}
  .upnext-ic svg{width:26px;height:26px;color:var(--green);}
  .upnext-top h2{margin:0;font-size:19px;letter-spacing:-.02em;}
  .upnext-top p{margin:3px 0 0;font-size:12.5px;color:var(--secondary);}
  .upnext-meta{display:flex;align-items:center;gap:10px;font:700 10px "Space Mono",monospace;letter-spacing:.08em;color:var(--muted);text-transform:uppercase;}
  .upnext-meta .pips{display:flex;gap:4px;}
  .pips i{width:16px;height:5px;border-radius:4px;background:rgba(255,255,255,.12);}
  .pips i.on{background:var(--green);box-shadow:0 0 8px rgba(141,235,0,.6);}

  /* ---- buttons (dashboard language) ---- */
  .btn{min-height:46px;border:0;border-radius:10px;padding:0 17px;cursor:pointer;
    font:800 12px Montserrat,system-ui,sans-serif;letter-spacing:.02em;
    display:inline-flex;align-items:center;justify-content:center;gap:9px;transition:transform .1s;}
  .btn:active{transform:scale(.97);}
  .btn:focus-visible{outline:3px solid var(--green);outline-offset:2px;}
  .btn-primary{background:var(--green);color:#0b0e08;box-shadow:0 8px 24px rgba(141,235,0,.13);}
  .btn-primary:hover{background:var(--green-2);}
  .btn-ghost{background:transparent;color:var(--text);border:1px solid var(--border-strong);}
  .btn-ghost:hover{background:rgba(255,255,255,.04);}
  .btn:disabled{opacity:.4;cursor:not-allowed;}
  .btn[aria-disabled="true"]{opacity:.4;pointer-events:none;}

  /* ---- signature chase CTA (dashboard hero recipe, page-unique class) ----
     .dr-chase carries the green-glass gradient, neon text, and animated conic
     border. Unique name because master-loader injects the shared
     components.css AFTER this sheet, and its generic .btn-primary would
     flatten the chase back to solid green (same collision as challenge.html
     PR #160). The animated border stays off the .upnext card itself — the
     conic animation corrupts mobile Safari compositing at card scale. */
  @keyframes drSpin{to{--angle:360deg;}}
  .dr-chase{
    position:relative;display:inline-flex;align-items:center;justify-content:center;gap:9px;
    min-height:46px;border-radius:10px;padding:0 17px;border:1px solid transparent;
    background:
      linear-gradient(120deg,rgba(255,255,255,.10),rgba(255,255,255,0) 42%),
      linear-gradient(165deg,rgba(141,235,0,.20) 0%,rgba(141,235,0,.07) 60%,rgba(141,235,0,.13) 100%);
    color:var(--green);
    box-shadow:inset 0 1px 0 rgba(255,255,255,.09),0 6px 22px rgba(141,235,0,.10);
    font:800 12px Montserrat,system-ui,sans-serif;letter-spacing:.02em;
    cursor:pointer;text-decoration:none;transition:transform .18s ease,filter .18s ease;}
  .dr-chase::before{
    content:'';position:absolute;inset:-0.5px;border-radius:inherit;padding:0.5px;
    background:conic-gradient(from var(--angle),transparent 20%,var(--green) 40%,transparent 60%,var(--green) 80%,transparent 100%);
    -webkit-mask:linear-gradient(#000,#000) content-box,linear-gradient(#000,#000);
    -webkit-mask-composite:xor;mask:linear-gradient(#000,#000) content-box,linear-gradient(#000,#000);
    mask-composite:exclude;pointer-events:none;opacity:.35;}
  @media (prefers-reduced-motion:no-preference){
    .dr-chase::before{animation:drSpin 6s linear infinite;}
  }
  .dr-chase:hover{filter:brightness(1.12);}
  .dr-chase:active{transform:scale(.97);}
  .dr-chase:disabled{opacity:.4;cursor:not-allowed;filter:none;transform:none;}
  .dr-chase:focus-visible{outline:3px solid var(--green);outline-offset:2px;}
  .drills{display:grid;gap:8px;margin-top:10px;}
  .drills:empty{display:none;}
  .drills .btn{text-decoration:none;}

  /* ---- joined stat card ---- */
  .stats{margin:20px 0 4px;background:var(--surface);border:1px solid var(--border);border-radius:14px;overflow:hidden;
    display:grid;grid-template-columns:repeat(3,1fr);animation:cardEnter .4s cubic-bezier(.22,1,.36,1);}
  .stat{padding:16px 8px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:7px;}
  .stat + .stat{border-left:1px solid var(--border);}
  .stat-ic{width:36px;height:36px;border-radius:10px;background:var(--green-dim);display:grid;place-items:center;}
  .stat-ic svg{width:16px;height:16px;color:var(--green);}
  .stat b{font:700 18px "Space Mono",monospace;font-variant-numeric:tabular-nums;}
  .stat span{font-size:10px;color:var(--muted);letter-spacing:.03em;}

  .legend{display:flex;flex-wrap:wrap;gap:8px 16px;justify-content:center;margin:20px 0 4px;}
  .legend span{font:400 10px "Space Mono",monospace;letter-spacing:.06em;color:var(--muted);text-transform:uppercase;display:flex;align-items:center;}
  .legend i{width:12px;height:12px;border-radius:50%;display:inline-block;margin-right:7px;}

  /* ---- branch banner: wide, short, GIF-ready, placeholder-first ---- */
  .branch{margin:30px 0 10px;animation:cardEnter .4s cubic-bezier(.22,1,.36,1);}
  .branch-banner{
    position:relative;border-radius:18px;overflow:hidden;
    aspect-ratio:21/8; min-height:132px;
    border:1px solid var(--border-strong);background:var(--surface);
    display:flex;align-items:flex-end;
  }
  .branch-banner img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:1;}
  .banner-ph{position:absolute;inset:0;z-index:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;
    border:1.5px dashed rgba(141,235,0,.35);border-radius:18px;margin:0;text-align:center;padding:12px;
    background:linear-gradient(135deg, rgba(141,235,0,.05), rgba(141,235,0,.015));}
  .banner-ph code{font:700 11px "Space Mono",monospace;color:var(--green);letter-spacing:.04em;}
  .banner-ph em{font:400 10px "Space Mono",monospace;color:var(--muted);font-style:normal;letter-spacing:.06em;}
  .banner-shade{position:absolute;inset:0;z-index:2;pointer-events:none;
    background:linear-gradient(180deg, rgba(5,7,5,0) 30%, rgba(5,7,5,.55) 70%, rgba(5,7,5,.85));}
  .banner-meta{position:relative;z-index:3;display:flex;align-items:center;gap:12px;padding:16px;width:100%;}
  .branch-dot{width:13px;height:13px;border-radius:50%;flex:0 0 auto;box-shadow:0 0 14px currentColor;}
  .banner-meta h2{margin:0;font-size:clamp(18px,4.5vw,24px);font-weight:800;letter-spacing:-.03em;text-shadow:0 2px 12px rgba(0,0,0,.6);}
  .banner-meta h2 .branch-title-img{max-width:200px;width:100%;height:auto;display:block;}
  .page-title-img{max-width:280px;width:100%;height:auto;display:block;}
  .banner-meta p{margin:3px 0 0;font-size:12px;color:var(--secondary);text-shadow:0 1px 8px rgba(0,0,0,.6);}
  .banner-count{position:absolute;z-index:3;top:12px;right:14px;font:700 10px "Space Mono",monospace;letter-spacing:.08em;
    color:var(--green-2);background:rgba(5,5,6,.72);border:1px solid var(--border-strong);border-radius:7px;padding:5px 9px;}
  .branch-track{height:6px;border-radius:6px;background:#25282b;margin:0 4px;overflow:hidden;transform:translateY(-3px);position:relative;z-index:4;}
  .branch-track i{display:block;height:100%;border-radius:6px;background:var(--green);box-shadow:0 0 12px var(--green-glow);}

  /* ---- winding path ---- */
  .path{position:relative;display:flex;flex-direction:column;align-items:center;padding:8px 0 4px;}
  .path::before{content:"";position:absolute;top:0;bottom:0;width:3px;border-radius:3px;
    background:linear-gradient(180deg, rgba(141,235,0,.32), rgba(141,235,0,.06));}
  .node-row{position:relative;display:flex;flex-direction:column;align-items:center;padding:13px 0;z-index:1;}
  @media(min-width:640px){
    .node-row:nth-child(odd){transform:translateX(-58px);}
    .node-row:nth-child(even){transform:translateX(58px);}
  }
  .node{position:relative;width:76px;height:76px;border-radius:50%;border:2px solid rgba(255,255,255,.16);cursor:pointer;
    display:grid;place-items:center;color:var(--text);
    background:radial-gradient(circle at 35% 30%, #1d2025, #101214 70%);
    transition:transform .15s ease, box-shadow .15s ease, border-color .15s;}
  .node svg{width:30px;height:30px;}
  .node:hover{transform:scale(1.06);}
  .node:active{transform:scale(.97);}
  .node:focus-visible{outline:3px solid var(--green);outline-offset:3px;}
  .node[data-state="locked"]{color:rgba(255,255,255,.25);border-style:dashed;cursor:not-allowed;}
  .node[data-state="locked"]:hover{transform:none;}
  .node[data-state="available"]{border-color:var(--green);animation:pulse 2.2s infinite;}
  .node[data-state="available"] svg{color:var(--green);}
  @keyframes pulse{0%,100%{box-shadow:0 0 0 0 rgba(141,235,0,.35);}50%{box-shadow:0 0 0 10px rgba(141,235,0,0);}}
  .node[data-state="in-progress"]{border-color:var(--green);}
  .node[data-state="in-progress"] svg{color:var(--green);}
  .node[data-state="complete"]{border-color:var(--green);
    background:radial-gradient(circle at 35% 30%, rgba(141,235,0,.32), rgba(141,235,0,.07) 70%);
    box-shadow:0 0 22px rgba(141,235,0,.4);}
  .node[data-state="complete"] svg{color:var(--green);}
  .node[data-state="mastered"]{border-color:var(--green);
    background:radial-gradient(circle at 35% 30%, rgba(141,235,0,.5), rgba(141,235,0,.14) 70%);
    box-shadow:0 0 30px rgba(141,235,0,.65);}
  .node[data-state="mastered"] svg{color:#eaffd0;}
  .crown{position:absolute;top:-9px;right:-5px;width:26px;height:26px;border-radius:50%;background:var(--green);
    display:grid;place-items:center;box-shadow:0 0 14px rgba(141,235,0,.8);}
  .crown svg{width:14px;height:14px;color:#0a0f00;}
  .ring{position:absolute;inset:-2px;transform:rotate(-90deg);pointer-events:none;}
  .ring circle{fill:none;stroke-width:3;}
  .ring .bg{stroke:rgba(255,255,255,.1);}
  .ring .fg{stroke:var(--green);stroke-linecap:round;filter:drop-shadow(0 0 4px rgba(141,235,0,.8));}
  .node-label{margin-top:10px;text-align:center;max-width:180px;}
  .node-label b{display:block;font-size:13px;font-weight:700;letter-spacing:-.01em;}
  .node-label span{font:400 10px "Space Mono",monospace;color:var(--muted);}
  .node-row[data-state="locked"] .node-label b{color:var(--muted);}
  .node-label .pips{display:flex;gap:4px;justify-content:center;margin-top:6px;}

  /* ---- bottom sheet ---- */
  .scrim{position:fixed;inset:0;z-index:90;background:rgba(0,0,0,.72);display:flex;align-items:flex-end;justify-content:center;
    opacity:0;pointer-events:none;transition:opacity .2s ease;}
  .scrim.open{opacity:1;pointer-events:auto;}
  .sheet{position:relative;width:100%;max-width:560px;max-height:84vh;overflow:auto;background:var(--surface);
    border:1px solid var(--border-strong);border-bottom:0;border-radius:20px 20px 0 0;
    padding:10px 20px calc(22px + env(safe-area-inset-bottom,0px));
    transform:translateY(18px);transition:transform .2s ease;}
  .scrim.open .sheet{transform:none;}
  .handle{width:42px;height:4px;border-radius:4px;background:rgba(255,255,255,.22);margin:6px auto 14px;}
  .sheet-top{display:flex;gap:14px;align-items:center;margin-bottom:4px;}
  .sheet-icon{width:56px;height:56px;border-radius:14px;display:grid;place-items:center;flex:0 0 auto;
    background:var(--green-dim);border:1px solid rgba(141,235,0,.3);}
  .sheet-icon svg{width:27px;height:27px;color:var(--green);}
  .sheet-top h2{margin:0;font-size:20px;letter-spacing:-.02em;}
  .sheet-top p{margin:4px 0 0;font-size:13px;color:var(--secondary);}
  .lvl-row{display:flex;align-items:center;gap:12px;margin:16px 0 8px;}
  .lvl-row .pips{display:flex;gap:4px;}
  .lvl-row span{font:400 11px "Space Mono",monospace;color:var(--muted);}
  .xpbar{height:6px;border-radius:10px;background:#25282b;overflow:hidden;margin:6px 0 14px;}
  .xpbar i{display:block;height:100%;background:var(--green);border-radius:10px;box-shadow:0 0 12px var(--green-glow);}
  .req{font-size:12px;color:var(--muted);margin:0 0 16px;}
  .req b{color:var(--text);}
  .theory-link{display:block;margin:2px 0 14px;font-size:13px;color:var(--green);text-decoration:none;font-weight:600;}
  .theory-link:active{opacity:.7}
  .unlock-head{display:block;font-size:12px;color:var(--muted);margin-bottom:8px;}
  .unlock-row{margin:0 0 10px;}
  .unlock-top{display:flex;justify-content:space-between;align-items:baseline;font-size:12px;margin-bottom:2px;}
  .unlock-top b{color:var(--text);font-weight:600;}
  .unlock-top span{color:var(--muted);font-variant-numeric:tabular-nums;}
  .unlock-row .xpbar{margin:2px 0 0;}
  .unlock-how{display:block;font-size:12px;color:var(--muted);margin-top:12px;}
  .unlock-how b{color:var(--text);}
  /* subtle shimmer on the how-to-earn line — reuses the sheet's shimmer keyframes */
  .unlock-how{
    background:linear-gradient(90deg, var(--muted) 30%, #f2f7ee 50%, var(--muted) 70%);
    background-size:200% 100%;
    -webkit-background-clip:text;background-clip:text;
    -webkit-text-fill-color:transparent;color:transparent;
    animation:shimmer 2.8s linear infinite;}
  @media (prefers-reduced-motion:reduce){ .unlock-how{animation:none;} }
  .unlock-path{display:block;font-size:13.5px;color:var(--text);margin-top:10px;line-height:1.5;}
  .unlock-path b{color:#8deb00;}
  .actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
  @media(max-width:480px){.actions{grid-template-columns:1fr;}.btn{width:100%;}}
  .close-x{position:absolute;top:16px;right:16px;width:44px;height:44px;border-radius:12px;border:1px solid var(--border-strong);
    background:var(--surface-2);color:var(--text);cursor:pointer;display:grid;place-items:center;}
  .close-x:hover{background:#1b1f24;}
  .close-x svg{width:18px;height:18px;}

  .toast{position:fixed;left:50%;bottom:calc(24px + env(safe-area-inset-bottom,0px));transform:translate(-50%,20px);
    background:#16191d;border:1px solid rgba(141,235,0,.4);color:var(--text);font-size:13px;font-weight:600;
    padding:12px 18px;border-radius:14px;opacity:0;pointer-events:none;transition:all .25s ease;z-index:120;
    max-width:90vw;text-align:center;}
  .toast.show{opacity:1;transform:translate(-50%,0);}

  .foot-note{margin:34px 0 8px;text-align:center;font:400 10px "Space Mono",monospace;letter-spacing:.1em;color:var(--muted);text-transform:uppercase;}

  @media (prefers-reduced-motion:reduce){
    .node[data-state="available"]{animation:none;}
    .scrim,.sheet,.toast,.upnext,.branch{animation:none;transition:none;}
    html{scroll-behavior:auto;}
  }

  /* ================= production shell additions (not in demo) ================= */

  /* skip link */
  .skip-link{position:absolute;left:-999px;top:0;background:var(--green);color:#0b0e08;
    font:700 12px "Space Mono",monospace;padding:10px 16px;border-radius:0 0 10px 0;z-index:200;}
  .skip-link:focus{left:0;}

  /* app layout: sidebar on desktop, content column */
  .app{display:flex;min-height:100vh;}
  .sidebar{
    width:248px;flex:0 0 auto;position:sticky;top:0;height:100vh;overflow:auto;
    border-right:1px solid var(--border);background:rgba(8,8,10,.7);
    padding:22px 14px;display:flex;flex-direction:column;gap:4px;
  }
  .side-brand{display:flex;align-items:center;gap:10px;padding:4px 10px 18px;}
  .side-brand b{font-size:14px;letter-spacing:-.01em;display:block;}
  .side-brand span{font:700 9px "Space Mono",monospace;letter-spacing:.14em;color:var(--muted);text-transform:uppercase;}
  .side-link{display:flex;align-items:center;gap:12px;min-height:48px;padding:0 12px;border-radius:12px;
    color:var(--secondary);text-decoration:none;font-size:13.5px;font-weight:600;
    border:1px solid transparent;}
  .side-link svg{width:19px;height:19px;flex:0 0 auto;}
  .side-link:hover{background:var(--surface-2);color:var(--text);}
  .side-link[aria-current="page"]{background:var(--green-dim);color:var(--green);border-color:rgba(141,235,0,.25);}
  .side-foot{margin-top:auto;padding-top:14px;border-top:1px solid var(--border);}
  .side-note{font:400 9px "Space Mono",monospace;color:var(--muted);letter-spacing:.06em;padding:10px 12px 0;}
  .content{flex:1;min-width:0;}
  /* NOTE: the mobile bottom nav is injected by /scripts/bottom-nav.js (≤820px).
     TODO (integrator): replace this <aside> with the canonical sidebar markup
     from operator-dashboard.html and keep the two in sync — the only addition
     is the Darkroom item (data-nav="darkroom", aria-current="page"). */
  @media (max-width:900px){ .sidebar{display:none;} }

  /* deep-link targets sit below the sticky topbar */
  .branch{scroll-margin-top:calc(84px + env(safe-area-inset-top));}

  /* fatal error state */
  .fatal{max-width:520px;margin:8vh auto;padding:18px 20px;text-align:center;
    border:1px solid rgba(255,90,90,.4);border-radius:14px;background:rgba(90,20,20,.25);
    font-size:14px;}

  /* loading skeleton while Firestore resolves */
  .tree-loading{padding:40px 0;text-align:center;color:var(--muted);
    font:400 11px "Space Mono",monospace;letter-spacing:.12em;text-transform:uppercase;}
  .tree-loading::after{content:"";display:block;width:180px;height:6px;margin:16px auto 0;border-radius:6px;
    background:linear-gradient(90deg, var(--surface-2) 25%, #1e2226 50%, var(--surface-2) 75%);
    background-size:200% 100%;animation:shimmer 1.4s linear infinite;}
  @keyframes shimmer{to{background-position:-200% 0;}}
  @media (prefers-reduced-motion:reduce){ .tree-loading::after{animation:none;} }

  /* ---- mobile tuning (audited 2026-09-15 at 390px) ---- */
  @media(max-width:480px){
    /* compact track pills so the row reads as swipeable instead of cut off */
    .tree-pill{min-height:48px;padding:6px 12px 6px 8px;gap:8px;font-size:12px;}
    .tree-pill .tp-ic{width:30px;height:30px;border-radius:8px;}
    .tree-pill .tp-ic svg{width:15px;height:15px;}
    .tree-pill small{font-size:8px;}
    /* keep the banner placeholder clear of the bottom-anchored title block */
    .banner-ph{justify-content:flex-start;padding-top:22px;}
    .banner-meta{padding:12px;}
    .banner-meta p{font-size:11px;}
  }

/* ================================================================
   INLINE LEARN — cinematic lessons & drills inside the skill sheet.
   Darkroom look throughout: black, neon, generous type. No redirects.
   ================================================================ */
#sheetLearn[hidden]{display:none;}
.dl-stage{padding:6px 2px 10px;animation:dlIn .38s cubic-bezier(.2,.7,.2,1);}
@keyframes dlIn{from{opacity:0;transform:translateY(14px);}to{opacity:1;transform:none;}}
.dl-back{background:none;border:0;color:var(--muted);font:inherit;font-size:13px;cursor:pointer;padding:6px 0;letter-spacing:.04em;}
.dl-back:hover{color:var(--text);}
.dl-eyebrow{font-family:"Space Mono",ui-monospace,monospace;font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:var(--green);margin:14px 0 10px;}
.dl-title{font-size:30px;line-height:1.12;letter-spacing:-.01em;margin:0 0 12px;font-weight:800;}
.dl-sub{color:var(--secondary);margin:0 0 16px;font-size:14.5px;line-height:1.6;}
.dl-meta{display:flex;gap:10px;align-items:center;color:var(--muted);font-family:"Space Mono",ui-monospace,monospace;font-size:12px;letter-spacing:.08em;margin:0 0 22px;}
.dl-meta span:first-child{color:var(--green);}
.dl-cta{width:100%;margin-top:6px;}
.dl-row{display:flex;gap:10px;margin-top:18px;}
.dl-row .btn{flex:1;}
.dl-alt{margin-top:10px;}
.dl-alt .btn{font-size:13px;padding:10px 8px;}
.dl-progress{display:flex;gap:6px;margin:2px 0 0;}
.dl-progress i{height:3px;flex:1;border-radius:2px;background:rgba(255,255,255,.12);}
.dl-progress i.on{background:var(--green);box-shadow:0 0 8px var(--green-glow);}
.dl-card-h{font-size:24px;line-height:1.2;margin:0 0 14px;font-weight:800;letter-spacing:-.01em;}
.dl-card-p{font-size:16.5px;line-height:1.75;color:var(--secondary);margin:0 0 8px;max-width:34em;}
.dl-q{font-size:21px;line-height:1.35;margin:0 0 18px;font-weight:700;letter-spacing:-.005em;}
.dl-opts{display:grid;gap:10px;margin:0 0 6px;}
.dl-opt{display:flex;gap:12px;align-items:flex-start;text-align:left;background:var(--surface);border:1px solid var(--border);border-radius:14px;color:var(--text);font:inherit;font-size:14.5px;line-height:1.5;padding:14px;cursor:pointer;transition:border-color .18s,background .18s,transform .18s;}
.dl-opt:hover:not(:disabled){border-color:var(--border-strong);transform:translateY(-1px);}
.dl-opt:disabled{cursor:default;opacity:.85;}
.dl-opt.right{border-color:var(--green);background:var(--green-dim);box-shadow:0 0 0 1px var(--green),0 0 18px var(--green-glow);}
.dl-opt.wrong{border-color:#ff5d5d;background:rgba(255,93,93,.07);box-shadow:0 0 0 1px rgba(255,93,93,.5);}
.dl-opt.right .dl-key{background:var(--green);color:#0b0e08;border-color:transparent;}
.dl-opt.wrong .dl-key{background:#ff5d5d;color:#140808;border-color:transparent;}
.dl-key{flex:0 0 auto;width:26px;height:26px;border-radius:8px;border:1px solid var(--border-strong);display:grid;place-items:center;font-family:"Space Mono",ui-monospace,monospace;font-size:12px;color:var(--muted);}
.dl-why{margin:14px 0 4px;padding:14px 16px;border-left:2px solid var(--green);background:rgba(255,255,255,.03);border-radius:0 12px 12px 0;color:var(--secondary);font-size:14px;line-height:1.6;}
.dl-why strong{color:var(--text);}
.dl-result{text-align:left;}
.dl-xp{display:flex;align-items:baseline;gap:12px;margin:18px 0 22px;padding:16px 18px;background:var(--green-dim);border:1px solid rgba(141,235,0,.25);border-radius:16px;}
.dl-xp.flat{background:rgba(255,255,255,.03);border-color:var(--border);}
.dl-xp-n{font-family:"Space Mono",ui-monospace,monospace;font-size:30px;font-weight:700;color:var(--green);}
.dl-xp.flat .dl-xp-n{color:var(--muted);}
.dl-xp-l{font-size:13px;color:var(--secondary);letter-spacing:.04em;}
@media (prefers-reduced-motion:reduce){
  .dl-stage{animation:none;}
  .dl-opt{transition:none;}
  .dl-opt:hover:not(:disabled){transform:none;}
}

/* ---- Learn gates: login + Pro ---- */
.dl-pro{display:inline-block;margin-left:8px;padding:2px 8px;border-radius:99px;background:var(--green);color:#0b0e08;font-family:"Space Mono",ui-monospace,monospace;font-size:10px;font-weight:700;letter-spacing:.14em;vertical-align:2px;}
.dl-plan-pick{display:block;text-align:center;text-decoration:none;}

.dl-fine{text-align:center;color:var(--muted);font-size:12px;margin:10px 0 4px;letter-spacing:.02em;}
