/* Story Log layout (0.9.0): the "Probe Console" skin, the Log arrangement of the Map tab and the jump card.
   Layered after deck.css and inert until <body> has the class "console" (Settings → Story Log layout).
   Tokens: ground #050a0d, panel #0a1216, text #d8e6e8, dim #8fb3b8, cyan #8fdbe3 and #bfe3e8 for chrome and
   labels. Amber #e8b45a is reserved for the current chapter, "now" markers and primary actions.
   Nothing here changes what is known: every value shown is produced by the same reveal gates as before.
   Selectors begin with body.console.map-first so they outrank deck.css; where deck.css uses !important
   this file does too. Text is never under 12px and targets are never under 44px. */

/* JetBrains Mono and Space Grotesk, both SIL OFL 1.1; the license texts sit beside the files. */
@font-face {font-family:'JetBrains Mono';font-style:normal;font-weight:100 800;font-display:swap;src:url('fonts/jetbrains-mono-latin-wght-normal.woff2') format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face {font-family:'JetBrains Mono';font-style:normal;font-weight:100 800;font-display:swap;src:url('fonts/jetbrains-mono-greek-wght-normal.woff2') format('woff2');unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}
@font-face {font-family:'Space Grotesk';font-style:normal;font-weight:300 700;font-display:swap;src:url('fonts/space-grotesk-latin-wght-normal.woff2') format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}

/* Everything this layer adds is invisible in the default layout. */
.scope-deco,.console-status,.audio-bars,#mission-log,#dock-sleep {display:none}
body.map-first .dense-map-controls .map-full-button {display:none}

@keyframes scope-sweep {to {transform:rotate(360deg)}}
@keyframes log-cursor {0%,49% {opacity:1} 50%,100% {opacity:0}}

/* ---------- Tokens ---------- */
body.console {
 --ground:#050a0d; --panel:#0a1216; --ink:#d8e6e8; --ink-strong:#f0f6f6; --ink-body:#c9d8da; --dim:#8fb3b8; --cyan:#8fdbe3; --cyan-soft:#bfe3e8;
 --amber:#e8b45a; --amber-soft:#f3c97e; --hair:rgba(143,219,227,.14); --rule:rgba(143,219,227,.3); --edge:rgba(143,219,227,.5);
 --mono:'JetBrains Mono',ui-monospace,Menlo,Consolas,monospace; --font:'Space Grotesk','Segoe UI',Arial,sans-serif;
 --scope-h:clamp(220px,36dvh,310px); --scope-d:calc(var(--scope-h) - 40px); --scope-cy:calc(24px + var(--scope-d) / 2);
 /* Existing components read these: sheets, buttons, focus rings and links follow the palette. */
 --bg:var(--ground); --text:var(--ink); --muted:var(--dim); --gold:var(--amber); --line:var(--hair);
 --sheet-bg:var(--panel); --sheet-line:rgba(143,219,227,.25); --sheet-copy:var(--ink-body); --sheet-label:var(--cyan-soft); --sheet-note:var(--dim);
 --field-bg:var(--ground); --field-line:rgba(143,219,227,.4); --button-line:rgba(143,219,227,.45); --brass:var(--amber); --brass-ink:var(--panel); --sheet-title-font:var(--font);
 background:var(--ground);
}
body.console.map-first {--deck-bg:var(--ground);--deck-blue:var(--cyan-soft)}
body.console.map-first #app {background:var(--ground)}

/* ---------- Top strip and tabs ---------- */
body.console.map-first .topbar {background:var(--ground)!important;border:0!important;box-shadow:none!important}
body.console.map-first #deck-book {font:500 12px/1.2 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink)}
body.console.map-first #deck-book svg {width:12px;min-width:12px;height:12px;stroke-width:1.8}
body.console.map-first .console-status {display:block;margin-right:6px;font:500 12px/1 var(--mono);letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;color:var(--amber)}
body.console.map-first .console-status:empty {display:none}
body.console.map-first .header-tools {gap:2px}
body.console.map-first .header-tools [data-action=search] {display:grid!important;place-items:center;color:var(--cyan-soft)}
body.console.map-first .header-tools [data-action=focus],body.console.map-first #audio-map-link {display:none!important}
body.console.map-first .topbar .icon-btn {border:0;background:none;border-radius:0}
body.console.map-first .icon-btn svg {stroke-linecap:square;stroke-width:1.6}
body.console.map-first .mobile-nav {background:var(--ground)!important;border-top:1px solid var(--hair);border-bottom:1px solid var(--hair);padding:0 12px;gap:0}
body.console.map-first .mobile-nav button {flex:1 1 auto;min-width:44px;display:grid;place-items:center;padding:0 4px;border:0;border-radius:0;background:none;font:500 12px/1 var(--mono)!important;letter-spacing:.04em!important;text-transform:uppercase;color:var(--dim)}
body.console.map-first .mobile-nav button+button {border-left:1px solid var(--hair)}
body.console.map-first .mobile-nav button.active,body.console.map-first .mobile-nav button[aria-current=page] {color:var(--amber);box-shadow:inset 0 -2px 0 var(--amber)}
body.console.map-first #main {background:var(--ground)}
body.console.map-first :is(.mobile-nav button,#deck-book,.header-tools button):focus-visible {outline:2px solid var(--amber);outline-offset:-3px}

/* ---------- Map tab: scope above, mission log below ---------- */
body.console.map-first #journey-stage {grid-template-rows:var(--scope-h) minmax(0,1fr)!important;background:var(--ground)}
body.console.map-first #journey-stage>.journey-left {display:none!important}
body.console.map-first #journey-stage>#journey-map {grid-row:1!important;grid-column:1!important;height:var(--scope-h)!important;min-height:0!important;background:var(--ground);overflow:hidden}
body.console.map-first #journey-stage>#mission-log {grid-row:2;grid-column:1;display:flex;flex-direction:column;min-width:0;min-height:0;border-top:1px solid var(--rule);background:var(--ground)}
body.console.map-first .mobile-checkpoint {display:none!important}

/* The existing map viewport, framed as a circular scope centred on the current chapter's location. The map keeps
   the full width so 12px labels have room beside their 44px markers; the circle is the rim, rings and dimmed
   background drawn beneath it, as in the design. Markers and labels are never cut at the rim. */
body.console.map-first #space {background-color:var(--ground)!important;background-image:radial-gradient(circle at 1px 1px,rgba(143,219,227,.16) .7px,transparent 1.2px)!important;background-size:22px 22px!important}
body.console.map-first #space::before,body.console.map-first #space::after {display:none!important}
body.console.map-first #starfield {opacity:.55}
body.console.map-first #journey-map #space[data-map-layout] .world {left:8px!important;right:8px!important;top:24px!important;bottom:16px!important;width:auto!important;height:auto!important;overflow:hidden}
body.console.map-first[data-view=journey] .scope-deco {display:block;position:absolute;inset:0;z-index:1;pointer-events:none;overflow:hidden}
.scope-rings,.scope-edge {position:absolute;left:50%;top:var(--scope-cy);width:var(--scope-d);height:var(--scope-d);transform:translate(-50%,-50%)}
.scope-edge {border:1px solid rgba(143,219,227,.55);border-radius:50%}
.scope-sweep {position:absolute;left:50%;top:var(--scope-cy);width:var(--scope-d);height:var(--scope-d);margin:calc(var(--scope-d) / -2) 0 0 calc(var(--scope-d) / -2);border-radius:50%;background:conic-gradient(from 0deg,rgba(143,219,227,0) 0deg,rgba(143,219,227,0) 300deg,rgba(143,219,227,.16) 360deg);animation:scope-sweep 14s linear infinite}
.scope-mask {position:absolute;inset:0;background:radial-gradient(circle calc(var(--scope-d) / 2) at 50% var(--scope-cy),transparent calc(var(--scope-d) / 2 - 1px),rgba(5,10,13,.78) calc(var(--scope-d) / 2))}
.scope-corner {position:absolute;width:16px;height:16px;border:0 solid rgba(143,219,227,.5)}
.scope-corner.tl {left:12px;top:8px;border-width:1px 0 0 1px}.scope-corner.tr {right:12px;top:8px;border-width:1px 1px 0 0}
.scope-corner.bl {left:12px;bottom:8px;border-width:0 0 1px 1px}.scope-corner.br {right:12px;bottom:8px;border-width:0 1px 1px 0}
body.console.no-motion .scope-sweep,body.console.map-first .scope-sweep:where(.paused) {animation:none}
@media (prefers-reduced-motion:reduce) {.scope-sweep,.log-cursor {animation:none!important}}

/* Scope controls sit at the corners: Find and Fit above, Full map and the zoom group below. */
body.console.map-first[data-view=journey] .dense-map-controls {inset:0!important;display:block!important;width:auto!important;height:auto!important;pointer-events:none;z-index:8}
body.console.map-first[data-view=journey] .dense-map-zoom {display:contents!important}
body.console.map-first[data-view=journey] .dense-map-controls button {position:absolute;display:inline-flex!important;pointer-events:auto;min-width:44px!important;min-height:44px!important;height:44px!important;padding:0 10px!important;border:0!important;border-radius:0!important;background:none!important;color:var(--cyan-soft)!important;font:500 12px/1 var(--mono)!important;letter-spacing:.1em!important;text-transform:uppercase}
body.console.map-first[data-view=journey] .dense-map-controls button svg {width:16px;height:16px;stroke-linecap:square}
body.console.map-first[data-view=journey] .dense-map-controls .map-places-button {right:8px;top:8px;width:84px;justify-content:center;gap:6px}
body.console.map-first[data-view=journey] .dense-map-controls [data-action=reset-map] {right:96px;top:8px}
body.console.map-first[data-view=journey] .dense-map-controls .map-full-button {display:inline-flex!important;left:8px;bottom:8px;gap:6px}
body.console.map-first[data-view=journey] .dense-map-controls [data-action=zoom-out] {right:104px;bottom:8px;width:44px!important;padding:0!important}
body.console.map-first[data-view=journey] .dense-map-controls [data-action=zoom-in] {right:56px;bottom:8px;width:44px!important;padding:0!important}
body.console.map-first[data-view=journey] .dense-map-controls [data-action=map-current] {right:8px;bottom:8px;width:44px!important;padding:0!important;color:var(--amber)!important}
body.console.map-first .dense-map-controls button:disabled {opacity:.4}
body.console.map-first .dense-map-controls button:focus-visible {outline:2px solid var(--amber);outline-offset:-3px}
body.console.map-first[data-view=journey] #space #deck-schematic {display:none!important}
body.console.map-first #space #deck-schematic {font:500 12px/1 var(--mono)!important;letter-spacing:.1em;text-transform:uppercase;color:var(--dim)!important;z-index:8}

/* Markers are diamonds: filled for a known kind of place, hollow when the kind is not yet known.
   The current chapter's location is an amber reticle. */
body.console.map-first #space[data-map-layout] .star-core {width:7px!important;height:7px!important;left:18.5px!important;top:18.5px!important;border-radius:0!important;transform:rotate(45deg)!important;background:var(--hue,var(--cyan))!important;border:0!important;box-shadow:none!important}
body.console.map-first #space[data-map-layout] .kind-unknown .star-core {background:transparent!important;border:1.2px solid var(--hue,var(--cyan))!important}
body.console.map-first #space[data-map-layout] .selected .star-core {width:5px!important;height:5px!important;left:19.5px!important;top:19.5px!important;border-radius:50%!important;transform:none!important;background:var(--amber)!important;border:0!important;box-shadow:none!important}
body.console.map-first #space[data-map-layout] .selected .star-core::before {content:''!important;display:block!important;position:absolute;left:50%;top:50%;width:20px;height:20px;margin:-10px 0 0 -10px;border:1.2px solid var(--amber);border-radius:50%;box-sizing:border-box;inset:auto}
body.console.map-first #space[data-map-layout] .selected .star-core::after {content:''!important;display:block!important;position:absolute;left:50%;top:50%;width:38px;height:38px;margin:-19px 0 0 -19px;background:linear-gradient(var(--amber),var(--amber)) 50% 0/1.2px 6px no-repeat,linear-gradient(var(--amber),var(--amber)) 50% 100%/1.2px 6px no-repeat,linear-gradient(var(--amber),var(--amber)) 0 50%/6px 1.2px no-repeat,linear-gradient(var(--amber),var(--amber)) 100% 50%/6px 1.2px no-repeat}
body.console.map-first #space[data-map-layout] .star-label,body.console.map-first .map-label-measure {background:#050a0dcc!important;border:0!important;border-bottom:1px solid var(--hue,var(--edge))!important;border-radius:0!important;font:500 12px/16px var(--mono)!important;letter-spacing:.04em;text-transform:uppercase;color:var(--cyan-soft)!important;padding:3px 6px!important;min-height:24px!important;line-height:16px!important}
body.console.map-first #space[data-map-layout] .selected .star-label {color:var(--amber-soft)!important;border-bottom-color:var(--amber)!important;font-weight:600!important}
body.console.map-first #space[data-map-layout] .map-label-leader {stroke:var(--edge);opacity:.45}
body.console.map-first #space[data-map-layout] .selected .map-label-leader {stroke:var(--amber)}
body.console.map-first #space[data-map-layout] .map-group-outline {stroke:var(--edge);fill:#0a121699}
body.console.map-first #space[data-map-layout] .map-member-dot {fill:var(--hue,var(--cyan));stroke:none}
body.console.map-first #space[data-map-layout] .map-member-dot[data-kind=unknown] {fill:var(--ground);stroke:var(--hue,var(--cyan));stroke-width:1}

/* ---------- Scope mode: Schematic · Range ---------- */
.scope-mode.seg {display:none}
body.console.map-first[data-view=journey] .scope-mode {display:flex;position:absolute;left:8px;top:8px;z-index:8;background:rgba(5,10,13,.82)}
/* Range has no camera: Fit, zoom and recenter go away, the world layer is replaced by the true-range scope. */
body.console.map-first[data-view=journey][data-scope=range] .dense-map-controls :is([data-action=reset-map],[data-action=zoom-out],[data-action=zoom-in],[data-action=map-current]) {display:none!important}
body.console.map-first[data-view=journey][data-scope=range] :is(#space #world,#space .space-vignette,#nonspatial-label,.scope-rings) {display:none!important}
.range-scope {display:none}
body.console.map-first[data-view=journey][data-scope=range] .range-scope {display:block;position:absolute;inset:0;z-index:4;pointer-events:none}
.range-svg {position:absolute;left:0;top:0;display:block;width:100%;height:100%;pointer-events:none}
.range-ring {fill:none;stroke:var(--cyan);stroke-opacity:.34;stroke-width:.9;stroke-dasharray:3 4}
.range-axes {fill:none;stroke:var(--cyan);stroke-opacity:.5;stroke-width:.8;stroke-dasharray:2 6}
.range-leader {fill:none;stroke:var(--hue,var(--edge));stroke-opacity:.7;stroke-width:1}
.range-ring-label {position:absolute;box-sizing:border-box;height:16px;padding:0 3px;background:rgba(5,10,13,.86);font:500 12px/16px var(--mono);letter-spacing:.04em;text-transform:uppercase;color:var(--dim);white-space:nowrap}
.range-star,.range-here {position:absolute;z-index:2;display:grid;place-items:center;width:44px;height:44px;margin:-22px 0 0 -22px;padding:0;border:0;background:none;color:inherit;pointer-events:auto;cursor:pointer;-webkit-tap-highlight-color:transparent}
.range-here {z-index:3}
.range-star:focus-visible,.range-here:focus-visible {outline:2px solid var(--amber);outline-offset:-6px}
.range-dot {display:block;box-sizing:border-box;width:8px;height:8px;background:var(--hue,var(--cyan));transform:rotate(45deg)}
.range-dot.hollow {width:9px;height:9px;background:transparent;border:1.4px solid var(--hue,var(--cyan))}
.range-here svg {width:40px;height:40px;fill:none;stroke:var(--amber);stroke-width:1.2}
.range-here .core {fill:var(--amber);stroke:none}
.range-label {position:absolute;z-index:1;box-sizing:border-box;height:22px;padding:2px 6px;background:rgba(5,10,13,.86);border-bottom:1px solid var(--hue,var(--edge));font:500 12px/16px var(--mono);letter-spacing:.04em;color:var(--cyan-soft);white-space:nowrap;pointer-events:none}
.range-label b {font-weight:600;color:var(--ink-strong)}
.range-label.here {color:var(--amber-soft);border-bottom-color:var(--amber)}
.range-note {position:absolute;right:12px;bottom:10px;width:148px;margin:0;display:flex;flex-direction:column;align-items:flex-end;font:500 12px/14px var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--dim);pointer-events:none}
.range-msg {position:absolute;margin:0;transform:translateX(-50%);text-align:center;font:400 13px/1.35 var(--font);color:var(--cyan-soft);background:rgba(5,10,13,.86);padding:4px 6px;pointer-events:none}
.range-explain {margin:0 0 4px;font:400 13px/1.4 var(--font);color:var(--cyan-soft)}
.range-foot {margin:14px 0 0;font:400 12px/1.4 var(--mono);letter-spacing:.04em;text-transform:uppercase;color:var(--dim)}
.range-row {align-items:start}
.range-row .log-main {gap:3px}
.range-row .log-sub-dim {color:var(--dim)}
.range-row .log-when span:first-child {font:700 16px/1.1 var(--mono);letter-spacing:.02em;color:var(--amber)}
.range-row .log-when span+span {font-size:12px;color:var(--dim)}

/* ---------- Mission log ---------- */
.log-head {display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:52px;padding:0 8px 0 16px;background:var(--panel);font:500 12px/1 var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--dim)}
.log-head-note {color:var(--dim);letter-spacing:.12em;padding-right:8px}
.log-head-action,.log-link,.log-more,.log-place {display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:0 10px;border:0;background:none;font:500 12px/1.2 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--amber-soft);cursor:pointer}
.log-head-action svg,.log-link svg,.log-more svg {width:14px;height:14px;flex:none;stroke-linecap:square}
.log-head-action {border:1px solid rgba(232,180,90,.6);min-height:44px;padding:0 12px}
.log-scroll {flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:10px 16px calc(16px + var(--safe-bottom,0px));-webkit-overflow-scrolling:touch;outline-offset:-2px}
.log-scroll:focus-visible {outline:2px solid var(--amber)}
.log-entry {display:flex;flex-direction:column;gap:6px;padding:0 0 12px 12px;border-left:2px solid var(--amber)}
.log-kicker {display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;margin:0;font:500 12px/1.3 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--cyan-soft)}
.log-mode {color:var(--amber)}
.log-heading {display:flex;flex-wrap:wrap;align-items:center;column-gap:8px;margin:0;font:700 20px/1.1 var(--font);letter-spacing:0;color:var(--ink-strong)}
.log-pov {min-width:0;overflow-wrap:anywhere}
.log-place {padding:0 4px;font-weight:400;color:var(--cyan-soft);text-align:left}
.log-date {font:400 12px/1.2 var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--cyan-soft)}
.log-body {margin:0;font:400 14px/1.45 var(--font);color:var(--ink-body)}
.log-body p {margin:0 0 8px}
.log-body :is(.context-presence,.chapter-context-text) {margin:0 0 8px;font:400 14px/1.45 var(--font);color:var(--ink-body)}
.log-body .context-presence {padding-left:10px;border-left:1px solid var(--amber)}
.log-empty .log-body {color:var(--dim)}
.log-entry-actions {display:flex;flex-wrap:wrap;align-items:center;gap:0 6px}
.log-entry-actions .context-sources {margin:0}
.log-entry-actions .context-sources>summary {display:inline-flex;align-items:center;min-height:44px;padding:0 10px 0 0;list-style:none;cursor:pointer;font:500 12px/1.2 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--dim)}
.log-entry-actions .context-sources>summary::-webkit-details-marker {display:none}
.log-entry-actions .context-sources>summary::after {content:'';width:5px;height:5px;margin-left:8px;border-right:1px solid currentColor;border-bottom:1px solid currentColor;transform:rotate(45deg)}
.log-entry-actions .context-sources[open]>summary::after {transform:rotate(225deg)}
.log-entry-actions .context-sources>div {flex-basis:100%;display:grid;gap:2px;padding:0 0 4px}
.log-entry-actions .source-link {display:flex;align-items:center;gap:8px;min-height:44px;padding:0 8px;border:1px solid var(--hair);background:none;font:400 13px/1.3 var(--font);color:var(--cyan-soft);text-align:left}
.log-entry-actions .source-link svg {width:14px;height:14px;flex:none}
.log-subhead {margin:14px 0 2px;font:500 12px/1.2 var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--dim)}
.log-list {list-style:none;margin:0;padding:0}
.log-row {display:grid;grid-template-columns:30px minmax(0,1fr) auto;align-items:center;gap:10px;width:100%;min-height:48px;padding:6px 0;border:0;border-top:1px solid var(--hair);background:none;text-align:left;cursor:pointer;color:inherit;font:inherit}
.log-lead {display:grid;place-items:center;width:30px;height:30px;border:1px solid var(--edge);font:500 12px/1 var(--mono);color:var(--cyan-soft)}
.log-main {display:flex;flex-direction:column;gap:2px;min-width:0}
.log-main strong {font:600 14px/1.2 var(--font);color:var(--ink-strong);overflow-wrap:anywhere}
.log-sub {font:400 12px/1.25 var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--cyan-soft);overflow-wrap:anywhere}
.log-when {display:flex;flex-direction:column;align-items:flex-end;gap:2px;font:400 12px/1.2 var(--mono);letter-spacing:.04em;text-transform:uppercase;color:var(--dim);text-align:right;white-space:nowrap}
.log-row:focus-visible,.log-head-action:focus-visible,.log-link:focus-visible,.log-place:focus-visible,.log-more:focus-visible,.log-connect:focus-visible,summary:focus-visible {outline:2px solid var(--amber);outline-offset:-2px}
.log-more {width:100%;justify-content:flex-start;padding-left:0;color:var(--dim)}
.log-connect {display:flex;align-items:center;gap:8px;width:100%;min-height:44px;padding:0 16px;border:0;border-bottom:1px solid var(--hair);background:#0a121699;font:500 12px/1.2 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--amber-soft);text-align:left}
.log-connect svg {width:14px;height:14px;flex:none;margin-left:auto}

/* ---------- Jump card ---------- */
.log-jump {position:relative;margin:0 0 4px;padding:10px 12px;border:1px solid rgba(232,180,90,.55);border-left-width:1px;background:rgba(10,18,22,.9)}
.log-jump::before,.log-jump::after {content:'';position:absolute;top:-1px;width:12px;height:12px;pointer-events:none}
.log-jump::before {left:-1px;border-top:1.5px solid var(--amber);border-left:1.5px solid var(--amber)}
.log-jump::after {right:-1px;border-top:1.5px solid var(--amber);border-right:1.5px solid var(--amber)}
.jump-head {display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:6px 8px}
.jump-title {font:500 12px/1.3 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--amber)}
.jump-chip {display:inline-flex;align-items:center;min-height:24px;padding:0 7px;border:1px solid rgba(232,180,90,.55);font:500 12px/1 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--amber);white-space:nowrap}
.log-kicker .jump-chip {min-height:22px}
.jump-rows {display:grid;gap:8px;margin:2px 0 0}
.jump-row {display:grid;gap:2px;min-width:0}
.jump-rows dt {margin:0;font:500 12px/1.3 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--dim)}
.jump-rows dd {margin:0;font:400 12px/1.5 var(--mono);letter-spacing:.04em;text-transform:uppercase;color:var(--ink-strong);overflow-wrap:anywhere}
.jump-delta {color:var(--amber)}
.jump-left dd {font:400 13.5px/1.45 var(--font);letter-spacing:.01em;text-transform:none;color:var(--cyan-soft)}
.log-cursor {display:inline-block;width:7px;height:13px;margin-left:4px;vertical-align:-2px;background:var(--amber);animation:log-cursor 1s steps(1) infinite}
body.console.no-motion .log-cursor {animation:none}

