  html,body{background:#0b1220;overscroll-behavior:none;touch-action:manipulation}
  body{font-family:'Space Grotesk',sans-serif;-webkit-tap-highlight-color:transparent}
  .no-select{user-select:none;-webkit-user-select:none}
  .card{transition:border-color .15s,background .15s,opacity .15s}
  .can-afford{border-color:#3d8bff!important;cursor:pointer}
  .can-afford:hover{background:#1c2a45}
  .cant-afford{opacity:.62}
  body .card{background:rgba(20,30,51,.92)} /* v0.10.3 RJ#14: readable over the animated backdrop */
  .card.running .runzone{border-color:#3f5876}
  .working{animation:work .6s ease-in-out infinite}
  @keyframes work{0%,100%{transform:translateY(0) rotate(0)}25%{transform:translateY(-2px) rotate(-3deg)}75%{transform:translateY(-1px) rotate(3deg)}}
  .flash-good{animation:flashGood .5s ease}
  [data-card]:active{transform:scale(.985)}
  @keyframes flashGood{0%{background:rgba(61,220,132,.25)}100%{background:#141e33}}
  .floom{position:absolute;left:50%;top:26%;font-family:'JetBrains Mono',monospace;font-weight:800;pointer-events:none;animation:floomUp .9s ease-out forwards;z-index:30;white-space:nowrap}
  @keyframes floomUp{0%{opacity:1;transform:translate(-50%,0) scale(1)}100%{opacity:0;transform:translate(-50%,-70px) scale(1.15)}}
  .glow-num{text-shadow:0 0 24px rgba(61,139,255,.35)}
  .shake{animation:shake .25s ease}
  @keyframes shake{0%,100%{transform:translateX(0)}25%{transform:translateX(-4px)}75%{transform:translateX(4px)}}
  .toast-in{animation:toastIn .25s ease}
  @keyframes toastIn{from{opacity:0;transform:translate(-50%,10px)}to{opacity:1;transform:translate(-50%,0)}}
  .hint-pulse{animation:hintPulse 1.2s ease-in-out infinite}
  @keyframes hintPulse{0%,100%{opacity:.6}50%{opacity:1}}
  .mgr-dot{animation:mgrDot 1.6s ease-in-out infinite}
  @keyframes mgrDot{0%,100%{opacity:.4}50%{opacity:1}}
  /* RUN ZONE - the distinct tappable action area */
  .runzone{position:relative;height:44px;border-radius:10px;overflow:hidden;cursor:pointer;transition:border-color .2s,box-shadow .2s}
  .runzone.idle{border:2px dashed #4a3b23;background:#1a1611;display:flex;align-items:center;justify-content:center}
  .runzone.idle:active{background:#241d13}
  .runzone.busy{border:2px solid #3f5876;background:#0e1628}
  .runzone .fill{position:absolute;inset:0;width:0%;background:repeating-linear-gradient(-45deg,#3d8bff 0 10px,#2f6fd6 10px 20px);background-size:200% 100%;animation:beltmove 1s linear infinite}
  @keyframes beltmove{to{background-position:-40px 0}}
  .runzone .mid{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-family:'JetBrains Mono',monospace;font-weight:700;font-size:12px;mix-blend-mode:normal;z-index:2}
  .runzone.busy .mid{color:#0b1220}
  .runzone .stripes-overlay{position:absolute;inset:0;background:repeating-linear-gradient(-45deg,rgba(255,255,255,.09) 0 6px,transparent 6px 12px);animation:beltmove .8s linear infinite;z-index:1}
  .boost-pulse{animation:boostPulse 1.4s ease-in-out infinite}
  @keyframes boostPulse{0%,100%{box-shadow:0 0 0 0 rgba(61,220,132,.4)}50%{box-shadow:0 0 0 6px rgba(61,220,132,0)}}
  .modal-bg{background:rgba(0,0,0,.75);transition:opacity .25s;overflow-y:auto;overscroll-behavior:contain;padding-top:14px;padding-bottom:14px}
  /* v0.10.20 RJ 2026-10-25 "doesn't scroll on mobile": align-items:center on a fixed
     overlay clips the top of any card taller than the viewport — the card looks
     unreachable and the page feels frozen. margin:auto centers it when short and
     keeps every pixel reachable (overlay scrolls) when tall. */
  .modal-bg.flex{align-items:flex-start}
  .modal-bg.flex>*{margin-top:auto;margin-bottom:auto}
  .hud-fixed{position:fixed;top:0;left:0;right:0;z-index:40;background:rgba(11,18,32,.92);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid #2a3a5c;padding:14px 16px 12px;border-radius:0 0 18px 18px;box-shadow:0 8px 24px rgba(0,0,0,.45)}
  .hud-spacer{height:152px}
  .upg-ready{animation:upgGlow 1.6s ease-in-out infinite}
  @keyframes upgGlow{0%,100%{box-shadow:0 0 0 0 rgba(61,139,255,0)}50%{box-shadow:0 0 16px 2px rgba(61,139,255,.35)}}
  .audio-panel{position:absolute;right:0;top:calc(100% + 8px);width:232px;background:#141e33;border:1px solid #2a3a5c;border-radius:14px;padding:12px;z-index:60;box-shadow:0 14px 40px rgba(0,0,0,.6)}
  /* BUY BUTTON */
  .buybtn{flex:none;width:86px;height:44px;border-radius:10px;font-family:'JetBrains Mono',monospace;transition:transform .08s,background .15s,border-color .15s;line-height:1.2}
  /* v0.10.4 RJ 2.6: affordable = BRIGHT green, solid — unreadable-muted is dead */
  .buybtn-can{border:2px solid #22c55e;background:#22c55e;color:#08130c;font-weight:800;box-shadow:0 2px 10px rgba(34,197,94,.35)}
  .buybtn-can:active{transform:scale(.93);background:#4ade80}
  .buybtn-cant{border:2px solid #2a3a5c;background:#111a2c;color:#5a6577}
  /* v0.10.4 RJ 2.1: unaffordable prices read as soft amber, not dead grey */
  .price-off{color:#fbbf24!important}
  /* v0.10.4 RJ 2.3/2.5: juice */
  .hud-punch{animation:hudPunch .45s cubic-bezier(.2,1.4,.4,1)}
  @keyframes hudPunch{0%{transform:scale(1)}30%{transform:scale(1.22);color:#3ddc84;text-shadow:0 0 18px rgba(61,220,132,.6)}100%{transform:scale(1)}}
  .screen-shake{animation:scrShake .3s ease}
  @keyframes scrShake{0%,100%{transform:translate(0,0)}20%{transform:translate(-3px,1px)}40%{transform:translate(3px,-1px)}60%{transform:translate(-2px,-1px)}80%{transform:translate(2px,1px)}}
  .combo-pop{animation:comboPop .5s cubic-bezier(.2,1.6,.4,1)}
  @keyframes comboPop{0%{transform:scale(1)}40%{transform:scale(1.45)}100%{transform:scale(1)}}
  /* v0.10.4 RJ 2.7: locked-late managers = mysterious silhouettes */
  .mgr-sil .sil-face{filter:brightness(0) opacity(.55)}
  .mgr-sil{background:linear-gradient(135deg,#171d27,#0e1628)}
  /* v0.10.4 RJ 2.2: collapsed late-station rows */
  .collapsed-st{opacity:.85;transition:border-color .15s,opacity .15s}
  .collapsed-st:hover{opacity:1;border-color:#3a4657}

  /* ================= v0.10.5 RJ round-3 graphics pass ================= */
  /* G5: collapsed rows span the full grid width so the left column isn't ragged */
  .collapsed-st{grid-column:1 / -1}
  /* G1: cash count-up glow (gold on income, red flash on spends) */
  @keyframes moneyGlow{0%{color:#ffd700;text-shadow:0 0 14px rgba(255,215,0,.65)}100%{}}
  @keyframes moneySpend{0%{color:#ff6b6b;text-shadow:0 0 10px rgba(255,107,107,.5)}100%{}}
  #money.money-glow{animation:moneyGlow .55s ease-out}
  #money.money-spend{animation:moneySpend .5s ease-out}
  /* G4: thin milestone progress bar on each owned card */
  .milebar{height:3px;background:#1a2331;border-radius:2px;margin-top:3px;overflow:hidden}
  .milebar i{display:block;height:100%;background:linear-gradient(90deg,#3d8bff,#a9ceff);border-radius:2px;transition:width .35s ease}
  /* G14: soft glow under affordable rows */
  .afford-glow{border-color:rgba(61,220,132,.35)!important;box-shadow:0 0 16px rgba(61,220,132,.14),inset 0 0 24px rgba(61,220,132,.05)}
  /* G9: AUTO badge = distinct pill w/ pulsing green dot */
  .auto-pill{display:inline-flex;align-items:center;gap:4px;margin-left:6px;padding:1px 7px 1px 5px;border-radius:999px;background:rgba(34,197,94,.14);border:1px solid rgba(34,197,94,.45);color:#4ade80;font:700 9px/1.5 'JetBrains Mono',monospace;letter-spacing:.08em;vertical-align:1px}
  .auto-dot{width:5px;height:5px;border-radius:50%;background:#22c55e;animation:autoPulse 1.6s ease-in-out infinite}
  @keyframes autoPulse{0%,100%{box-shadow:0 0 0 0 rgba(34,197,94,.55);opacity:1}50%{box-shadow:0 0 0 4px rgba(34,197,94,0);opacity:.7}}
  /* G6: manager reveal flourish when their station gets owned */
  @keyframes mgrReveal{0%{box-shadow:0 0 0 rgba(61,139,255,0);transform:scale(1)}25%{box-shadow:0 0 26px rgba(61,139,255,.55);transform:scale(1.02);border-color:rgba(61,139,255,.7)}100%{box-shadow:0 0 0 rgba(61,139,255,0);transform:scale(1)}}
  .mgr-reveal{animation:mgrReveal .9s ease-out}
  /* G2: run-zone scale pop on tap */
  @keyframes runPop{0%{transform:scale(1)}35%{transform:scale(1.045)}100%{transform:scale(1)}}
  .runzone.run-pop{animation:runPop .28s cubic-bezier(.2,.7,.3,1.2)}
  /* v0.10.15 RJ ROUND-4 CARRY-OVER: bright flash on the fill when tapped */
  @keyframes fillFlash{0%{filter:brightness(2)}100%{filter:brightness(1)}}
  .runzone .fill.fill-flash{animation:fillFlash .24s ease}
  /* G10: compact goal chip + ring */
  .goal-ring{width:17px;height:17px;vertical-align:-3px;margin-right:2px}
  .goal-chip{display:inline-flex;align-items:center;gap:3px;padding:2px 9px;border-radius:999px;background:rgba(61,139,255,.10);border:1px solid rgba(61,139,255,.35);font:600 11px/1.4 inherit}
  .goal-chip b{color:#ffd9a8}
  /* G11: buy-mode sliding highlight */
  #buyModes{position:relative}
  #buyModeSlider{position:absolute;top:3px;bottom:3px;left:0;width:0;background:#3d8bff;border-radius:8px;opacity:0;transition:left .25s cubic-bezier(.3,.8,.4,1),width .25s cubic-bezier(.3,.8,.4,1),opacity .2s;z-index:0}
  /* G3: rarity-colored WHOLE boost cards + corner ribbon */
  .boost-rare{border-color:rgba(167,139,250,.55)!important;background:linear-gradient(135deg,rgba(139,92,246,.16),rgba(19,26,38,.72))!important}
  .boost-epic{border-color:rgba(251,191,36,.6)!important;background:linear-gradient(135deg,rgba(251,191,36,.18),rgba(30,24,10,.72))!important;box-shadow:0 0 18px rgba(251,191,36,.12)}
  [data-boost]>*{position:relative;z-index:1}
  .boost-ribbon{position:absolute;top:9px;right:-27px;transform:rotate(38deg);z-index:0;font:800 8px/1 'JetBrains Mono',monospace;letter-spacing:.14em;color:#0b1220;padding:3px 30px;pointer-events:none}
  /* G7: readability bump — small secondary text up to 10-11px, dim grey lighter */
  .text-\[8px\]{font-size:10px!important}
  .text-\[9px\]{font-size:11px!important}
  /* v0.10.15: !important dropped — it made .text-dim unthemeable (daylight/contrast couldn't recolor it). body prefix keeps it above tailwind. */
  body .text-dim{color:#c9d4e4}
  /* v0.10.3 tailwind-static snapshot predates these utilities — defined locally */
  .w-12{width:3rem}.h-12{height:3rem}.w-14{width:3.5rem}.h-14{height:3.5rem}
  #buyModes [data-mode]{position:relative;z-index:1}
  /* G12: hired-manager ring glow */
  .hired-ring{border:2px solid rgba(61,220,132,.6);box-shadow:0 0 12px rgba(34,197,94,.35)}
  /* v0.10.4 RJ 2.9: GO PUBLIC ring */
  .gp-ring{transform:rotate(-90deg)}
  .gp-ring circle{fill:none;stroke-linecap:round}
  /* v0.10.4 RJ 1.5: SUPPLY SHOP */
  .shop-card{position:relative;overflow:hidden}
  .shop-card::before{content:'';position:absolute;left:0;top:0;bottom:0;width:3px;background:linear-gradient(180deg,#3d8bff,#ff5c5c)}
  .shop-tag{position:absolute;top:8px;right:8px;font-family:'JetBrains Mono',monospace;font-size:8px;font-weight:800;letter-spacing:.12em;padding:2px 6px;border-radius:5px}
  /* SIDE MENU */
  .menu-item{display:flex;align-items:center;width:100%;text-align:left;padding:13px 14px;border-radius:12px;font-family:'JetBrains Mono',monospace;font-size:12px;font-weight:700;letter-spacing:.08em;color:#8b98ab;border:1px solid transparent;transition:color .15s,background .15s,border-color .15s}
  .menu-item:hover{color:#e8edf4;background:#1c2a45}
  .menu-item.active{color:#3d8bff;border-color:#2a3a5c;background:#141e33}
  /* VIEW TRANSITION */
  .view-in{animation:viewIn .22s ease}
  @keyframes viewIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
  /* PERSISTENT SIDEBAR (desktop) */
  .hud-fixed,.wrap{transition:padding-left .2s ease}
  @media(min-width:768px){
    #sideMenu{transform:none!important}
    body.side-mini #sideMenu{width:3.75rem}
    body.side-mini .nav-label,body.side-mini .side-name,body.side-mini .side-foot{display:none}
    body.side-mini #sideMenu .flex.items-center.gap-3{justify-content:center}
    body.side-mini .menu-item{justify-content:center}
    body .hud-fixed,body .wrap{padding-left:15rem}
    body.side-mini .hud-fixed,body.side-mini .wrap{padding-left:3.75rem}
  }
  /* BOTTOM NAV (mobile) */
  .bnav-item{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;padding:8px 0 7px;font-family:'JetBrains Mono',monospace;font-size:9px;font-weight:700;letter-spacing:.06em;color:#8b98ab;transition:color .15s,background .15s}
  .bnav-item span{pointer-events:none}
  .bnav-item.active{color:#3d8bff;background:rgba(61,139,255,.07)}
  .bnav-item:active{background:#1c2a45}
  /* DESKTOP COMMAND CENTER (v0.6.9c) — fixed right pane; mobile gets display:contents so the views flow in-page (hidden class must still win) */
  :where(#dashCol,#dashBody){display:contents}
  #dashTabs,#dashStats{display:none}
  .dash-tab{flex:1;display:flex;align-items:center;justify-content:center;gap:5px;padding:9px 4px;border-radius:9px;font-family:'JetBrains Mono',monospace;font-size:10px;font-weight:700;letter-spacing:.05em;color:#8b98ab;border:1px solid transparent;transition:color .15s,background .15s,border-color .15s}
  .dash-tab:hover{color:#e8edf4;background:#1c2a45}
  .dash-tab.active{color:#3d8bff;border-color:#2a3a5c;background:#141e33}
  .dash-badge{background:#3d8bff;color:#0b1220;font-size:9px;font-weight:800;border-radius:9999px;padding:0 5px;line-height:14px;min-width:16px;text-align:center}
  .dash-stat{background:#141e33;border:1px solid #2a3a5c;border-radius:10px;padding:7px 9px;display:flex;flex-direction:column;gap:1px}
  .ds-k{font-family:'JetBrains Mono',monospace;font-size:8px;letter-spacing:.14em;color:#8b98ab}
  .ds-v{font-family:'JetBrains Mono',monospace;font-size:12px;font-weight:800}
  @media(min-width:1024px){
    #dashCol{display:flex;flex-direction:column;position:fixed;top:0;right:0;bottom:0;width:360px;z-index:30;background:rgba(11,18,32,.78);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-left:1px solid #2a3a5c;padding:158px 14px 14px;gap:10px;box-shadow:-14px 0 40px rgba(0,0,0,.35)}
    #dashTabs{display:flex;gap:4px;background:rgba(20,30,51,.92);border:1px solid #2a3a5c;border-radius:12px;padding:5px;flex:none}
    #dashStats{display:block;flex:none}
    #dashBody{display:block;flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain}
    body .wrap{max-width:min(1480px,calc(100vw - 432px));margin-left:auto;margin-right:360px}
    body .hud-fixed{right:360px}
  }
  /* STATION GRID (v0.6.9d) — auto-fit columns on wide screens, single column mobile */
  #stations{display:grid;grid-template-columns:1fr;gap:8px}
  #stations>*{margin-top:0}
  @media(min-width:1024px) and (max-width:1499px){
    body.side-mini #stations{grid-template-columns:1fr 1fr}
  }
  @media(min-width:1150px){
    #stations{grid-template-columns:1fr 1fr}
  }
  @media(min-width:1500px){
    #stations{grid-template-columns:1fr 1fr 1fr}
  }

/* v0.7 card scenes */
.scene-duo{display:flex;gap:6px;margin-bottom:8px}
.scene-duo .scenecanvas{flex:1 1 50%;width:50%;min-width:0;margin-bottom:0}
.proccanvas{display:block;flex:1 1 50%;width:50%;height:56px;border-radius:8px;background:#0a1120;border:1px solid #1c2740}
body[data-layout="compact"] .scene-duo{gap:4px;margin-bottom:5px}
body[data-layout="compact"] .proccanvas{height:36px}
/* v0.10.15 RJ R5.4-6: brand lockup — FULFIL/LIONAIRE stacked, $-tape box mark */
.brandmark{display:flex;align-items:center;gap:7px;color:#e8eef8}
.bm-box{flex:none;display:block}
.bm-word{display:flex;flex-direction:column;line-height:.92;font-family:ui-monospace,monospace;font-weight:800;letter-spacing:-.02em;font-size:14.5px}
.bm-l1{color:#e8eef8}
.bm-l2{color:#3d8bff}
.bm-ll{color:#ffc24d;text-shadow:0 0 6px rgba(255,178,77,.45)} /* RJ R5.4: the millionaire LL pops */
body[data-theme="daylight"] .brandmark{color:#17233a}
body[data-theme="daylight"] .bm-l1{color:#17233a}
.scenecanvas{display:block;width:100%;height:56px;border-radius:8px;background:#0a1120;border:1px solid #1c2740;margin-bottom:8px}

/* v0.9.6 — contextual coach spotlight */
@keyframes coachPulse{0%,100%{box-shadow:0 0 0 2px rgba(61,139,255,.85),0 0 16px rgba(61,139,255,.30)}50%{box-shadow:0 0 0 5px rgba(61,139,255,.40),0 0 28px rgba(61,139,255,.50)}}
.coach-pulse{animation:coachPulse 1.1s ease-in-out infinite}

/* ============ v0.10.6 RJ ROUND 4 — color · layout · backgrounds ============ */
/* R4.1 card depth: lighter surface + shadow + top highlight */
body .card{background:#1a2742;box-shadow:0 6px 18px rgba(0,0,0,.5),inset 0 1px 0 rgba(255,255,255,.09);border-color:#2e4166} /* v0.10.15 RJ R4-fix: depth pushed further — was still reading flat */
body .card.locked-st{background:rgba(20,30,51,.55);box-shadow:none}
/* R4.2 green one job (buy only) — income goes gold, LV goes blue */
body .text-income{color:#ffc24d}
body .text-lv{color:#7ab3ff}
/* R4.4 secondary text: brighter + non-pixel */
.sub-text{font-family:'Space Grotesk',system-ui,sans-serif;color:#c9d4e4}
/* R4.3 unaffordable BUY: outlined, readable cost */
body .buybtn-cant{background:transparent!important;border:1px solid rgba(201,212,228,.42)!important;color:#c9d4e4}
body .buybtn-cant [data-price]{color:#c9d4e4}
body .price-off{color:#8b98ab!important}
/* R4.5 solid calmer progress fill */
.runzone .fill{background:linear-gradient(90deg,#3d8bff,#2f6fd6);animation:none}
.runzone .stripes-overlay{display:none}
/* R4.11: BOARD ROOM gets full-width weight */
#view-prestige #boardRoom{max-width:760px}
/* R4.8 consistent grid: 2 → 3 → 4 columns */
@media(min-width:1150px){#stations{grid-template-columns:1fr 1fr 1fr}}
@media(min-width:1280px) and (max-width:1599px){#stations{grid-template-columns:1fr 1fr 1fr}}
@media(min-width:1600px){#stations{grid-template-columns:1fr 1fr 1fr 1fr}}
@media(min-width:1024px) and (max-width:1279px){#stations{grid-template-columns:1fr 1fr}}
/* R4.7 right panel ≈300px content */
@media(min-width:1024px){
  body #dashCol{width:300px;padding:150px 10px 12px}
  body .wrap{max-width:min(1480px,calc(100vw - 332px));margin-right:300px}
  body .hud-fixed{right:300px}
}
/* R4.10 layout modes */
body[data-layout="compact"] #stations{grid-template-columns:1fr!important}
body[data-layout="compact"] .scenecanvas{height:36px;margin-bottom:5px}
body[data-layout="compact"] .card[data-card]{padding-top:8px;padding-bottom:8px}
@media(min-width:1024px){
  body[data-layout="dashboard"] #dashCol{width:592px;padding-top:96px}
  body[data-layout="dashboard"] .wrap{max-width:min(1480px,calc(100vw - 624px));margin-right:592px}
  body[data-layout="dashboard"] .hud-fixed{right:592px}
  body[data-layout="dashboard"] #dashTabs{display:none}
  body[data-layout="dashboard"] #dashStats{display:none}
  body[data-layout="dashboard"] #dashBody{display:grid;grid-template-columns:1fr 1fr;gap:10px;align-content:start}
  body[data-layout="dashboard"] #view-managers{grid-column:1}
  body[data-layout="dashboard"] #view-boosts{grid-column:2}
  body[data-layout="dashboard"] #view-upgrades{grid-column:1/-1}
}
/* R4.6 theme picker */
body[data-theme="contrast"] .bg-panel{--tw-bg-opacity:1;background-color:#0b0e14}
body[data-theme="contrast"] .bg-panel2{--tw-bg-opacity:1;background-color:#10141c}
body[data-theme="contrast"] .bg-ink{--tw-bg-opacity:1;background-color:#07090d}
body[data-theme="contrast"] .border-line{--tw-border-opacity:1;border-color:#26303f}
body[data-theme="contrast"] .text-dim{--tw-text-opacity:1;color:#c9d4e4}
body[data-theme="contrast"] .text-paper{--tw-text-opacity:1;color:#f2f6fc}
body[data-theme="contrast"] .card{background:#0e1219;border-color:#232d3c}
body[data-theme="contrast"] .sub-text{color:#dbe4f0}
body[data-theme="contrast"] #dashCol{background:rgba(7,9,13,.85)}
body[data-theme="daylight"]{background:#eef2f7}
body[data-theme="daylight"] .bg-panel{--tw-bg-opacity:1;background-color:#ffffff}
body[data-theme="daylight"] .bg-panel2{--tw-bg-opacity:1;background-color:#e9eef5}
body[data-theme="daylight"] .bg-ink{--tw-bg-opacity:1;background-color:#f6f8fb}
body[data-theme="daylight"] .border-line{--tw-border-opacity:1;border-color:#d3dce8}
body[data-theme="daylight"] .text-dim{--tw-text-opacity:1;color:#5a6b80}
body[data-theme="daylight"] .text-paper{--tw-text-opacity:1;color:#16202e}
body[data-theme="daylight"] .text-ember{--tw-text-opacity:1;color:#1d5fcc}
body[data-theme="daylight"] .text-emberlite{--tw-text-opacity:1;color:#2a63b8}
body[data-theme="daylight"] .card{background:#ffffff;border-color:#dde5ef;box-shadow:0 2px 10px rgba(30,45,70,.10),inset 0 1px 0 rgba(255,255,255,.9)}
body[data-theme="daylight"] .sub-text{color:#44546a}
body[data-theme="daylight"] #dashCol{background:rgba(255,255,255,.88);border-left-color:#d3dce8}
body[data-theme="daylight"] .dash-stat{background:#fff;border-color:#d3dce8}
body[data-theme="daylight"] .menu-item{color:#5a6b80}
body[data-theme="daylight"] .menu-item:hover{color:#16202e;background:#e9eef5}
body[data-theme="daylight"] .menu-item.active{color:#1d5fcc;border-color:#d3dce8;background:#fff}
body[data-theme="daylight"] #bgCanvas{filter:brightness(1.35) saturate(.8)}
body[data-theme="daylight"] #bgVeil{background:radial-gradient(ellipse at 50% 28%,rgba(238,242,247,.55) 18%,rgba(238,242,247,.92) 100%)!important}
/* ================= v0.10.15 RJ R4-FIX: theme gaps ================= */
/* DAYLIGHT: cover the opacity-variant utilities the base overrides missed (rail = bg-panel2/95) */
body[data-theme="daylight"] .bg-panel2\/95{background-color:rgba(255,255,255,.95)}
body[data-theme="daylight"] .bg-panel\/50{background-color:rgba(255,255,255,.55)}
body[data-theme="daylight"] .border-line\/50{border-color:rgba(211,220,232,.5)}
body[data-theme="daylight"] .border-line\/60{border-color:rgba(211,220,232,.6)}
body[data-theme="daylight"] .text-dim\/50{color:rgba(61,76,96,.5)}
body[data-theme="daylight"] .text-dim\/60{color:rgba(61,76,96,.6)}
body[data-theme="daylight"] .text-dim\/70{color:rgba(61,76,96,.7)}
body[data-theme="daylight"] .text-dim\/80{color:rgba(61,76,96,.8)}
body[data-theme="daylight"] .text-paper\/80{color:rgba(22,32,46,.8)}
body[data-theme="daylight"] .text-dim{color:#3d4c60} /* stronger than base #5a6b80 — settings labels were "nearly invisible" */
body[data-theme="daylight"] .hud-fixed{background:rgba(255,255,255,.93);border-bottom-color:#d3dce8;box-shadow:0 8px 24px rgba(30,45,70,.14)}
body[data-theme="daylight"] .menu-item{color:#4a5b70}
/* CONTRAST: was indistinguishable from DARK — go true black + brighter chrome */
body[data-theme="contrast"]{background:#000}
body[data-theme="contrast"] .bg-panel{--tw-bg-opacity:1;background-color:#05070a}
body[data-theme="contrast"] .bg-panel2{--tw-bg-opacity:1;background-color:#0a0d12}
body[data-theme="contrast"] .bg-panel2\/95{background-color:rgba(5,7,10,.95)}
body[data-theme="contrast"] .bg-panel\/50{background-color:rgba(10,13,18,.5)}
body[data-theme="contrast"] .bg-ink{--tw-bg-opacity:1;background-color:#000}
body[data-theme="contrast"] .border-line{--tw-border-opacity:1;border-color:#3a4a5e}
body[data-theme="contrast"] .border-line\/50{border-color:rgba(58,74,94,.5)}
body[data-theme="contrast"] .border-line\/60{border-color:rgba(58,74,94,.6)}
body[data-theme="contrast"] .text-dim{--tw-text-opacity:1;color:#dce5f0}
body[data-theme="contrast"] .text-dim\/50{color:rgba(220,229,240,.5)}
body[data-theme="contrast"] .text-dim\/60{color:rgba(220,229,240,.6)}
body[data-theme="contrast"] .text-dim\/70{color:rgba(220,229,240,.7)}
body[data-theme="contrast"] .text-dim\/80{color:rgba(220,229,240,.8)}
body[data-theme="contrast"] .text-paper{--tw-text-opacity:1;color:#fff}
body[data-theme="contrast"] .text-paper\/80{color:rgba(255,255,255,.8)}
body[data-theme="contrast"] .card{background:#0a0e14;border-color:#33465c}
body[data-theme="contrast"] .hud-fixed{background:rgba(0,0,0,.94);border-bottom-color:#3a4a5e}
body[data-theme="contrast"] #dashCol{background:rgba(0,0,0,.9)}
/* v0.10.15: unaffordable-BUY chrome follows theme too (base rules use !important — later equal-specificity !important wins) */
body[data-theme="daylight"] .buybtn-cant{background:transparent!important;border-color:rgba(90,107,128,.45)!important;color:#5a6b80!important}
body[data-theme="daylight"] .price-off{color:#8b98ab!important}
body[data-theme="contrast"] .buybtn-cant{background:transparent!important;border-color:rgba(220,229,240,.5)!important;color:#dce5f0!important}
/* R4.12 edge-focused backdrop: stronger vignette + dimmer center */
#bgVeil{background:radial-gradient(ellipse at 50% 28%,transparent 12%,rgba(10,12,18,.92) 100%)}
/* R4.15 clean gradient backdrop */
#bgPattern{position:fixed;inset:0;z-index:0;pointer-events:none;background:
  radial-gradient(ellipse at 50% 0%,#1b2a4a 0%,#101a30 55%,#0a1226 100%)}
#bgPattern::after{content:'';position:absolute;inset:0;background:
  repeating-linear-gradient(115deg,transparent 0 46px,rgba(255,255,255,.028) 46px 48px),
  repeating-linear-gradient(0deg,transparent 0 88px,rgba(120,150,200,.05) 88px 90px)}
/* R4.16 unlockable bg themes: tint the veil */
body[data-bg="neon"] #bgVeil{background:radial-gradient(ellipse at 50% 28%,rgba(20,10,40,.35) 12%,rgba(8,6,20,.94) 100%)}
body[data-bg="neon"] #bgCanvas{filter:saturate(1.5) hue-rotate(-18deg)}
body[data-bg="holiday"] #bgVeil{background:radial-gradient(ellipse at 50% 28%,rgba(60,12,12,.30) 12%,rgba(16,6,6,.94) 100%)}
body[data-bg="holiday"] #bgCanvas{filter:sepia(.28) saturate(1.45) hue-rotate(-12deg)}
body[data-bg="hq"] #bgVeil{background:radial-gradient(ellipse at 50% 28%,rgba(10,25,60,.32) 12%,rgba(6,10,24,.94) 100%)}
body[data-bg="hq"] #bgCanvas{filter:saturate(1.15) hue-rotate(12deg) brightness(1.08)}
/* R4 accent brightness nudge for dark mode */
body .text-ember{--tw-text-opacity:1;color:#6fb0ff}

/* ================= RUSH ORDERS (v0.10.15 RJ R5.14) ================= */
.rush-entity{position:fixed;left:-72px;z-index:54;font-size:46px;line-height:1;cursor:pointer;user-select:none;-webkit-user-select:none;filter:drop-shadow(0 4px 10px rgba(0,0,0,.55)) drop-shadow(0 0 16px rgba(255,178,77,.6));animation:rush-cross linear forwards;transition:transform .15s}
.rush-entity:hover{transform:scale(1.22) rotate(-4deg)}
.rush-entity.rush-claimed{animation-play-state:paused;transform:scale(1.7);opacity:0;transition:all .3s}
@keyframes rush-cross{from{transform:translateX(0)}to{transform:translateX(calc(100vw + 150px))}}
@media (prefers-reduced-motion:reduce){.rush-entity{animation-duration:20s}}

/* v0.10.15 RJ R5.21: supply chain crisis banner */
.crisis-banner{position:absolute;top:6px;left:6px;right:6px;z-index:20;background:rgba(180,40,20,.93);border:1px solid #ff9a3c;color:#ffe1c9;font-family:"Space Grotesk",monospace;font-weight:700;font-size:10px;letter-spacing:.06em;text-align:center;padding:3px 6px;border-radius:8px;animation:crisisPulse 1.1s infinite}
@keyframes crisisPulse{0%,100%{box-shadow:0 0 0 0 rgba(255,154,60,.65)}50%{box-shadow:0 0 0 6px rgba(255,154,60,0)}}

/* ===== v0.10.17 RJ ROUND 7: chain chip, ver toast, quests, calendar, rail tips ===== */
.chain-chip{display:inline-flex;align-items:center;gap:4px;background:rgba(122,179,255,.12);border:1px solid rgba(122,179,255,.4);color:#7ab3ff;border-radius:999px;padding:2px 9px;font-size:9px;font-family:monospace;vertical-align:middle}
.ver-toast{position:fixed;left:12px;bottom:12px;z-index:99;display:flex;align-items:center;gap:8px;background:#141c28;border:1px solid #3d8bff;border-radius:12px;padding:10px 12px;font-family:monospace;font-size:11px;color:#e8eef7;box-shadow:0 8px 24px rgba(0,0,0,.5)}
.quest-row{background:#141c28;border:1px solid #232c3a;border-radius:10px;padding:7px 9px;margin-bottom:6px}
.quest-row.quest-done{border-color:rgba(34,197,94,.55)}
.quest-row.quest-claimed{opacity:.55}
.quest-bar{height:5px;background:#232c3a;border-radius:99px;overflow:hidden}
.quest-fill{height:100%;background:#3d8bff;border-radius:99px;transition:width .4s}
.quest-fill.quest-fill-done{background:#22c55e}
.cal-tile{background:#141c28;border:1px solid #232c3a;border-radius:12px;padding:10px 6px;text-align:center;flex:1;min-width:0}
.cal-tile.cal-today{border-color:#3d8bff;background:rgba(61,139,255,.08)}
.cal-day{font-family:monospace;font-size:9px;letter-spacing:.15em;color:#93a3b8}
.cal-today .cal-day{color:#3d8bff;font-weight:bold}
.cal-icon{font-size:22px;margin:6px 0 4px}
.cal-desc{font-size:9px;color:#c9d4e4;line-height:1.3}

/* v0.10.18 RJ ROUND-8 BUG-1: modal stack pinned in real CSS — tailwind-static
   snapshot lacks ALL arbitrary z-[...] classes, so every z-[60..90] was a NO-OP
   and station cards (z-10) sat above the modals eating clicks. Never again. */
body #adModal{z-index:98}
body #settingsModal{z-index:94}
body #calModal{z-index:92}
body #tutOverlay{z-index:90}
body #offlineModal{z-index:88}
body #prestigeModal{z-index:86}
body #toastLayer{z-index:99;pointer-events:none}
body #coachBar{z-index:80}
body #verToast{z-index:100}

/* v0.10.18 RJ R8-bug8: collapsed-rail hover labels — the v0.10.17 commit claimed
   .rail-tip but the CSS never shipped (mid-screen tooltip bug). Pure CSS attr()
   from the existing title= attributes, anchored to each icon. */
@media(min-width:768px){
  .menu-item{position:relative}
  body.side-mini .menu-item::after{
    content:attr(title);
    position:absolute;left:calc(100% + 12px);top:50%;transform:translateY(-50%);
    background:#141e33;border:1px solid #2b3547;color:#e8eef7;
    font:700 10px/1 'JetBrains Mono',monospace;letter-spacing:.08em;
    padding:7px 11px;border-radius:9px;white-space:nowrap;pointer-events:none;
    opacity:0;transition:opacity .12s;z-index:70;box-shadow:0 8px 22px rgba(0,0,0,.5);
  }
  body.side-mini .menu-item:hover::after{opacity:1}
  body[data-theme="daylight"].side-mini .menu-item::after{background:#fff;border-color:#c9d4e2;color:#16202e}
}

/* v0.10.18 RJ R8-bug4: chain reward highlight */
.chain-reward{color:#3ddc84;font-weight:800}

/* ================= v0.10.18 RJ R8#14: MOBILE PASS ================= */
html,body{overflow-x:hidden}
.wrap{max-width:100vw;overflow-x:clip}
#money{font-size:clamp(22px,7vw,30px);line-height:1.15}
@media(max-width:640px){
  .hud-fixed{padding:8px 10px 7px}
  .chain-chip{font-size:9px;padding:3px 8px}
  .goal-chip{font-size:9px}
  .bnav-item{min-height:52px;padding:9px 0 8px}
  #buyModes .bm-btn{padding:7px 9px;font-size:11px}
  .card,.st-card{border-radius:14px}
}
@media(max-width:380px){
  #money{font-size:21px}
  .bm-word{font-size:13px}
}
/* station cards + buy buttons get comfortable hit areas on touch */
@media(pointer:coarse){
  [data-buybtn],.dash-tab,.bnav-item,.menu-item{min-height:44px}
}

/* ================= v0.10.21 RJ P0: debate ruling ================= */
#goalStrip{transition:border-color .3s,box-shadow .3s}
#goalStrip.goal-ready{border-color:#ff7b1c;animation:goalReadyPulse 1.2s ease-in-out infinite}
@keyframes goalReadyPulse{
  0%,100%{box-shadow:0 0 0 0 rgba(255,123,28,.45)}
  50%{box-shadow:0 0 14px 2px rgba(255,123,28,.55)}
}

/* =====================================================================
   v0.10.23 PHASE 1 VISUAL PASS — "Night Shift Industrial"
   tokens · type · 12px floor · white-on-blue contrast · one-line wordmark
   5-tab mobile nav · station card re-layout · toast lane · juice + motion setting
   (game logic untouched — presentation only)
   ===================================================================== */
:root{
  --bg:#0b1220;--surface:#141e33;--surface-2:#1c2a45;--line:#2a3a5c;
  --text:#eaf1ff;--dim:#b8c6de;--brand:#3d8bff;--brand-deep:#2f6fe0;--brand-light:#7ab3ff;
  --money:#3ddc84;--money-deep:#1f9d57;--gold:#ffd54a;--amber:#ffb020;--danger:#ff5c5c;--kraft:#c89b6a;
  --f-ui:'Inter',system-ui,-apple-system,'Segoe UI',sans-serif;
  --f-num:'JetBrains Mono',ui-monospace,Menlo,monospace;
  --f-head:'Big Shoulders Display','Inter',system-ui,sans-serif;
}
/* --- type: Inter for UI, JetBrains Mono for numbers only, Big Shoulders for headings --- */
body{font-family:var(--f-ui)}
.font-mono,.sub-text,.menu-item,.bnav-item,.dash-tab,.ds-k,.auto-pill,.chain-chip,.cal-day,.crisis-banner,.ver-toast,.boost-ribbon,.shop-tag,.goal-chip{font-family:var(--f-ui);font-variant-numeric:tabular-nums}
#money,#offlineAmt,[data-price],.runzone .mid,.ds-v,.floom,#perSec,#lifetime,#shiftClock,#boostTime,.num{font-family:var(--f-num);font-variant-numeric:tabular-nums}
h2.font-mono,h2.text-dim{font-family:var(--f-head)!important;font-weight:800;font-size:16px!important;letter-spacing:.08em!important;text-transform:uppercase}
h3.font-mono{font-family:var(--f-head)!important;font-weight:900;font-size:26px!important;letter-spacing:.04em;line-height:1.05}
/* --- readability floor: nothing under 12px --- */
.text-\[7px\],.text-\[8px\],.text-\[9px\],.text-\[10px\],.text-\[11px\]{font-size:12px!important;line-height:1.35}
.auto-pill,.chain-chip,.goal-chip,.cal-day,.ds-k,.crisis-banner,.boost-ribbon,.shop-tag,.ver-toast{font-size:12px!important}
.cal-desc{font-size:12px!important;line-height:1.25}
.text-dim\/50,.text-dim\/60{color:rgba(184,198,222,.82)!important}
.text-dim\/70{color:rgba(184,198,222,.88)!important}
/* --- white-on-blue: every white label on brand blue sits on the deep blue (4.7:1) --- */
.bg-ember.text-white,.bg-ember.text-paper,.bg-ember .text-white{background-color:var(--brand-deep)!important}
/* --- one-line wordmark --- */
.brandmark{gap:8px}
.bm-word{flex-direction:row;align-items:baseline;font-family:var(--f-head);font-weight:900;font-size:24px;letter-spacing:.03em;line-height:1;white-space:nowrap}
.bm-l1,.bm-l2{font-weight:900}
@media(max-width:640px){.bm-word{font-size:20px}.brandmark .bm-box{display:none}.hud-fixed .gap-2\.5{gap:8px}.hud-fixed .gap-2{gap:6px}#boostChip{padding:4px 7px!important}}
@media(max-width:380px){.bm-word{font-size:17px}}
/* --- HUD + money --- */
#money{font-weight:800;letter-spacing:-.01em}
body .text-ember{color:#6fb0ff}
/* --- station cards --- */
body .card{background:var(--surface);border-color:var(--line);box-shadow:0 6px 18px rgba(0,0,0,.45),inset 0 1px 0 rgba(255,255,255,.06)}
.runzone{height:52px;border-radius:12px}
.runzone.idle{border:2px dashed #3a5486;background:#0f1a30}
.runzone.idle:active{background:#13213d}
.runzone.busy{border:2px solid #2f6fe0;background:#0e1628}
.runzone .fill{background:var(--brand-deep);box-shadow:inset 0 1px 0 rgba(255,255,255,.18);animation:none}
.runzone .mid{font-size:14px;font-weight:800;color:var(--text)}
.runzone.busy .mid{color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.6)}
.buybtn{width:100px;height:52px;border-radius:12px;font-family:var(--f-ui);line-height:1.15}
.buybtn [data-price]{font-family:var(--f-num);font-size:15px!important;font-weight:800}
.buybtn [data-buylabel]{font-size:12px!important;font-weight:700;opacity:.9}
.buybtn-can{background:var(--money);border:2px solid var(--money);color:#05220f;box-shadow:0 4px 0 var(--money-deep),0 6px 14px rgba(61,220,132,.22)}
.buybtn-can:active{transform:translateY(3px);background:#52e596;box-shadow:0 1px 0 var(--money-deep)}
body .buybtn-cant{background:rgba(17,26,44,.6)!important;border:1px solid #3a4f78!important;color:#c3cfe4}
body .buybtn-cant [data-price]{color:#c3cfe4}
body .price-off{color:#9fb0cf!important}
.card .card-foot{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-top:6px;font-size:12px;line-height:1.3}
.card .card-foot .need{color:var(--dim)}
.card .card-foot .need b{color:var(--amber);font-weight:700}
.milebar{height:4px;background:#22324f}
.milebar i{background:linear-gradient(90deg,var(--brand),var(--gold))}
body .text-income{color:var(--gold)}
#goalStrip.goal-ready{border-color:var(--amber)}
/* --- 5-tab mobile nav + MORE sheet --- */
#bottomNav{grid-template-columns:repeat(5,minmax(0,1fr))!important}
.bnav-item{font-size:12px;font-weight:700;letter-spacing:.03em;color:#b8c6de;gap:2px;font-size:20px}
.bnav-item span:not([id]){font-size:12px;line-height:1}
.bnav-item.active{color:#fff;background:rgba(61,139,255,.16);box-shadow:inset 0 2px 0 var(--brand)}
.bnav-item .nav-badge,.bnav-item [id$="NavBadge"]{font-size:11px!important;line-height:16px!important;min-width:16px;padding:0 4px;top:4px;right:18%}
#moreSheet{position:fixed;left:8px;right:8px;bottom:calc(66px + env(safe-area-inset-bottom));z-index:41;background:var(--surface-2);border:1px solid var(--line);border-radius:16px;padding:6px;box-shadow:0 -8px 30px rgba(0,0,0,.5);display:grid;grid-template-columns:1fr 1fr;gap:6px}
#moreSheet.hidden{display:none}
#moreSheet button{display:flex;align-items:center;gap:10px;min-height:52px;padding:10px 12px;border-radius:12px;background:var(--surface);border:1px solid var(--line);font:700 14px/1.2 var(--f-ui);color:var(--text);text-align:left;position:relative}
#moreSheet button.active{border-color:var(--brand);background:rgba(61,139,255,.14)}
#moreSheet button .ms-ico{font-size:20px}
#moreScrim{position:fixed;inset:0;z-index:39;background:rgba(5,9,18,.45)}
#moreScrim.hidden{display:none}
@media(min-width:768px){#moreSheet,#moreScrim{display:none!important}}
/* --- toasts: one lane, max 2, never off-screen --- */
#toastLayer{width:max-content;max-width:calc(100vw - 24px)!important}
#toastLayer>div{font-family:var(--f-ui)!important;font-size:13px!important;font-weight:600;line-height:1.35;background:var(--surface-2);border-width:1px;border-left-width:4px;color:var(--text);white-space:normal;max-width:calc(100vw - 24px);box-shadow:0 8px 24px rgba(0,0,0,.45)}
@media(max-width:767px){body #toastLayer{bottom:auto!important;top:var(--toastTop,130px)}}
#coachTxt{font-size:13px!important;font-weight:600}
/* --- juice (gated by the MOTION setting) --- */
.floom{color:var(--gold)!important;font-size:16px;text-shadow:0 2px 4px rgba(0,0,0,.65);animation:floomPop .95s cubic-bezier(.34,1.56,.64,1) forwards}
@keyframes floomPop{0%{opacity:0;transform:translate(-50%,6px) scale(.6)}18%{opacity:1;transform:translate(-50%,-6px) scale(1.18)}35%{transform:translate(-50%,-12px) scale(1)}100%{opacity:0;transform:translate(-50%,-62px) scale(1)}}
.floom.floom-merge{animation:floomMerge .95s cubic-bezier(.34,1.56,.64,1) forwards}
@keyframes floomMerge{0%{opacity:1;transform:translate(-50%,-12px) scale(1.25)}30%{transform:translate(-50%,-16px) scale(1)}100%{opacity:0;transform:translate(-50%,-62px) scale(1)}}
.buy-pop{animation:buyPop .3s cubic-bezier(.3,1.7,.5,1)}
@keyframes buyPop{0%{transform:scale(1)}30%{transform:scale(1.1,.88)}60%{transform:scale(.96,1.06)}100%{transform:scale(1)}}
.buy-deny{animation:buyDeny .34s ease}
@keyframes buyDeny{0%,100%{transform:rotate(0)}20%{transform:rotate(-4deg)}45%{transform:rotate(3.5deg)}70%{transform:rotate(-2deg)}}
.ms-stamp{position:absolute;left:50%;top:44%;z-index:25;pointer-events:none;font:900 34px/1 var(--f-head);letter-spacing:.04em;color:var(--gold);text-shadow:0 3px 0 #7a5a00,0 0 22px rgba(255,213,74,.55);white-space:nowrap;transform:translate(-50%,-50%) rotate(-8deg);animation:msStamp 1.25s cubic-bezier(.2,1.4,.4,1) forwards}
@keyframes msStamp{0%{opacity:0;transform:translate(-50%,-50%) rotate(-8deg) scale(2.6)}18%{opacity:1;transform:translate(-50%,-50%) rotate(-8deg) scale(.92)}28%{transform:translate(-50%,-50%) rotate(-8deg) scale(1.04)}80%{opacity:1}100%{opacity:0;transform:translate(-50%,-62%) rotate(-8deg) scale(1)}}
.ms-flash{animation:msFlash .7s ease-out}
@keyframes msFlash{0%{box-shadow:0 0 0 3px var(--gold),0 0 40px rgba(255,213,74,.55)}100%{box-shadow:0 6px 18px rgba(0,0,0,.45)}}
#money.suffix-punch{animation:suffixPunch .6s cubic-bezier(.2,1.6,.4,1)}
@keyframes suffixPunch{0%{transform:scale(1)}30%{transform:scale(1.32);color:var(--gold);text-shadow:0 0 22px rgba(255,213,74,.6)}100%{transform:scale(1)}}
/* MOTION: reduced keeps colour feedback but drops travel/shake/particles · off drops all juice */
body.motion-reduced .screen-shake,body.motion-reduced .shake,body.motion-reduced .buy-deny{animation:none!important}
body.motion-reduced .floom{animation:floomFade .9s ease-out forwards}
@keyframes floomFade{0%{opacity:0;transform:translate(-50%,-10px)}20%{opacity:1}100%{opacity:0;transform:translate(-50%,-10px)}}
body.motion-off .floom,body.motion-off .ms-stamp{display:none!important}
body.motion-off .buy-pop,body.motion-off .buy-deny,body.motion-off .ms-flash,body.motion-off .hud-punch,body.motion-off #money.suffix-punch,body.motion-off .shake,body.motion-off .screen-shake,body.motion-off .combo-pop,body.motion-off .run-pop,body.motion-off .fill-flash,body.motion-off #money.money-glow,body.motion-off #money.money-spend,body.motion-off .flash-good,body.motion-off .working,body.motion-off .boost-pulse,body.motion-off .mgr-reveal,body.motion-off .view-in,body.motion-off .upg-ready,body.motion-off .auto-dot,body.motion-off .coach-pulse,body.motion-off #goalStrip.goal-ready,body.motion-off .toast-in{animation:none!important}
body.motion-off .buybtn,body.motion-off .buybtn-can:active{transition:none}
#motionRow button.on{border-color:var(--money);color:var(--money)}
#motionRow button.off{border-color:var(--line);color:var(--dim)}
#moreSheet button.hidden{display:none}
/* toasts slid in from -50% of their own width (they are not the centred element) — that was the clipped-left toast */
.toast-in{animation:toastIn23 .25s ease}
@keyframes toastIn23{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
h2.font-mono,h2.text-dim{white-space:nowrap}
.dash-tab{font-size:12px}
.dash-tab .dash-badge,.dash-badge{color:#0b1220!important;font-size:11px;line-height:16px}
#buyModes .bm-btn{font-size:13px!important}
.cal-day{letter-spacing:.06em}
@media (max-width:640px){#calTiles{flex-wrap:wrap}#calTiles .cal-tile{flex:1 1 calc(25% - 8px);padding:8px 4px}.cal-desc{overflow-wrap:anywhere}}
#boostChip{white-space:nowrap}
@media(max-width:640px){.hud-fixed:has(#boostChip:not(.hidden)) .bm-word{font-size:15px}#boostChip{font-size:12px!important}}
.bg-ember.text-void,.menu-item .bg-ember.text-void{color:#0b1220!important;font-size:12px!important}

/* v0.10.23.1 scroll fix: html AND body both had overflow-x:hidden, which turns <body> into its own
   (non-scrolling) scroll box; with overscroll-behavior:none on it, wheel and touch scrolling got stuck on
   <body> and never reached the page. Keep <body> a normal box; html still clips sideways overflow. */
body{overflow:visible}
@supports (overflow:clip){body{overflow-x:clip}}

/* v1.0.3: boost actions sit under the title so FREE/USE cannot cover the name. */
.boost-card{display:flex;flex-direction:column;align-items:stretch;gap:10px}
.boost-card-main{display:flex;gap:12px;align-items:flex-start;min-width:0}
.boost-card-copy{flex:1;min-width:0}
.boost-card-name{line-height:1.35;padding-right:56px}
.boost-card-act{display:flex;justify-content:flex-end;align-items:center;gap:8px;flex-wrap:wrap}
.boost-card-act button{min-height:44px;min-width:44px}
.rwd-free{display:inline-flex;align-items:center;justify-content:center;margin-top:6px;min-height:44px;padding:8px 12px;border-radius:10px;border:1px solid #3ddc84;color:#d8ffe8;background:rgba(61,220,132,.08);font:700 12px/1.2 ui-monospace,monospace;cursor:pointer}
.rwd-free[hidden]{display:none!important}
#view-prestige:not(.hidden){min-height:calc(100vh - 88px)}
#dashBody{scroll-padding-top:8px}
#dashBody:focus{outline:2px solid #7ab3ff;outline-offset:2px}
@media(max-width:1023px){
  .view{scroll-margin-top:72px}
  #view-boosts,#view-contracts,#view-managers,#view-upgrades,#view-prestige{padding-bottom:calc(96px + env(safe-area-inset-bottom))}
  #view-boosts .boost-card,#view-contracts .card{scroll-margin-bottom:88px}
}
h2:focus,h3:focus{outline:2px solid #7ab3ff;outline-offset:3px}

/* v0.10.23.2: 🎯 jump-to-goal flash on the objective strip */
#goalStrip.goal-ping{border-color:var(--amber,#ffb020);box-shadow:0 0 0 3px rgba(255,176,32,.45);animation:coachPulse .9s ease-in-out 2}
body.motion-off #goalStrip.goal-ping,body.motion-reduced #goalStrip.goal-ping{animation:none}
