:root{color-scheme:dark;--bg:#111914;--surface:#1c251e;--border:#3b4434;--ink:#e4dfc4;--muted:#a0a68c;--gold:#d8bb7b;--paper:#d9d4b8;--dark:#232b21;--red:#b87356;font-family:ui-monospace,SFMono-Regular,Consolas,"Liberation Mono",monospace;font-synthesis:none}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);min-height:100vh;background-image:radial-gradient(ellipse at 50% 0,#2b352440,transparent 70%)}button,a,select{-webkit-tap-highlight-color:transparent}button,select{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.45}button:focus-visible,a:focus-visible,select:focus-visible,canvas:focus-visible{outline:2px solid var(--gold);outline-offset:4px}button{border:1px solid var(--border);border-radius:0}button:hover:not(:disabled){filter:brightness(1.15)}[hidden]{display:none!important}.masthead{max-width:1480px;margin:auto;padding:25px 42px;display:flex;justify-content:space-between;gap:24px;align-items:center}.wordmark{display:flex;align-items:center;gap:12px;color:var(--ink);font-size:21px;font-weight:700;letter-spacing:3px;text-decoration:none}.wordmark svg{height:31px;width:23px;fill:none;stroke:var(--gold);stroke-width:1.5}.edition{font-size:9px;letter-spacing:1px;font-weight:400;color:var(--muted);border-left:1px solid var(--border);padding-left:18px;margin-left:6px}nav{display:flex;gap:8px}.quiet{background:transparent;border-color:transparent;color:var(--muted);padding:10px;font-size:11px}.quiet:hover{color:var(--ink)}main{max-width:1480px;margin:auto;padding:12px 42px 30px}.game-shell{border:1px solid var(--border);box-shadow:0 18px 70px #0003}.station-bar,.statusbar{display:flex;justify-content:space-between;gap:12px;align-items:center;min-height:43px;padding:12px 20px;font-size:10px;letter-spacing:1.5px}.station-bar{background:#21291f;border-bottom:1px solid var(--border);color:#bcc1a2}.status-light{display:inline-block;width:6px;height:6px;border-radius:50%;background:#b8bb80;box-shadow:0 0 9px #b8bb8033;margin-right:10px}.bar-divider{color:#737d60;margin:0 12px}.redaction{letter-spacing:-2px;color:#7c866b}.workspace{display:flex;align-items:stretch}.viewport{position:relative;min-width:0;flex:1;overflow:hidden;background:#14231b}canvas{display:block;width:100%;height:100%;min-height:420px;max-height:760px;object-fit:fill;aspect-ratio:8/5;touch-action:manipulation}.playing canvas{cursor:crosshair;min-height:460px}.welcome{position:absolute;inset:0;background:linear-gradient(90deg,#0c1614ed 0%,#0c1614b0 35%,#0c16142b 70%,#0c16140d 100%);display:flex;flex-direction:column;justify-content:space-between;padding:70px 60px 34px}.eyebrow{font-size:10px;letter-spacing:1.8px;line-height:1.7;margin:0 0 14px;color:var(--muted)}h1{font-family:Georgia,'Times New Roman',serif;font-size:clamp(65px,8.8vw,132px);line-height:.95;letter-spacing:-7px;font-weight:400;margin:22px 0 28px;color:#eeead2}.title-period{color:var(--gold)}.opening{font-family:Georgia,serif;font-size:clamp(18px,2.1vw,26px);line-height:1.6;color:#d4d5b9;margin:0 0 30px}.start-actions{display:flex;gap:12px;flex-wrap:wrap}.primary{display:inline-flex;align-items:center;justify-content:space-between;gap:40px;padding:17px 23px;background:var(--gold);color:#242a1d;border-color:var(--gold);font-size:12px;font-weight:700;letter-spacing:.3px}.primary span{font-size:20px;line-height:1}.secondary{background:#17231acf;color:var(--ink);padding:14px 20px;font-size:11px;border-color:#6b7558}.difficulty{display:flex;align-items:center;gap:13px;font-size:9px;letter-spacing:1px;color:var(--muted);margin-top:24px}.difficulty select{font-size:10px;border:0;border-bottom:1px solid #76805e;background:#17231a;color:var(--ink);padding:7px;max-width:250px}.welcome-meta{font-size:9px;letter-spacing:1.2px;color:#9ca88b;margin-top:21px}.welcome-bottom{display:flex;align-items:end;justify-content:space-between;margin-top:30px;font-size:9px;letter-spacing:1.3px;line-height:1.9;color:#a2ad8f}.welcome-bottom strong{font-weight:400;color:#d9d9bc}.warning-sign{border:1px solid #7d8551;color:#c5c99a;line-height:1.5;padding:9px 14px;text-align:center;transform:rotate(-3deg)}.statusbar{border-top:1px solid var(--border);color:#9ca687;font-size:9px;letter-spacing:.6px;background:#19221a}.below-game{display:flex;justify-content:space-between;margin-top:20px;gap:18px;font-size:9px;letter-spacing:1px;line-height:1.8;color:#8d977d}.below-game em{font-style:normal;color:#b5bca0}.small-dot{margin:0 8px}.sidebar{width:300px;flex-shrink:0;display:flex;flex-direction:column;background:#20281f;border-left:1px solid var(--border)}.panel-heading{display:flex;justify-content:space-between;gap:12px;font-size:9px;letter-spacing:1.4px;color:#b4b99c;padding:17px 20px;border-bottom:1px solid var(--border)}.assignment{padding:24px 20px 18px}.assignment .eyebrow{font-size:8px;margin-bottom:8px;color:#9aa586}.assignment h2{font-family:Georgia,serif;font-weight:400;font-size:26px;line-height:1.15;margin:0 0 12px}.assignment p:last-child{font-size:11px;line-height:1.7;color:#b2b79d;margin:0}.stats{padding:0 20px 15px;display:grid;grid-template-columns:1fr 1fr;gap:12px}.stat{border-top:1px solid var(--border);padding-top:12px}.stat label{display:block;font-size:8px;letter-spacing:1px;color:#a5af91;margin-bottom:8px}.stat strong{font-size:22px;font-weight:400}.stat small{font-size:11px;color:#b2b99c}.stat.warning strong{color:#dda27d}.meter{height:3px;background:#49513a;margin-top:8px}.meter span{display:block;height:100%;background:var(--gold);transition:width .2s}.controls{padding:0 20px 16px;display:flex;flex-wrap:wrap;gap:8px}.controls button{width:100%;font-size:11px;padding:12px 10px;background:#303b2a;color:var(--ink);border-color:#505c40}.controls button.primary{background:var(--gold);color:var(--dark);border-color:var(--gold)}.controls .half{width:calc(50% - 4px)}.controls small{font-size:9px;line-height:1.5;color:#a6af93}.radio{flex:1;min-height:130px}.radio .panel-heading{border-top:1px solid var(--border);font-size:8px;padding:12px 20px}.radio-wave{color:#a3b17e}#radio-log{list-style:none;margin:0;padding:16px 20px;max-height:202px;overflow:auto}#radio-log li{font-size:10px;line-height:1.65;color:#a6b194;margin:0 0 10px;padding-left:11px;border-left:1px solid #46553a}#radio-log li:first-child{color:#d7ddba}#radio-log li.alert{border-left-color:#c1835c;color:#caa583}#radio-log li.story{color:#d2cbaa;border-left-color:#a7ab7a}.notebook-button{background:#283122;color:#c4c8a7;margin:0 20px 20px;text-align:left;padding:13px;font-size:10px;display:flex;justify-content:space-between}.notebook-button span{color:var(--gold)}.scene-caption{position:absolute;left:35px;bottom:65px;right:35px;text-align:center;pointer-events:none;color:#e6dfbc;font-size:12px;line-height:1.5;text-shadow:0 2px 7px #000}.pause-layer{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:center;align-items:center;background:#0d1816e6;z-index:2}.pause-layer h2{font-family:Georgia,serif;font-weight:400;font-size:50px;margin:0 0 28px}dialog{max-width:700px;width:calc(100% - 32px);max-height:calc(100dvh - 42px);border:1px solid #a5a185;background:var(--paper);color:var(--dark);padding:0;box-shadow:8px 8px 0 #080f0c66,0 30px 140px #0009;overflow:auto;color-scheme:light}dialog::backdrop{background:#050e0bc9;backdrop-filter:blur(5px)}.paper{padding:35px 42px 30px;background-image:repeating-linear-gradient(0deg,transparent,transparent 3px,#ffffff05 3px,#ffffff05 4px)}.paper-top{display:flex;justify-content:space-between;gap:15px;font-size:9px;letter-spacing:1px;line-height:1.6;border-bottom:2px solid #48513c;padding-bottom:17px;margin-bottom:25px;color:#525c46}.paper .eyebrow{color:#687258;margin-bottom:9px}.paper h2{font-family:Georgia,serif;font-size:43px;line-height:1.08;font-weight:400;letter-spacing:-1px;margin:0 0 20px}.paper p{font-family:Georgia,serif;font-size:17px;line-height:1.65}.paper .small{font-family:inherit;font-size:11px;line-height:1.7;color:#5e684f}.paper .orders{padding:0;list-style:none;margin:24px 0}.orders li{display:flex;gap:16px;font-size:12px;line-height:1.7;padding:12px 0;border-bottom:1px solid #8b927638}.orders li span{color:#768061}.paper .note{border-left:2px solid #8e674b;padding:0 0 0 16px;font-size:15px;font-style:italic;color:#64694f}.paper .primary{background:#2c3c2b;color:#eeecd3;border-color:#2c3c2b;margin-top:15px;min-width:210px}.paper .secondary{background:transparent;color:#3e4b33;border-color:#8e987a;margin-top:15px}.paper-actions{display:flex;gap:10px;flex-wrap:wrap}.choices{display:flex;flex-direction:column;gap:10px;margin-top:24px}.choice{text-align:left;color:#263023;background:#e6e2c855;border:1px solid #8e967b;padding:16px 18px;font-size:12px;line-height:1.5}.choice:hover:not(:disabled){background:#f0ecd4}.choice small{display:block;color:#68705b;font-size:10px;margin-top:7px;line-height:1.5}.question-num{display:inline-block;background:#344330;color:#eeecd2;padding:5px 8px;margin-bottom:18px;font-size:9px;letter-spacing:1px}.redacted-text{background:#313a29;color:#313a29;user-select:none}.stamp{border:2px solid #8f533d;color:#8f533d;display:inline-block;padding:9px 12px;transform:rotate(-3deg);font-size:12px;letter-spacing:1.4px;margin:18px 0}.exhibits{display:grid;gap:16px;margin:23px 0}.exhibit{border-bottom:1px solid #99a085;padding-bottom:15px}.exhibit h3{font:400 23px Georgia,serif;margin:5px 0 10px}.exhibit p{font-size:15px;margin:0}.exhibit small{font-size:9px;color:#677254;letter-spacing:1px}.transcript{margin:20px 0}.transcript p{font-family:inherit;font-size:11px}.transcript b{display:block;font-size:9px;color:#626f51;margin-bottom:5px}.dpad{display:grid;grid-template-columns:repeat(3,1fr);gap:5px;width:100%}.dpad button{min-height:40px;padding:8px}.dpad .up{grid-column:2}.dpad .left{grid-column:1}.dpad .down{grid-column:2}.dpad .right{grid-column:3}.toast{position:fixed;left:50%;bottom:25px;transform:translateX(-50%);background:#d8d6b8;color:#253223;padding:14px 22px;max-width:90vw;font-size:11px;line-height:1.5;z-index:10;box-shadow:0 5px 25px #0006}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.noscript{padding:20px;color:var(--gold)}.receipt-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;border-top:1px solid #9aa185;border-bottom:1px solid #9aa185;padding:18px 0;margin:20px 0}.receipt-stats span{font-size:9px;color:#626d51}.receipt-stats strong{font-size:25px;display:block;margin-top:8px;color:#2a3827;font-weight:400}.keyboard{font-size:10px;border:1px solid #8d9876;padding:2px 5px}.mode-note{font-size:10px!important;font-family:inherit!important}.close-icon{float:right;background:transparent;color:#3e4b33;border:1px solid #879274;padding:5px 10px;font-size:14px;margin:0 0 8px 15px}
@media(min-width:1500px){.welcome{padding-top:90px}.welcome-bottom{margin-bottom:20px}}
@media(max-width:1100px){.masthead{padding:22px 22px}main{padding:8px 22px 24px}.edition{display:none}.welcome{padding:50px 40px 25px}.sidebar{width:270px}.assignment h2{font-size:23px}.playing canvas{min-height:520px}.welcome-meta{font-size:8px}}
@media(max-width:760px){.masthead{padding:16px}.wordmark{font-size:17px;letter-spacing:2px}.wordmark svg{height:25px;width:18px}main{padding:0 12px 22px}.quiet{font-size:10px;padding:8px 5px}nav{gap:2px}.station-bar{font-size:8px;letter-spacing:.7px;padding:12px}.bar-divider{margin:0 5px}.welcome{padding:40px 26px 25px;background:linear-gradient(90deg,#0c1614e8,#0c161479 85%)}h1{font-size:76px;letter-spacing:-5px;margin:20px 0 25px}.welcome .eyebrow{font-size:8px;letter-spacing:1.1px}.opening{font-size:20px}.welcome canvas,canvas{min-height:590px}.welcome-bottom{font-size:8px}.warning-sign{font-size:8px}.difficulty{align-items:start;flex-direction:column;gap:6px;margin-top:20px}.difficulty select{max-width:100%}.welcome-meta{font-size:7.5px;letter-spacing:.5px;margin-top:20px}.workspace{flex-direction:column}.playing canvas{height:auto;min-height:0;aspect-ratio:8/5}.sidebar{width:100%;border-left:0;border-top:1px solid var(--border);display:grid;grid-template-columns:1fr 1fr;align-items:start}.sidebar>.panel-heading{grid-column:1/-1;padding:13px 16px}.assignment{padding:18px 16px 10px}.assignment h2{font-size:22px}.assignment p:last-child{font-size:10px}.stats{padding:18px 16px 10px;gap:8px}.controls{padding:5px 16px 18px;grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr}.controls button.half{width:100%}.controls button.primary,.controls small{grid-column:1/-1}.dpad{grid-column:1/-1;max-width:210px;margin:auto}.radio{grid-column:1/-1}.radio #radio-log{max-height:110px;padding:12px 16px}.notebook-button{grid-column:1/-1;margin:0 16px 16px}.statusbar{font-size:8px;line-height:1.7;padding:10px 12px;flex-wrap:wrap;gap:4px}.statusbar span:last-child{font-size:7px}.below-game{font-size:7px;display:block;margin:15px 4px}.below-game>span{display:block;margin-bottom:6px}.paper{padding:27px 24px}.paper h2{font-size:34px}.paper p{font-size:16px}.paper-top{font-size:8px}.paper .choice{font-size:11px}.scene-caption{left:24px;right:24px;bottom:33px;font-size:9px}.pause-layer h2{font-size:32px}.pause-layer .primary{padding:11px 20px}.start-actions{gap:8px}.primary{padding:15px 20px;gap:20px}.secondary{padding:12px 15px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
/* Preserve the field's geometry when the side panel is taller than the scene. */
.playing canvas{object-fit:contain}
@media(min-width:761px) and (max-width:1100px){
  .playing .workspace{flex-direction:column}
  .playing canvas{height:auto;min-height:0;aspect-ratio:8/5}
  .sidebar{width:100%;display:grid;grid-template-columns:1fr 1fr 1fr;border-left:0;border-top:1px solid var(--border)}
  .sidebar>.panel-heading{grid-column:1/-1}
  .sidebar .assignment{grid-column:1;padding-top:20px}
  .sidebar .stats{grid-column:2;padding-top:20px}
  .sidebar .controls{grid-column:3;grid-row:2/4;padding-top:20px;align-content:start}
  .sidebar .radio{grid-column:1/3;min-height:0}
  .sidebar .radio #radio-log{max-height:130px}
  .sidebar .notebook-button{grid-column:3;align-self:end}
}

.radio summary{cursor:pointer}.ending-collection{list-style:none;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:8px}.ending-slot{padding:12px;border:1px solid #8e967b;color:#737a63;font-size:12px}.ending-slot span{margin-right:8px}.ending-slot.collected{background:#344330;color:#eee9cf}.past-run{border-top:1px solid #9aa185;padding:16px 0}.past-run summary{cursor:pointer;font-size:13px}.masthead nav{flex-wrap:wrap}

.censor-bar{display:inline-block;width:6.5ch;height:.85em;background:currentColor;vertical-align:-.03em;user-select:none}.station-location{white-space:nowrap}

.tower-hud{position:absolute;right:28px;bottom:12px}.tower-hud button{padding:7px 10px;background:#20291f;color:#d8d5b4;border-color:#687052;font-size:11px}.controls:empty{display:none}

/* Secondary tools stay out of the field until requested. */
.menu-toggle{font-size:24px;line-height:1;min-width:44px;min-height:44px;border-color:var(--border)}
#game-menu{position:fixed;inset:76px 16px auto auto;margin:0;width:300px;max-width:calc(100vw - 24px);max-height:calc(100dvh - 100px);overflow:auto;padding:12px;background:var(--surface);color:var(--ink);border:1px solid var(--border);box-shadow:0 15px 50px #0008}
#game-menu::backdrop{background:#050e0b66}
.menu-heading{display:flex;align-items:center;justify-content:space-between;padding-left:12px;font-size:10px;letter-spacing:1px;color:var(--muted)}
#game-menu button{min-height:44px}
#game-menu>.quiet{display:block;width:100%;text-align:left;font-size:12px;padding:12px}
#game-menu .notebook-button{width:100%;margin:8px 0 0;font-size:12px}
#game-menu .radio{min-height:0;margin-top:8px}
#game-menu .panel-heading{min-height:44px;padding:14px 12px}
#game-menu #radio-log{max-height:220px;padding:12px}
@media(max-width:760px){.masthead{gap:8px}.masthead nav{align-items:center;justify-content:flex-end}.masthead .quiet{min-height:44px;min-width:44px}#game-menu{top:72px}.tower-hud button,.dpad button{min-height:44px}}

/* The game is the entire screen; background information lives in the menu. */
body{min-height:100dvh}main{max-width:none;margin:0;padding:0}
.game-shell{min-height:100dvh;border:0;box-shadow:none;display:flex;flex-direction:column}
.game-shell .masthead{width:100%;max-width:none;margin:0;padding:8px 16px;gap:12px;border-bottom:1px solid var(--border);background:var(--bg)}
.wordmark{font-size:17px;letter-spacing:2px}.wordmark svg{height:25px;width:18px}
.workspace{flex:1}.viewport{min-height:300px}
canvas,.playing canvas{width:100%;height:100%;min-height:0;max-height:none;object-fit:contain}
.welcome{padding:clamp(24px,5vw,60px);justify-content:center;overflow:auto}
.welcome h1{font-size:clamp(54px,10vw,110px)}
.statusbar{min-height:28px;padding:8px 16px;font-size:8px}
.about-game{border-top:1px solid var(--border);margin:8px 0;color:var(--muted);font-size:11px;line-height:1.7}
.about-game summary{padding:14px 12px;cursor:pointer;min-height:44px}.about-game p{padding:0 12px}
.about-game .station-bar{display:block;font-size:8px;padding:12px;line-height:2}.about-game #date-label{display:block}
.sidebar .assignment{padding:12px 16px}.sidebar .assignment .eyebrow{display:none}.sidebar .assignment h2{font-size:20px;margin-bottom:6px}
#game-menu{top:64px}
@media(max-width:1100px){
 .game-shell{height:100dvh;min-height:540px}
 .game-shell .workspace{flex-direction:column;min-height:0}
 .viewport{flex:1;min-height:220px}
 canvas,.playing canvas{position:absolute;inset:0;aspect-ratio:auto}
 .sidebar{flex-shrink:0;display:grid;grid-template-columns:1fr 1fr;width:100%}
 .sidebar>.panel-heading{padding:8px 16px}
 .sidebar .assignment{grid-column:1;grid-row:auto;padding:10px 16px}
 .sidebar .stats{grid-column:2;grid-row:auto;padding:10px 16px;gap:8px}
 .sidebar .stat{padding-top:6px}.sidebar .stat strong{font-size:18px}
 .sidebar .controls{grid-column:1/-1;grid-row:auto;padding:4px 16px 10px}
 .sidebar .controls .dpad{max-width:240px}
 .welcome h1{margin:8px 0 18px;letter-spacing:-4px}.opening{font-size:20px;margin-bottom:20px}
 .difficulty{margin-top:16px}.statusbar{padding:6px 12px}
}

/* Play occupies the viewport; controls and counters float over the field. */
.playing .game-shell{height:100dvh;min-height:0;position:relative;overflow:hidden}
.playing .game-shell .masthead{position:absolute;inset:0 0 auto;z-index:3;background:linear-gradient(#111914cc,transparent);border:0;padding-top:max(8px,env(safe-area-inset-top))}
.playing .workspace{position:absolute;inset:0;display:block;min-height:0}
.playing .viewport{position:absolute;inset:0;min-height:0}
.playing canvas{position:absolute;inset:0;width:100%;height:100%;aspect-ratio:auto;object-fit:fill}
.playing .statusbar{display:none}
.playing .sidebar{position:absolute;bottom:max(12px,env(safe-area-inset-bottom));left:12px;right:12px;width:auto;border:0;background:transparent;display:block;pointer-events:none}
.playing .sidebar .controls{padding:0;max-width:400px;margin:auto;pointer-events:auto}
.playing .controls button{background:#20291fe8;min-height:44px}
.playing .controls small{background:#111914dd;padding:6px}
.playing .viewport>.stats{position:absolute;top:calc(68px + env(safe-area-inset-top));left:16px;right:16px;padding:0;display:flex;gap:20px;pointer-events:none;text-shadow:0 1px 4px #000}
.playing .viewport>.stats .stat{border:0;padding:0}.playing .viewport>.stats .stat label{font-size:9px;margin-bottom:3px;color:var(--ink)}
.playing .viewport>.stats .stat strong{font-size:20px}.playing .viewport>.stats .meter{display:none}
.playing .tower-hud{right:16px;bottom:max(20px,env(safe-area-inset-bottom))}
.playing .tower-hud button{min-height:48px;background:#20291fe8}
#assignment-info .panel-heading{font-size:10px}#assignment-info .assignment{padding:12px}#assignment-info h2{font:22px Georgia,serif}

.playing canvas{object-fit:cover}

.playing .tower-hud{left:16px;display:flex;align-items:center;justify-content:space-between;gap:12px}.tower-hud #hud-ammo{font-size:12px;color:var(--ink);padding:10px;background:#111914b3}

/* Touch-first investigation: readable landmarks, route choices, and one-thumb travel. */
body[data-phase="field"] .viewport>.stats,body[data-phase="field"] .sidebar,body[data-phase="field"] .scene-caption{display:none}
body[data-phase="field"] .viewport{background:#16221c}
.field-exploration{position:absolute;inset:calc(66px + env(safe-area-inset-top)) 0 max(12px,env(safe-area-inset-bottom));display:flex;flex-direction:column;max-width:880px;margin:auto;padding:0 24px;gap:12px}
.field-heading{display:flex;justify-content:space-between;align-items:center;gap:16px}
.field-heading .eyebrow{font-size:9px;margin:0 0 6px;letter-spacing:1px}

.field-exposure{flex-shrink:0;min-width:115px;font-size:9px;line-height:1.8;color:var(--muted)}
.field-exposure b{display:block;font-size:17px;font-weight:400;color:var(--ink)}
.field-meter{height:4px;background:#3b4434;margin-top:4px}.field-meter i{display:block;height:100%;background:var(--gold);transition:width .16s}.field-danger .field-meter i{background:var(--red)}
.field-board{position:relative;flex:1;min-height:200px;border:1px solid #64745266;background:radial-gradient(ellipse at 40% 70%,#34473555,transparent 65%),#1a291f;box-shadow:inset 0 0 55px #0d181666}
.field-map-surface{position:absolute;inset:14px 24px 28px}.field-map-surface>svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.field-path{fill:none;stroke:#a0a68c;stroke-opacity:.32;stroke-width:.06;stroke-dasharray:.09 .13}
.field-route{fill:none;stroke:var(--gold);stroke-width:.065;stroke-linecap:round;stroke-linejoin:round;opacity:.75}
.field-north{position:absolute;right:10px;top:8px;font-size:11px;color:var(--muted)}

.field-landmark{position:absolute;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;min-height:64px;width:112px;padding:7px 5px;border:1px solid #697651;background:#1c291fef;color:var(--ink);font-size:11px;line-height:1.2;touch-action:manipulation;z-index:1;box-shadow:0 3px 14px #0004}
.field-landmark .field-site-icon{font-size:20px;line-height:1;color:var(--gold)}
.field-landmark small{font-size:8px;letter-spacing:.5px;color:var(--gold)}
.field-landmark.selected{border-color:var(--gold);box-shadow:0 0 0 2px #d8bb7b22,0 3px 14px #0004}.field-landmark.searched small{color:#a5b290}.field-landmark.searched{border-color:#697651}
.field-landmark:disabled{opacity:1;cursor:default}.field-landmark:active:not(:disabled){background:#38452c}
.field-player{position:absolute;transform:translate(-50%,-50%);width:16px;height:16px;background:#f3e3aa;border:3px solid #334735;border-radius:50%;box-shadow:0 0 0 5px #f3e3aa33,0 0 22px #d8bb7b66;pointer-events:none;z-index:2;transition:left .15s linear,top .15s linear}
.field-route-card{border:1px solid #65714e;background:#20291f;padding:14px 16px;flex-shrink:0}
.field-destination{display:flex;align-items:center;justify-content:space-between;gap:12px}.field-destination .eyebrow{display:block;font-size:8px;letter-spacing:1.1px;margin:0 0 4px;color:var(--gold)}
.field-destination h3{font:400 23px Georgia,serif;margin:0}.field-destination>span{font-size:11px;white-space:nowrap;color:var(--muted)}
#field-route-note{font:14px/1.35 Georgia,serif;color:#b2b79d;margin:7px 0 12px}
.field-route-options{display:grid;grid-template-columns:1fr 1fr;gap:8px}.field-route-options button{padding:10px 8px;min-height:54px;color:var(--muted);background:#18221a;border-color:#505c40;text-align:left;touch-action:manipulation}
.field-route-options b{display:block;font-size:11px;font-weight:400;color:var(--ink);margin-bottom:6px}.field-route-options span{font-size:9px;white-space:nowrap}.field-route-options [aria-pressed="true"]{border-color:var(--gold);background:#d8bb7b12}
#field-risk{font-size:10px;line-height:1.4;color:var(--muted);margin:9px 0;min-height:14px}#field-risk.risky{color:#dda27d}
.field-go,.field-stop{width:100%;min-height:50px;padding:12px;font-size:12px;font-weight:700;background:var(--gold);color:var(--dark);border-color:var(--gold);touch-action:manipulation}.field-stop{background:#303b2a;color:var(--ink);border-color:#6b7558}
.is-walking .field-route{stroke-dasharray:.12 .11}.is-walking #field-route-note{min-height:38px}
@media(max-width:600px){
 .field-exploration{padding:0 12px;gap:9px;top:calc(64px + env(safe-area-inset-top))}
 .field-heading{gap:10px}.field-heading .eyebrow{font-size:8px;letter-spacing:.6px}.field-exposure{min-width:78px;font-size:8px}.field-exposure b{font-size:16px}
 .field-map-surface{inset:10px 23px 27px}.field-landmark{width:94px;min-height:60px;font-size:10px}.field-landmark .field-site-icon{font-size:17px}
 .field-route-card{padding:11px 12px}.field-destination h3{font-size:21px}#field-route-note{font-size:13px;margin:6px 0 9px}.field-route-options button{padding:9px 7px}.field-route-options span{font-size:8px}
}
@media(max-height:720px) and (min-width:601px), (max-height:440px) and (min-width:480px){
 .field-exploration{max-width:none;display:grid;grid-template-columns:minmax(220px,1fr) minmax(240px,340px);grid-template-rows:auto minmax(0,1fr);gap:8px 16px;padding:0 20px}
 .field-heading{grid-column:1;grid-row:1}.field-heading .eyebrow{display:none}.field-exposure{min-width:90px}.field-exposure b{display:inline;font-size:13px}
 .field-board{grid-column:1;grid-row:2;min-height:0}.field-route-card{grid-column:2;grid-row:1/3;align-self:center;padding:12px}
 .field-landmark{width:95px;min-height:48px;font-size:10px;gap:2px;padding:5px}.field-landmark .field-site-icon{display:none}.field-map-surface{inset:0 18px 24px}
 #field-route-note{font-size:13px;margin:7px 0}.field-route-options button{padding:9px 6px}.field-route-options span{font-size:8px}
}
@media(max-height:740px) and (max-width:600px){
 .field-exploration{gap:6px}.field-board{min-height:150px}.field-heading .eyebrow{margin-bottom:3px}.field-route-card{padding:9px 10px}#field-route-note{display:none}.field-route-options{margin-top:8px}.field-route-options button{min-height:48px;padding:7px}.field-go,.field-stop{min-height:46px}#field-risk{margin:7px 0}.field-destination h3{font-size:19px}
}
@media(prefers-reduced-motion:reduce){.field-player,.field-meter i{transition:none}}
.field-player.at-landmark{margin-top:-20px}.field-route-options span{font-size:10px;white-space:normal;line-height:1.4}.field-route-options button{min-height:58px}
.is-walking #field-route-note{min-height:0}
@media(max-height:740px) and (max-width:600px){.field-route-options button{min-height:52px}}
@media(max-width:360px){.field-landmark{width:86px}}
@media(max-height:440px) and (min-width:480px){
 .field-exploration{padding:0 max(12px,env(safe-area-inset-right)) 0 max(12px,env(safe-area-inset-left));gap:6px 12px}

 .field-board{min-height:0}.field-landmark{width:86px;min-height:44px}.field-map-surface{inset:8px 18px 24px}
 .field-route-card{padding:10px}.field-destination h3{font-size:20px}#field-route-note{display:none}.field-route-options{margin-top:10px}.field-go,.field-stop{min-height:46px}.field-route-options button{min-height:56px}
}
@media(max-height:360px) and (min-width:480px){
.field-heading .eyebrow{display:block;font-size:7px;margin:0;letter-spacing:0}.field-heading{gap:6px}.field-exposure{min-width:0;font-size:7px}.field-exposure b{font-size:11px}.field-meter{display:none}
 .field-landmark{width:64px;min-height:44px;font-size:9px;padding:4px;gap:2px}.field-landmark small{font-size:7px}.field-map-surface{inset:6px 16px 23px}.field-player.at-landmark{margin-top:-20px}
}

/* Status belongs on the map; route costs belong on the route buttons. */
.field-map-surface{inset:14px 24px}.field-heading>.eyebrow{margin:0}.field-route-options{margin-bottom:14px}.notebook-pagination button{min-width:44px}
@media(max-width:600px){.field-map-surface{inset:10px 23px}}
@media(max-height:440px) and (min-width:480px){.field-map-surface{inset:8px 18px}}

.tower-hud button.needs-reload{animation:reload-pulse 1.4s ease-in-out infinite}
@keyframes reload-pulse{0%,100%{box-shadow:0 0 0 0 #d6af6900;border-color:#687052}50%{box-shadow:0 0 0 5px #d6af6933;border-color:#d6af69}}
@media(prefers-reduced-motion:reduce){.tower-hud button.needs-reload{animation:none;border-color:#d6af69;box-shadow:0 0 0 2px #d6af6933}}

.share-link{width:100%;min-width:0;padding:12px;border:1px solid #737a63;background:#eee9cf;color:#232b21;font:12px ui-monospace,monospace}.share-link:focus-visible{outline:2px solid #344330;outline-offset:2px}

/* Bring the empty-rifle action into the player’s view. */
.playing .tower-hud #hud-reload.needs-reload{position:fixed;left:50%;top:50%;right:auto;bottom:auto;transform:translate(-50%,-50%);min-width:140px;min-height:56px;font-size:16px;z-index:4}

.progress-entry{margin:16px 0}.progress-entry label{display:block;font-size:11px;margin-bottom:8px}.progress-entry textarea{display:block;box-sizing:border-box;width:100%;max-width:100%;min-height:82px;resize:vertical;padding:10px;border:1px solid #8e987a;background:#e6e2c855;color:#263023;font:16px monospace;overflow-wrap:anywhere}

/* Collection hints leave the original choice, contrast and interaction intact. */
button .seen-endings-note{display:block;font-size:11px;line-height:1.35;font-weight:normal;margin-top:5px;color:inherit;text-transform:none;letter-spacing:normal;white-space:normal}
button .seen-endings-compact{display:none}
#paper-dialog button .seen-endings-note{color:var(--faded-ink)}
#paper-dialog .decision-page .choice > .seen-endings-note{grid-column:1 / -1;max-width:none;text-align:left;margin-top:4px}
@media(max-width:359px){
  button .seen-endings-full{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
  button .seen-endings-compact{display:inline}
  #paper-dialog .decision-sheet .decision-page .choice .seen-endings-note{font-size:10px;line-height:1.2;margin-top:3px}
  #paper-dialog .decision-sheet.decision-tight .decision-page .choice{padding:6px 7px}
}
