.prologueOverlay{position:fixed;inset:0;z-index:100;background:#05070a;display:grid;place-items:center;padding:18px}
.prologueOverlay.hidden{display:none}
.prologueCard{width:min(680px,100%);border:1px solid #25303d;border-radius:20px;background:#0d1219;padding:22px}
.prologueTitle{font-size:clamp(30px,8vw,54px);font-weight:950;letter-spacing:-.06em;line-height:.95;margin:8px 0 18px}
.prologueText{min-height:210px;white-space:pre-wrap;font-size:15px;line-height:1.7}
.prologueProgress{height:3px;background:#151c25;margin:18px 0;border-radius:99px;overflow:hidden}
.prologueProgress i{display:block;height:100%;width:0;background:#e7ff4d;transition:width .35s ease}
.journeyPanel{margin-bottom:12px}
.journeyTop{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.journeyClock{font-size:clamp(28px,8vw,48px);font-weight:900;letter-spacing:-.06em;color:#e7ff4d;font-variant-numeric:tabular-nums}
.surfaceMap{height:360px;border:1px solid #25303d;border-radius:14px;background:#080c11;margin-top:10px;overflow:hidden}
.leaflet-container{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;background:#080c11}
.leaflet-control-attribution{display:none}
.leaflet-tile-pane{filter:brightness(.55) contrast(1.15) saturate(.25)}
@media(max-width:700px){.journeyTop{display:block}.journeyClock{margin-top:10px}.surfaceMap{height:300px}}
/* ---- v3.1 Field Reading ---- */
.prologueNudge{display:grid;gap:3px;width:100%;text-align:left;margin:0 0 10px;padding:12px 14px;border:1px dashed rgba(231,255,77,.45);border-radius:12px;background:rgba(231,255,77,.04);color:var(--text);cursor:pointer}
.prologueNudge span{font-size:11px;color:var(--acid)}
.prologueNudge strong{font-size:14px}
.prologueNudge small{font-size:11px;color:var(--muted)}
.prologueNudge.hidden{display:none}
.readingPanel{margin-bottom:12px}
.readingList{display:grid;gap:8px;margin-top:10px}
.readingRow{display:grid;gap:4px;text-align:left;width:100%;padding:12px 13px;border:1px solid var(--line);border-left:3px solid #c9d3c6;border-radius:10px;background:#090d12;color:var(--text);cursor:pointer}
.readingRow:hover:not(:disabled){border-color:#c9d3c6}
.readingTitle{font-family:"Iowan Old Style","Palatino Linotype",Palatino,"Book Antiqua",Georgia,serif;font-size:18px;letter-spacing:-.01em}
.readingMeta{font-size:11px;color:var(--muted);line-height:1.4}
.readingRow.read{border-left-color:var(--line)}
.readingRow.sealed{cursor:default;border-style:dashed;border-left-width:1px;background:transparent}
.readingRow.sealed .readingTitle{font-family:inherit;font-size:13px;color:var(--muted);letter-spacing:.14em;text-transform:uppercase}
:focus-visible{outline:2px solid var(--acid);outline-offset:2px}

body.reading{overflow:hidden}
.readerOverlay{position:fixed;inset:0;z-index:120;overflow-y:auto;-webkit-overflow-scrolling:touch;background:#c9d3c6;padding:0 0 calc(40px + env(safe-area-inset-bottom))}
.readerOverlay.hidden{display:none}
.readerBar{position:sticky;top:0;z-index:2;display:flex;justify-content:flex-end;padding:calc(10px + env(safe-area-inset-top)) 14px 10px;background:linear-gradient(#c9d3c6 70%,rgba(201,211,198,0))}
.readerClose{min-height:40px;padding:8px 16px;border:1px solid #18211d;border-radius:999px;background:transparent;color:#18211d;font-weight:800;cursor:pointer}
.readerPage{width:min(38em,calc(100% - 24px));margin:0 auto;padding:30px clamp(20px,6vw,56px) 36px;background:#e4e9e1;color:#18211d;border-radius:4px;
  box-shadow:0 1px 0 #b7c2b3,0 18px 40px -24px rgba(24,33,29,.55);
  background-image:radial-gradient(circle at 0 18px,#c9d3c6 7px,transparent 7.5px),radial-gradient(circle at 100% 18px,#c9d3c6 7px,transparent 7.5px);
  background-repeat:repeat-y;background-size:100% 36px}
.readerKicker{font-size:11px;line-height:1.5;color:#4b5a52;padding-bottom:14px;border-bottom:1px dashed #9aa79b}
.readerTitle{font-family:"Iowan Old Style","Palatino Linotype",Palatino,"Book Antiqua",Georgia,serif;font-weight:600;font-size:clamp(32px,9vw,48px);line-height:1.05;letter-spacing:-.02em;margin:22px 0 26px}
.readerBody{font-family:"Iowan Old Style","Palatino Linotype",Palatino,"Book Antiqua",Georgia,serif;font-size:18.5px;line-height:1.72;hyphens:auto;-webkit-hyphens:auto}
.readerBody p{margin:0 0 1.05em}
.readerBody em{font-style:italic}
.readerBody .readerBreak{text-align:center;color:#6d7b72;letter-spacing:.4em;margin:1.6em 0}
.readerDone{display:block;width:100%;min-height:52px;margin-top:30px;border:0;border-radius:10px;background:#18211d;color:#e4e9e1;font-weight:800;cursor:pointer}
@media (prefers-reduced-motion:no-preference){.readerOverlay:not(.hidden) .readerPage{animation:cfPaperIn .28s ease-out}}
@keyframes cfPaperIn{from{transform:translateY(14px);opacity:.4}to{transform:none;opacity:1}}

/* v3.1: keep the line breaks in room text, signs and boards */
.line{white-space:pre-line}
.line.doc{white-space:pre-wrap}

/* ---- v3.2 polish ---- */
/* Story screen fits the viewport; the dock sits above the nav */
.transcript{min-height:0;max-height:none;height:50vh}
@media(max-width:700px){.transcript{min-height:0;max-height:none}}
.storyDock{padding-top:2px}
.quickActions{flex-wrap:wrap;overflow:visible;padding:10px 0 2px}
.action{min-height:40px;padding:8px 11px}
.transcript{padding-right:max(2px,calc(100% - 76ch))}
/* Compact header on phones so the story gets the room */
@media(max-width:700px){
  .topbar .sub{display:none}
  h1{font-size:clamp(26px,8.4vw,40px)}
  .statusPills{margin-top:8px}
  .heroRule{margin:12px 0}
}
/* Nav always fits five tabs */
.nav{overflow:visible}
.nav button{flex:1 1 0;min-width:0;padding:0 2px;font-size:9.5px;letter-spacing:.02em;white-space:nowrap}
/* Archive cards read left-aligned */
.docCard{width:100%;text-align:left;color:var(--text);cursor:pointer}
.docCard .docBody{text-align:left}
/* KPI tiles: no orphans */
.kpiGrid.three{grid-template-columns:repeat(3,1fr)}
.kpiGrid.two{grid-template-columns:repeat(2,1fr)}
.kpiGrid.five{grid-template-columns:repeat(6,1fr)}
.kpiGrid.five .kpi:nth-child(-n+2){grid-column:span 3}
.kpiGrid.five .kpi:nth-child(n+3){grid-column:span 2}
@media(max-width:700px){
  .kpiGrid.three{grid-template-columns:repeat(3,1fr)}
  .kpiGrid.two{grid-template-columns:repeat(2,1fr)}
  .kpiGrid.five{grid-template-columns:repeat(6,1fr)}
  .kpiGrid.three .kpi strong,.kpiGrid.five .kpi:nth-child(n+3) strong{font-size:17px}
}
/* Empty route map */
.mapEmpty{margin-top:10px;padding:14px;border:1px dashed var(--line);border-radius:14px;color:var(--muted);font-size:12px;line-height:1.5}
.mapEmpty.hidden,.surfaceMap.hidden,.mapLegend.hidden{display:none}
.worldMap{margin-top:10px}
/* Destructive action lives on its own */
.dangerPanel{margin-top:28px;border-color:rgba(255,111,128,.25);background:transparent}
.dangerPanel h3{color:var(--red);font-size:14px}
.dangerPanel .btn{margin-top:8px}
