/* Y-Launch (play.html)
   Layout: one full-height flight deck. The canvas fills the stage; the hangar, debrief and pause
   screens are glass panels over it; the HUD is pinned to the top edge. Same palette as the site. */

/* ==========================================================================
   Base
   ========================================================================== */
:root{--line:rgba(196,222,232,.12);--line-strong:rgba(196,222,232,.24)}
html,body{height:100%}
body{font-size:16px;line-height:1.5;overflow:hidden;user-select:none;-webkit-user-select:none}
button{font:inherit;color:inherit}
:focus-visible{outline:2px solid var(--aqua);outline-offset:2px}
.label{font-size:10px}
.toast{bottom:calc(20px + env(safe-area-inset-bottom,0px));transform:translate(-50%,16px);z-index:10}
.mono{font-family:var(--f-mono)}

.app{height:100%;display:flex;flex-direction:column}

/* ==========================================================================
   Top bar
   ========================================================================== */
.top{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px clamp(16px,3vw,28px);border-bottom:1px solid var(--line);background:rgba(5,8,13,.85);position:relative;z-index:5}
.brand{display:flex;align-items:center;gap:14px;min-width:0;text-decoration:none;color:inherit}
.brand svg{width:118px;height:auto;flex:none}
.brand .game{font-family:var(--f-mark);font-size:10px;letter-spacing:.28em;color:var(--muted);border-left:1px solid var(--line-strong);padding-left:14px;white-space:nowrap}
.top-right{display:flex;align-items:center;gap:10px}
.wallet{display:flex;align-items:center;gap:10px;border:1px solid var(--line-strong);border-radius:999px;padding:6px 14px 6px 6px;background:rgba(14,26,36,.6)}
.wallet b{font-family:var(--f-mono);font-weight:500;font-variant-numeric:tabular-nums;font-size:15px}
.wallet small{font-family:var(--f-mark);font-size:9px;letter-spacing:.2em;color:var(--muted);white-space:nowrap}
.wallet.bump{animation:bump .5s}
@keyframes bump{40%{transform:scale(1.08);border-color:var(--gold)}}
.coin{width:24px;height:24px;border-radius:50%;background:radial-gradient(circle at 35% 30%,var(--gold-hi),var(--gold) 55%,#8d6629);display:grid;place-items:center;box-shadow:0 0 14px rgba(212,166,90,.35);flex:none}
.coin svg{width:12px;height:12px}
.pause{display:inline-flex;align-items:center;gap:8px;height:38px;padding:0 12px 0 14px;border:1px solid var(--line-strong);border-radius:999px;background:rgba(14,26,36,.6);color:var(--ink);cursor:pointer;font-family:var(--f-mark);font-size:9.5px;letter-spacing:.22em;text-transform:uppercase;transition:border-color .2s,color .2s}
.pause:hover{border-color:var(--gold);color:var(--gold-hi)}
.pause kbd{font-family:var(--f-mono);font-size:10px;letter-spacing:0;border:1px solid var(--line-strong);border-radius:4px;padding:1px 5px;color:var(--muted)}
@media (max-width:560px){.pause span,.pause kbd{display:none}.pause{width:38px;padding:0;justify-content:center}}
@media (max-width:520px){.brand .game{display:none}}
@media (max-width:440px){.wallet small{display:none}.brand svg{width:96px}}

/* ==========================================================================
   Stage + HUD
   ========================================================================== */
.stage{position:relative;flex:1;min-height:0;overflow:hidden}
canvas{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none;cursor:crosshair}

.hud{position:absolute;inset:0 0 auto 0;display:flex;justify-content:space-between;align-items:flex-start;gap:12px;padding:14px clamp(12px,3vw,24px) 34px;pointer-events:none;z-index:2;background:linear-gradient(rgba(5,8,13,.7),rgba(5,8,13,0))}
.hp{background:rgba(10,20,28,.62);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border:1px solid var(--line-strong);border-radius:8px;padding:11px 14px 12px;box-shadow:0 10px 30px -12px rgba(0,0,0,.6),inset 0 1px 0 rgba(255,255,255,.05)}
.hp .k{font-family:var(--f-mark);font-size:8.5px;letter-spacing:.26em;color:var(--muted);display:block}
.hp .k.burnk{color:var(--gold-hi)}
.hp .v{font-family:var(--f-mono);font-weight:500;font-size:22px;font-variant-numeric:tabular-nums;line-height:1.1;letter-spacing:-.01em}
.hp .v small{font-size:12px;color:var(--muted);margin-left:3px;font-weight:400}
.hp-left{min-width:min(210px,44vw)}
.hp-right{display:grid;justify-items:end;gap:0;min-width:min(150px,36vw)}
.hud-right{display:flex;align-items:flex-start;gap:8px}

.fuelrow{display:flex;align-items:center;gap:8px;margin-top:10px}
.fuelrow .k{flex:none}
.fuel{flex:1;height:7px;border-radius:4px;background:rgba(196,222,232,.1);overflow:hidden;position:relative}
.fuel::after{content:"";position:absolute;inset:0;background:repeating-linear-gradient(90deg,transparent 0 calc(25% - 1px),rgba(5,8,13,.7) calc(25% - 1px) 25%)}
.fuel i{display:block;height:100%;width:100%;border-radius:4px;background:linear-gradient(90deg,#2fa69b,var(--aqua) 60%,#bff3ee);box-shadow:0 0 10px rgba(95,207,196,.6);transform-origin:left;transition:transform .15s linear}
.fuel.low i{background:linear-gradient(90deg,#8a2a14,var(--bad));box-shadow:0 0 10px rgba(224,103,74,.7);animation:lowfuel .6s infinite alternate}
.fuel.burn i{background-image:repeating-linear-gradient(115deg,rgba(255,255,255,.35) 0 4px,transparent 4px 10px),linear-gradient(90deg,#2fa69b,var(--aqua) 45%,#ffd58a);background-size:11px 100%,100% 100%;box-shadow:0 0 12px rgba(255,213,138,.7);animation:drain .35s linear infinite}
@keyframes lowfuel{to{opacity:.45}}
@keyframes drain{to{background-position:-11px 0,0 0}}
.fuelpct{font-family:var(--f-mono);font-size:11px;color:var(--ink-2);min-width:3.2ch;text-align:right;font-variant-numeric:tabular-nums}
.fuel.low+.fuelpct{color:var(--bad)}
.fuel.burn:not(.low)+.fuelpct{color:var(--gold-hi)}

.earn{display:flex;align-items:center;gap:8px}
.earn .coin{width:20px;height:20px}
.earn .coin svg{width:10px;height:10px}
.earn .v{color:var(--gold-hi);text-shadow:0 0 18px rgba(212,166,90,.35);display:inline-block}
.earn .v.pop{animation:pop .35s cubic-bezier(.2,1.6,.4,1)}
@keyframes pop{40%{transform:scale(1.22);color:#fff}}

.shieldrow{display:flex;align-items:center;gap:8px;margin-top:9px;padding-top:9px;border-top:1px solid var(--line);width:100%;justify-content:flex-end}
.pips{display:flex;gap:4px}
.pips svg{width:13px;height:15px;display:block;transition:opacity .3s,filter .3s}
.pips svg.on{filter:drop-shadow(0 0 4px rgba(95,207,196,.8))}
.pips svg.off{opacity:.28}
.pips svg.over{filter:drop-shadow(0 0 4px rgba(240,211,155,.85))}

.zone{position:absolute;left:50%;top:16px;transform:translateX(-50%);font-family:var(--f-mark);font-size:9.5px;letter-spacing:.3em;color:var(--ink);pointer-events:none;z-index:3;white-space:nowrap;padding:7px 14px 7px 12px;border:1px solid var(--line);border-radius:999px;background:rgba(10,20,28,.55);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);display:flex;align-items:center;gap:8px}
.zone::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--aqua);box-shadow:0 0 8px var(--aqua)}
@media (max-width:560px){.hp{padding:9px 11px 10px}.hp .v{font-size:18px}.zone{top:auto;bottom:14px}.hp-left{min-width:0;width:42vw}.hp-right{min-width:0}}

/* Level progress (campaign only) */
.lvlrow{display:flex;align-items:center;gap:8px;margin-top:8px}
.lvlrow .k{flex:none;color:var(--ink-2)}
.prog{flex:1;height:3px;border-radius:2px;background:rgba(196,222,232,.1);overflow:hidden}
.prog i{display:block;height:100%;background:linear-gradient(90deg,var(--gold),var(--gold-hi));transform-origin:left;transform:scaleX(0)}

/* Boss health bar. --boss is set per boss by js/game/hud.js */
.bossbar{--boss:var(--bad);position:absolute;left:50%;top:16px;transform:translateX(-50%);width:clamp(220px,34vw,440px);z-index:3;pointer-events:none;padding:9px 12px 11px;border:1px solid var(--line-strong);border-radius:8px;background:rgba(10,20,28,.7);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}
.bb-head{display:flex;justify-content:space-between;gap:10px;font-family:var(--f-mark);font-size:9px;letter-spacing:.24em;margin-bottom:7px}
.bb-name{color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bb-phase{color:var(--boss);white-space:nowrap}
.bb-track{position:relative;height:8px;border-radius:4px;background:rgba(196,222,232,.1);overflow:hidden}
.bb-track i{position:absolute;inset:0;transform-origin:left;border-radius:4px}
.bb-ghost{background:rgba(255,255,255,.5)}
.bb-fill{background:var(--boss);box-shadow:0 0 12px var(--boss)}
@media (max-width:900px){.bossbar{top:auto;bottom:14px;width:min(440px,calc(100% - 24px))}}
/* With the fire button in a bottom corner, bottom-anchored HUD pieces move to the other side of it */
@media (max-width:900px){
  .touch-ui .bossbar{left:12px;transform:none;width:min(440px,calc(100% - 24px - 92px))}
  .touch-ui .bb-head{letter-spacing:.14em;font-size:8.5px}
  .touch-ui.fire-left .bossbar{left:auto;right:12px}
}
@media (max-width:560px){
  .touch-ui .zone{left:12px;transform:none}
  .touch-ui.fire-left .zone{left:auto;right:12px}
}

/* Secondary weapon. PC: a chip in the bottom-left with a cooldown bar. Touch: a
   round button above the fire button with a cooldown sweep. --cd is 1→0 as it recharges. */
.secbtn{--sec:var(--gold);--cd:0;position:absolute;left:16px;bottom:16px;z-index:4;display:inline-flex;align-items:center;gap:8px;padding:8px 12px;border-radius:999px;
  border:1px solid var(--line-strong);background:rgba(10,20,28,.72);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);color:var(--ink);
  font-family:var(--f-mark);font-size:9px;letter-spacing:.2em;cursor:pointer;overflow:hidden;touch-action:none;-webkit-tap-highlight-color:transparent}
.secbtn::after{content:"";position:absolute;left:0;bottom:0;height:2px;width:calc((1 - var(--cd)) * 100%);background:var(--sec)}
.secbtn .sec-key{font-family:var(--f-mono);font-size:10px;letter-spacing:0;border:1px solid var(--line-strong);border-radius:4px;padding:1px 5px;color:var(--ink-2)}
.secbtn .sec-state{font-family:var(--f-mono);letter-spacing:0;color:var(--muted)}
.secbtn.ready{border-color:var(--sec)}
.secbtn.ready .sec-state{color:var(--sec)}
.touch-ui .secbtn{left:auto;right:max(28px,env(safe-area-inset-right));bottom:calc(108px + env(safe-area-inset-bottom,0px));width:56px;height:56px;padding:0;border-radius:50%;justify-content:center;
  background:conic-gradient(rgba(5,8,13,.75) calc(var(--cd) * 360deg),rgba(10,20,28,.72) 0)}
.touch-ui .secbtn::after{display:none}
.touch-ui .secbtn .sec-key,.touch-ui .secbtn .sec-name{display:none}
.touch-ui .secbtn .sec-state{font-size:10px}
.touch-ui.fire-left .secbtn{right:auto;left:max(28px,env(safe-area-inset-left))}
/* narrow PC windows: the zone pill sits at the bottom, so lift the chip above it */
@media (max-width:560px){html:not(.touch-ui) .secbtn{bottom:56px}}

/* Touch controls. html.touch-ui is set by js/game/input.js on touch devices;
   .stage.flying by js/game/hud.js while a flight is on screen. */
.firebtn{display:none;position:absolute;right:max(16px,env(safe-area-inset-right));bottom:calc(16px + env(safe-area-inset-bottom,0px));z-index:4;width:78px;height:78px;border-radius:50%;place-items:center;padding:0;
  border:1.5px solid rgba(212,166,90,.65);background:radial-gradient(circle at 50% 40%,rgba(212,166,90,.22),rgba(10,20,28,.72));color:var(--gold-hi);
  backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);touch-action:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;cursor:pointer;transition:transform .08s,box-shadow .15s,background .15s}
.firebtn svg{width:34px;height:34px}
.firebtn.held{transform:scale(.94);background:radial-gradient(circle at 50% 40%,rgba(255,213,138,.55),rgba(212,166,90,.3));box-shadow:0 0 28px rgba(255,213,138,.55);color:#fff}
.touch-ui .stage.flying .firebtn{display:grid}
.fire-left .firebtn{right:auto;left:max(16px,env(safe-area-inset-left))}

.keys-touch,.touch-only{display:none}
.touch-ui .keys-desktop{display:none}
.touch-ui .keys-touch{display:block}
.touch-ui .touch-only{display:flex}
.keys-touch b{color:var(--gold-hi);font-weight:500}
.hand{align-items:center;justify-content:center;gap:8px;font-size:12.5px;color:var(--ink-2);cursor:pointer}
.hand input{accent-color:var(--gold);width:16px;height:16px;margin:0}

.banner{position:absolute;left:50%;top:22%;transform:translate(-50%,0);text-align:center;pointer-events:none;z-index:3;opacity:0;transition:opacity .4s,transform .4s}
.banner.on{opacity:1;transform:translate(-50%,-8px)}
.banner .t{font-family:var(--f-mark);font-size:clamp(16px,3vw,24px);letter-spacing:.2em}
.banner .r{font-family:var(--f-mono);color:var(--gold-hi);margin-top:6px}

/* ==========================================================================
   Panels (hangar, debrief, pause)
   ========================================================================== */
.panel{position:absolute;inset:0;z-index:4;display:flex;padding:clamp(12px,3vw,32px);overflow:auto;background:radial-gradient(80% 60% at 50% 40%,rgba(5,8,13,.35),rgba(5,8,13,.8))}
.card{margin:auto;width:min(860px,100%);background:var(--glass);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border:1px solid var(--line-strong);border-radius:6px;padding:clamp(20px,3.5vw,36px);box-shadow:0 30px 80px -20px rgba(0,0,0,.7)}
.card.md{width:min(520px,100%)}
.card.sm{width:min(420px,100%);text-align:center}
h1,h2{font-family:var(--f-display);font-weight:300;letter-spacing:-.02em;margin:10px 0 0;line-height:1.08;text-wrap:balance}
h1{font-size:clamp(28px,4.4vw,46px)}
h2{font-size:clamp(24px,3.6vw,38px)}
h1 em,h2 em{font-style:normal;color:var(--gold-hi)}
.sub{color:var(--ink-2);max-width:56ch;margin:12px 0 0}
.fine{margin-top:22px;padding-top:16px;border-top:1px solid var(--line);font-size:12px;color:var(--muted);line-height:1.6}
.row-btns{display:flex;flex-wrap:wrap;gap:10px;margin-top:24px}
.row-btns.center{justify-content:center}

.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;font-family:var(--f-mark);font-size:12px;letter-spacing:.22em;text-transform:uppercase;padding:16px 22px;border-radius:2px;border:1px solid var(--line-strong);background:transparent;cursor:pointer;transition:transform .2s,box-shadow .2s,border-color .2s}
.btn:hover{border-color:var(--gold)}
.btn.primary{background:linear-gradient(180deg,var(--gold-hi),var(--gold));color:var(--on-gold);border-color:transparent;box-shadow:0 12px 40px -12px rgba(212,166,90,.6)}
.btn.primary:hover:not(:disabled){transform:translateY(-2px)}
.btn:disabled{opacity:.45;cursor:not-allowed}
/* Hover: a band of light sweeps across, like the Endless card (no glow). Brighter on gold. */
.btn,.chest-cta{position:relative;overflow:hidden;isolation:isolate}
.btn::before,.chest-cta::before{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(105deg,transparent 30%,rgba(255,255,255,.12) 46%,rgba(255,255,255,.03) 52%,transparent 64%);transform:translateX(-110%);transition:transform .9s var(--ease-out-expo);pointer-events:none}
.btn.primary::before{background:linear-gradient(105deg,transparent 30%,rgba(255,255,255,.45) 46%,rgba(255,255,255,.1) 52%,transparent 64%)}
.btn:hover:not(:disabled)::before,.btn:focus-visible::before,.chest-cta:hover::before,.chest-cta:focus-visible::before{transform:translateX(110%)}
@media (prefers-reduced-motion:reduce){.btn::before,.chest-cta::before{transition:none}}

/* ==========================================================================
   Hangar
   ========================================================================== */
.hangar-grid{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:clamp(16px,3vw,32px);margin-top:26px}
/* minmax(0,…) lets the column shrink below the tab row's width; the tabs then scroll on their own */
@media (max-width:720px){.hangar-grid{grid-template-columns:minmax(0,1fr)}}

.tabs{display:flex;gap:2px;border-bottom:1px solid var(--line);margin-bottom:12px;overflow-x:auto;scrollbar-width:none}
.tabs::-webkit-scrollbar{display:none}
/* .overflowing is set by js/game/hangar.js when the tabs don't fit: fade the edge so the scroll is discoverable */
.tabs.overflowing{-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 28px),transparent);mask-image:linear-gradient(90deg,#000 calc(100% - 28px),transparent);padding-right:20px}
.tabs.overflowing.at-end{-webkit-mask-image:none;mask-image:none}
.tab{white-space:nowrap;display:inline-flex;align-items:center;gap:6px;background:none;border:0;border-bottom:2px solid transparent;padding:10px 8px;font-family:var(--f-mark);font-size:10px;letter-spacing:.22em;color:var(--muted);cursor:pointer}
.tab[aria-selected="true"]{color:var(--ink);border-color:var(--gold)}
.tab .badge{font-family:var(--f-mono);font-size:10px;letter-spacing:0;color:var(--void);background:var(--gold);border-radius:999px;padding:1px 6px}
.tab .badge.ok{background:var(--aqua)}

.list{display:grid;gap:8px}

/* Progress bar (missions, colony) */
.bar{height:5px;border-radius:3px;background:rgba(196,222,232,.1);overflow:hidden;margin-top:8px}
.bar i{display:block;height:100%;background:linear-gradient(90deg,var(--gold),var(--gold-hi));border-radius:3px}

/* Loadout */
.wgroup{margin:10px 0 0;font-family:var(--f-mark);font-size:9.5px;font-weight:400;letter-spacing:.24em;text-transform:uppercase;color:var(--muted)}
.wbar{display:inline-flex;gap:2px}
.wbar i{width:9px;height:3px;border-radius:2px;background:rgba(196,222,232,.15)}
.wbar i.on{background:var(--gold)}

.chip{font-family:var(--f-mono);font-size:12.5px;color:var(--gold-hi);border:1px solid rgba(212,166,90,.35);border-radius:999px;padding:4px 10px;white-space:nowrap}

/* Colony */
.colony-view{position:relative;aspect-ratio:16/8;max-width:100%;border:1px solid var(--line);border-radius:4px;overflow:hidden;background:#1a0b07}
.colony-view canvas{position:absolute;inset:0;width:100%;height:100%;cursor:default}
.colony-view .cap{position:absolute;left:12px;top:10px;font-family:var(--f-mark);font-size:9px;letter-spacing:.24em;color:#f3d8c6;text-shadow:0 1px 6px rgba(0,0,0,.7)}
.colony-view .cap b{font-family:var(--f-mono);letter-spacing:0;font-weight:500;color:#fff;margin-left:6px;font-size:12px}

/* Launch column */
.launch-col{display:grid;gap:14px;align-content:start}
.ship-preview{aspect-ratio:16/10;max-width:100%;border:1px solid var(--line);border-radius:4px;background:radial-gradient(60% 60% at 50% 60%,rgba(95,207,196,.12),transparent 70%),rgba(5,8,13,.5);display:grid;place-items:center;position:relative;overflow:hidden}
.ship-preview canvas{position:absolute;inset:0;cursor:default}
.stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;background:var(--line);border:1px solid var(--line);border-radius:4px;overflow:hidden}
.stats div{background:rgba(10,20,28,.9);padding:10px 12px}
.stats b{display:block;font-family:var(--f-mono);font-weight:500;font-variant-numeric:tabular-nums;font-size:16px}
.stats span{font-family:var(--f-mark);font-size:8.5px;letter-spacing:.2em;color:var(--muted)}
.levelpick{display:grid;grid-template-columns:34px minmax(0,1fr) 34px;align-items:center;gap:8px;padding:10px;border:1px solid rgba(212,166,90,.35);border-radius:4px;background:linear-gradient(135deg,rgba(212,166,90,.1),rgba(14,26,36,.5))}
.lp-arrow{width:34px;height:34px;display:grid;place-items:center;padding:0;border:1px solid var(--line-strong);border-radius:2px;background:transparent;color:var(--ink);cursor:pointer;transition:border-color .2s,color .2s}
.lp-arrow svg{width:12px;height:12px}
.lp-arrow:hover:not(:disabled){border-color:var(--gold);color:var(--gold-hi)}
.lp-arrow:disabled{opacity:.3;cursor:default}
.lp-body{display:grid;gap:2px;text-align:center;min-width:0}
.lp-k{font-family:var(--f-mark);font-size:9px;letter-spacing:.24em;color:var(--gold)}
.lp-name{font-family:var(--f-display);font-weight:400;font-size:18px;letter-spacing:-.01em}
.lp-meta{font-size:12px;color:var(--muted);line-height:1.4}
.lp-state{font-family:var(--f-mono);font-size:11.5px;color:var(--aqua)}
.levelpick.locked{border-color:var(--line);background:rgba(14,26,36,.5)}
.levelpick.locked .lp-k,.levelpick.locked .lp-state{color:var(--muted)}
.levelpick.locked .lp-name{color:var(--ink-2)}
.boost{display:flex;align-items:center;gap:10px;padding:12px;border:1px dashed var(--line-strong);border-radius:4px;cursor:pointer;font-size:14px}
.boost input{accent-color:var(--gold);width:18px;height:18px}
.boost small{display:block;color:var(--muted);font-size:12px}
.keys{font-size:12px;color:var(--muted);text-align:center}
.keys kbd{font-family:var(--f-mono);border:1px solid var(--line-strong);border-radius:3px;padding:1px 5px;font-size:11px;color:var(--ink-2)}

/* ==========================================================================
   Debrief
   ========================================================================== */
.ledger{margin-top:22px;border-top:1px solid var(--line-strong)}
.ledger div{display:flex;justify-content:space-between;gap:16px;padding:11px 0;border-bottom:1px solid var(--line);font-size:15px}
.ledger span{color:var(--ink-2)}
.ledger b{font-family:var(--f-mono);font-weight:500;font-variant-numeric:tabular-nums}
.ledger .mrow span{color:var(--aqua)}
.ledger .mrow.ach span{color:#f0c35a}
.ledger .total span{color:var(--ink)}
.ledger .total b{color:var(--gold-hi);font-size:20px}

/* ---------- Hangar bay (the home screen) ----------
   The ship stands on the pad in the game canvas behind; this layer only frames it.
   Dock buttons open .sheet screens over the bay. */
.panel.bay{padding:0;display:grid;grid-template-rows:auto minmax(0,1fr) auto auto;overflow:hidden;
  background:linear-gradient(180deg,rgba(5,8,13,.6),rgba(5,8,13,0) 18%,rgba(5,8,13,0) 62%,rgba(5,8,13,.88))}
.bay-top{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:16px clamp(16px,3vw,32px) 0}
.bay-record{display:flex;gap:6px}
.bay-record div{padding:7px 12px;border:1px solid var(--line);border-radius:999px;background:rgba(10,20,28,.6);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);display:flex;align-items:baseline;gap:7px}
.bay-record b{font-family:var(--f-mono);font-weight:500;font-size:13px;font-variant-numeric:tabular-nums}
.bay-record span{font-family:var(--f-mark);font-size:8.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--muted)}
.bay-streak{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--ink-2)}
.bay-streak:empty{display:none}
.bay-streak svg{width:15px;height:15px;fill:var(--gold)}
.bay-streak b{font-family:var(--f-mono);color:var(--gold-hi)}
.bay-main{display:grid;grid-template-columns:minmax(0,1fr) minmax(300px,370px);gap:24px;align-items:center;padding:0 clamp(16px,4vw,56px);min-height:0}
.bay-ship{height:100%}
.mission-card{display:grid;gap:10px;padding:14px;border:1px solid var(--line-strong);border-radius:10px;background:rgba(8,16,23,.78);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);box-shadow:0 30px 70px -30px rgba(0,0,0,.8)}
.mc-art{position:relative;aspect-ratio:16/8;border-radius:6px;overflow:hidden;background:radial-gradient(70% 80% at 50% 55%,rgba(95,207,196,.1),transparent 70%),rgba(5,8,13,.6)}
.mc-art canvas{position:absolute;inset:0;cursor:default}
.mission-card .levelpick{border:0;background:none;padding:0}
.btn.launch{width:100%;padding:18px 22px;font-size:14px;letter-spacing:.3em}
.mission-card .keys{font-size:11px}
.dock{display:flex;justify-content:center;gap:8px;padding:12px clamp(12px,3vw,32px) 10px}
.dock-btn{position:relative;display:grid;justify-items:center;gap:3px;width:118px;padding:12px 8px 10px;border:1px solid var(--line);border-radius:10px;background:rgba(10,20,28,.7);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);color:var(--ink);cursor:pointer;
  transition:transform .25s var(--ease-out-expo),border-color .2s,background .2s}
.dock-btn svg{width:24px;height:24px;stroke:var(--aqua);fill:none;margin-bottom:3px}
.dock-btn svg circle{fill:var(--aqua);stroke:none}
.dock-btn b{font-family:var(--f-mark);font-size:10px;font-weight:400;letter-spacing:.2em;text-transform:uppercase}
.dock-btn small{font-size:10.5px;color:var(--muted);white-space:nowrap}
.dock-btn:hover,.dock-btn:focus-visible{transform:translateY(-3px);border-color:rgba(212,166,90,.6);background:rgba(20,32,42,.85);outline:none}
.dock-btn:focus-visible{box-shadow:0 0 0 2px var(--gold)}
.dock-btn .badge{position:absolute;top:-7px;right:-6px;font-family:var(--f-mono);font-size:10px;color:var(--void);background:var(--gold);border-radius:999px;padding:1px 7px}
.dock-btn .badge.ok{background:var(--aqua)}
.bay .fine{margin:0;padding:0 16px 10px;border:0;text-align:center;font-size:11px}

/* A dedicated screen over the bay */
.sheet{position:absolute;inset:0;z-index:2;display:grid;grid-template-rows:auto minmax(0,1fr);background:rgba(5,9,14,.95);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);animation:sheetIn .35s var(--ease-out-expo)}
.sheet[hidden]{display:none}
@keyframes sheetIn{from{opacity:0;transform:translateY(18px)}}
.sheet-head{display:flex;align-items:center;gap:18px;padding:16px clamp(16px,4vw,48px);border-bottom:1px solid var(--line)}
.sheet-head h2{margin:0;font-family:var(--f-display);font-weight:300;font-size:clamp(22px,3vw,30px);line-height:1.1}
.sheet-head p{margin:3px 0 0;font-size:13px;color:var(--muted)}
.sheet-head > div{flex:1;min-width:0}
.sheet-back{display:inline-flex;align-items:center;gap:6px;padding:9px 14px 9px 10px;border:1px solid var(--line-strong);border-radius:999px;background:transparent;color:var(--ink-2);font-family:var(--f-mark);font-size:9.5px;letter-spacing:.22em;text-transform:uppercase;cursor:pointer}
.sheet-back:hover,.sheet-back:focus-visible{border-color:var(--gold);color:var(--gold-hi);outline:none}
.sheet-back svg{width:12px;height:12px}
.sheet-esc{font-family:var(--f-mono);font-size:10px;border:1px solid var(--line-strong);border-radius:4px;padding:2px 6px;color:var(--muted)}
.sheet-body{overflow:auto;padding:20px clamp(16px,4vw,48px) 32px}
.sheet-body .list{max-width:920px;margin:0 auto}
.sheet :is(button,[tabindex="0"]):focus-visible{outline:2px solid var(--gold);outline-offset:2px}

@media (max-width:860px){
  .panel.bay{grid-template-rows:auto minmax(0,1fr) auto;overflow:auto;padding-bottom:84px}
  .bay-record div{padding:6px 9px}
  .bay-record span{font-size:7.5px;letter-spacing:.12em}
  .bay-main{grid-template-columns:1fr;align-content:end;gap:0;padding:0 12px}
  .bay-ship{height:34vh;height:34svh}
  .mission-card{padding:12px}
  .mc-art{display:none}
  .bay .fine{display:none}
  .dock{position:fixed;left:0;right:0;bottom:0;z-index:5;gap:0;padding:6px 2px calc(6px + env(safe-area-inset-bottom));background:rgba(5,9,14,.94);border-top:1px solid var(--line);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}
  .dock-btn{flex:1 1 auto;width:auto;min-width:0;padding:8px 2px 6px;border:0;border-radius:8px;background:none}
  .dock-btn small{display:none}
  .dock-btn b{max-width:100%;overflow:hidden;font-family:var(--f-body);font-size:10.5px;font-weight:500;letter-spacing:0;text-transform:none}
  .dock-btn svg{width:22px;height:22px;margin:0}
  .dock-btn .badge{top:0;right:2px;font-size:9px;padding:0 5px;white-space:nowrap}
  .dock-btn:hover,.dock-btn:focus-visible{transform:none}
  .sheet{position:fixed;z-index:6;top:var(--sheet-top,0)}
  .sheet-esc{display:none}
}

/* ---------- Mission map (hangar screen) ---------- */
.sheet[data-screen="map"] .list{max-width:1180px}
.map{display:grid;gap:18px}
.route-wrap{display:grid;gap:10px}
.route{list-style:none;margin:0;padding:6px 2px 2px;display:flex;overflow-x:auto;scrollbar-width:none}
.route::-webkit-scrollbar{display:none}
.rt-stop{position:relative;flex:1 0 148px;display:flex;justify-content:center}
/* the trajectory between stops: solid gold once flown, dashed ahead */
.rt-stop + .rt-stop::before{content:"";position:absolute;top:44px;right:calc(50% + 40px);width:calc(100% - 80px);border-top:2px dashed rgba(196,222,232,.18)}
.rt-stop.cleared::before,.rt-stop.cleared + .rt-stop::before{border-top-style:solid;border-color:rgba(212,166,90,.7)}
.rt-node{display:grid;justify-items:center;gap:3px;padding:6px 6px 10px;border:1px solid transparent;border-radius:12px;background:none;color:var(--ink);cursor:pointer;width:146px;font:inherit;transition:background .2s,border-color .2s,transform .25s var(--ease-out-expo)}
span.rt-node{cursor:default}
button.rt-node:hover{background:rgba(20,32,42,.6);transform:translateY(-2px)}
.rt-node[data-focus]{border-color:rgba(212,166,90,.55);background:rgba(212,166,90,.07)}
.rt-node:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
.rt-planet{position:relative;width:76px;height:76px;display:block;border-radius:50%}
.rt-planet canvas{position:absolute;top:-8px;left:-26px;width:128px;height:92px}
.rt-stop.next .rt-planet::after{content:"";position:absolute;inset:-7px;border-radius:50%;border:2px solid var(--aqua);animation:rtPulse 2s ease-out infinite}
@keyframes rtPulse{0%{opacity:.9;transform:scale(.92)}100%{opacity:0;transform:scale(1.25)}}
.rt-stop.locked .rt-planet{filter:grayscale(1) brightness(.45)}
.rt-k{font-family:var(--f-mark);font-size:8.5px;letter-spacing:.2em;color:var(--muted);margin-top:4px}
.rt-node b{font-size:13.5px;font-weight:600}
.rt-chip{display:inline-flex;align-items:center;gap:4px;font-family:var(--f-mono);font-size:10.5px;padding:1px 8px;border-radius:999px;border:1px solid var(--line);color:var(--muted)}
.rt-chip svg{width:10px;height:10px;fill:currentColor;stroke:currentColor;stroke-width:1.2}
.rt-stop.cleared .rt-chip{color:var(--gold-hi);border-color:rgba(212,166,90,.4)}
.rt-stop.next .rt-chip{color:var(--void);background:var(--aqua);border-color:var(--aqua)}

.brief{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:4px 28px;padding:18px 20px;border:1px solid var(--line-strong);border-radius:12px;background:linear-gradient(160deg,rgba(212,166,90,.06),rgba(10,20,28,.7) 40%)}
.brief > :is(.bf-k,h3,p,.bf-facts,.bf-boss){grid-column:1}
.brief > :is(.wgroup,.bf-enemies){grid-column:2}
.brief > .wgroup{grid-row:1;margin:0}
.brief > .bf-enemies{grid-row:2 / span 4;align-self:start}
.brief > .bf-actions{grid-column:1 / -1}
.bf-k{font-family:var(--f-mark);font-size:9.5px;letter-spacing:.22em;text-transform:uppercase;color:var(--gold-hi)}
.brief h3{margin:4px 0 4px;font-family:var(--f-display);font-weight:300;font-size:28px;line-height:1.1}
.brief p{margin:0 0 8px;color:var(--ink-2);font-size:14px;line-height:1.55}
.bf-facts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin:4px 0 10px}
.bf-facts div{padding:8px 10px;border:1px solid var(--line);border-radius:6px;background:rgba(5,8,13,.4)}
.bf-facts dt{font-family:var(--f-mark);font-size:8px;letter-spacing:.18em;text-transform:uppercase;color:var(--muted)}
.bf-facts dd{margin:3px 0 0;font-family:var(--f-mono);font-size:13px}
.bf-boss{display:flex;align-items:center;gap:12px;padding:8px 12px 8px 8px;border:1px solid rgba(224,103,74,.3);border-radius:8px;background:rgba(224,103,74,.05)}
.bf-boss canvas{width:96px;height:90px;flex:none}
.bf-boss b{display:block;font-size:15px;margin-top:2px}
.bf-boss small{font-family:var(--f-mono);font-size:11px;color:var(--muted)}
.bf-boss .bf-k{color:#f0a48a}
.bf-enemies{list-style:none;margin:8px 0 0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(78px,1fr));gap:6px}
.bf-enemy{display:grid;justify-items:center;gap:2px;padding:6px 4px;border:1px solid var(--line);border-radius:6px;background:rgba(5,8,13,.4)}
.bf-enemy canvas{width:56px;height:56px;object-fit:contain}
.bf-enemy span{font-size:10.5px;color:var(--ink-2);text-align:center;line-height:1.2}
.bf-enemy.s0 span{color:var(--muted);letter-spacing:.15em}
.bf-actions{display:flex;align-items:center;gap:14px;margin-top:14px}
.bf-launch{min-width:220px;letter-spacing:.3em}
.bf-set{padding:12px 16px;border:1px solid var(--line-strong);border-radius:4px;background:transparent;color:var(--ink-2);font-family:var(--f-mark);font-size:10px;letter-spacing:.2em;text-transform:uppercase;cursor:pointer}
.bf-set:hover,.bf-set:focus-visible{border-color:var(--gold);color:var(--gold-hi);outline:none}
.bf-locked{font-family:var(--f-mono);font-size:13px;color:var(--muted);padding:12px 0}
.mc-map{justify-self:center;background:none;border:0;color:var(--aqua);font-size:12.5px;cursor:pointer;padding:2px 6px;border-radius:4px}
.mc-map:hover,.mc-map:focus-visible{color:var(--gold-hi);outline:none;text-decoration:underline}
@media (max-width:860px){
  .rt-stop{flex:0 0 112px}
  .brief{grid-template-columns:1fr;padding:14px}
  .brief > *{grid-column:1 !important;grid-row:auto !important}
  .bf-facts{grid-template-columns:repeat(3,minmax(0,1fr))}
  .bf-actions{flex-direction:column;align-items:stretch}
  .bf-launch{min-width:0}
}
/* the flight canvas rule makes every canvas a full-stage layer; briefing pictures sit in the flow */
.brief canvas{position:static;inset:auto;touch-action:auto;cursor:inherit}
.brief .bf-enemy canvas{width:56px;height:56px}
.brief .bf-boss canvas{width:96px;height:90px}

/* Endless: a full-width card of deep space at warp, with a glare that follows the pointer and a shine that sweeps on hover */
.endless-card{position:relative;display:flex;align-items:center;justify-content:space-between;gap:16px;width:100%;min-height:104px;padding:16px 26px;border:1px solid var(--line-strong);border-radius:14px;overflow:hidden;background:#05080d;color:var(--ink);font:inherit;text-align:left;cursor:pointer;
  transition:transform .35s var(--ease-out-expo),border-color .3s,box-shadow .3s;isolation:isolate}
.endless-card canvas{position:absolute;inset:0;width:100%;height:100%;z-index:-2;cursor:inherit}
.endless-card::before{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(105deg,transparent 30%,rgba(255,255,255,.09) 46%,rgba(255,255,255,.02) 52%,transparent 64%);transform:translateX(-110%);transition:transform .9s var(--ease-out-expo)}
.endless-card::after{content:"";position:absolute;inset:0;z-index:-1;background:radial-gradient(220px circle at var(--mx,70%) var(--my,50%),rgba(240,211,155,.08),transparent 60%);opacity:0;transition:opacity .3s}
.endless-card:hover,.endless-card:focus-visible{border-color:rgba(212,166,90,.4)}
.endless-card[data-focus]{border-color:rgba(212,166,90,.6)}
.endless-card:hover{transform:translateY(-2px)}
.endless-card:hover::before,.endless-card:focus-visible::before{transform:translateX(110%)}
.endless-card:hover::after{opacity:1}
.endless-card:focus-visible{outline:2px solid var(--gold);outline-offset:3px}
.ec-copy{display:grid;gap:4px;max-width:420px}
.ec-k{font-family:var(--f-mark);font-size:9.5px;letter-spacing:.24em;text-transform:uppercase;color:var(--muted)}
.ec-copy b{font-family:var(--f-display);font-weight:300;font-size:clamp(22px,3vw,30px);line-height:1;letter-spacing:-.01em;text-shadow:0 2px 24px rgba(0,0,0,.6)}
.ec-sub{font-size:13.5px;color:var(--ink-2)}
.ec-best{display:grid;justify-items:end;font-family:var(--f-mono);font-size:20px;color:var(--ink-2);line-height:1.1;text-shadow:0 2px 18px rgba(0,0,0,.7)}
.ec-best small{font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--muted)}
.endless-card.locked{filter:saturate(.3) brightness(.7);cursor:pointer}
@media (max-width:860px){.endless-card{min-height:92px;padding:14px 16px}.ec-best{font-size:16px}}
@media (prefers-reduced-motion:reduce){.endless-card,.endless-card::before{transition:none}}

/* ---------- Armory (hangar screen) ---------- */
.armory{display:grid;gap:14px}
.arm-sockets{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.arm-socket{display:flex;align-items:center;gap:12px;padding:10px 14px;border:1px solid var(--line-strong);border-left:3px solid var(--wc);border-radius:8px;background:rgba(10,20,28,.6);color:var(--ink);font:inherit;text-align:left;cursor:pointer;transition:border-color .2s,background .2s}
.arm-socket:hover{background:rgba(14,26,36,.85)}
.arm-socket.empty{border-style:dashed;border-left-style:solid}
.arm-socket small{display:block;font-family:var(--f-mark);font-size:8px;letter-spacing:.18em;text-transform:uppercase;color:var(--muted)}
.arm-socket b{font-size:14.5px;font-weight:600}
.arm-socket.empty b{color:var(--muted);font-weight:400}
.as-ic{display:grid;place-items:center;width:34px;height:34px;flex:none;border-radius:50%;border:1px solid color-mix(in srgb,var(--wc) 45%,transparent);background:radial-gradient(circle,color-mix(in srgb,var(--wc) 18%,transparent),transparent 70%)}
.as-ic svg{width:18px;height:18px}
.arm-top{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:14px}
.arm-range{position:relative;min-height:300px;border:1px solid var(--line-strong);border-radius:12px;overflow:hidden;background:#04080c}
.arm-range canvas{position:absolute;inset:0;width:100%;height:100%}
.arm-tag{position:absolute;left:12px;top:10px;font-family:var(--f-mark);font-size:8.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--muted);pointer-events:none}
.arm-detail{display:flex;flex-direction:column;gap:6px;padding:18px 20px;border:1px solid var(--line-strong);border-radius:12px;background:linear-gradient(160deg,rgba(212,166,90,.06),rgba(10,20,28,.7) 40%)}
.arm-detail h3{margin:2px 0 0;font-family:var(--f-display);font-weight:300;font-size:28px;line-height:1.1}
.arm-detail p{margin:0;color:var(--ink-2);font-size:14px;line-height:1.55}
.ad-stats,.ad-facts{display:grid;gap:6px;margin:8px 0 0}
.ad-stats div{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 10px;border:1px solid var(--line);border-radius:6px;background:rgba(5,8,13,.4)}
.ad-stats dt,.ad-facts dt{font-family:var(--f-mark);font-size:8.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--muted)}
.ad-stats dd{margin:0}
.ad-stats .wbar i{width:22px;height:5px}
.ad-facts{grid-template-columns:repeat(3,minmax(0,1fr))}
.ad-facts div{padding:8px 10px;border:1px solid var(--line);border-radius:6px;background:rgba(5,8,13,.4)}
.ad-facts dd{margin:3px 0 0;font-family:var(--f-mono);font-size:13px}
.ad-note{font-size:12px !important;color:var(--muted) !important;margin-top:4px !important}
.arm-detail .bf-actions{margin-top:auto;padding-top:12px;flex-wrap:wrap}
.arm-detail .btn{min-width:200px}
.ad-on{display:inline-flex;align-items:center;gap:8px;font-family:var(--f-mark);font-size:10px;letter-spacing:.22em;text-transform:uppercase;color:var(--aqua)}
.ad-on::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--aqua);box-shadow:0 0 10px var(--aqua)}
.ad-short{font-family:var(--f-mono);font-size:12px;color:var(--muted)}
.arm-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:0;padding:0;list-style:none}
.arm-card{position:relative;display:grid;justify-items:start;gap:8px;width:100%;height:100%;padding:14px 14px 12px;border:1px solid var(--line);border-radius:10px;background:rgba(10,20,28,.55);color:var(--ink);font:inherit;text-align:left;cursor:pointer;transition:border-color .2s,transform .2s,background .2s}
.arm-card:hover{transform:translateY(-2px);border-color:var(--line-strong);background:rgba(14,26,36,.85)}
.arm-card[data-focus]{border-color:color-mix(in srgb,var(--wc) 70%,transparent);background:linear-gradient(160deg,color-mix(in srgb,var(--wc) 12%,transparent),rgba(10,20,28,.8) 60%);box-shadow:0 16px 40px -22px var(--wc)}
.arm-card b{font-size:14px;font-weight:600;line-height:1.2}
.ac-ic{display:grid;place-items:center;width:38px;height:38px;border-radius:10px;border:1px solid color-mix(in srgb,var(--wc) 35%,transparent);background:radial-gradient(circle,color-mix(in srgb,var(--wc) 16%,transparent),transparent 75%)}
.ac-ic svg{width:20px;height:20px}
.ac-bars{display:grid;grid-template-columns:repeat(2,auto);gap:5px 12px}
.ac-bars > span{display:inline-flex;align-items:center;gap:6px}
.ac-bars em{width:30px;font-style:normal;font-family:var(--f-mark);font-size:7.5px;letter-spacing:.14em;color:var(--muted)}
.ac-cool{font-family:var(--f-mono);font-size:11px;color:var(--muted)}
.ac-chip{display:inline-flex;align-items:center;gap:4px;margin-top:2px;padding:2px 8px;border:1px solid var(--line-strong);border-radius:999px;font-family:var(--f-mono);font-size:11px;color:var(--ink-2)}
.ac-chip svg{width:10px;height:10px;fill:currentColor;stroke:currentColor}
.arm-card.equipped .ac-chip{color:var(--void);background:var(--aqua);border-color:var(--aqua)}
.arm-card.owned .ac-chip{color:var(--aqua);border-color:rgba(95,207,196,.4)}
.arm-card.locked{opacity:.55}
.arm-card.locked .ac-ic{filter:grayscale(1)}
.armory .wgroup{margin:8px 0 0}
.armory :is(.arm-card,.arm-socket):focus-visible{outline:2px solid var(--gold);outline-offset:2px}