/* ---------- Dock: three rows, reskinned ---------- */
body.console.map-first .player {background:var(--panel)!important;border-top:1px solid rgba(143,219,227,.35)!important}
@media (max-width:760px) {
 body.console.map-first .player {grid-template-rows:44px 100px!important}
 body.console.map-first .player .playback {grid-template-rows:44px 56px!important}
}
body.console.map-first .chapter-navigation button {color:var(--cyan-soft);border-radius:0}
body.console.map-first .chapter-skip svg {width:20px;height:20px;stroke-linecap:square;stroke-linejoin:miter}
body.console.map-first #current-audio-chapter {font:600 14px/1.2 var(--mono)!important;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-strong)}
body.console.map-first .chapters-open {font:500 12px/1.2 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--dim)}
body.console.map-first #dock-sleep:not([hidden]) {display:inline;font:500 12px/1.2 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--amber);white-space:nowrap}
body.console.map-first .chapter-button-title {justify-content:flex-start;gap:10px}
body.console.map-first .chapter-button-title .chapters-open {margin-left:auto}
body.console.map-first .player #audio-elapsed,body.console.map-first .player #audio-duration,body.console.map-first .audio-clock {font:400 12px/1.3 var(--mono)!important;color:var(--dim)!important}
body.console.map-first .audio-bars {display:block;position:absolute;left:0;right:0;top:22px;height:18px;pointer-events:none;background:rgba(143,219,227,.35);-webkit-mask:url('assets/dock-bars.svg') 0 0/100% 100% no-repeat;mask:url('assets/dock-bars.svg') 0 0/100% 100% no-repeat}
body.console.map-first .audio-bars::after {content:'';position:absolute;inset:0;background:var(--amber);clip-path:inset(0 calc(100% - var(--played,0%)) 0 0)}
body.console.map-first #audio-range {z-index:1}
body.console.map-first #audio-range::-webkit-slider-runnable-track {height:44px;background:transparent;transform:none}
body.console.map-first #audio-range::-moz-range-track {height:44px;background:transparent;transform:none}
body.console.map-first #audio-range::-moz-range-progress {background:transparent;transform:none}
body.console.map-first #audio-range::-webkit-slider-thumb {width:3px;height:22px;margin-top:20px;border-radius:0;background:var(--amber-soft);box-shadow:none}
body.console.map-first #audio-range::-moz-range-thumb {width:3px;height:22px;border-radius:0;background:var(--amber-soft)}
body.console.map-first #audio-range:focus-visible {outline:2px solid var(--amber);outline-offset:0}
body.console.map-first .player .playback-buttons {height:56px!important;justify-content:space-between!important;gap:0!important;padding:0 6px!important}
body.console.map-first .subtle-btn {font:500 12px/1 var(--mono);color:var(--cyan-soft);border-radius:0}
body.console.map-first #sleep-button.active {color:var(--amber)}
body.console.map-first .skip-btn {color:var(--ink);border-radius:0}
body.console.map-first .skip-btn small {font-family:var(--mono)!important;font-size:12px!important}
body.console.map-first .skip-btn>span svg {stroke-linecap:square}
body.console.map-first .player .play-button {width:56px!important;height:56px!important;min-height:56px!important;border-radius:0!important;background:var(--amber)!important;color:var(--panel)!important;clip-path:polygon(8px 0,calc(100% - 8px) 0,100% 8px,100% calc(100% - 8px),calc(100% - 8px) 100%,8px 100%,0 calc(100% - 8px),0 8px)}
body.console.map-first .player .play-button svg {width:22px;height:22px}
body.console.map-first .player .play-button:focus-visible {outline:2px solid var(--ink-strong);outline-offset:-6px}
body.console.map-first .player.audio-unavailable {grid-template-rows:44px!important}
body.console.map-first .player.audio-unavailable #player-chapter {background:var(--ground)!important;border:1px solid var(--hair)!important;text-align:left}
body.console.map-first .player.audio-error #player-chapter {background:#1a0f0a!important;border:1px solid #6a4a3a!important}

