:root{--ink: #1f2430;--ink-soft: #5c5a4f;--ground: #f4efe4;--card: #fffdf8;--accent: #748df4;--accent-deep: #4c63c9;--fill: #c9d3f8;--hot: #748df4;--red: #d9534f;--amber: #e8a33d;--green: #4caf7d;--line: #e1d9c8;--shadow: 0 1px 0 rgba(255, 255, 255, .7) inset, 0 8px 24px rgba(60, 50, 20, .08)}*{box-sizing:border-box}body{margin:0;background:var(--ground);color:var(--ink);font-family:Montserrat,system-ui,sans-serif;-webkit-font-smoothing:antialiased}.mono{font-family:JetBrains Mono,ui-monospace,monospace}.dim{opacity:.6}.label{font-size:.66rem;letter-spacing:.22em;font-weight:700;text-transform:uppercase}.page{max-width:860px;margin:0 auto;padding:1.5rem 1rem 4rem}.pageHead{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;flex-wrap:wrap}h1{font-size:1.4rem;letter-spacing:.04em;margin:.4rem 0 .8rem}h2{font-size:.95rem;text-transform:uppercase;letter-spacing:.12em;color:var(--accent-deep);margin:0 0 .6rem}.panel{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:1rem 1.25rem 1.25rem;margin-top:1rem;box-shadow:var(--shadow)}.row{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap;margin-top:.75rem}button{font:inherit;font-weight:600;letter-spacing:.06em;border:1px solid var(--line);background:#fff;color:var(--ink);border-radius:10px;padding:.55rem 1.1rem;cursor:pointer;transition:transform .08s ease,box-shadow .15s ease,background .15s ease}button:hover{box-shadow:0 2px 10px #3c32141f}button:active{transform:translateY(1px)}button.primary{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:700}button:disabled{opacity:.45;cursor:default;box-shadow:none;transform:none}button.linkish{border:none;background:none;color:var(--accent-deep);text-decoration:underline;padding:.25rem;font-weight:500;letter-spacing:0}textarea{width:100%;font:inherit;font-size:.9rem;border:1px solid var(--line);border-radius:10px;padding:.7rem .8rem;resize:vertical;background:#fff;color:var(--ink)}textarea.mono{font-family:JetBrains Mono,ui-monospace,monospace;font-size:.8rem;letter-spacing:.04em;line-height:1.6}textarea:focus{outline:2px solid var(--accent);outline-offset:1px;border-color:transparent}a{color:var(--accent-deep)}.hist{display:flex;gap:2px;height:180px;align-items:stretch}.bar{flex:1;display:flex;flex-direction:column;padding:0;border:none;background:none;border-radius:0;min-width:0;box-shadow:none}.bar:disabled{opacity:1}.bar .stack{position:relative;flex:1;display:block;border-bottom:1px solid var(--line)}.bar .stack i{position:absolute;left:0;bottom:0;width:100%;min-height:1px;display:block}.bar .stack i.a{background:var(--fill);transition:height .25s ease;border-radius:2px 2px 0 0}.bar.hot .stack i.a{background:var(--hot)}.bar{position:relative}.hist.withLandmarks{padding-top:1.3rem}.bar .landmark{position:absolute;top:-1.25rem;left:50%;transform:translate(-50%);font-size:.56rem;letter-spacing:.14em;font-weight:700;color:var(--accent-deep);white-space:nowrap;font-family:JetBrains Mono,ui-monospace,monospace}.bar.lm .stack{background:#748df414}.bar .lab{font-size:.66rem;text-align:center;padding-top:3px;color:var(--ink-soft);font-family:JetBrains Mono,ui-monospace,monospace}.bar[disabled]{cursor:default}button.bar:not(:disabled):hover .stack i.a{background:var(--accent)}button.bar:not(:disabled){cursor:pointer}.home{text-align:left}.tagline{color:var(--ink-soft)}.homeNav{display:grid;gap:.75rem;margin-top:1.5rem}.homeNav a{display:block;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:1rem 1.25rem;text-decoration:none;color:inherit;box-shadow:var(--shadow)}.homeNav a:hover{border-color:var(--accent)}.homeNav strong{display:block}.homeNav span{font-size:.85rem;color:var(--ink-soft)}.chipRow{display:flex;flex-wrap:wrap;gap:4px;margin:.5rem 0 1rem}.chip{width:44px;height:44px;padding:0;border-radius:10px;font-weight:700;font-size:.95rem}.chip.on{background:var(--accent);border-color:var(--accent);color:#fff}.levelFill{display:block;height:100%;background:var(--green);transition:width .1s linear}.rollingTranscript{font-style:italic}.rollingTranscript .interim{opacity:.55}body.convoyBody{background:#070f1a}.convoy.dark{--navy: #070f1a;--navy2: #0d1a2b;--navy3: #122238;--edge: #1d3049;--phos: #7ce8a9;--phos-dim: rgba(124, 232, 169, .55);--amberp: #f0c36a;--redp: #ff5f57;--inkD: #d3e4d9;--muted: #8ea4b8;--ship: #f0c36a;--ship-edge: #8a6a2c;background:radial-gradient(1200px 700px at 30% 10%,rgba(30,60,90,.35),transparent 60%),radial-gradient(900px 600px at 80% 90%,rgba(20,70,60,.25),transparent 60%),var(--navy);color:var(--inkD);min-height:100dvh}.convoy.dark button{background:var(--navy3);border-color:#274264;color:var(--inkD)}.convoy.dark button:hover{box-shadow:0 0 0 1px #7ce8a959,0 4px 18px #0006}.convoy.dark button.primary{background:var(--phos);border-color:var(--phos);color:#08131d}.convoy.dark button:disabled{opacity:.4}button.big{font-size:1.05rem;padding:.85rem 1.8rem;letter-spacing:.16em}button.muteBtn{border:none;background:none;font-size:1rem;padding:.2rem .4rem;box-shadow:none}.brand{display:flex;align-items:center;gap:10px}.brandMark{height:18px;width:auto;opacity:.85}.wordmark{font-weight:800;letter-spacing:.34em;color:var(--phos);font-size:.9rem}.stage{display:flex;flex-direction:column;align-items:center;padding:0 1rem 3rem}.stageHead{width:100%;max-width:900px;padding:1rem 0}.stagePanel{width:100%;max-width:560px;margin-top:8vh;background:linear-gradient(180deg,var(--navy2),#0a1523);border:1px solid var(--edge);border-radius:18px;padding:2rem 2rem 2.2rem;text-align:center;box-shadow:0 30px 80px #00000073}.stagePanel.wide{max-width:720px}.stageTitle{font-size:1.1rem;letter-spacing:.34em;color:var(--phos);font-weight:800;margin:0 0 1.4rem}.standby{letter-spacing:.14em;font-size:.8rem;margin-top:1.2rem;animation:breathe 2.4s ease-in-out infinite}@keyframes breathe{0%,to{opacity:.45}50%{opacity:.9}}.crew{display:flex;flex-wrap:wrap;gap:6px;list-style:none;padding:0;margin:.4rem 0}.crew.big{justify-content:center;gap:10px;margin-bottom:1.4rem}.crewChip{display:flex;align-items:center;gap:7px;padding:6px 11px;border-radius:999px;background:var(--navy3);border:1px solid #24405f;font-size:.72rem;letter-spacing:.1em;font-weight:600}.crew.big .crewChip{font-size:.82rem;padding:8px 14px}.crewChip.me{border-color:var(--phos-dim)}.crewChip.benched{opacity:.35}.crewChip.ticked{background:#7ce8a929;border-color:var(--phos)}.crewChip .dot{width:9px;height:9px;border-radius:50%;display:inline-block}.crewChip .tick{width:12px;color:var(--phos);font-weight:800}.orders{list-style:none;padding:0;margin:0 auto 1.4rem;text-align:left;max-width:420px}.orders li{display:flex;gap:14px;align-items:baseline;padding:.55rem 0;border-bottom:1px solid var(--edge);font-size:.86rem;letter-spacing:.1em}.orders li:last-child{border-bottom:none}.orders b{color:var(--amberp);font-size:1.1rem;width:1.2rem}.countdown{color:var(--amberp);font-size:1.2rem;letter-spacing:.2em}.runTable{border-collapse:collapse;margin:0 auto 1rem;font-size:.8rem;letter-spacing:.08em}.runTable td{padding:.45rem .9rem;border-bottom:1px solid var(--edge)}.runTable tr.port td:nth-child(3){color:var(--phos)}.runTable tr.sunk td:nth-child(3){color:var(--redp)}.honour{color:var(--amberp);letter-spacing:.14em;font-size:.8rem}.total{font-size:1rem;letter-spacing:.16em;color:var(--phos)}.runScreen{display:flex;flex-direction:column;height:100dvh;overflow:hidden}.topBar{height:54px;display:flex;align-items:center;gap:18px;padding:0 16px;background:#0b1626e6;border-bottom:1px solid var(--edge);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.runName{color:var(--phos);font-weight:700;letter-spacing:.14em;font-size:.8rem;white-space:nowrap}.voyage{flex:1;position:relative;height:8px;background:var(--navy3);border-radius:4px}.voyageFill{position:absolute;inset:0 auto 0 0;background:linear-gradient(90deg,rgba(124,232,169,.35),var(--phos));border-radius:4px;transition:width 1s linear}.voyageShip{position:absolute;top:50%;transform:translate(-50%,-58%) rotate(90deg);color:var(--amberp);font-size:.75rem;transition:left 1s linear}.voyagePort{position:absolute;right:0;top:-15px;font-size:.58rem;letter-spacing:.2em;color:var(--muted)}.hullPips{display:flex;gap:3px}.hullPips .pip{width:9px;height:16px;border-radius:2px;display:inline-block;transform:skew(-12deg)}.hullPips .pip.ok{background:var(--phos);box-shadow:0 0 6px #7ce8a980}.hullPips .pip.gone{background:#3a2430}.runClock{color:var(--amberp);font-size:1rem;letter-spacing:.1em;min-width:3.2rem;text-align:right}.runBody{flex:1;display:grid;grid-template-columns:minmax(0,1fr) 400px;gap:16px;padding:12px 16px;min-height:0}.plotCol{display:flex;align-items:center;justify-content:center;min-height:0;min-width:0}.rightCol{display:flex;flex-direction:column;gap:12px;min-height:0}.ticker{height:36px;display:flex;align-items:center;gap:18px;padding:0 16px;border-top:1px solid var(--edge);font-size:.74rem;letter-spacing:.12em;background:#0b1626e6}.killTally{color:var(--muted)}.eventLine{color:var(--amberp);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;flex:1;animation:flashIn .3s ease-out;letter-spacing:.16em}@keyframes flashIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.plotWrap{display:flex;flex-direction:column;align-items:center;gap:8px;width:100%;max-width:100%}.plotFrame{position:relative;padding:44px 0 0 46px;width:min(100%,calc(100dvh - 176px),760px)}.plot{position:relative;display:grid;grid-template-columns:repeat(calc(var(--n, 10) * 2),1fr);grid-auto-rows:1fr;width:100%;aspect-ratio:1;background:radial-gradient(60% 60% at 50% 50%,rgba(30,64,92,.55),transparent 70%),linear-gradient(180deg,#0c1a2c,#0a1626);border:1px solid #2a4260;box-shadow:0 0 0 1px #7ce8a914,0 20px 60px #00000080,inset 0 0 80px #00000059;overflow:hidden}.ruler{position:absolute;display:flex;font-family:JetBrains Mono,ui-monospace,monospace;font-size:.6rem;color:var(--muted);letter-spacing:0}.ruler span{flex:1;display:flex;align-items:center;justify-content:center}.ruler.top{top:22px;left:46px;right:0;height:18px}.ruler.left{top:44px;left:22px;bottom:0;width:20px;flex-direction:column}.ruler.top span.axisEnd{border-right:1px solid var(--phos-dim)}.ruler.left span.axisEnd{border-bottom:1px solid var(--phos-dim)}.sector{position:absolute;width:50%;height:50%;z-index:0;display:flex;align-items:center;justify-content:center;font-size:clamp(.8rem,2.1vw,1.5rem);letter-spacing:.36em;font-weight:800;color:#7ce8a933;pointer-events:none;-webkit-user-select:none;user-select:none;text-shadow:0 0 18px rgba(124,232,169,.25)}.sector.nw{top:0;left:0}.sector.ne{top:0;right:0}.sector.sw{bottom:0;left:0}.sector.se{bottom:0;right:0}.cell{position:relative;z-index:1;min-width:0;border:none;border-right:1px solid rgba(124,232,169,.07);border-bottom:1px solid rgba(124,232,169,.07);background:transparent;border-radius:0;padding:0;box-shadow:none;transition:background .08s ease}.convoy.dark .cell{background:transparent;box-shadow:none}.convoy.dark .cell.cross{background:#7ce8a90d}.convoy.dark .cell:hover,.convoy.dark .cell.hover{background:#7ce8a942;outline:1px solid var(--phos);outline-offset:-1px;z-index:2}.cell.axE{border-right:2px solid rgba(124,232,169,.38)}.cell.axS{border-bottom:2px solid rgba(124,232,169,.38)}.cell:focus-visible{outline:2px solid var(--phos);outline-offset:-2px;z-index:3}@keyframes smoke{0%{transform:translate(-50%) scale(.6);opacity:.8}to{transform:translate(-30%,-260%) scale(2.2);opacity:0}}.myMarker{position:absolute;z-index:4;width:calc(50% / var(--n, 10));height:calc(50% / var(--n, 10));transform:translate(-50%,-50%);border:2px solid var(--phos);border-radius:50%;pointer-events:none;box-shadow:0 0 14px #7ce8a9b3,inset 0 0 6px #7ce8a980;animation:markerIn .22s ease-out}.myMarker:after{content:"";position:absolute;left:50%;top:50%;width:30%;height:30%;transform:translate(-50%,-50%);border-radius:50%;background:var(--phos)}@keyframes markerIn{0%{transform:translate(-50%,-50%) scale(2.2);opacity:0}to{transform:translate(-50%,-50%) scale(1);opacity:1}}.plotReadout{display:flex;align-items:baseline;gap:14px;color:var(--phos)}.plotReadout .compact{font-size:1.05rem;letter-spacing:.16em;font-weight:700}.plotReadout .sayable{font-size:.7rem;letter-spacing:.24em;color:var(--muted)}.fuseGauge,.signalCard,.gunsRoster{background:linear-gradient(180deg,var(--navy2),#0a1523);border:1px solid var(--edge);border-radius:14px;padding:12px 14px}.fuseGauge header,.signalCard header,.gunsRoster header{display:flex;align-items:center;gap:10px}.fuseGauge header .label,.signalCard header .label,.gunsRoster header .label{color:var(--muted);flex:1}.fuseGauge .clock{font-size:1.8rem;font-weight:700;letter-spacing:.06em;color:var(--phos);line-height:1}.fuseGauge .gauge{position:relative;height:22px;border-radius:11px;background:#0b1524;border:1px solid #1d3049;margin:10px 0 8px;overflow:hidden}.fuseGauge .gaugeFill{position:absolute;inset:0 auto 0 0;border-radius:11px;background:var(--phos);transition:width .25s linear}.fuseGauge .ticks{position:absolute;inset:0;display:flex}.fuseGauge .ticks i{flex:1;border-right:1px solid rgba(255,255,255,.08)}.fuseGauge footer{font-size:.7rem;letter-spacing:.2em;color:var(--muted)}.fuseGauge.amber .gaugeFill,.fuseGauge.amber .clock{background:var(--amberp);color:var(--amberp)}.fuseGauge.amber .clock{background:none}.fuseGauge.red{border-color:var(--redp);box-shadow:0 0 0 1px #ff5f5759,0 0 30px #ff5f5740}.fuseGauge.red .gaugeFill{background:var(--redp);animation:pulse .7s infinite alternate}.fuseGauge.red .clock{color:var(--redp)}.fuseGauge.red footer{color:var(--redp);font-weight:700}.fuseGauge.frozen .gaugeFill{background:var(--muted)}.fuseGauge.quiet .clock{color:var(--muted)}@keyframes pulse{0%{opacity:.55}to{opacity:1}}.signalCard{flex:1;min-height:0;display:flex;flex-direction:column}.signalCard .cipher{flex:1;min-height:60px;overflow-y:auto;margin:8px 0 10px;font-size:.74rem;line-height:1.75;letter-spacing:.06em;color:var(--inkD);-webkit-user-select:all;user-select:all;animation:teletype .9s steps(40,end)}@keyframes teletype{0%{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0 0 0 0)}}.signalCard.ace{border-color:#ff5f5780}.signalCard .copyBtn{font-size:.92rem;padding:.8rem 1rem;letter-spacing:.14em}.signalCard .copyBtn.done{background:var(--amberp);border-color:var(--amberp)}.signalCard .listening{flex:1;display:flex;align-items:center;justify-content:center;gap:14px;color:var(--muted);letter-spacing:.24em;font-size:.72rem}.sweep{width:42px;height:42px;border-radius:50%;border:1px solid rgba(124,232,169,.3);background:conic-gradient(from 0deg,rgba(124,232,169,.5),transparent 40%);animation:sweep 2.4s linear infinite}@keyframes sweep{to{transform:rotate(360deg)}}.signalCard.reveal .plain{font-size:.72rem;line-height:1.7;letter-spacing:.05em;overflow-y:auto;flex:1;margin:8px 0;animation:cascade .9s ease-out}.signalCard.reveal footer{font-size:.72rem;letter-spacing:.18em;color:var(--amberp)}.signalCard.reveal.escaped{border-color:var(--redp)}.signalCard.reveal.escaped header .label{color:var(--redp)}.signalCard.reveal.killed{border-color:var(--phos)}.signalCard.reveal.killed header .label{color:var(--phos)}.aceTag{background:var(--redp);color:#1a0d0c;font-size:.58rem;font-weight:800;border-radius:4px;padding:2px 6px;letter-spacing:.12em}.gunsRoster .count{color:var(--phos);font-weight:700;letter-spacing:.14em}.gunsRoster .status{font-size:.7rem;letter-spacing:.2em;color:var(--muted)}.gunsRoster .status.warn{color:var(--amberp);font-weight:700}.gunsRoster.disagree{border-color:var(--amberp);box-shadow:0 0 0 1px #f0c36a4d}.gunsRoster.reloading .status{color:var(--amberp)}.c-RED,.c-red{background:#ff6b61}.c-BLUE,.c-blue{background:#6badf7}.c-GREEN,.c-green{background:#7ce8a9}.c-YELLOW,.c-yellow{background:#f5df6f}.c-ORANGE,.c-orange{background:#f7a559}.c-PURPLE,.c-purple{background:#c39bf5}.c-CYAN,.c-cyan{background:#6fe3e0}.cascade,p.cascade{animation:cascade .9s ease-out}@keyframes cascade{0%{clip-path:inset(0 100% 0 0);opacity:.4}to{clip-path:inset(0 0 0 0);opacity:1}}.tutorScreen{display:flex;flex-direction:column;min-height:100dvh}.tutorBody{flex:1;display:flex;gap:1rem;padding:1rem;align-items:flex-start}.lanesCol{flex:1;min-width:0}.controlRail{width:380px;display:flex;flex-direction:column;gap:.75rem}.darkPanel{background:var(--navy2);border-color:var(--edge);box-shadow:none}.laneCard{background:var(--navy2);border:1px solid var(--edge);border-radius:12px;padding:.7rem .9rem;margin-bottom:.6rem}.laneCard.stalled{border-color:var(--amberp)}.laneCard header{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;font-size:.85rem}.laneChip{width:10px;height:10px;border-radius:50%;display:inline-block}.presence.live{color:var(--phos);font-size:.7rem}.presence.off{color:var(--redp);font-size:.7rem}.laneFuse{display:flex;align-items:center;gap:.6rem;margin:.5rem 0;font-size:.75rem}.laneFuse .fuseBar{flex:1;position:relative;height:10px;border-radius:5px;background:#16283c;overflow:hidden}.fuseFill{position:absolute;inset:0 auto 0 0;border-radius:5px}.fuseBar.green .fuseFill{background:var(--phos)}.fuseBar.amber .fuseFill{background:var(--amberp)}.fuseBar.red .fuseFill{background:var(--redp);animation:pulse .7s infinite alternate}.state{color:var(--muted);font-size:.7rem;letter-spacing:.06em}.state.ok{color:var(--phos)}.answerKey{font-size:.75rem;color:var(--muted)}.answerKey summary{cursor:pointer;color:var(--amberp)}.small{font-size:.72rem;line-height:1.5}button.danger{background:repeating-linear-gradient(45deg,#3a1a18,#3a1a18 6px,#4a2220 6px 12px);border-color:var(--redp);color:#ffd7d3;font-weight:700}.flashInput{flex:1;background:#0e1a2a;border:1px solid var(--edge);border-radius:8px;color:var(--inkD);padding:.45rem .6rem;font-size:.8rem}.convoy.dark h1,.convoy.dark h2,.convoy.dark h3{color:var(--phos)}.convoy .hint{color:var(--muted)}.nameForm{display:flex;flex-direction:column;align-items:center;gap:.9rem;margin:.4rem 0 .6rem}.nameForm label{font-size:.72rem;letter-spacing:.2em}.nameInput{width:min(100%,320px);text-align:center;font-size:1.4rem;letter-spacing:.12em;font-weight:700;padding:.6rem .8rem;border-radius:12px;background:#0b1524;border:1px solid var(--edge);color:var(--phos);text-transform:uppercase}.nameInput:focus{outline:none;border-color:var(--phos);box-shadow:0 0 0 3px #7ce8a92e}.nameForm .hint{margin-top:0;font-size:.66rem;letter-spacing:.16em}.row.center{justify-content:center}.convoy.dark button.linkish{color:var(--muted);background:none;border:none;box-shadow:none}.convoy.dark button.linkish:hover{color:var(--inkD)}.convoy.dark button.linkish.small{font-size:.66rem;letter-spacing:.16em;margin-top:.8rem}.runBody{position:relative}.pauseOverlay{position:absolute;inset:12px 16px;z-index:5;border-radius:16px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.6rem;background:#060e1ac7;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);border:1px solid var(--edge);text-align:center;letter-spacing:.14em}.pauseOverlay .stageTitle{font-size:2rem;margin:0 0 .4rem;color:var(--amberp)}.pauseOverlay .countdown{color:var(--phos);font-size:1.1rem}.runScreen.isPaused .runClock{color:var(--muted)}.fuseGauge.paused .gaugeFill{background:var(--amberp);animation:none}.fuseGauge.paused .clock{color:var(--amberp)}.fuseGauge.paused footer{color:var(--amberp)}.tabStrip{display:flex;gap:4px;padding:3px;border-radius:999px;background:var(--navy3);border:1px solid var(--edge)}.tabStrip button{padding:5px 12px;border-radius:999px;border:none;background:transparent;color:var(--muted);font-size:.68rem;letter-spacing:.16em}.tabStrip button.on{background:var(--phos);color:#08131d;font-weight:700}.tabStrip button:disabled{opacity:.4}.practiceHead{margin:.9rem 1rem 0;padding:.9rem 1.1rem;border:1px solid var(--edge);border-radius:12px;background:var(--navy2);font-size:.86rem;line-height:1.5}.practiceHead p{margin:0 0 .7rem}.practiceHead .ritual{color:var(--amberp)}.copyRow{flex-wrap:wrap;gap:.5rem}.convoy.dark button.copied{border-color:var(--phos);color:var(--phos)}.confirmRow{display:inline-flex;align-items:center;gap:.5rem;padding:.3rem .5rem;border-radius:10px;border:1px solid var(--amberp)}.confirmRow .mono{color:var(--amberp)}.voiceprintStage .stagePanel.vp{margin-top:5vh;max-width:620px;display:flex;flex-direction:column;align-items:center;gap:.9rem}.voiceprintStage .stagePanel.vp.wide{max-width:760px}.vp .eyebrow{font-size:.68rem;letter-spacing:.32em;color:var(--muted)}.vpQuestion{font-size:1.45rem;font-weight:800;letter-spacing:.01em;line-height:1.25;margin:0 0 .4rem;color:var(--inkD);text-wrap:balance}.vpQuestion em{font-style:normal;color:var(--phos)}.vpLine{margin:0;color:var(--inkD);font-size:1.05rem;line-height:1.5;max-width:34rem}.vpLine strong{color:var(--phos)}.vpClose{margin:.6rem 0 0;color:var(--amberp);font-weight:800;letter-spacing:.22em;font-size:.9rem;text-transform:uppercase}.vpTotal{color:var(--muted);letter-spacing:.2em;font-size:.78rem;margin:0}.convoy.dark .chipRow{justify-content:center;gap:6px;margin:.4rem 0 .6rem}.convoy.dark .chip{width:44px;height:44px;border-radius:10px;background:var(--navy3);border-color:#274264;color:var(--inkD);font-weight:800}.convoy.dark .chip.on{background:var(--phos);border-color:var(--phos);color:#08131d}.convoy.dark .chip:disabled{opacity:.35}.convoy.dark .vp button.linkish.small{margin-top:.4rem}.convoy.dark .vp button.linkish.lit{color:var(--amberp)}.vpReadouts{display:flex;gap:2.2rem;align-items:baseline;justify-content:center}.vpBig{font-size:2.4rem;font-weight:700;letter-spacing:.04em;color:var(--phos);line-height:1;font-variant-numeric:tabular-nums;display:inline-flex;align-items:baseline;gap:.5rem}.vpBig small{font-size:.68rem;letter-spacing:.22em;color:var(--muted);font-weight:700}.vpBig.amber{color:var(--amberp)}.vpChart{width:100%}.night .hist{height:170px}.convoy.dark .night .bar,.convoy.dark .night .bar:hover{background:transparent;border:none;box-shadow:none;border-radius:0}.night .bar .stack{border-bottom-color:var(--edge)}.night .bar .stack i.a{background:var(--phos-dim)}.night .bar.hot .stack i.a{background:var(--amberp)}.night.bright .bar .stack i.a{background:var(--phos);box-shadow:0 0 10px #7ce8a940}.night.bright .bar.lit .stack i.a{background:var(--amberp);box-shadow:0 0 12px #f0c36a73}.vpAsk{display:flex;flex-direction:column;align-items:center;gap:.9rem;width:100%}.night .bar .lab{color:var(--muted)}.vpMeter{width:min(100%,420px);height:8px;border-radius:4px;background:#0b1524;border:1px solid var(--edge);overflow:hidden}.vpMeter .levelFill{background:var(--phos)}.vpHint{margin:0;font-size:.7rem;letter-spacing:.2em;color:var(--muted);text-align:center}.vpRolling{margin:0;color:var(--muted);font-size:.92rem;max-width:40rem;text-align:center}.typeBox.night{background:#0b1524;color:var(--inkD);border:1px solid var(--edge);border-radius:12px;padding:.7rem .9rem;font-size:1rem;line-height:1.5;width:100%;box-sizing:border-box;min-height:7.5rem}.typeBox.night:focus{outline:none;border-color:var(--phos);box-shadow:0 0 0 3px #7ce8a92e}.vpPassages{gap:.4rem;flex-wrap:wrap}.vpPassages .vpHint{margin-right:.3rem}.fpChart{width:100%}.fpChart.morph .bar .stack i.a{transition:height .9s cubic-bezier(.2,.7,.2,1)}.fpChart.small .hist{height:120px}.fpCaption{margin:0;font-size:.72rem;letter-spacing:.22em;color:var(--amberp)}.night .hist.unlabelled .bar .lab{color:var(--edge)}.night .hist .bar .lab.shown{color:var(--amberp);font-weight:700}.night .bar.lit .stack i.a{background:var(--amberp)}.night .bar.shake .stack i.a{background:var(--redp);animation:barShake .45s ease}@keyframes barShake{0%,to{transform:translate(0)}25%{transform:translate(-3px)}75%{transform:translate(3px)}}.convoy.dark .night button.bar:not(:disabled):hover .stack i.a{background:var(--phos)}.convoy.dark .night button.bar:not(:disabled){cursor:pointer}.fpFeedback{margin:0;min-height:1.2rem;font-size:.72rem;letter-spacing:.2em;text-align:center;color:var(--muted)}.fpFeedback.ok{color:var(--phos)}.fpFeedback.miss{color:var(--redp)}.fpPair{display:grid;grid-template-columns:1fr 1fr;gap:.8rem;width:100%}.convoy.dark .fpChoice{padding:.6rem .6rem .3rem;border-radius:12px;background:var(--navy2);border:1px solid var(--edge);cursor:pointer}.convoy.dark .fpChoice .fpChart{pointer-events:none}.convoy.dark .fpChoice:hover{border-color:var(--phos-dim)}.convoy.dark .fpChoice:focus-visible{outline:2px solid var(--phos);outline-offset:2px}.convoy.dark .fpChoice.ok{border-color:var(--phos);box-shadow:0 0 0 2px #7ce8a959}.convoy.dark .fpChoice.miss{border-color:var(--redp);animation:barShake .45s ease}@media(max-width:720px){.fpPair{grid-template-columns:1fr}}.wireScreen{min-height:100dvh;display:flex;flex-direction:column}.wireTally{flex:1;display:flex;align-items:center;gap:12px;color:var(--amberp);font-size:.72rem;letter-spacing:.24em;white-space:nowrap}.wireLine{flex:1;height:1px;background:linear-gradient(90deg,transparent,var(--edge) 20%,var(--edge) 80%,transparent)}.convoy.dark .hardToggle{font-size:.68rem;letter-spacing:.2em;padding:6px 12px;border-radius:999px}.convoy.dark .hardToggle.on{background:var(--amberp);border-color:var(--amberp);color:#08131d;font-weight:800}.wireDesk{flex:1;display:grid;grid-template-columns:360px minmax(0,1fr);gap:16px;padding:14px 16px 18px;min-height:0}.station{background:linear-gradient(180deg,var(--navy2),#0a1523);border:1px solid var(--edge);border-radius:16px;padding:.9rem 1rem 1rem;display:flex;flex-direction:column;gap:.7rem;min-height:0}.station .eyebrow{font-size:.68rem;letter-spacing:.32em;color:var(--muted)}.station.decode.live{border-color:var(--phos-dim)}.wireBox{min-height:12rem;flex:1;resize:none}.wireBox[readonly]{color:var(--muted)}.row.between{justify-content:space-between;align-items:center;width:100%}.shiftChip{font-size:.72rem;letter-spacing:.2em;padding:4px 10px;border-radius:999px;border:1px solid var(--edge);color:var(--muted)}.shiftChip.hidden{border-color:var(--amberp);color:var(--amberp);animation:tumble 1.2s steps(2) infinite}.shiftChip.shown{background:var(--phos);border-color:var(--phos);color:#08131d;font-weight:800;animation:chipFlip .5s ease}@keyframes tumble{0%,to{opacity:1}50%{opacity:.55}}@keyframes chipFlip{0%{transform:rotateX(90deg)}to{transform:none}}.wireText{background:#0b1524;border:1px solid var(--edge);border-radius:12px;padding:.6rem .8rem;font-size:.8rem;line-height:1.5;letter-spacing:.04em;max-height:5.2rem;overflow:auto;color:var(--inkD)}.wireText .dim{color:var(--muted);letter-spacing:.2em;font-size:.7rem}.wireText.arrived{animation:arrive .5s ease}@keyframes arrive{0%{opacity:0;transform:translate(-28px)}to{opacity:1;transform:none}}.wireChart{position:relative;outline:none;-webkit-user-select:none;user-select:none}.wireChart.live{cursor:crosshair}.wireChart:focus-visible{box-shadow:0 0 0 2px var(--phos);border-radius:8px}.wireBars{position:relative;height:170px;overflow:hidden}.wireStrip{position:absolute;inset:0 auto 0 0;width:200%;display:flex;align-items:stretch}.wireStrip.sliding{transition:transform 1.6s cubic-bezier(.2,.7,.2,1)}.wireBar{flex:1;position:relative;border-bottom:1px solid var(--edge);min-width:0;padding:0 1px;box-sizing:border-box}.wireBar i{position:absolute;left:1px;right:1px;bottom:0;display:block;background:var(--phos-dim);border-radius:2px 2px 0 0;transition:height .25s ease;min-height:1px}.wireBar.underGhost i{background:var(--phos)}.wireBar.stampedRight i{background:var(--amberp)}.wireBar.stampedClaim i{background:#f0c36a80}.ghost{position:absolute;top:0;bottom:0;display:flex;pointer-events:none;z-index:2}.ghost.shake{animation:barShake .45s ease}.ghostBar{flex:1;position:relative;min-width:0;padding:0 1px;box-sizing:border-box}.ghostBar i{position:absolute;left:1px;right:1px;bottom:0;display:block;border:2px solid var(--amberp);border-bottom:0;border-radius:2px 2px 0 0;background:#f0c36a29;box-shadow:0 0 12px #f0c36a59}.ghostBar b{position:absolute;left:0;right:0;bottom:-2.3rem;text-align:center;font-family:JetBrains Mono,ui-monospace,monospace;font-size:.78rem;color:var(--amberp);font-weight:800}.ghost.shake .ghostBar i{border-color:var(--redp);background:#ff5f5729}.wireAxis{display:flex;font-size:.66rem;letter-spacing:0}.wireAxis span{flex:1;text-align:center;min-width:0}.wireAxis.cipher{color:var(--muted);padding-top:3px}.wireAxis.cipher span{transition:color .4s ease}.wireAxis.cipher .lit{color:var(--amberp);font-weight:800}.wireAxisWindow{position:relative;height:1.3rem;overflow:hidden;margin-top:2px}.wireStrip.truthStrip{font-size:.66rem;align-items:center}.wireStrip.truthStrip span{flex:1;text-align:center;min-width:0}.wireStrip.truthStrip .empty{color:var(--edge)}.wireStrip.truthStrip .found{color:var(--amberp);font-weight:800}.wireStrip.truthStrip .claim{color:#f0c36a99;font-weight:700;transition:color .2s ease}.wireStrip.truthStrip .claim.agree{color:var(--phos);font-weight:800;text-shadow:0 0 8px rgba(124,232,169,.5)}.dialWindow{margin-top:1px;border-top:1px dashed var(--edge);padding-top:2px;height:1.4rem}.wireStrip.dialStrip{width:400%;font-size:.66rem;align-items:center;color:#7ce8a9bf}.wireStrip.dialStrip span{flex:1;text-align:center;min-width:0}.wireStrip.dialStrip.settling{transition:transform .18s cubic-bezier(.2,.7,.2,1)}.wireText.decoded{color:var(--phos);border-color:var(--phos-dim);text-shadow:0 0 10px rgba(124,232,169,.25)}.convoy.dark button.primary.amber{background:var(--amberp);border-color:var(--amberp);color:#08131d;animation:beatIn .32s ease}.dial{display:flex;align-items:center;justify-content:center;gap:.6rem;padding:.4rem 0}.dial.shake{animation:barShake .45s ease}.convoy.dark .dial .dialBtn{width:42px;height:42px;border-radius:50%;padding:0;font-size:.9rem}.dial .dialNum{min-width:3.2rem;text-align:center;font-size:2.2rem;font-weight:700;color:var(--amberp);font-variant-numeric:tabular-nums;line-height:1}.dial.shake .dialNum{color:var(--redp)}.wireQuestion{margin-top:.2rem}.vpQuestion.small{font-size:1.05rem;margin:0}.library{display:grid;grid-template-columns:repeat(3,1fr);gap:.6rem}.convoy.dark .patternCard{display:grid;grid-template-columns:52px 1fr;grid-template-rows:auto auto auto;column-gap:.6rem;row-gap:1px;align-items:center;text-align:left;padding:.55rem .7rem;border-radius:12px;background:var(--navy3);border:1px solid #274264;letter-spacing:.04em}.convoy.dark .patternCard .thumb{grid-row:1 / span 3;display:flex;align-items:flex-end;gap:2px;height:40px}.convoy.dark .patternCard .thumb i{flex:1;display:block;background:var(--phos-dim);border-radius:2px 2px 0 0}.convoy.dark .patternCard strong{font-size:.68rem;letter-spacing:.14em;color:var(--inkD)}.convoy.dark .patternCard small{font-size:.66rem;color:var(--muted);letter-spacing:.02em}.convoy.dark .patternCard small.letters{color:var(--amberp);letter-spacing:.2em}.convoy.dark .patternCard.picked{border-color:var(--amberp);box-shadow:0 0 0 2px #f0c36a59}.convoy.dark .patternCard.picked .thumb i{background:var(--amberp)}.convoy.dark .patternCard.done{opacity:.55}.convoy.dark .patternCard.done .thumb i{background:var(--amberp)}.convoy.dark .patternCard.claimed .thumb i{background:#f0c36a99}.convoy.dark .patternCard:disabled{opacity:.35}.wireNote{min-height:1.1rem}@media(max-width:1000px){.wireDesk,.library{grid-template-columns:1fr}}@media(max-height:760px)and (min-width:1001px){.wireDesk{padding:8px 16px 10px;gap:12px}.wireBars{height:150px}.station{gap:.55rem;padding:.7rem 1rem .8rem}.wireBox{min-height:9rem}}.beat{animation:beatIn .32s ease}@keyframes beatIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){.beat{animation:none}}.scopeChart{position:relative;outline:none;-webkit-user-select:none;user-select:none;width:100%}.scopeChart.live{cursor:grab;touch-action:none}.scopeChart.grabbing{cursor:grabbing}.scopeChart:focus-visible{box-shadow:0 0 0 2px var(--phos);border-radius:8px}.scopeBars{position:relative;height:190px;overflow:hidden}.scopeChart.withLandmarks .scopeBars{padding-top:1.25rem;box-sizing:border-box}.refRow{position:absolute;inset:0;display:flex;align-items:stretch}.scopeChart.withLandmarks .refRow{top:1.25rem}.refBar{flex:1;position:relative;border-bottom:1px solid var(--edge);min-width:0;padding:0 1px;box-sizing:border-box}.refBar i{position:absolute;left:1px;right:1px;bottom:0;display:block;background:var(--phos-dim);border-radius:2px 2px 0 0;transition:height .25s ease;min-height:1px}.scopeChart.slow .refBar i{transition:height .9s cubic-bezier(.2,.7,.2,1)}.refBar.lm i{background:var(--phos)}.lmRow{position:absolute;top:0;left:0;right:0;height:1.25rem;display:flex;z-index:3;pointer-events:none}.lmRow span{flex:1;text-align:center;min-width:0;font-size:.56rem;letter-spacing:.14em;font-weight:700;color:var(--phos);white-space:nowrap;overflow:visible}.landmarksIn .lmRow span{animation:beatIn .9s ease both;animation-delay:.4s}.outStrip{position:absolute;top:0;bottom:0;left:0;width:300%;display:flex;align-items:stretch;z-index:2;pointer-events:none}.scopeChart.withLandmarks .scopeBars>.outStrip{top:1.25rem}.outStrip.settle{transition:transform .18s cubic-bezier(.2,.7,.2,1)}.outBar{flex:1;position:relative;min-width:0;padding:0 1px;box-sizing:border-box}.outBar i{position:absolute;left:1px;right:1px;bottom:0;display:block;border:2px solid var(--amberp);border-bottom:0;border-radius:2px 2px 0 0;background:#f0c36a24;box-shadow:0 0 10px #f0c36a47;min-height:2px}.scopeAxis{display:flex;font-size:.66rem;color:var(--muted);padding-top:3px}.scopeAxis span{flex:1;text-align:center;min-width:0}.scopeAxisWindow{position:relative;height:1.1rem;overflow:hidden}.outStrip.outLetters{top:0;font-size:.64rem;align-items:center;color:#f0c36ad9;font-weight:700}.outStrip.outLetters span{flex:1;text-align:center;min-width:0}.scopeWrap{width:100%}.scopeWrap .scopeBars{height:150px}.instrumentStage .stagePanel.vp{margin-top:2vh;max-width:620px;display:flex;flex-direction:column;align-items:center;gap:.9rem}.instrumentStage .stagePanel.vp.wide{max-width:760px}.instInput{width:min(100%,360px);letter-spacing:.34em}.instInput::placeholder{color:var(--edge);letter-spacing:.34em}.vpMeter.train{width:min(100%,520px)}.vpMeter.train .levelFill{transition:width .6s ease}.vpMeter.train.full .levelFill{box-shadow:0 0 10px #7ce8a999}.vpMeter.train.amber .levelFill{background:var(--amberp)}.feedRow{gap:.45rem}.feedBox{min-height:4.5rem;font-size:.9rem}.feedBox.tall{min-height:8.6rem;font-size:.88rem;line-height:1.45}.deskScreen{min-height:100dvh;display:flex;flex-direction:column}.deskBody{flex:1;display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:14px;padding:14px 16px 18px;min-height:0;align-items:start}.deskMain,.deskRail{display:flex;flex-direction:column;gap:10px;min-width:0}.row.tight{margin-top:0}.station.scopeStation.live{border-color:var(--phos-dim)}.shiftBig{font-size:1.3rem;font-weight:700;color:var(--amberp);letter-spacing:.12em;font-variant-numeric:tabular-nums;line-height:1}.shiftBig.idle{color:var(--edge)}.deskGuide{text-align:center;color:var(--inkD);min-height:1.4rem;margin:.1rem 0}.stations{display:grid;grid-template-columns:1fr 1fr;gap:14px}.signalBox{min-height:6.4rem;font-size:.8rem;letter-spacing:.04em;line-height:1.55;resize:none}.decodeBtn{min-width:12rem}.coolBar{flex:1;height:6px;border-radius:3px;background:#0b1524;border:1px solid var(--edge);overflow:hidden;opacity:0;transition:opacity .3s ease}.coolBar.on{opacity:1}.coolBar i{display:block;height:100%;background:var(--amberp);transition:width .25s linear}.readoutText{margin:0;flex:1;min-height:6.4rem;max-height:11rem;overflow:auto;background:#0b1524;border:1px solid var(--edge);border-radius:12px;padding:.7rem .9rem;font-size:.86rem;line-height:1.65;letter-spacing:.05em;color:var(--phos)}.readoutText.empty{color:var(--muted);font-size:.7rem;letter-spacing:.2em;display:flex;align-items:center;justify-content:center}.station.readoutStation.cracked{border-color:var(--phos);box-shadow:0 0 0 1px #7ce8a940,0 0 24px #7ce8a926}.crackStamp{color:var(--phos);font-weight:800;letter-spacing:.2em;font-size:.72rem;animation:chipFlip .5s ease}.station.practiceStation.ace{border-color:#ff5f5780}.cipherText.night{background:#0b1524;border-color:var(--edge);color:var(--inkD);font-size:.74rem;line-height:1.7;max-height:150px;animation:teletype .9s steps(40,end)}.convoy.dark .copyBtn{font-size:.86rem;padding:.75rem .9rem;letter-spacing:.12em}.convoy.dark .copyBtn.done{background:var(--amberp);border-color:var(--amberp);color:#08131d}.vpHint.left{text-align:left}.vpHint.done{color:var(--phos)}.convoy.dark .practiceStation button.linkish.small,.convoy.dark .wipeRow button.linkish.small{margin-top:0}.wipeRow{margin-top:.4rem}.convoy.dark .confirmRow button.small,.convoy.dark button.small{font-size:.68rem;padding:.35rem .6rem;letter-spacing:.12em}@media(max-width:1000px){.deskBody,.stations{grid-template-columns:1fr}}@media(prefers-reduced-motion:reduce){.outStrip.settle,.refBar i,.scopeChart.slow .refBar i{transition:none}.lmRow span,.crackStamp,.cipherText.night{animation:none}}.laneActions{margin-left:auto;display:inline-flex;gap:.35rem;align-items:center}.laneCard.benched{border-style:dashed}.laneCard.retired{opacity:.5}.typeBox{width:100%;min-height:9rem;font-size:1rem;line-height:1.5}.laneName{display:inline-flex;align-items:center;gap:.45rem}.laneName strong{font-size:.95rem}.laneName input{width:9.5rem}.convoy.dark .laneName button.linkish{margin:0;padding:0 .2rem;text-decoration:none}.tutorScreen .topBar .mono.dim{margin-left:auto;white-space:nowrap}.page.convoy{max-width:760px}@media(prefers-reduced-motion:reduce){.cascade,.bar .stack i,.fuseGauge.red .gaugeFill,.signalCard .cipher,.sweep,.shipSprite .smoke,.standby,.voyageFill,.voyageShip,.fx .track,.fx .ring,.fx .burst,.fx .debris,.fx .flash,.fx .stamp,.plot.kick,.runScreen.hit,.runScreen.hit .vignette,.pip.justGone,.scene .sceneShip,.scene .wake,.scene .beam,.scene .swell,.sceneTitle,.sceneSub,.tally,.sceneCrew,.revealStamp,.signalCard.reveal.escaped,.crewChip .tick{animation:none;transition:none}}:focus-visible{outline:2px solid var(--accent-deep);outline-offset:2px}.convoy.dark :focus-visible{outline-color:var(--phos)}@media(max-width:1100px),(max-height:640px){.runScreen{height:auto;min-height:100dvh;overflow:visible}.runBody{grid-template-columns:1fr}.plotFrame{width:min(100%,600px)}.rightCol{width:100%}.signalCard .cipher{max-height:160px}}@media(max-width:760px){.page{padding:1.25rem .75rem 3rem}.chipRow{gap:6px}.topBar{flex-wrap:wrap;height:auto;padding:8px 12px;gap:10px}.voyage{order:10;flex-basis:100%}}.linkBanner{padding:.5rem 1rem;font-size:.85rem;text-align:center;border-bottom:1px solid var(--edge)}.linkBanner.waiting,.linkBanner.connecting{background:#16283c;color:var(--muted)}.linkBanner.error{background:#3a1a18;color:#ffd7d3;font-weight:600}.linkBanner.displaced{background:#3a2f18;color:#ffe9b8;font-weight:600}.compass{position:absolute;left:0;top:0;width:44px;height:44px;color:var(--phos);font-size:.58rem;font-weight:800}.compass:before{content:"";position:absolute;left:50%;top:6px;bottom:6px;width:1px;background:var(--phos-dim)}.compass:after{content:"";position:absolute;top:50%;left:6px;right:6px;height:1px;background:var(--phos-dim)}.compass i{position:absolute;font-style:normal;line-height:1;background:var(--navy);padding:0 2px}.compass .n{top:0;left:50%;transform:translate(-50%)}.compass .s{bottom:0;left:50%;transform:translate(-50%);color:var(--muted)}.compass .w{left:0;top:50%;transform:translateY(-50%);color:var(--muted)}.compass .e{right:0;top:50%;transform:translateY(-50%);color:var(--muted)}.axisWords{position:absolute;display:flex;justify-content:space-between;font-size:.6rem;letter-spacing:.22em;font-weight:700;color:var(--phos)}.axisWords.top{left:46px;right:0;top:4px}.axisWords.left{left:0;top:44px;bottom:0;width:20px;flex-direction:column;align-items:center}.axisWords.left span{writing-mode:vertical-rl;transform:rotate(180deg)}.axisWords.left span:last-child{transform:none}.cell.axE{border-right:2px solid rgba(124,232,169,.55)}.cell.axS{border-bottom:2px solid rgba(124,232,169,.55)}.sector{font-size:clamp(.8rem,1.9vw,1.35rem);letter-spacing:.26em;color:#7ce8a929;padding:0 5%;box-sizing:border-box}.convoyLabel{position:absolute;z-index:2;left:50%;top:calc(50% + clamp(5.2%,52% / var(--n, 10),16%));transform:translate(-50%);font-size:.5rem;letter-spacing:.3em;color:var(--amberp);opacity:.85;pointer-events:none}.hoverChip,.markerChip{position:absolute;z-index:6;transform:translate(-50%,-115%);font-size:.62rem;letter-spacing:.12em;font-weight:800;color:#08131d;background:var(--phos);padding:2px 6px;border-radius:6px;white-space:nowrap;pointer-events:none}.markerChip{background:var(--phos);top:0;left:50%;transform:translate(-50%,-140%)}.plotReadout{flex-direction:column;align-items:center;gap:2px}.plotReadout .sentence{font-size:.86rem;letter-spacing:.2em;color:var(--phos);font-weight:700}.plotReadout .sayable{font-size:.66rem;letter-spacing:.2em;color:var(--muted)}.plotReadout .compact{display:none}.shipSprite{display:inline-block;position:relative;filter:drop-shadow(0 0 8px rgba(240,195,106,.55))}.shipSprite.ship{position:absolute;z-index:2;left:50%;top:50%;width:clamp(9%,90% / var(--n, 10),30%);height:clamp(9%,90% / var(--n, 10),30%);transform:translate(-50%,-50%);pointer-events:none}.shipSprite.ship.heavy{transform:translate(-50%,-50%) rotate(-8deg)}.shipSprite .smoke{position:absolute;left:50%;top:30%;width:6px;height:6px;border-radius:50%;background:#c8c8c88c;animation:smoke 1.8s ease-out infinite}.shipSprite.heavy .smoke{background:#787878cc;width:9px;height:9px;animation-duration:1.1s}.fx{position:absolute;inset:0;width:100%;height:100%;z-index:5;pointer-events:none;overflow:visible}.fx .track{stroke:#d3e4d9e6;stroke-width:.09;stroke-linecap:round;stroke-dasharray:1;stroke-dashoffset:1;animation:trackRun .6s cubic-bezier(.3,0,.7,1) forwards,trackFade .5s .7s forwards}@keyframes trackRun{to{stroke-dashoffset:0}}@keyframes trackFade{to{opacity:0}}.fx .flash{fill:#fff;opacity:0;transform-box:fill-box;transform-origin:center;animation:flashPop .36s .6s ease-out forwards}@keyframes flashPop{0%{opacity:0;transform:scale(.2)}30%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(1.6)}}.fx .ring{fill:none;stroke:#d3e4d9d9;stroke-width:.08;opacity:0;transform-box:fill-box;transform-origin:center;animation:ringOut 1.3s ease-out forwards}@keyframes ringOut{0%{opacity:1;transform:scale(.6)}to{opacity:0;transform:scale(5)}}.fx.hit .ring{stroke:var(--amberp)}.fx .burst{fill:url(#burstFill);opacity:0;transform-box:fill-box;transform-origin:center;animation:burstOut .9s .6s ease-out forwards}.fx .glow{fill:#ff8c3c59;opacity:0;transform-box:fill-box;transform-origin:center;animation:burstOut 1.2s .62s ease-out forwards}@keyframes burstOut{0%{opacity:0;transform:scale(.2)}25%{opacity:1;transform:scale(1.1)}to{opacity:0;transform:scale(2.4)}}.fx .debris{stroke:var(--amberp);stroke-width:.07;stroke-linecap:round;stroke-dasharray:1;stroke-dashoffset:1;opacity:0;animation:debrisFly .8s .64s ease-out forwards}@keyframes debrisFly{0%{stroke-dashoffset:1;opacity:1}60%{stroke-dashoffset:0;opacity:1}to{stroke-dashoffset:-.4;opacity:0}}.fx .stamp{font-family:JetBrains Mono,ui-monospace,monospace;font-size:.9px;font-weight:800;letter-spacing:.1px;fill:var(--amberp);opacity:0;animation:stampRise 1.5s .72s ease-out forwards;paint-order:stroke;stroke:#070f1ad9;stroke-width:.25px}.fx .stamp.miss{fill:var(--muted)}@keyframes stampRise{0%{opacity:0;transform:translateY(.6px)}20%{opacity:1;transform:translateY(0)}80%{opacity:1}to{opacity:0;transform:translateY(-.8px)}}.plot.kick{animation:kick .32s ease-out}@keyframes kick{0%{transform:translate(0)}20%{transform:translate(-3px,2px)}40%{transform:translate(3px,-2px)}60%{transform:translate(-2px,1px)}80%{transform:translate(2px,-1px)}to{transform:none}}.vignette{position:absolute;inset:0;pointer-events:none;z-index:4;opacity:0;background:radial-gradient(ellipse at center,transparent 45%,rgba(255,60,40,.55) 100%)}.runScreen.hit .vignette{animation:flood 1.2s ease-out forwards}@keyframes flood{0%{opacity:0}12%{opacity:1}to{opacity:0}}.runScreen.hit{animation:shake .6s ease-out}@keyframes shake{0%{transform:none}15%{transform:translate(-6px,3px)}30%{transform:translate(5px,-3px)}45%{transform:translate(-4px,2px)}60%{transform:translate(3px,-1px)}75%{transform:translate(-2px,1px)}to{transform:none}}.hullPips .pip.justGone{animation:pipBreak 1.2s ease-out forwards}@keyframes pipBreak{0%{background:var(--redp);box-shadow:0 0 12px var(--redp);transform:skew(-12deg) scale(1.4)}40%{background:var(--redp);transform:skew(-12deg) scale(1)}to{background:#3a2430;box-shadow:none;transform:skew(-12deg) rotate(18deg) translateY(2px)}}.crewChip .tick{transition:transform .2s ease}.crewChip.ticked .tick{animation:tickIn .36s cubic-bezier(.2,1.4,.4,1)}@keyframes tickIn{0%{transform:scale(0);opacity:0}60%{transform:scale(1.6);opacity:1}to{transform:scale(1)}}.crewChip.ticked{animation:chipGlow .6s ease-out}@keyframes chipGlow{0%{box-shadow:0 0 #7ce8a999}to{box-shadow:0 0 0 10px #7ce8a900}}.gunsRoster .count{transition:transform .15s ease}.signalCard .revealStamp{font-size:.7rem;font-weight:800;letter-spacing:.24em;color:var(--phos);border:2px solid currentColor;border-radius:6px;padding:2px 8px;transform:rotate(-6deg);animation:stampIn .5s cubic-bezier(.2,1.4,.4,1) both}.signalCard .revealStamp.red{color:var(--redp)}@keyframes stampIn{0%{transform:rotate(-6deg) scale(3);opacity:0}to{transform:rotate(-6deg) scale(1);opacity:1}}.signalCard.reveal.killed{animation:cardFlip .5s ease-out}@keyframes cardFlip{0%{transform:rotateX(90deg);opacity:0}to{transform:none;opacity:1}}.signalCard.reveal.escaped{animation:barShake .5s ease,cardFlip .5s ease-out;background:linear-gradient(180deg,#2a1418,#0a1523)}.instrumentLink{display:inline-block;margin-top:8px;font-size:.7rem;letter-spacing:.2em;color:var(--phos);text-decoration:none;border:1px solid var(--phos-dim);border-radius:999px;padding:6px 12px;text-align:center}.instrumentLink:hover{border-color:var(--phos);box-shadow:0 0 0 1px #7ce8a959}.signalCard .instrumentLink{align-self:center}.lobbyLink{margin:.4rem 0 .8rem}.stagePanel.briefing .eyebrow{display:block;margin-bottom:1rem}.countdown.held{color:var(--phos);font-size:.86rem;letter-spacing:.24em;animation:breathe 2.4s ease-in-out infinite}.scene{min-height:100dvh;display:flex;flex-direction:column;align-items:center;position:relative;overflow:hidden;padding:0 1rem 3rem}.scene .stageHead{width:100%;max-width:900px;padding:1rem 0;position:relative;z-index:3}.scene .sea{position:absolute;inset:0;z-index:0;overflow:hidden}.scene .stars{position:absolute;inset:0;background-image:radial-gradient(1px 1px at 12% 18%,rgba(255,255,255,.7),transparent),radial-gradient(1px 1px at 33% 9%,rgba(255,255,255,.5),transparent),radial-gradient(1.5px 1.5px at 58% 22%,rgba(255,255,255,.6),transparent),radial-gradient(1px 1px at 78% 12%,rgba(255,255,255,.5),transparent),radial-gradient(1px 1px at 91% 28%,rgba(255,255,255,.6),transparent),radial-gradient(1px 1px at 45% 31%,rgba(255,255,255,.4),transparent)}.scene .horizon{position:absolute;left:0;right:0;top:30%;height:1px;background:linear-gradient(90deg,transparent,rgba(124,232,169,.35),transparent)}.scene .swell{position:absolute;inset:30% -10% 0;background:repeating-linear-gradient(180deg,rgba(124,232,169,.05) 0 1px,transparent 1px 22px);animation:swell 6s linear infinite}@keyframes swell{0%{transform:translateY(0)}to{transform:translateY(22px)}}.scene .shipLane{position:absolute;top:30%;left:0;right:0;height:0}.scene .sceneShip{position:absolute;width:64px;height:64px;top:-32px;left:50%;transform:translate(-50%) rotate(-90deg)}.scene.won .sceneShip{animation:sailIn 3.2s cubic-bezier(.2,.7,.3,1) both}@keyframes sailIn{0%{left:100%;opacity:0}10%{opacity:1}to{left:38%}}.scene .wake{position:absolute;top:-2px;left:38%;width:40%;height:4px;border-radius:2px;background:linear-gradient(90deg,rgba(211,228,217,.5),transparent);opacity:0;animation:wakeIn 3.2s ease-out both}@keyframes wakeIn{0%{opacity:0;left:100%;width:0}40%{opacity:.8}to{opacity:.35;left:38%;width:40%}}.scene .harbour{position:absolute;left:12%;top:12%;width:120px;height:18%}.scene .lighthouse{position:absolute;left:20px;bottom:0;width:14px;height:100%;background:linear-gradient(180deg,#d3e4d9 0 8px,#8a6a2c 8px 30%,#d3e4d9 30% 60%,#8a6a2c 60%);border-radius:3px 3px 0 0}.scene .lamp{position:absolute;left:50%;top:2px;width:6px;height:6px;border-radius:50%;transform:translate(-50%);background:var(--amberp);box-shadow:0 0 14px 4px #f0c36acc}.scene .beam{position:absolute;left:50%;top:5px;width:900px;height:900px;transform-origin:0 0;background:conic-gradient(from -8deg,rgba(240,195,106,.22),transparent 16deg);animation:beamSweep 7s linear infinite;pointer-events:none}@keyframes beamSweep{0%{transform:rotate(-30deg)}to{transform:rotate(330deg)}}.scene .quay{position:absolute;left:0;right:0;bottom:-6px;height:8px;background:#1d3049;border-radius:2px}.scene.lost .sceneShip{animation:goDown 3.6s ease-in both;transform-origin:center}@keyframes goDown{0%{transform:translate(-50%) rotate(-90deg);opacity:1}40%{transform:translate(-50%) rotate(-65deg)}to{transform:translate(-50%) translateY(70px) rotate(-40deg);opacity:0}}.scene .waterline{position:absolute;inset:30% 0 0;background:linear-gradient(180deg,#070f1a33,#070f1ad9);z-index:1}.scene.lost .sea:after{content:"";position:absolute;inset:0;background:radial-gradient(ellipse at center,transparent 40%,rgba(255,60,40,.35) 100%);animation:pulse 1.4s ease-in-out infinite alternate}.sceneCard{position:relative;z-index:3;margin-top:36vh;width:100%;max-width:640px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:.7rem;background:linear-gradient(180deg,#0d1a2beb,#0a1523f5);border:1px solid var(--edge);border-radius:18px;padding:1.6rem 2rem 1.8rem;box-shadow:0 30px 80px #00000073;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.sceneCard .eyebrow{font-size:.66rem;letter-spacing:.3em;color:var(--muted)}.sceneTitle{margin:0;font-size:2.2rem;letter-spacing:.34em;font-weight:800;color:var(--phos);animation:titleRise 1.2s .6s cubic-bezier(.2,.7,.3,1) both;text-shadow:0 0 24px rgba(124,232,169,.35)}.scene.lost .sceneTitle{color:var(--redp);text-shadow:0 0 24px rgba(255,95,87,.4)}@keyframes titleRise{0%{opacity:0;transform:translateY(18px) scale(.96);letter-spacing:.6em}to{opacity:1;transform:none;letter-spacing:.34em}}.sceneSub{margin:0;color:var(--inkD);letter-spacing:.22em;font-size:.8rem;animation:beatIn .8s 1.1s ease both}.tallyCards{display:flex;gap:.8rem;justify-content:center;flex-wrap:wrap;margin-top:.4rem}.tally{display:flex;flex-direction:column;align-items:center;gap:.3rem;min-width:130px;padding:.8rem 1rem;border-radius:12px;background:var(--navy3);border:1px solid #274264;animation:beatIn .6s ease both}.tally b{font-size:1.8rem;color:var(--amberp);font-family:JetBrains Mono,ui-monospace,monospace;line-height:1}.tally small{font-size:.6rem;letter-spacing:.24em;color:var(--muted);font-weight:700}.hullPips.big{gap:5px}.hullPips.big .pip{width:12px;height:22px}.sceneCrew{animation:beatIn .7s ease both}.sceneCrew .kills{margin-left:4px;color:var(--amberp);font-weight:800}.scene .runTable td{padding:.35rem .8rem}.scene .standby{margin-top:.6rem}.stagePanel .small{font-size:.66rem;letter-spacing:.16em;margin:.2rem 0 0}.timeDial{padding:.5rem 0 .2rem}.timeDial .dialNum{min-width:5.2rem;font-size:2rem}.centred{text-align:center}.voyageControls{min-height:3rem}.controlRail h2{text-align:center}.convoy.dark button.go{animation:chipGlow 1.2s ease-out infinite}.phaseLine{color:var(--phos);letter-spacing:.12em;font-size:.78rem;white-space:nowrap}.drillCard{display:flex;flex-direction:column;gap:.5rem}.drillCard .eyebrow{color:var(--amberp);letter-spacing:.3em;font-size:.7rem}.drillTitle{margin:0;font-size:1.35rem;letter-spacing:.12em;color:var(--phos)}.drillLine{margin:.4rem 0 0;font-size:.95rem;letter-spacing:.08em;line-height:1.5}.drillLine.ok,.drillRow.ok,.drillPanel .ok,.drillCard .ok{color:var(--phos)}.drillLine.miss,.drillRow.miss{color:var(--redp)}.drillRow{margin:.35rem 0 0}.drillPanel .drillCall{margin:.3rem 0 .2rem;text-align:center;font-size:1.55rem;font-weight:800;letter-spacing:.14em;color:var(--amberp);line-height:1.25;text-shadow:0 0 18px rgba(240,195,106,.35)}.settingsPanel{gap:.2rem}.settingsPanel .setting{padding:.35rem 0 .2rem;border-top:1px solid rgba(124,232,169,.1)}.settingsPanel .setting:first-of-type{border-top:none;padding-top:0}.settingsPanel .settingName{display:block;text-align:center;font-size:.66rem;letter-spacing:.24em;color:var(--muted)}.settingsPanel .timeDial{padding:.25rem 0 0}.settingsPanel .timeDial .dialNum{font-size:1.5rem;min-width:4rem}.settingsPanel .bandRow{gap:.4rem}.settingsPanel .bandRow .timeDial .dialNum{font-size:1.25rem;min-width:3.2rem}.settingsPanel .bandRow .dialBtn{width:32px;height:32px;font-size:.75rem}.settingsPanel .setting p{margin:.15rem 0 0}.practiceHead .copyRow{align-items:center}.drillScreen .runClock{color:var(--amberp)}