/* ---------- Shipyard (the Garage hangar screen) ---------- */
.garage{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);gap:14px;align-items:start}
.gar-stage{position:sticky;top:0;min-height:460px;border:1px solid var(--line-strong);border-radius:12px;overflow:hidden;background:#03060a}
.gar-stage canvas{position:absolute;inset:0;width:100%;height:100%}
.gar-spec{position:absolute;left:12px;bottom:10px;font-family:var(--f-mono);font-size:11px;color:var(--muted);pointer-events:none}
.gar-spec b{color:var(--ink-2)}
.yd-bench{display:flex;flex-direction:column;gap:12px;min-width:0}
.yd-tabs{display:flex;gap:4px;padding:4px;border:1px solid var(--line);border-radius:10px;background:rgba(5,8,13,.5);overflow-x:auto;scrollbar-width:none}
.yd-tab{flex:1 1 0;min-width:max-content;padding:9px 8px;border:0;border-radius:7px;background:none;color:var(--muted);font-family:var(--f-mark);font-size:9px;letter-spacing:.14em;text-transform:uppercase;cursor:pointer;transition:background .2s,color .2s}
.yd-tab:hover{color:var(--ink-2)}
.yd-tab[aria-selected="true"]{background:rgba(212,166,90,.14);color:var(--gold-hi)}
.yd-items{min-height:220px}
.yd-tiles{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:0;padding:0;list-style:none}
.yd-tile{position:relative;display:grid;grid-template-columns:72px minmax(0,1fr);grid-template-rows:auto auto;align-items:center;column-gap:10px;width:100%;padding:8px 12px 8px 6px;border:1px solid var(--line);border-radius:10px;background:rgba(10,20,28,.55);color:var(--ink);font:inherit;text-align:left;cursor:pointer;transition:border-color .2s,background .2s,transform .2s}
.yd-tile img{grid-row:1 / span 2}
.yd-tile b{align-self:end;font-size:14px;font-weight:600}
.yd-tile .yd-chip{align-self:start;justify-self:start}
.yd-tile:hover,.yd-preset:hover{transform:translateY(-2px);border-color:var(--line-strong);background:rgba(14,26,36,.85)}
.yd-tile[data-focus],.yd-preset[data-focus]{border-color:rgba(212,166,90,.6);background:linear-gradient(160deg,rgba(212,166,90,.1),rgba(10,20,28,.8) 60%)}
.yd-tile.shop img{filter:saturate(.6) brightness(.85)}
.yd-chip{display:inline-flex;align-items:center;gap:4px;margin-top:4px;padding:2px 8px;border:1px solid var(--line-strong);border-radius:999px;font-family:var(--f-mono);font-size:11px;color:var(--ink-2)}
.yd-chip svg{width:12px;height:12px;fill:currentColor;stroke:none}
.yd-chip.on{color:var(--void);background:var(--aqua);border-color:var(--aqua)}
.yd-chip.own{color:var(--aqua);border-color:rgba(95,207,196,.4)}
.yd-chip.chest.epic,.yd-swatch small.chest.epic{color:#d9c6ff;border-color:rgba(185,140,255,.6)}
.yd-chip.chest.legendary,.yd-swatch small.chest.legendary{color:var(--gold-hi);border-color:rgba(240,200,120,.6)}
.yd-chip.ach,.yd-swatch small.ach{color:#f3c96b}
.bf-locked svg{width:13px;height:13px;fill:currentColor;vertical-align:-2px}
.yd-presets{display:grid;gap:10px;margin:0;padding:0;list-style:none}
.yd-preset{display:flex;align-items:center;gap:12px;width:100%;padding:8px 14px 8px 6px;border:1px solid var(--line);border-radius:10px;background:rgba(10,20,28,.55);color:var(--ink);font:inherit;text-align:left;cursor:pointer;transition:border-color .2s,background .2s,transform .2s}
.yd-preset > span{display:grid;justify-items:start;gap:2px}
.yd-preset b{font-size:15px;font-weight:600}
.yd-preset small{font-size:12.5px;color:var(--muted)}
.yd-swatches{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0 6px;padding:0;list-style:none}
.yd-swatch{position:relative;display:grid;justify-items:center;gap:3px;width:52px;padding:5px 0 4px;border:1px solid transparent;border-radius:10px;background:none;cursor:pointer}
.yd-swatch i{display:block;width:32px;height:32px;border-radius:50%;background:var(--sw);box-shadow:inset 0 0 0 1px rgba(255,255,255,.18),0 4px 12px -4px rgba(0,0,0,.8)}
.yd-swatch small{display:inline-flex;align-items:center;gap:2px;font-family:var(--f-mono);font-size:9.5px;color:var(--ink-2)}
.yd-swatch small svg{width:13px;height:13px;fill:currentColor;stroke:none}
/* chest-only paints: the chest marker sits in a small pill in its rarity colour */
.yd-swatch small.chest{padding:2px 5px;border:1px solid var(--line-strong);border-radius:999px;background:rgba(5,8,13,.85)}
.yd-swatch.shop i{opacity:.75}
.yd-swatch:hover{border-color:var(--line-strong)}
.yd-swatch[data-focus]{border-color:rgba(212,166,90,.7);background:rgba(212,166,90,.08)}
.yd-swatch[data-focus] i{box-shadow:inset 0 0 0 1px rgba(255,255,255,.18),0 0 0 2px #05080d,0 0 0 3px var(--gold)}
.yd-bar{position:sticky;bottom:0;z-index:1;box-shadow:0 -18px 30px -12px #05090e;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px 16px;padding:14px 16px;border:1px solid var(--line-strong);border-radius:12px;background:linear-gradient(160deg,#141811,#0a141c 40%)}
.yd-bar .bf-actions{margin:0;flex-wrap:wrap}
.yd-what{display:grid;gap:2px;min-width:0}
.yd-what b{font-family:var(--f-display);font-weight:300;font-size:22px;line-height:1.1}
.yd-what small{font-size:13px;color:var(--ink-2)}
.yd-hint{font-size:13px;color:var(--muted)}
.garage :is(.yd-tab,.yd-tile,.yd-preset,.yd-swatch):focus-visible{outline:2px solid var(--gold);outline-offset:2px}

/* ---------- Workshop (hangar screen): the blueprint ---------- */
.workshop{display:grid;grid-template-columns:minmax(0,2.3fr) minmax(290px,1fr);gap:14px;align-items:start}
.bp{position:relative;min-height:440px;border:1px solid rgba(159,232,255,.22);border-radius:12px;overflow:hidden;background:#04101b}
.bp canvas{position:absolute;inset:0;width:100%;height:100%}
.bp-title{position:absolute;left:50%;top:12px;transform:translateX(-50%);font-family:var(--f-mark);font-size:8.5px;letter-spacing:.24em;text-transform:uppercase;color:rgba(159,232,255,.55);white-space:nowrap;pointer-events:none}
.bp-tag{position:absolute;display:flex;align-items:center;gap:9px;width:158px;padding:8px 10px;border:1px solid rgba(159,232,255,.28);border-radius:8px;background:rgba(4,16,27,.85);color:var(--ink);font:inherit;text-align:left;cursor:pointer;transition:border-color .2s,background .2s}
.bp-tag svg{width:20px;height:20px;flex:none}
.bp-tag b{display:block;font-size:12.5px;font-weight:600;margin-bottom:4px}
.bp-tag em{position:absolute;top:-8px;right:8px;padding:0 6px;border-radius:999px;background:var(--gold);color:var(--on-gold);font-family:var(--f-mono);font-size:9.5px;font-style:normal}
.bp-tag:hover{border-color:rgba(159,232,255,.55);background:rgba(8,26,42,.95)}
.bp-tag.lit{border-color:rgba(240,200,120,.35)}
.bp-tag[data-focus]{border-color:var(--gold);background:linear-gradient(160deg,rgba(212,166,90,.16),rgba(4,16,27,.92) 60%)}
.bp-tag:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
.at-blaster{left:14px;top:44px}
.at-fuel{left:14px;top:46%}
.at-magnet{left:14px;bottom:44px}
.at-shield{right:14px;top:44px}
.at-thrust{right:14px;bottom:30%}
.bp-pips{display:inline-flex;gap:3px}
.bp-pips i{width:14px;height:4px;border-radius:2px;background:rgba(159,232,255,.16)}
.bp-pips i.on{background:var(--gold);box-shadow:0 0 6px rgba(240,200,120,.5)}
.bp-pips.big{gap:5px;margin:6px 0 2px}
.bp-pips.big i{width:34px;height:6px}
.bp-detail{display:flex;flex-direction:column;gap:6px;padding:18px 20px;border:1px solid var(--line-strong);border-radius:12px;background:linear-gradient(160deg,rgba(212,166,90,.06),rgba(10,20,28,.7) 40%)}
.bp-detail h3{margin:2px 0 0;font-family:var(--f-display);font-weight:300;font-size:28px;line-height:1.1}
.bp-detail p{margin:0;color:var(--ink-2);font-size:14px;line-height:1.55}
.bp-stats{display:grid;gap:6px;margin:8px 0 0}
.bp-stats div{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 12px;border:1px solid var(--line);border-radius:6px;background:rgba(5,8,13,.4)}
.bp-stats dt{font-family:var(--f-mark);font-size:8.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--muted)}
.bp-stats dd{display:flex;align-items:center;gap:8px;margin:0;font-family:var(--f-mono);font-size:13.5px}
.bp-stats dd span{color:var(--muted)}
.bp-stats dd i{font-style:normal;color:var(--gold)}
.bp-stats dd b{font-weight:500;color:var(--ink)}
.bp-note{font-size:12.5px !important;color:var(--gold-hi) !important}
.bp-detail .bf-actions{margin-top:10px;flex-wrap:wrap}
.bp-detail .btn{width:100%}

/* ---------- Ops (hangar screen): the mission board ---------- */
.ops{display:grid;gap:14px}
.op-streak{display:grid;gap:14px;padding:18px 20px;border:1px solid var(--line-strong);border-radius:12px;background:linear-gradient(160deg,rgba(212,166,90,.08),rgba(10,20,28,.7) 45%)}
.op-streak-head{display:flex;align-items:center;gap:18px;flex-wrap:wrap}
.op-streak-head p{flex:1;min-width:220px;margin:0;font-size:13.5px;line-height:1.5;color:var(--ink-2)}
.op-flame{display:grid;justify-items:center;min-width:76px}
.op-flame b{font-family:var(--f-display);font-weight:300;font-size:44px;line-height:1;color:var(--gold-hi)}
.op-flame span{font-family:var(--f-mark);font-size:8px;letter-spacing:.2em;text-transform:uppercase;color:var(--muted)}
.op-shields{display:flex;align-items:center;gap:10px}
.op-shields .bf-set{display:inline-flex;align-items:center;gap:6px}
.op-sh{display:flex;gap:4px}
.op-sh i{display:block;width:22px;height:22px}
.op-sh svg{width:100%;height:100%;fill:none;stroke:rgba(159,232,255,.35);stroke-width:1.5}
.op-sh i.on svg{fill:rgba(95,207,196,.25);stroke:var(--aqua)}
.op-ladder{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px;margin:0;padding:0;list-style:none}
.op-day{position:relative;display:grid;justify-items:center;gap:2px;padding:10px 4px 9px;border:1px solid var(--line);border-radius:8px;background:rgba(5,8,13,.45)}
.op-day span{font-family:var(--f-mark);font-size:7.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}
.op-day b{font-family:var(--f-mono);font-size:14px;font-weight:500;color:var(--ink-2)}
.op-day small{position:absolute;bottom:-9px;padding:1px 6px;border-radius:999px;background:var(--gold);color:var(--on-gold);font-family:var(--f-mono);font-size:9px}
.op-day.lit{border-color:rgba(212,166,90,.45);background:linear-gradient(180deg,rgba(212,166,90,.18),rgba(10,20,28,.6))}
.op-day.lit b{color:var(--gold-hi)}
.op-day.today{border-color:var(--gold);box-shadow:0 0 0 1px var(--gold),0 10px 30px -14px var(--gold)}
.op-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:8px 0 0;padding:0;list-style:none}
.op-card{position:relative;display:grid;justify-items:center;align-content:start;gap:6px;padding:18px 16px 16px;border:1px solid var(--line);border-radius:12px;background:rgba(10,20,28,.55);text-align:center}
.op-card h3{margin:2px 0 0;font-size:15px;font-weight:600;line-height:1.3}
.op-target{position:relative;width:96px;height:96px}
.op-ring{position:absolute;inset:0;width:100%;height:100%;transform:rotate(-90deg)}
.op-ring circle{fill:none;stroke-width:4}
.op-ring .track{stroke:rgba(159,232,255,.1)}
.op-ring .fill{stroke:var(--gold);stroke-linecap:round;transition:stroke-dasharray .6s var(--ease-out-expo)}
.op-ring.done .fill{stroke:var(--aqua)}
.op-target canvas{position:absolute;inset:18px;width:60px;height:60px}
.op-glyph{position:absolute;inset:26px;width:44px;height:44px;fill:none;stroke:var(--ink-2);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.op-mode{font-family:var(--f-mark);font-size:8px;letter-spacing:.2em;text-transform:uppercase;color:var(--muted)}
.op-prog{font-family:var(--f-mono);font-size:13px;color:var(--muted)}
.op-prog b{font-weight:500;color:var(--ink)}
.op-reward{margin-top:4px;padding:3px 10px;border:1px solid rgba(212,166,90,.4);border-radius:999px;font-family:var(--f-mono);font-size:12px;color:var(--gold-hi)}
.op-card.done{border-color:rgba(95,207,196,.4);background:linear-gradient(180deg,rgba(95,207,196,.09),rgba(10,20,28,.6))}
.op-card.done .op-reward{border-color:var(--aqua);background:var(--aqua);color:var(--void)}
.op-chest{display:grid;grid-template-columns:auto minmax(0,1fr) auto auto;align-items:center;gap:18px;padding:16px 20px;border:1px solid var(--line-strong);border-radius:12px;background:rgba(10,20,28,.6)}
.op-chest h3{margin:2px 0 2px;font-size:17px;font-weight:600}
.op-chest p{margin:0;font-size:13px;color:var(--ink-2)}
.op-chest p b{color:var(--gold-hi);font-weight:500}
.op-locks{display:flex;gap:6px}
.op-locks i{width:12px;height:12px;border-radius:50%;border:1px solid var(--line-strong);background:rgba(5,8,13,.6)}
.op-locks i.on{border-color:var(--aqua);background:var(--aqua);box-shadow:0 0 10px var(--aqua)}
.op-reset{font-size:12.5px;color:var(--muted);white-space:nowrap}
.op-chest.ready{grid-template-columns:minmax(0,1fr) auto;border-color:rgba(240,211,155,.5)}
.op-chest.ready .chest-cta{margin:0}
.op-rar{color:var(--rar);font-weight:600}
.op-reset b{color:var(--ink-2);font-weight:500}

/* ---------- Colony (hangar screen) ---------- */
.colony{display:grid;gap:14px}
.colony .colony-view{aspect-ratio:16/8;border-radius:12px;border-color:rgba(231,154,108,.3)}
.cm-pin{position:absolute;transform:translate(-50%,calc(-100% - 46px));display:grid;justify-items:center;gap:1px;padding:5px 10px;border:1px solid rgba(243,216,198,.35);border-radius:8px;background:rgba(26,11,7,.78);color:#f3d8c6;font:inherit;cursor:pointer;white-space:nowrap;transition:border-color .2s,background .2s,transform .2s;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}
.cm-pin::after{content:"";position:absolute;left:50%;bottom:-38px;width:1px;height:36px;background:linear-gradient(rgba(243,216,198,.55),rgba(243,216,198,0))}
.cm-pin b{font-size:12px;font-weight:600}
.cm-pin span{display:inline-flex;align-items:center;gap:4px;font-family:var(--f-mono);font-size:10.5px;color:rgba(243,216,198,.75)}
.cm-pin span svg{width:9px;height:9px;fill:currentColor;stroke:currentColor}
.cm-pin.built span,.cm-pin.max span{color:var(--aqua)}
.cm-pin.open{border-color:rgba(159,232,255,.55)}
.cm-pin.open span{color:#9fe8ff}
.cm-pin.locked{opacity:.72}
.cm-pin:hover{border-color:rgba(255,226,190,.75);transform:translate(-50%,calc(-100% - 48px))}
.cm-pin[data-focus]{border-color:#ffe2be;background:rgba(60,24,12,.9);box-shadow:0 10px 30px -10px rgba(255,180,120,.6)}
.cm-pin:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
.cm-lv{display:flex;align-items:center;gap:10px;font-size:12.5px;color:var(--muted)}
.cm-pips{display:inline-flex;gap:4px}
.cm-pips i{width:22px;height:5px;border-radius:3px;background:rgba(243,216,198,.15)}
.cm-pips i.on{background:var(--aqua);box-shadow:0 0 8px rgba(95,207,196,.6)}
.cm-perk{display:grid;grid-template-columns:auto minmax(0,1fr);gap:6px 12px;align-items:baseline;margin-top:8px;padding:10px 12px;border:1px solid var(--line);border-radius:8px;background:rgba(5,8,13,.4)}
.cm-perk span{font-family:var(--f-mark);font-size:8.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--muted)}
.cm-perk b{font-size:14px;font-weight:500;color:var(--ink)}
.cm-perk b.was{color:var(--muted);font-weight:400}
.col-log{min-width:0}
.col-log .wgroup{margin:0 0 8px}
.col-log ol{display:grid;gap:8px;max-height:420px;margin:0;padding:0 4px 0 0;list-style:none;overflow:auto}
.col-log li{display:grid;grid-template-columns:62px minmax(0,1fr);gap:10px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:rgba(10,20,28,.5)}
.col-log li b{font-size:13.5px;font-weight:600}
.col-log li p{margin:3px 0 0;font-size:13px;line-height:1.5;color:var(--ink-2)}
.cm-sol{font-family:var(--f-mono);font-size:11px;color:#e79a6c;padding-top:2px}
.col-log li.latest{border-color:rgba(231,154,108,.5);background:linear-gradient(160deg,rgba(196,85,45,.12),rgba(10,20,28,.6) 60%)}
.col-log li.cm-next{border-style:dashed;background:none}
.cm-new{margin-left:8px;padding:1px 7px;border-radius:999px;background:#e79a6c;color:#1a0b07;font-family:var(--f-mono);font-size:10px;font-style:normal;vertical-align:2px}
.col-log li.cm-next b{color:#9fe8ff}
.colony-view .cap span{display:block;margin-top:4px;font-family:var(--f-mono);font-size:10.5px;letter-spacing:0;color:rgba(243,216,198,.7)}
.col-bottom{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);gap:14px;align-items:start}
.col-bar{grid-column:2 / -1;display:block;height:3px;border-radius:3px;background:rgba(243,216,198,.1);overflow:hidden}
.col-bar i{display:block;height:100%;background:linear-gradient(90deg,#c4552d,#e79a6c)}
.col-bar.big{height:6px}
.col-sheet{display:flex;flex-direction:column;gap:6px;padding:18px 20px;border:1px solid var(--line-strong);border-radius:12px;background:linear-gradient(160deg,rgba(196,85,45,.1),rgba(10,20,28,.7) 45%)}
.col-sheet h3{margin:2px 0 0;font-family:var(--f-display);font-weight:300;font-size:28px;line-height:1.1}
.col-perk{margin:0;font-size:14.5px;color:var(--ink-2)}
.col-fund{display:grid;gap:6px;margin-top:8px}
.col-fund span{font-family:var(--f-mono);font-size:12.5px;color:var(--muted)}
.col-fund b{font-weight:500;color:var(--ink)}
.col-sheet .bf-actions{margin-top:12px;flex-wrap:wrap}
.col-sheet .btn{flex:1;min-width:0}
.col-sheet.on{border-color:rgba(95,207,196,.35)}

@media (max-width:860px){
  .arm-top,.garage,.workshop{grid-template-columns:1fr}
  .op-cards{grid-template-columns:1fr}
  .col-bottom{grid-template-columns:1fr}
  .colony .colony-view{aspect-ratio:1/1}
  .colony-view .cap span{display:none}
  .cm-pin{transform:translate(-50%,calc(-100% - 26px))}
  .cm-pin::after{bottom:-22px;height:20px}
  .cm-pin:hover{transform:translate(-50%,calc(-100% - 26px))}
  .cm-pin{padding:3px 6px}
  .cm-pin b{display:none}
  .col-log ol{max-height:none}
  .col-sheet h3{font-size:24px}
  .op-card{grid-template-columns:72px minmax(0,1fr) auto;justify-items:start;align-items:center;gap:2px 12px;padding:12px;text-align:left}
  .op-target{grid-row:1 / span 3;width:72px;height:72px}
  .op-target canvas{inset:14px;width:44px;height:44px}
  .op-glyph{inset:19px;width:34px;height:34px}
  .op-card h3{font-size:14px}
  .op-reward{grid-column:3;grid-row:1 / span 3;margin:0}
  .op-ladder{gap:3px}
  .op-day{padding:8px 2px 7px}
  .op-day span{font-size:6.5px;letter-spacing:.06em}
  .op-day b{font-size:11.5px}
  .op-chest{grid-template-columns:auto minmax(0,1fr);gap:10px 14px}
  .op-locks,.op-reset{grid-column:1 / -1}
  .op-flame b{font-size:36px}
  .bp{display:grid;grid-template-columns:1fr 1fr;gap:6px;min-height:0;padding:300px 8px 8px}
  .bp canvas{height:292px;bottom:auto}
  .bp-tag{position:relative;inset:auto;width:auto;padding:7px 8px;gap:7px}
  .bp-tag b{font-size:11.5px}
  .bp-pips i{width:11px}
  .bp-detail h3{font-size:24px}
  .bp-detail .btn{flex:1;min-width:0}
  .arm-range{min-height:240px}
  .arm-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .arm-socket{padding:8px 10px;gap:8px}
  .arm-socket b{font-size:13px}
  .as-ic{width:28px;height:28px}
  .arm-detail h3{font-size:24px}
  .arm-detail .btn{flex:1;min-width:0}
  .gar-stage{position:relative}
  .yd-tiles{grid-template-columns:1fr 1fr}
  .yd-tile{grid-template-columns:1fr;justify-items:center;text-align:center;padding:8px 6px}
  .yd-tile img{grid-row:auto;width:64px;height:64px}
  .yd-tile .yd-chip{justify-self:center}
  .yd-tab{padding:8px 9px;font-size:8.5px;letter-spacing:.12em}
  .gar-stage{min-height:240px}
  .yd-bar{padding:10px 12px;gap:8px}
  .yd-what b{font-size:18px}
  .yd-what small{display:none}
  .yd-bar .bf-actions{width:100%;flex-direction:row;align-items:center;flex-wrap:nowrap;gap:8px}
  .yd-bar .btn{flex:1;min-width:0;padding:12px 8px;font-size:10px;letter-spacing:.14em}
  .yd-bar .bf-set{flex:none;padding:12px 10px;font-size:8.5px;letter-spacing:.12em}
  .yd-bar .ad-short{display:none}
}

/* ---------- The daily chest moment (chest-view.js) ---------- */
.chest-stage{position:fixed;inset:0;z-index:50;display:grid;place-items:center;--rar:#f0d39b;background:#03060a;animation:csIn .4s var(--ease-out-expo)}
.chest-stage[hidden]{display:none}
@keyframes csIn{from{opacity:0}}
.chest-stage canvas{position:absolute;inset:0;width:100%;height:100%;touch-action:none;cursor:pointer}
.cs-head{position:absolute;top:clamp(28px,9vh,90px);left:0;right:0;display:grid;justify-items:center;gap:8px;text-align:center;pointer-events:none;padding:0 16px}
.cs-head[hidden]{display:none}
.cs-k{font-family:var(--f-mark);font-size:10px;letter-spacing:.3em;text-transform:uppercase;color:var(--gold-hi)}
.cs-head h2{margin:0;font-family:var(--f-display);font-weight:300;font-size:clamp(34px,5vw,56px);line-height:1}
.cs-head p{margin:0;font-size:15px;color:var(--ink-2)}
.cs-hold{position:absolute;bottom:clamp(28px,9vh,90px);left:50%;transform:translateX(-50%);--p:0;display:grid;place-items:center;width:min(320px,80vw);height:64px;padding:0;border:0;border-radius:999px;background:conic-gradient(var(--gold-hi) calc(var(--p) * 360deg),rgba(240,211,155,.18) 0);cursor:pointer;user-select:none;-webkit-user-select:none;touch-action:none;box-shadow:0 0 calc(var(--p) * 60px) rgba(240,211,155,calc(var(--p) * .8))}
.cs-hold span{display:grid;place-items:center;width:calc(100% - 6px);height:58px;border-radius:999px;background:linear-gradient(180deg,#141b22,#0a1016);color:var(--gold-hi);font-family:var(--f-mark);font-size:12px;letter-spacing:.3em;text-transform:uppercase}
.cs-hold:focus-visible{outline:2px solid var(--gold);outline-offset:4px}
.cs-hold[hidden]{display:none}
.cs-reveal{position:absolute;left:50%;top:44%;transform:translate(-50%,-50%);display:grid;justify-items:center;gap:8px;width:min(440px,calc(100vw - 32px));padding:24px 24px 20px;border:1px solid color-mix(in srgb,var(--rar) 55%,transparent);border-radius:18px;background:linear-gradient(180deg,color-mix(in srgb,var(--rar) 14%,#0a1016),rgba(6,10,14,.94) 55%);box-shadow:0 30px 90px -20px color-mix(in srgb,var(--rar) 70%,transparent),inset 0 1px 0 rgba(255,255,255,.08);text-align:center;animation:crRise .7s var(--ease-out-expo) both}
.cs-reveal[hidden]{display:none}
@keyframes crRise{from{opacity:0;transform:translate(-50%,10%) scale(.9)}}
.cr-rarity{padding:4px 14px;border-radius:999px;background:var(--rar);color:#05080d;font-family:var(--f-mark);font-size:10.5px;letter-spacing:.3em;text-transform:uppercase;box-shadow:0 0 24px var(--rar)}
.cs-reveal .cr-ship{position:static;inset:auto;width:220px;height:150px;margin:-4px 0 -6px}
.cr-icon{width:64px;height:64px;fill:color-mix(in srgb,var(--rar) 25%,transparent);stroke:var(--rar);stroke-width:1.4;filter:drop-shadow(0 0 12px var(--rar))}
.cr-title{margin:2px 0 0;font-family:var(--f-display);font-weight:300;font-size:clamp(30px,4.6vw,44px);line-height:1.05;color:var(--ink)}
.chest-stage[data-rarity="legendary"] .cr-title{background:linear-gradient(100deg,#f0c878 20%,#fff6dc 40%,#f0c878 60%);background-size:200% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;animation:crShine 2.4s linear infinite}
@keyframes crShine{to{background-position:-200% 0}}
.cr-sub{margin:0;font-size:14px;color:var(--ink-2)}
.cr-credits{display:flex;align-items:center;gap:8px;margin-top:6px;padding:8px 14px;border:1px solid rgba(240,211,155,.3);border-radius:999px;background:rgba(5,8,13,.5)}
.cr-credits b{font-family:var(--f-mono);font-size:20px;font-weight:500;color:var(--gold-hi);font-variant-numeric:tabular-nums}
.cr-credits small{font-size:12px;color:var(--muted)}
.cr-actions{display:flex;gap:10px;margin-top:10px;width:100%}
.cr-actions .btn{flex:1}
html.chest-open,html.chest-open body{overflow:hidden}
@media (prefers-reduced-motion:reduce){.chest-stage,.cs-reveal{animation:none}.chest-stage[data-rarity="legendary"] .cr-title{animation:none}}

/* The call to open it, in the flight report and on the Ops board */
.chest-cta{display:flex;align-items:center;gap:14px;width:100%;margin:14px 0 4px;padding:12px 16px;border:1px solid rgba(240,211,155,.55);border-radius:12px;background:linear-gradient(100deg,rgba(212,166,90,.22),rgba(10,20,28,.85) 60%);color:var(--ink);font:inherit;text-align:left;cursor:pointer;animation:ctaGlow 2.2s ease-in-out infinite;transition:transform .2s}
.chest-cta[hidden]{display:none}
.chest-cta:hover{transform:translateY(-2px)}
.chest-cta svg{width:46px;height:38px;flex:none;animation:ctaWiggle 2.2s ease-in-out infinite}
.chest-cta .lid,.chest-cta .body{fill:#1a2530;stroke:var(--gold-hi);stroke-width:1.4}
.chest-cta .band{fill:var(--gold)}
.chest-cta span{display:grid;flex:1}
.chest-cta b{font-size:15px;font-weight:600;color:var(--gold-hi)}
.chest-cta small{font-size:12.5px;color:var(--ink-2)}
.chest-cta i{font-style:normal;font-size:24px;color:var(--gold-hi)}
.chest-cta:focus-visible{outline:2px solid var(--gold);outline-offset:3px}
@keyframes ctaGlow{50%{box-shadow:0 0 34px -6px rgba(240,211,155,.65)}}
@keyframes ctaWiggle{0%,70%,100%{transform:none}76%{transform:rotate(-7deg)}82%{transform:rotate(6deg)}88%{transform:rotate(-3deg)}}
@media (prefers-reduced-motion:reduce){.chest-cta,.chest-cta svg{animation:none}}
.dock-btn .badge.gift{background:var(--gold-hi);color:var(--on-gold);animation:ctaGlow 1.6s ease-in-out infinite}

/* ---------- Sound (sound-panel.js) ---------- */
.snd{position:relative}
.snd-btn{width:38px;padding:0;justify-content:center}
.snd-btn .snd-off{display:none}
.snd-btn[data-muted="true"]{color:var(--muted)}
.snd-btn[data-muted="true"] .snd-on{display:none}
.snd-btn[data-muted="true"] .snd-off{display:inline}
.snd-panel{position:absolute;right:0;top:calc(100% + 8px);z-index:60;width:256px;display:grid;gap:12px;padding:14px 16px 16px;border:1px solid var(--line-strong);border-radius:14px;background:rgba(7,13,19,.96);box-shadow:0 18px 40px rgba(0,0,0,.45);backdrop-filter:blur(8px)}
.snd-panel[hidden]{display:none}
.snd-row{display:grid;grid-template-columns:76px 1fr;align-items:center;gap:10px;font-family:var(--f-mark);font-size:9.5px;letter-spacing:.22em;text-transform:uppercase;color:var(--muted)}
.snd-row input{width:100%;accent-color:var(--gold);cursor:pointer}
.snd-mute{display:flex;align-items:center;justify-content:space-between;height:34px;padding:0 12px;border:1px solid var(--line-strong);border-radius:999px;background:transparent;color:var(--ink);cursor:pointer;font-family:var(--f-mark);font-size:9.5px;letter-spacing:.22em;text-transform:uppercase;transition:border-color .2s,color .2s}
.snd-mute:hover,.snd-mute[aria-pressed="true"]{border-color:var(--gold);color:var(--gold-hi)}
.snd-mute kbd{font-family:var(--f-mono);font-size:10px;letter-spacing:0;border:1px solid var(--line-strong);border-radius:4px;padding:1px 5px;color:var(--muted)}

/* ---------- First-flight drill: the coach card (coach.js) ---------- */
.coach{position:absolute;left:50%;top:56px;transform:translateX(-50%);z-index:4;width:min(420px,calc(100% - 32px));padding:14px 18px 12px;border:1px solid rgba(95,207,196,.35);border-radius:14px;background:rgba(6,12,18,.88);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);text-align:center;pointer-events:auto}
.coach[hidden]{display:none}
.coach.in{animation:coachIn .45s var(--ease-out-expo)}
@keyframes coachIn{from{opacity:0;transform:translate(-50%,-8px)}}
.coach-top{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:6px}
.coach-step{font-family:var(--f-mark);font-size:9px;letter-spacing:.24em;text-transform:uppercase;color:var(--aqua)}
.coach-dots{display:flex;gap:5px}
.coach-dots i{width:6px;height:6px;border-radius:50%;background:var(--line-strong)}
.coach-dots i.done{background:var(--aqua)}
.coach-dots i.on{background:var(--gold-hi)}
.coach-title{display:block;font-family:var(--f-mark);font-size:15px;font-weight:400;letter-spacing:.18em;text-transform:uppercase;color:var(--ink)}
.coach-line{margin:6px 0 0;font-size:14px;color:var(--ink-2)}
.coach-keys{margin:8px 0 0;font-size:13px;color:var(--muted)}
.coach-keys[hidden]{display:none}
.coach-keys kbd{font-family:var(--f-mono);font-size:11px;color:var(--ink);border:1px solid var(--line-strong);border-radius:4px;padding:1px 6px}
.coach-keys b{color:var(--ink);font-weight:500}
.coach-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:10px}
.coach-count{font-family:var(--f-mono);font-size:12px;color:var(--gold-hi)}
.coach-count[hidden]{visibility:hidden;display:inline}
.coach-skip{margin-left:auto;background:none;border:0;padding:4px 0;color:var(--muted);font:inherit;font-size:12px;text-decoration:underline;text-underline-offset:3px;cursor:pointer}
.coach-skip:hover,.coach-skip:focus-visible{color:var(--gold-hi)}
@media (max-width:560px){.coach{padding:10px 14px 9px}.coach-title{font-size:13px}.coach-line{font-size:13px;margin-top:4px}.coach-keys{margin-top:4px}.coach-foot{margin-top:6px}}
@media (prefers-reduced-motion:reduce){.coach.in{animation:none}}

/* ---------- Hangar nudge: a one-time pointer to a dock screen (onboarding.js) ---------- */
/* the nudge hangs off the dock; on phones the dock is already position:fixed, which works too */
@media (min-width:861px){.dock{position:relative}}
.nudge{position:absolute;bottom:calc(100% + 4px);z-index:6;width:min(280px,calc(100vw - 32px));display:flex;align-items:center;gap:12px;padding:11px 12px 11px 14px;border:1px solid rgba(240,211,155,.5);border-radius:12px;background:rgba(10,16,22,.96);box-shadow:0 14px 34px -12px rgba(0,0,0,.7);animation:nudgeIn .5s var(--ease-out-expo)}
.nudge[hidden]{display:none}
.nudge::after{content:"";position:absolute;top:100%;left:var(--arrow,50%);width:12px;height:12px;margin:-6px 0 0 -6px;background:inherit;border:solid rgba(240,211,155,.5);border-width:0 1px 1px 0;transform:rotate(45deg)}
.nudge p{margin:0;flex:1;font-size:13px;line-height:1.4;color:var(--ink)}
.nudge-ok{flex:none;padding:6px 10px;border:1px solid var(--line-strong);border-radius:999px;background:none;color:var(--gold-hi);font-family:var(--f-mono);font-size:11px;cursor:pointer}
.nudge-ok:hover,.nudge-ok:focus-visible{border-color:var(--gold);outline:none}
.dock-btn.nudged{border-color:rgba(240,211,155,.8)}
@keyframes nudgeIn{from{opacity:0;transform:translateY(6px)}}
@media (prefers-reduced-motion:reduce){.nudge{animation:none}}

/* ---------- In-flight daily missions panel (hud.js) ---------- */
.hud-left{display:grid;gap:8px;align-content:start}
.hud-mis{width:min(250px,44vw);padding:10px 14px 8px}
.hud-mis[hidden]{display:none}
.hud-mis ul{display:grid;gap:9px;margin:8px 0 2px;padding:0;list-style:none}
.hud-mis li{display:grid;grid-template-columns:40px 1fr auto;align-items:center;gap:4px 10px;transition:opacity .4s,transform .4s}
.hud-mis .mi{grid-row:1/3;display:block;width:40px;height:40px}
.hud-mis canvas.mi{position:static;inset:auto} /* the game's canvases are absolute by default */
.hud-mis .mi.glyph{padding:7px;fill:none;stroke:var(--ink-2);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.hud-mis .mt{font-size:12px;line-height:1.3;color:var(--ink-2)}
.hud-mis .mv{font-family:var(--f-mono);font-size:11px;color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap}
.hud-mis .prog{grid-column:2/-1;flex:none}
.hud-mis .prog i{transition:transform .35s var(--ease-out-expo)}
.hud-mis li.done .mt{color:var(--ink)}
.hud-mis li.done .mv{color:var(--gold-hi)}
.hud-mis li.leaving{opacity:0;transform:translateX(-10px)}
@media (max-width:560px){
  .hud-mis{width:42vw;padding:8px 11px 7px}
  .hud-mis .k{display:none}
  .hud-mis ul{margin:0}
  .hud-mis li:not(.lead){display:none}
  .hud-mis .mt{font-size:11px}
}
@media (prefers-reduced-motion:reduce){.hud-mis li,.hud-mis .prog i{transition:none}}

/* ---------- Flight report: medals and feats earned (debrief.js) ---------- */
.d-ach{margin-top:18px}
.d-ach[hidden]{display:none}
.d-ach-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:10px}
.d-ach-head b{font-family:var(--f-mark);font-size:10px;font-weight:400;letter-spacing:.24em;text-transform:uppercase;color:#f0c35a}
.d-ach-head span{font-family:var(--f-mono);font-size:13px;color:var(--gold-hi)}
.d-ach-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(98px,1fr));gap:7px;max-height:min(52vh,420px);overflow:auto;margin:0;padding:2px 2px 6px;list-style:none;scrollbar-width:thin}
/* more below: fade the bottom edge so the cut reads as a scroll, not a crop */
.d-ach-grid.more{-webkit-mask-image:linear-gradient(180deg,#000 82%,transparent);mask-image:linear-gradient(180deg,#000 82%,transparent)}
.d-tile{--tc:#c98a52;display:grid;justify-items:center;align-content:start;gap:2px;padding:10px 6px 9px;border:1px solid color-mix(in srgb,var(--tc) 45%,transparent);border-radius:10px;background:radial-gradient(120% 90% at 50% 0%,color-mix(in srgb,var(--tc) 16%,transparent),rgba(14,26,36,.55) 70%);text-align:center;opacity:0;transform:translateY(8px) scale(.96);animation:dTileIn .5s var(--ease-out-expo) forwards;animation-delay:calc(var(--i) * 70ms + 250ms)}
.d-tile.t2{--tc:#cdd6dc}
.d-tile.t3,.d-tile.feat{--tc:#f0c35a}
.d-tile b{font-size:12px;font-weight:600;line-height:1.25;color:var(--ink)}
.d-tile small{font-family:var(--f-mono);font-size:10.5px;color:color-mix(in srgb,var(--tc) 80%,var(--ink))}
.d-art{position:relative;display:block;width:46px;height:46px;margin-bottom:2px}
.d-art canvas{position:static;width:46px;height:46px;object-fit:contain}
.d-art .cx-medal{position:absolute;right:-6px;bottom:-4px;width:24px;height:24px;filter:drop-shadow(0 2px 4px rgba(0,0,0,.7))}
.d-tile.feat .cx-medal{width:38px;height:38px;margin:2px 0 1px;filter:drop-shadow(0 0 10px rgba(240,195,90,.45))}
.d-k{font-family:var(--f-mark);font-size:8.5px;letter-spacing:.24em;text-transform:uppercase;color:#f0c35a}
@keyframes dTileIn{to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.d-tile{animation:none;opacity:1;transform:none}}
@media (max-width:560px){.d-ach-grid{grid-template-columns:repeat(auto-fill,minmax(88px,1fr))}}

/* Account: the Sign in pill, its panel and the pilot licence (account.js, licence.js) */
.acct{position:relative}
.acct-btn[data-state="in"]{border-color:rgba(212,166,90,.55);color:var(--gold-hi)}
.acct-btn[data-state="in"] span{font-family:var(--f-mono);font-size:12px;letter-spacing:.02em;text-transform:none}
.acct-btn[data-state="loading"]{opacity:.7}
.acct-btn:disabled{cursor:progress}
.acct-btn .patch{width:22px;height:22px;margin-left:-6px}
.acct-panel{width:300px}
.acct-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.acct-actions .snd-mute,.acct-out{justify-content:center}
.acct-actions .snd-mute{font-family:var(--f-body);font-size:13.5px;font-weight:500;letter-spacing:0;text-transform:none;white-space:nowrap}

/* mission patch art (patches.js) */
.patch{display:block;width:100%;height:100%}
.patch .p-ring{fill:rgba(10,20,28,.9);stroke:var(--pc);stroke-width:2}
.patch .p-ring2{fill:none;stroke:var(--pc);stroke-width:1;opacity:.35;stroke-dasharray:2 3}
.patch .p-motif{fill:none;stroke:var(--pc);stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}

/* the licence card (dialog preview and account panel) */
.lic{display:grid;grid-template-columns:auto minmax(0,1fr);grid-template-rows:auto 1fr auto;gap:12px 14px;aspect-ratio:1.586;padding:16px 18px;border:1px solid rgba(212,166,90,.45);border-radius:14px;
  background:linear-gradient(135deg,rgba(212,166,90,.14),rgba(10,20,28,.92) 46%),repeating-linear-gradient(90deg,rgba(255,255,255,.025) 0 1px,transparent 1px 7px);box-shadow:0 18px 36px -18px rgba(0,0,0,.8)}
.lic-top{grid-column:1/-1;display:flex;justify-content:space-between;align-items:baseline;gap:10px}
.lic-title{white-space:nowrap;font-family:var(--f-mark);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--gold-hi)}
.lic-no{white-space:nowrap;font-family:var(--f-mono);font-size:12px;color:var(--muted)}
.lic-patch{grid-row:2;align-self:center;width:72px;height:72px}
.lic-name{grid-row:2;align-self:center;font-family:var(--f-display);font-weight:400;font-size:22px;line-height:1.1;letter-spacing:-.01em;overflow-wrap:anywhere}
.lic-name:empty::before{content:"Callsign";color:var(--muted)}
.lic-meta{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:4px 16px;font-family:var(--f-mono);font-size:12px;color:var(--muted)}
.lic-meta b{font-weight:500;color:var(--ink)}
.lic-mini{aspect-ratio:auto;padding:14px 16px}
.lic-mini .lic-patch{width:56px;height:56px}
.lic-mini .lic-name{font-size:19px}

/* the licence dialog */
.licence{width:min(880px,calc(100vw - 32px));max-height:calc(100dvh - 32px);padding:0;border:1px solid var(--line-strong);border-radius:20px;background:rgba(7,13,19,.98);color:var(--ink);box-shadow:0 30px 80px -20px rgba(0,0,0,.75);overflow:auto}
.licence::backdrop{background:rgba(3,6,10,.72);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
.licence[open]{animation:licIn .4s var(--ease-out-expo)}
@keyframes licIn{from{opacity:0;transform:translateY(12px) scale(.98)}}
.licence-dlg{display:grid;grid-template-columns:330px minmax(0,1fr);margin:0}
.licence-card{display:grid;align-content:center;gap:16px;padding:28px;border-right:1px solid var(--line);background:radial-gradient(120% 80% at 0% 0%,rgba(212,166,90,.1),transparent 60%),rgba(10,20,28,.55)}
.licence-note{margin:0;font-size:13.5px;line-height:1.5;color:var(--muted)}
.licence-form{display:grid;gap:20px;padding:28px 30px}
.licence-form h2{margin:0;font-family:var(--f-display);font-weight:300;font-size:28px;line-height:1.1;letter-spacing:-.01em}
.licence-lede{margin:-10px 0 0;font-size:14.5px;color:var(--ink-2)}
.lf{display:grid;gap:10px;margin:0;padding:0;border:0;min-width:0}
.lf-label{padding:0;font-family:var(--f-mark);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--muted)}
.lf-input{display:flex;align-items:center;gap:10px;height:50px;padding:0 16px;border:1px solid var(--line-strong);border-radius:12px;background:rgba(5,9,14,.7);transition:border-color .2s,box-shadow .2s}
.lf-input:focus-within{border-color:var(--gold);box-shadow:0 0 0 3px rgba(212,166,90,.16)}
.lf-input input:focus-visible{outline:none}
.lf-input input{flex:1;min-width:0;height:100%;border:0;outline:0;background:transparent;color:var(--ink);font-family:var(--f-mono);font-size:17px;font-weight:500;letter-spacing:.02em;caret-color:var(--gold)}
.lf-input input::placeholder{color:#6f7f88}
.lf-status{font-family:var(--f-mono);font-size:12px;white-space:nowrap;color:var(--muted)}
.lf-status[data-ok="1"]{color:var(--aqua)}
.lf-status[data-ok="0"]{color:var(--bad)}
.lf-hint{font-size:12.5px;color:var(--muted)}
.lf-patches{display:grid;grid-template-columns:repeat(8,1fr);gap:6px}
.lf-patch{aspect-ratio:1;padding:4px;border:1px solid transparent;border-radius:12px;background:transparent;cursor:pointer;transition:border-color .2s,background .2s}
.lf-patch[aria-pressed="true"]{border-color:var(--gold);background:rgba(212,166,90,.08)}
.lf-colors{display:flex;gap:12px}
.lf-color{width:28px;height:28px;padding:0;border:2px solid rgba(255,255,255,.1);border-radius:50%;background:var(--c);cursor:pointer}
.lf-color[aria-pressed="true"]{outline:2px solid var(--c);outline-offset:3px}
.lf-row{display:grid;gap:20px}
.lf-flags{display:flex;flex-wrap:wrap;gap:6px}
.lf-flag,.lf-more{height:34px;min-width:44px;padding:0 10px;border:1px solid var(--line-strong);border-radius:8px;background:transparent;color:var(--ink-2);font-family:var(--f-mono);font-size:12.5px;font-weight:500;letter-spacing:.04em;cursor:pointer}
.lf-flag[aria-pressed="true"]{border-color:var(--gold);color:var(--gold-hi);background:rgba(212,166,90,.08)}
.lf-more{appearance:none;-webkit-appearance:none;width:auto;max-width:96px;color:var(--muted)}
.lf-more option{background:#0a141c;color:var(--ink)}
.lf-seg{justify-self:start;display:inline-grid;grid-auto-flow:column;padding:3px;border:1px solid var(--line-strong);border-radius:999px}
.lf-seg button{height:34px;padding:0 16px;border:0;border-radius:999px;background:transparent;color:var(--muted);font-family:var(--f-body);font-size:13.5px;font-weight:500;cursor:pointer}
.lf-seg button[aria-pressed="true"]{background:rgba(212,166,90,.15);color:var(--gold-hi)}
.lf-error{margin:0;font-size:13.5px;color:var(--bad)}
.licence-actions{display:flex;gap:10px;justify-content:flex-end}
.ghost-btn{height:50px;padding:0 20px;border:1px solid var(--line-strong);border-radius:999px;background:transparent;color:var(--ink-2);font-family:var(--f-body);font-size:14px;font-weight:500;cursor:pointer}
.ghost-btn[hidden]{display:none}
.licence-cta{flex:1;height:50px;border:0;border-radius:999px;cursor:pointer;font-family:var(--f-mark);font-size:12px;letter-spacing:.28em;text-transform:uppercase;color:var(--on-gold);background:linear-gradient(180deg,#f0d39b,#d4a65a);box-shadow:0 12px 26px -12px rgba(0,0,0,.6);transition:transform .16s var(--ease-out-expo),opacity .2s}
.licence-cta:active{transform:scale(.97)}
.licence-cta:disabled{opacity:.5;cursor:not-allowed}
.licence :focus-visible{outline:2px solid var(--gold);outline-offset:2px}
@media (hover:hover) and (pointer:fine){
  .lf-patch:hover,.lf-flag:hover,.lf-more:hover{border-color:var(--line-strong);background:rgba(255,255,255,.03)}
  .ghost-btn:hover{border-color:var(--gold);color:var(--gold-hi)}
}
@media (max-width:760px){
  .licence-dlg{grid-template-columns:1fr}
  .licence-card{padding:18px;border-right:0;border-bottom:1px solid var(--line)}
  .licence-card{padding:14px 18px}
  .licence-card .lic{width:100%;max-width:360px;justify-self:center;aspect-ratio:auto;padding:12px 14px;gap:8px 12px}
  .licence-card .lic-patch{width:48px;height:48px}
  .licence-card .lic-name{font-size:18px}
  .licence-note{display:none}
  .licence-form{gap:16px;padding:18px 18px 0}
  .licence-form h2{font-size:22px}
  .lf-patches{gap:4px}
  .lf-patch{padding:2px}
  .licence-actions{position:sticky;bottom:0;margin:0 -18px;padding:12px 18px calc(14px + env(safe-area-inset-bottom));background:rgba(7,13,19,.97);border-top:1px solid var(--line)}
}
@media (prefers-reduced-motion:reduce){.licence[open]{animation:none}}

/* Leaderboard (ranks.js), design B: podium, list and the pilot's own card */
.rk{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:20px;align-items:start;max-width:1180px;margin:0 auto;padding:4px 0 24px}
.rk > *{min-width:0}
.rk-bar{grid-column:1/-1;min-width:0;display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.rk-tabs{display:flex;gap:8px;min-width:0;max-width:100%;overflow-x:auto;scrollbar-width:none;padding:2px}
.rk-tab{flex:none;height:40px;padding:0 16px;border:1px solid var(--line-strong);border-radius:999px;background:transparent;color:var(--ink-2);font-family:var(--f-body);font-size:14px;font-weight:500;cursor:pointer;transition:border-color .2s,color .2s}
.rk-tab[aria-pressed="true"]{border-color:var(--gold);color:var(--gold-hi);background:rgba(212,166,90,.08)}
.rk[data-loading] .rk-main{opacity:.55;transition:opacity .2s}
.rk-podium{display:grid;grid-template-columns:1fr 1.15fr 1fr;align-items:end;gap:12px}
.rk-podium[hidden]{display:none}
.rk-pod{display:grid;justify-items:center;gap:6px;text-align:center;min-width:0}
.rk-pod.p1{grid-column:2;grid-row:1}.rk-pod.p2{grid-column:1;grid-row:1}.rk-pod.p3{grid-column:3;grid-row:1}
.rk-pod-patch{width:68px;height:68px}
.rk-pod.p1 .rk-pod-patch{width:92px;height:92px}
.rk-pod-name{max-width:100%;font-family:var(--f-display);font-weight:400;font-size:18px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rk-pod-score{font-family:var(--f-mono);font-size:13px;color:var(--ink-2)}
.rk-step{width:100%;display:grid;place-items:center;margin-top:4px;border:1px solid var(--line);border-bottom:0;border-radius:14px 14px 0 0;background:linear-gradient(180deg,rgba(14,26,36,.8),rgba(10,20,28,.3));font-family:var(--f-mono);font-size:26px;font-weight:500}
.p1 .rk-step{height:112px;color:var(--gold-hi);border-color:rgba(212,166,90,.45)}.p2 .rk-step{height:84px;color:#d9e2e6}.p3 .rk-step{height:64px;color:#d9946d}
.rk-list{margin:0;padding:0;list-style:none;border:1px solid var(--line);border-radius:0 0 16px 16px;background:rgba(10,20,28,.45)}
.rk-list:empty{display:none}
.rk-row{display:grid;grid-template-columns:44px 36px minmax(0,1fr) auto;align-items:center;gap:12px;padding:9px 16px;border-top:1px solid var(--line)}
.rk-row:first-child{border-top:0}
.rk-row.is-me{background:rgba(212,166,90,.09)}
.rk-n{font-family:var(--f-mono);font-size:15px;color:var(--muted);font-variant-numeric:tabular-nums}
.rk-row.is-me .rk-n{color:var(--gold-hi)}
.rk-patch{width:36px;height:36px}
.rk-who{display:flex;align-items:baseline;gap:10px;min-width:0}
.rk-who b{font-family:var(--f-display);font-weight:400;font-size:16px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rk-who small{font-family:var(--f-mono);font-size:12px;color:var(--muted);white-space:nowrap}
.rk-score{font-family:var(--f-mono);font-size:15px;font-weight:500;font-variant-numeric:tabular-nums}
.rk-gap{padding:4px 16px;color:var(--muted);text-align:center;border-top:1px solid var(--line)}
.rk-empty{margin:0;padding:28px 20px;border:1px dashed var(--line-strong);border-radius:16px;color:var(--ink-2);text-align:center;font-size:15px}
.rk-mine{position:sticky;top:12px;display:grid;gap:14px;padding:20px;border:1px solid rgba(212,166,90,.45);border-radius:18px;background:radial-gradient(120% 70% at 0 0,rgba(212,166,90,.1),transparent 60%),rgba(10,20,28,.7)}
.rk-mine-k{font-family:var(--f-mark);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--muted)}
.rk-big{font-family:var(--f-display);font-weight:300;font-size:50px;line-height:1}
.rk-big small{font-family:var(--f-body);font-size:14px;font-weight:400;color:var(--muted)}
.rk-kv{display:grid;grid-template-columns:auto 1fr;gap:6px 14px;margin:0;font-size:14px;color:var(--ink-2)}
.rk-kv dd{margin:0;font-family:var(--f-mono);font-weight:500;color:var(--ink);text-align:right}
.rk-target,.rk-mine-txt{margin:0;padding:12px 14px;border:1px dashed var(--line-strong);border-radius:12px;font-size:14px;line-height:1.45;color:var(--ink-2)}
.rk-target b{color:var(--gold-hi);font-weight:600}
.rk-mine-txt{border-style:solid;border-color:var(--line)}
.rk-signin{flex:none;width:100%}
@media (max-width:860px){
  .rk{grid-template-columns:minmax(0,1fr)}
  .rk-mine{position:static;order:-1;padding:16px}
  .rk-mine[data-guest]{order:1}
  .rk-big{font-size:40px}
  .rk-pod-patch{width:52px;height:52px}.rk-pod.p1 .rk-pod-patch{width:70px;height:70px}
  .rk-pod-name{font-size:15px}
  .p1 .rk-step{height:80px}.p2 .rk-step{height:60px}.p3 .rk-step{height:46px}
  .rk-step{font-size:20px}
  .rk-row{grid-template-columns:34px 30px minmax(0,1fr) auto;gap:10px;padding:9px 12px}
  .rk-patch{width:30px;height:30px}
  .rk-who small{display:none}
  .rk-score{font-size:14px}
}

/* the mission card's leaderboard line, and the debrief's check line */
.mc-rank[hidden]{display:none}
.mc-rank{color:var(--gold-hi)}
@media (hover:hover) and (pointer:fine){.rk-tab:hover{border-color:var(--gold);color:var(--gold-hi)}}

/* The Crew (holder perks): the Ops strip, badges */
.op-crew{grid-template-columns:minmax(0,1fr);margin-top:12px}
.op-crew .op-card{border-color:rgba(255,210,122,.45);background:radial-gradient(120% 90% at 0 0,rgba(255,210,122,.08),transparent 60%),rgba(10,20,28,.55)}
.op-crew-k{font-family:var(--f-mark);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:#ffd27a}
.op-crew-lock{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-top:12px;padding:16px 18px;border:1px dashed rgba(255,210,122,.4);border-radius:12px;background:rgba(10,20,28,.4)}
.op-crew-lock h3{margin:4px 0;font-size:16px;font-weight:600}
.op-crew-lock p{margin:0;font-size:13.5px;line-height:1.45;color:var(--muted);max-width:60ch}
.op-crew-tag{font-family:var(--f-mark);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:#ffd27a}
.op-crew-lock .bf-set{flex:none;text-decoration:none}
.crew-badge{display:inline-flex;align-items:center;gap:4px;height:20px;padding:0 7px;border:1px solid rgba(255,210,122,.55);border-radius:999px;color:#ffd27a;font-family:var(--f-mono);font-size:11px;font-weight:500;letter-spacing:.04em;white-space:nowrap;vertical-align:middle}
@media (max-width:860px){.op-crew-lock{flex-direction:column;align-items:flex-start}}
.acct-btn[data-crew]::after{content:"Crew";margin-left:2px;padding:1px 6px;border:1px solid rgba(255,210,122,.55);border-radius:999px;color:#ffd27a;font-family:var(--f-mono);font-size:11px;letter-spacing:.04em;text-transform:none}
.acct-crew{display:grid;gap:10px;padding:12px 14px;border:1px solid var(--line);border-radius:12px}
.acct-crew[hidden]{display:none}
.acct-crew[data-member]{border-color:rgba(255,210,122,.45);background:rgba(255,210,122,.05)}
.acct-crew p{margin:0;font-size:13.5px;line-height:1.45;color:var(--ink-2)}
.acct-crew b{color:#ffd27a;font-weight:600}
.acct-crew-acts{display:flex;gap:8px}
.acct-crew-acts .snd-mute{flex:1;justify-content:center;font-family:var(--f-body);font-size:13px;font-weight:500;letter-spacing:0;text-transform:none;text-decoration:none}
.acct-crew-acts [hidden]{display:none}
@media (max-width:560px){.acct-btn[data-crew]::after{display:none}}
.lf-patches{grid-template-columns:repeat(10,1fr)}
.lf-patch.crew{position:relative}
.lf-patch[aria-disabled="true"],.lf-color[aria-disabled="true"]{opacity:.35;cursor:not-allowed}
.lf-patch.crew::after{content:"";position:absolute;right:3px;top:3px;width:7px;height:7px;border-radius:50%;background:#ffd27a}
.rk-pod .crew-badge{margin-top:-2px}
@media (max-width:760px){.lf-patches{grid-template-columns:repeat(5,1fr)}}
.yd-chip.crew{border-color:rgba(255,210,122,.55);color:#ffd27a}
.yd-swatch small.crew{color:#ffd27a}

/* The Crew screen (crew-view.js), design B: membership card, steps, perk checklist */
.cw{display:grid;grid-template-columns:360px minmax(0,1fr);gap:28px;align-items:start;max-width:1100px;margin:0 auto;padding:6px 0 24px}
.cw > *{min-width:0}
.cw-side,.cw-main{display:grid;gap:16px}
.cw-card{position:relative;overflow:hidden;aspect-ratio:1.586;display:grid;grid-template-rows:auto 1fr auto;padding:20px 22px;border-radius:18px;border:1px solid rgba(255,210,122,.45);background:linear-gradient(135deg,#1b1508 0%,#0b0b0c 45%,#151006 100%);box-shadow:0 26px 50px -24px rgba(0,0,0,.9);filter:saturate(.55)}
.cw-card.on{filter:none;border-color:rgba(255,210,122,.75)}
.cw-card::before{content:"";position:absolute;inset:0;background:repeating-linear-gradient(115deg,rgba(255,210,122,.05) 0 2px,transparent 2px 9px)}
.cw-card > *{position:relative}
.cw-top{display:flex;justify-content:space-between;gap:10px;font-family:var(--f-mark);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:#ffd27a}
.cw-y{align-self:center;justify-self:end;width:80px;height:62px;fill:none;stroke:#ffd27a;stroke-width:3;stroke-linecap:round}
.cw-name{display:block;font-family:var(--f-display);font-weight:400;font-size:23px;color:#fff4dc;overflow-wrap:anywhere}
.cw-state{display:block;margin-top:2px;font-family:var(--f-mono);font-size:12px;color:#c9b48a}
.cw-steps{margin:0;padding:16px 18px;list-style:none;display:grid;gap:14px;border:1px dashed rgba(255,210,122,.35);border-radius:14px}
.cw-steps li{display:grid;grid-template-columns:30px 1fr;gap:12px;align-items:start}
.cw-steps li > b{width:30px;height:30px;display:grid;place-items:center;border-radius:50%;border:1px solid rgba(255,210,122,.5);color:#ffd27a;font-family:var(--f-mono);font-size:13px;font-weight:500}
.cw-steps li.ok > b{background:rgba(255,210,122,.15)}
.cw-steps h4,.cw-perks h4{margin:2px 0 3px;font-size:15px;font-weight:600}
.cw-steps p,.cw-perks p{margin:0;font-size:13.5px;line-height:1.45;color:var(--muted)}
.cw-cta{display:grid;gap:8px}
.cw-cta .licence-cta{display:flex;align-items:center;justify-content:center;text-decoration:none;flex:none}
.cw-main h3{margin:0;font-family:var(--f-display);font-weight:300;font-size:clamp(28px,3.4vw,38px);line-height:1.05}
.cw-main > p{margin:0;color:var(--ink-2);font-size:15px;line-height:1.5;max-width:62ch}
.cw-perks{margin:0;padding:0;list-style:none;display:grid;gap:10px}
.cw-perks li{display:grid;grid-template-columns:40px minmax(0,1fr) auto;gap:14px;align-items:center;padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:rgba(10,20,28,.5)}
.cw-ic{width:40px;height:40px;display:grid;place-items:center;border:1px solid rgba(255,210,122,.4);border-radius:12px}
.cw-ic svg{width:22px;height:22px;fill:none;stroke:#ffd27a;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.cw-st{font-family:var(--f-mono);font-size:12px;color:var(--muted);white-space:nowrap}
.cw-st.on{color:#ffd27a}
.acct-crew-info,.lf-crew-info,.op-crew-more{justify-self:start;padding:0;border:0;background:none;color:#ffd27a;font-family:var(--f-body);font-size:13px;cursor:pointer;text-align:left}
.lf-crew-info[hidden]{display:none}
.op-crew-k{display:flex;align-items:center;justify-content:space-between;gap:12px}
.op-crew-more{font-size:12.5px;letter-spacing:0;text-transform:none}
.op-crew-acts{display:flex;gap:8px;flex-wrap:wrap}
@media (max-width:860px){.cw{grid-template-columns:minmax(0,1fr)}.cw-card{max-width:380px}.cw-perks li{grid-template-columns:36px minmax(0,1fr)}.cw-st{grid-column:2}}

/* Ops chest icons (daily chest and Crew crate): room above for the lid, light from an open box */
.op-box{width:72px;height:64px;overflow:visible}
.op-box.sm{width:56px;height:50px}
.op-box .body,.op-box .lid path{fill:#1a2530;stroke:rgba(212,166,90,.6);stroke-width:1.2}
.op-box .band{fill:rgba(212,166,90,.35)}
.op-box .plate{fill:#0d1822;stroke:rgba(240,211,155,.8);stroke-width:1}
.op-box .glow,.op-box .rays{opacity:0}
.op-box .lid{transform-box:view-box;transform-origin:8px 29px;transition:transform .5s var(--ease-out-expo)}
.op-chest.open .op-box .lid{transform:rotate(-26deg) translate(-2px,-3px)}
.op-chest.open .op-box .body{fill:color-mix(in srgb,var(--rar) 26%,#1a2530)}
.op-chest.open .op-box .glow{opacity:.55;fill:var(--rar);filter:blur(5px)}
.op-chest.open .op-box .rays{opacity:.75;fill:none;stroke:var(--rar);stroke-width:1.6;stroke-linecap:round}

/* The Crew crate panel: the daily chest's states, in Crew black and gold */
.op-chest.crew{margin-top:12px;border-color:rgba(255,210,122,.5);background:radial-gradient(120% 140% at 0 0,rgba(255,210,122,.1),transparent 55%),linear-gradient(135deg,#100d07,#0a1219 60%)}
.op-chest.crew .bf-k{color:#ffd27a}
.op-chest.crew .op-box .body,.op-chest.crew .op-box .lid path{fill:#14110a;stroke:rgba(255,210,122,.75)}
.op-chest.crew .op-box .band{fill:rgba(255,210,122,.55)}
.op-chest.crew .op-box .plate{fill:#0b0a07;stroke:#ffd27a}
.op-chest.crew.open .op-box .body{fill:color-mix(in srgb,var(--rar) 22%,#14110a)}
.op-chest.crew .op-locks i.on{background:#ffd27a;border-color:#ffd27a}
.op-chest.crew.ready .chest-cta{border-color:rgba(255,210,122,.6)}

/* The Crew mission: one compact row (the phone card layout), not a big empty card */
.op-crew{margin-top:22px}
.op-crew .op-card{grid-template-columns:72px minmax(0,1fr) auto;justify-items:start;align-items:center;gap:2px 16px;padding:14px 18px;text-align:left}
.op-crew .op-target{grid-row:1 / span 3;width:72px;height:72px}
.op-crew .op-target canvas{inset:14px;width:44px;height:44px}
.op-crew .op-glyph{inset:19px;width:34px;height:34px}
.op-crew .op-reward{grid-column:3;grid-row:1 / span 3;margin:0}

/* Debrief: the flight check as a full button (podium icon, rank on the right), and the Crew crate's own button */
.chest-cta .rank-ic{flex:none;width:44px;height:44px;padding:8px;border:1px solid rgba(240,211,155,.5);border-radius:10px;fill:none;stroke:var(--gold-hi);stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.rank-cta{margin:14px 0 4px;animation:none}
.rank-cta .rank-n{margin-left:auto;font-family:var(--f-display);font-style:normal;font-weight:300;font-size:30px;line-height:1;color:var(--gold-hi)}
.rank-cta .rank-n:empty{display:none}
.rank-cta[data-state="pending"]{opacity:.75;cursor:progress}
.rank-cta[data-state="pending"] .rank-ic{animation:rkPulse 1.2s ease-in-out infinite}
@keyframes rkPulse{50%{opacity:.4}}
.rank-cta[data-state="rejected"],.rank-cta[data-state="off"]{border-color:var(--line-strong);background:rgba(10,20,28,.85)}
.crew-cta{border-color:rgba(255,210,122,.7);background:linear-gradient(100deg,rgba(255,210,122,.24),#0f0c06 62%)}
.crew-cta b{color:#ffd27a}
.crew-cta svg .lid,.crew-cta svg .body{fill:#14110a;stroke:#ffd27a}
.crew-cta svg .band{fill:rgba(255,210,122,.6)}
.chest-cta[hidden]{display:none}
@media (prefers-reduced-motion:reduce){.rank-cta[data-state="pending"] .rank-ic{animation:none}}
.rk-score.clear{color:var(--gold-hi)}