/* ---------- Full map, history deck and Bobs: the same square 1px language ---------- */
body.console.map-first[data-view=atlas] #map-context {background:var(--ground);border-bottom:1px solid var(--hair)!important;padding:10px 16px!important}
body.console.map-first #map-position-mode {font:500 12px/1.3 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--dim)}
body.console.map-first #map-position-title {font:700 22px/1.15 var(--font);color:var(--ink-strong)}
body.console.map-first #map-position-date {font:500 12px/1.3 var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--amber)}
body.console.map-first:is([data-view=atlas],[data-view=chronicle]) .dense-map-controls button {border:1px solid rgba(143,219,227,.4)!important;border-radius:0!important;background:rgba(5,10,13,.75)!important;color:var(--ink)!important;font:500 12px/1 var(--mono)!important;letter-spacing:.1em!important;text-transform:uppercase}
body.console.map-first:is([data-view=atlas],[data-view=chronicle]) .dense-map-controls [data-action=map-current] {color:var(--amber)!important;border-color:rgba(232,180,90,.7)!important}
body.console.map-first .history-tools button,body.console.map-first .history-order {border-radius:0;border-color:rgba(143,219,227,.35);background:none}
body.console.map-first .history-order {padding:0}
body.console.map-first .history-order button {border-radius:0;font:500 12px/1 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--cyan-soft)}
body.console.map-first .history-order button.active {background:var(--cyan);color:var(--panel)}
body.console.map-first .history-heading small {font:500 12px/1.3 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--dim)}
body.console.map-first .history-heading strong {font:700 18px/1.2 var(--font);color:var(--ink-strong)}
body.console.map-first .history-heading span {font:500 12px/1.3 var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--amber)}
body.console.map-first #history-deck label,body.console.map-first .history-footer {font:500 12px/1.3 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--dim)}
body.console.map-first .history-footer button {color:var(--amber);font:500 12px/1.3 var(--mono);letter-spacing:.08em;text-transform:uppercase}
body.console.map-first #history-range::-webkit-slider-runnable-track {background:rgba(143,219,227,.3)}
body.console.map-first #history-range::-webkit-slider-thumb {width:6px;height:20px;margin-top:-8.5px;border-radius:0;background:var(--amber)}
body.console.map-first #history-range::-moz-range-track {background:rgba(143,219,227,.3)}
body.console.map-first #history-range::-moz-range-thumb {width:6px;height:20px;border-radius:0;background:var(--amber)}
body.console.map-first[data-view=voices] .voice-card {border:1px solid var(--hair)!important;border-radius:0!important;background:var(--panel)!important}
body.console.map-first[data-view=voices] .voice-card:active {background:#10222a!important}
body.console.map-first .avatar,body.console.map-first .voice-card .avatar {border-radius:0!important;border:1px solid var(--edge);background:none!important;color:var(--cyan-soft);font:500 12px/1 var(--mono)}
body.console.map-first[data-view=voices] .map-heading h1 {font:700 22px/1.3 var(--font)!important}
body.console.map-first #bob-search {border-radius:0}

/* ---------- A star means one colour everywhere ---------- */
.hue {display:inline-block;width:7px;height:7px;margin-right:6px;background:var(--hue,var(--cyan));transform:rotate(45deg);vertical-align:1px}
.jump-here dt {color:var(--hue)}

/* ---------- Timeline: Lanes ---------- */
body.console.map-first[data-view=chronicle] #alternate-view {display:flex!important;flex-direction:column;background:var(--ground)!important}
body.console.map-first[data-view=chronicle] #history-deck {height:auto!important;flex:1 1 auto;min-height:0}
.seg {display:flex;border:1px solid rgba(143,219,227,.35)}
.seg button {display:grid;place-items:center;min-width:44px;min-height:44px;padding:0 12px;border:0;border-radius:0;background:none;font:500 12px/1 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--cyan-soft);cursor:pointer}
.seg button[aria-pressed=true] {background:var(--cyan);color:var(--panel)}
.seg button:focus-visible {outline:2px solid var(--amber);outline-offset:-3px}
#timeline-surface {flex:none;width:min(calc(100% - 24px),536px);margin:4px auto 0;border:0;border-bottom:1px solid var(--hair)}
#timeline-surface button {flex:1;color:var(--dim)}
#timeline-surface button[aria-pressed=true] {background:none;color:var(--amber);box-shadow:inset 0 -2px 0 var(--amber)}
.lanes-deck {flex:1 1 auto;min-height:0;display:flex;flex-direction:column;width:min(100%,560px);margin:0 auto}
.lanes-bar {flex:none;display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:48px;padding:0 4px 0 12px}
.lanes-range {font:500 12px/1 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--dim)}
.lanes-now-button {display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:0 10px;border:0;background:none;font:500 12px/1 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--amber);cursor:pointer}
.lanes-now-button svg {width:14px;height:14px;stroke-linecap:square}
.lanes-heads {flex:none;position:relative;height:36px;border-bottom:1px solid rgba(143,219,227,.25)}
.lanes-head {position:absolute;top:0;height:36px;padding:3px 3px 0 4px;box-sizing:border-box;overflow:hidden;font:700 12px/14px var(--mono);letter-spacing:.02em;text-transform:uppercase;color:var(--cyan-soft);overflow-wrap:anywhere}
.lanes-head.is-place {text-transform:none;letter-spacing:0}   /* Bayer letters are lowercase: "δ Eri", never "Δ ERI" */
.lanes-head.is-current {color:var(--amber)}
.lanes-head.is-others {color:var(--dim)}
.lanes-scroll {flex:1 1 auto;min-height:0;position:relative;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.lanes-scroll::-webkit-scrollbar {display:none}
.lanes-scroll:focus-visible {outline:2px solid var(--amber);outline-offset:-2px}
.lanes-canvas {position:relative;width:100%;overflow:hidden}
.lanes-band {position:absolute;left:34px;right:0;background:rgba(143,219,227,.035);pointer-events:none}
.lanes-line {position:absolute;left:0;right:0;height:0;border-top:1px dashed rgba(143,219,227,.2);pointer-events:none}
.lanes-line b {position:absolute;left:4px;top:2px;font:400 12px/14px var(--mono);color:var(--dim)}
.lanes-col {position:absolute;top:0;bottom:0;width:0;border-left:1px solid rgba(143,219,227,.12);pointer-events:none}
.lane-hit {position:absolute;z-index:3;display:block;padding:0;border:0;background:none;color:inherit;font:inherit;text-align:left;cursor:pointer;-webkit-tap-highlight-color:transparent}
.lane-hit:focus-visible {outline:2px solid var(--amber);outline-offset:-2px}
.lane-block,.lane-chip {position:absolute;left:0;display:block;box-sizing:border-box;overflow:hidden}
.lane-block {border:1px solid var(--line);background:var(--fill)}
.lane-block::before {content:'';position:absolute;left:0;right:0;top:0;height:3px;background:var(--hue)}
.lane-block:not([data-count="1"])::after {content:'';position:absolute;left:0;right:0;bottom:0;height:3px;background:var(--hue)}
.lane-block .rung {position:absolute;left:0;right:0;height:2px;background:var(--hue);opacity:.9}   /* one 2px rung per chapter */
.lane-block .rung.edge {opacity:1}
.lane-text {position:absolute;left:0;right:0;top:0;display:flex;flex-direction:column;padding:5px 2px 0 4px}
.lane-main {font:700 12px/14px var(--mono);color:var(--hue);white-space:nowrap;overflow:hidden}
.lane-sub {font:400 12px/14px var(--mono);color:var(--dim);white-space:nowrap;overflow:hidden}
.lane-block.now {outline:1.5px solid var(--amber);outline-offset:0}
.lane-hit[aria-pressed=true] .lane-block,.lane-hit[aria-pressed=true] .lane-chip {box-shadow:0 0 0 2px var(--amber)}
.lane-chip {border:1px dashed var(--hue);background:rgba(5,10,13,.85);padding:1px 2px 0 3px}
.lane-chip.now {outline:1.5px solid var(--amber)}
.lane-link {position:absolute;z-index:1;width:0;border-left:1px dotted var(--hue);pointer-events:none}
.lane-link-label {position:absolute;z-index:2;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;padding:0 2px;background:var(--ground);font:500 12px/14px var(--mono);white-space:nowrap;pointer-events:none}
.lane-tie {position:absolute;z-index:2;height:0;border-top:1.2px solid var(--amber);pointer-events:none}
.lane-tie b {position:absolute;left:50%;top:-5px;width:8px;height:8px;background:var(--amber);transform:translateX(-50%) rotate(45deg)}
.lanes-now {position:absolute;z-index:2;left:0;right:0;height:0;border-top:1px dashed rgba(232,180,90,.85);pointer-events:none}
.lanes-now b {position:absolute;left:4px;top:-16px;font:700 12px/14px var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--amber)}
.lanes-undated {position:absolute;left:40px;right:12px;margin:0;font:400 12px/16px var(--mono);color:var(--dim)}
.lanes-card {flex:none;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:center;min-height:88px;padding:8px 8px 8px 16px;border-top:1px solid var(--rule);background:var(--panel)}
.lanes-card-text {display:flex;flex-direction:column;gap:4px;min-width:0}
.lanes-card-title {font:700 16px/1.15 var(--font);color:var(--ink-strong);overflow-wrap:anywhere}
.lanes-card-title span {font-weight:400;color:var(--cyan-soft)}
.lanes-card-meta {font:500 12px/1.3 var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--cyan-soft)}
.lanes-now-tag {font-weight:500;color:var(--amber)}
.lanes-card-sentence {font:400 13px/1.35 var(--font);color:var(--ink-body)}
.lanes-card-actions {display:flex;flex-direction:column;gap:2px}
.lanes-card-action {display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:0 10px;border:1px solid rgba(232,180,90,.6);background:none;font:500 12px/1 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--amber-soft);cursor:pointer}
.lanes-card-action svg {width:12px;height:12px;stroke-linecap:square}
.lanes-card-action:focus-visible {outline:2px solid var(--amber);outline-offset:2px}
.lanes-empty {margin:0;font:400 13px/1.35 var(--font);color:var(--dim)}

/* ---------- Narrow phones: tighter tracking so the book title and chapter label keep their room ---------- */
@media (max-width:360px) {
 .seg button {padding:0 8px;letter-spacing:.06em}
 .lanes-range {display:none}
 body.console.map-first #deck-book,body.console.map-first .console-status {letter-spacing:.03em}
 body.console.map-first #current-audio-chapter,body.console.map-first .chapters-open {letter-spacing:.03em}
 body.console.map-first .chapter-button-title {gap:6px}
}

/* ---------- Wider screens and short landscape ---------- */
@media (min-width:761px) {
 body.console.map-first #journey-stage {width:min(100%,560px)!important;max-width:560px!important;left:50%!important;right:auto!important;transform:translateX(-50%);border-left:1px solid var(--hair);border-right:1px solid var(--hair)}
 body.console.map-first .player {grid-template-rows:60px!important}
 body.console.map-first .player .playback {grid-template-rows:56px!important}
}
@media (max-height:540px) and (orientation:landscape) and (max-width:700px) {
 body.console.map-first[data-view=journey] .scope-mode button {padding:0 8px;letter-spacing:.06em}
 body.console.map-first[data-view=journey] .dense-map-controls .map-places-button {width:44px;padding:0!important}
 body.console.map-first[data-view=journey] .dense-map-controls .map-places-button span {display:none}
 body.console.map-first[data-view=journey] .dense-map-controls [data-action=reset-map] {right:56px}
}
@media (max-height:540px) and (orientation:landscape) {
 body.console {--scope-h:calc(100dvh - 44px - 52px - var(--safe-top,0px) - var(--safe-bottom,0px))}
 body.console.map-first #journey-stage {grid-template-columns:minmax(0,48%) minmax(0,1fr)!important;grid-template-rows:minmax(0,1fr)!important;width:100%!important;max-width:none!important;left:0!important;right:0!important;transform:none;border:0}
 body.console.map-first #journey-stage>#journey-map {grid-column:1!important;grid-row:1!important;height:100%!important}
 body.console.map-first #journey-stage>#mission-log {grid-column:2;grid-row:1;border-top:0;border-left:1px solid var(--rule)}
 body.console.map-first .player {grid-template-rows:52px!important}
}
