:root {
  color-scheme: dark;
  --background:#050706; --panel:#0d1510; --line:#34483b; --text:#edf5ef;
  --muted:#9fb1a4; --ordinary:#dce8df; --special:#ffca57; --lair:#ff667d;
  --npc:#8ce7c0; --venue:#73cfff; --stairs:#d99cff; --selected:#fff36b;
  --connector-0:#ff6b6b; --connector-1:#55d6be; --connector-2:#ffd166; --connector-3:#8ec5ff;
  --connector-4:#d69cff; --connector-5:#ff9f59; --connector-6:#7fe36d; --connector-7:#f48fb1;
}
* { box-sizing:border-box; }
body { margin:0; background:var(--background); color:var(--text); font:16px/1.45 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace; }
header,main,footer { width:min(1500px,calc(100% - 2rem)); margin:auto; }
header { padding:1.4rem 0 .7rem; }
h1 { margin:.2rem 0; color:#8ff0ad; }
a { color:#7edcff; }
.lede,.muted,footer { color:var(--muted); }
footer { padding:2rem 0; }
.legend { border:1px solid var(--line); background:var(--panel); padding:.55rem .8rem; margin:1rem 0; }
.legend summary { cursor:pointer; color:#a8f4bd; }
.legend div { display:flex; flex-wrap:wrap; gap:.45rem 1.15rem; padding-top:.6rem; }
.legend span { white-space:nowrap; color:var(--muted); }.legend b { color:var(--text); font-size:1.15rem; }
.atlas-panels { position:relative; display:grid; grid-template-columns:1fr; gap:1rem; align-items:start; }
.atlas-panel { position:relative; z-index:2; border:1px solid var(--line); background:var(--panel); padding:.75rem; min-width:0; }
.atlas-panel h2 { margin:0 0 .55rem; color:#b5eec5; font-size:1rem; }
.atlas-viewport { width:100%; height:clamp(360px,72vh,900px); overflow:auto; background:#020403; border:1px solid #26352c; overscroll-behavior:contain; }
.atlas-map { display:block; min-width:0; transform-origin:0 0; }
.atlas-floor-stack { margin:1rem 0; }
.atlas-controls { position:sticky; top:0; z-index:10; display:flex; align-items:center; flex-wrap:wrap; gap:.4rem; padding:.45rem; border:1px solid #26352c; border-bottom:0; background:#0b120e; }
.atlas-controls button { appearance:none; border:1px solid var(--line); border-radius:.2rem; background:#152019; color:var(--text); padding:.35rem .6rem; font:inherit; cursor:pointer; }
.atlas-controls button:hover,.atlas-controls button:focus-visible { border-color:#8ff0ad; color:#8ff0ad; }
.atlas-controls [data-map-action="zoom-out"],.atlas-controls [data-map-action="zoom-in"] { min-width:2.4rem; font-size:1.15rem; line-height:1; }
.atlas-scale { min-width:4.5rem; color:var(--muted); text-align:right; }
.floor-controls { display:flex; align-items:center; flex-wrap:wrap; gap:.45rem .75rem; padding:.55rem .65rem; border:1px solid #26352c; border-bottom:0; background:#101713; }
.floor-controls strong { color:#b5eec5; }
.floor-buttons { display:flex; flex-wrap:wrap; gap:.35rem; }
.floor-controls button { appearance:none; border:1px solid var(--line); border-radius:.25rem; background:#152019; color:var(--muted); padding:.3rem .55rem; font:inherit; cursor:pointer; }
.floor-controls button:hover,.floor-controls button:focus-visible { border-color:#8ff0ad; color:#dfffea; }
.floor-controls button[aria-current="true"] { border-color:#fff36b; background:#3a3619; color:#fffbd0; outline:2px solid #fff36b; outline-offset:1px; }
.floor-summary { margin-left:auto; color:var(--muted); }
.floor-layer[style*="display: none"] { pointer-events:none; }
.floor-frame rect { fill:#0d1510; stroke:var(--line); stroke-width:1; stroke-dasharray:5 5; }
.floor-frame text { fill:#b5eec5; font:700 14px/1 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace; }
.floor-link { color:var(--connector-0); pointer-events:none; }
.floor-link path { fill:none; stroke:currentColor; stroke-width:2; stroke-dasharray:2 3; stroke-linecap:round; stroke-linejoin:round; opacity:.92; }
.floor-link text { fill:currentColor; font:700 17px/1 "Arial Unicode MS","Apple Symbols","Noto Sans Symbols 2",sans-serif; text-anchor:middle; paint-order:stroke; stroke:#020403; stroke-width:4px; }
.floor-link.connector-1 { color:var(--connector-1); }.floor-link.connector-2 { color:var(--connector-2); }
.floor-link.connector-3 { color:var(--connector-3); }.floor-link.connector-4 { color:var(--connector-4); }
.floor-link.connector-5 { color:var(--connector-5); }.floor-link.connector-6 { color:var(--connector-6); }
.floor-link.connector-7 { color:var(--connector-7); }
.atlas-room { cursor:pointer; outline:none; }
.room-node-bg { fill:#020403; stroke:none; }.atlas-room.ordinary .room-node-bg,.atlas-room.stairs .room-node-bg { fill:#020403; stroke:var(--ordinary); stroke-width:1.5px; vector-effect:non-scaling-stroke; }.atlas-room:hover .room-node-bg,.atlas-room:focus .room-node-bg,.atlas-room.selected .room-node-bg { stroke:var(--selected); stroke-width:3px; }
.atlas-room text { fill:var(--ordinary); font:700 25px/1 "Arial Unicode MS","Apple Symbols","Noto Sans Symbols 2",sans-serif; paint-order:stroke; stroke:#020403; stroke-width:2px; }
.atlas-room.special text { fill:var(--special); }.atlas-room.lair text { fill:var(--lair); }
.atlas-room.npc text { fill:var(--npc); }.atlas-room.shop text,.atlas-room.bank text,.atlas-room.trainer text,.atlas-room.arena text,.atlas-room.healer text,.atlas-room.inn text,.atlas-room.guild text { fill:var(--venue); }
.atlas-room.stairs text { fill:var(--stairs); }
.atlas-room.stairs text { stroke-width:1px; }.room-vertical-port { fill:var(--stairs); stroke:#020403; stroke-width:1px; vector-effect:non-scaling-stroke; }
.atlas-room:hover text,.atlas-room:focus text,.atlas-room.selected text { fill:var(--selected); stroke:#624f00; stroke-width:3px; }.atlas-room.selected .room-vertical-port { fill:var(--stairs); stroke:#fff4df; stroke-width:1.5px; }
.passage-arrow { fill:#aebdb3; font:700 22px/1 "Arial Unicode MS","Apple Symbols","Noto Sans Symbols 2",sans-serif; text-anchor:middle; vector-effect:non-scaling-stroke; }
.passage-arrow.displaced { fill:#ff9f59; }
.stair-passage-ring { fill:#020403; stroke:#ff9f59; stroke-width:1.5px; }.passage-arrow.stair-passage { fill:#ffb16f; font-size:17px; }
.details { position:fixed; right:1rem; bottom:1rem; width:min(390px,calc(100% - 2rem)); max-height:48vh; overflow:auto; z-index:20; border:1px solid var(--line); background:#101713; padding:1rem; box-shadow:0 8px 30px #000; }
.details h2 { margin-top:0; color:#a6f4bd; font-size:1.05rem; }.details h3 { font-size:1rem; color:var(--special); }
.details dl { display:grid; grid-template-columns:3rem 1fr; gap:.2rem .6rem; }.details dt { color:#8ff0ad; }.details dt.command-exit,.details dd.command-exit { grid-column:1/-1; }.details dd { margin:0; overflow-wrap:anywhere; }.details dd small { display:block; color:var(--muted); }
.details dd a { display:inline-block; }
.area-connections { margin-top:1.2rem; padding-bottom:4rem; }.area-connections ul { columns:2 26rem; }.area-connections li { break-inside:avoid; margin:.25rem 0; }
.connection-glyph.stair { display:inline-grid; place-items:center; width:1.5em; height:1.5em; border:1px solid currentColor; border-radius:50%; }
.warning { border-left:4px solid var(--special); background:#1b160b; padding:.7rem .9rem; }
.card-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(270px,1fr)); gap:.75rem; }
.card { border:1px solid var(--line); background:var(--panel); padding:.75rem .9rem; }.card h2 { margin:0 0 .35rem; font-size:1rem; }.card p { margin:0; color:var(--muted); }
.card.database-discovered { border-color:#6e5c28; }.card.catchall { border-color:#74414a; }
.stats { display:flex; flex-wrap:wrap; gap:.5rem 1.4rem; }
/* Search-first world navigator. Area ownership is metadata, not layout. */
.world-app { margin:1rem 0; }
.world-search { border:1px solid var(--line); background:#101713; padding:.75rem; }
.world-search>label { display:block; color:#b5eec5; margin-bottom:.35rem; }
.world-search-row { display:grid; grid-template-columns:minmax(12rem,1fr) 13rem minmax(13rem,18rem); gap:.5rem; }
.world-search input,.world-search select,.world-toolbar select { width:100%; min-width:0; border:1px solid var(--line); border-radius:.25rem; background:#050806; color:var(--text); padding:.5rem .6rem; font:inherit; }
.world-search input:focus,.world-search select:focus,.world-toolbar select:focus { outline:2px solid #8ff0ad; outline-offset:1px; }
.world-search output { display:block; color:var(--muted); min-height:1.4em; margin-top:.35rem; }
.world-workspace { display:grid; grid-template-columns:280px minmax(420px,1fr) 350px; min-height:70vh; border:1px solid var(--line); border-top:0; }
.world-results { min-width:0; border-right:1px solid var(--line); background:#0a100c; overflow:auto; max-height:76vh; }
.world-results ol { list-style:none; margin:0; padding:0; }
.world-results li+li { border-top:1px solid #1f2c24; }
.world-results .result-summary { display:grid; grid-template-columns:2.2rem 1fr; gap:.35rem; align-items:start; padding:.55rem .55rem .25rem; }
.world-results .result-actions { display:flex; gap:.4rem; padding:0 .55rem .55rem 3.1rem; }
.world-results button { border:1px solid var(--line); border-radius:.25rem; background:#152019; color:var(--text); padding:.28rem .65rem; font:inherit; cursor:pointer; }
.world-results button:hover,.world-results button:focus-visible { border-color:#8ff0ad; color:#8ff0ad; outline:1px solid #8ff0ad; }
.world-results strong,.world-results small { display:block; overflow-wrap:anywhere; }.world-results small { color:var(--muted); font-size:.72rem; margin-top:.15rem; }.world-results .result-reason { color:#8ff0ad; }
.result-marker,.detail-marker { color:var(--ordinary); font-size:1.35rem; text-align:center; }.result-marker.special,.detail-marker.special { color:var(--special); }.result-marker.lair,.detail-marker.lair { color:var(--lair); }.result-marker.npc,.detail-marker.npc { color:var(--npc); }
.world-map-panel { min-width:0; background:#020403; display:flex; flex-direction:column; }
.world-toolbar,.world-vertical { display:flex; align-items:center; flex-wrap:wrap; gap:.45rem .75rem; padding:.45rem .55rem; border-bottom:1px solid #26352c; background:#0b120e; }.world-toolbar { position:relative; }
.world-toolbar button,.world-vertical button,.world-room-details button { appearance:none; border:1px solid var(--line); border-radius:.25rem; background:#152019; color:var(--text); padding:.35rem .55rem; font:inherit; cursor:pointer; }
.world-toolbar button:hover,.world-vertical button:hover,.world-room-details button:not(:disabled):hover,.world-toolbar button:focus-visible,.world-vertical button:focus-visible,.world-room-details button:not(:disabled):focus-visible { border-color:#8ff0ad; color:#8ff0ad; }
.world-toolbar button:disabled { opacity:.45; cursor:default; }.world-toolbar label { display:flex; align-items:center; gap:.35rem; }.world-toolbar select { width:auto; padding:.3rem; }.world-toolbar output { margin-left:auto; color:var(--muted); font-size:.85rem; }
.world-flair-legend-inline { display:flex; align-items:center; flex-wrap:wrap; gap:.35rem 1rem; min-height:1.4rem; }.world-flair-legend-inline>span { display:flex; align-items:center; gap:.4rem; color:#dce8df; white-space:nowrap; font-size:.75rem; }.world-flair-legend-inline i { display:inline-grid; place-items:center; flex:0 0 1.1rem; width:1.1rem; height:1.1rem; box-sizing:border-box; border-radius:50%; font-style:normal; line-height:1; }.flair-command { border:2px dashed #ef70ff; }.flair-unseen { color:#86dca1; font-size:1.35rem; }.flair-selected { border-radius:3px!important; background:#ffe15a55; }.flair-route { border:3px solid #5ae8f5; }.flair-route-start { border:3px solid #8ff0ad; }.flair-route-target { border:3px solid #ffe15a; }.flair-up,.flair-down { color:var(--stairs); font-size:.75rem; }
.world-vertical { background:#101713; color:var(--muted); }.world-vertical strong { color:#d99cff; }.world-vertical button { border-color:#765383; color:#f0c9ff; }
.world-route { display:flex; align-items:center; flex-wrap:wrap; gap:.35rem .8rem; padding:.45rem .55rem; border-bottom:1px solid #275d65; background:#0a1b1e; color:#b8cfd3; font-size:.86rem; }.world-route[hidden] { display:none; }.world-route strong { color:#64e7f5; }.world-route-actions { display:flex; gap:.4rem; margin-left:auto; }.world-route button { appearance:none; border:1px solid #398b96; border-radius:.25rem; background:#10292d; color:#d0faff; padding:.28rem .5rem; font:inherit; cursor:pointer; }.world-route button:hover,.world-route button:focus-visible { border-color:#7cf4ff; color:#7cf4ff; }
.world-map-viewport { flex:0 0 auto; width:min(100%,70vh,900px); aspect-ratio:1; align-self:center; min-height:0; overflow:hidden; }
.world-map { display:block; width:100%; height:100%; max-width:none; max-height:none; background-image:radial-gradient(#162019 1px,transparent 1px); background-size:22px 22px; cursor:grab; touch-action:none; user-select:none; }.world-map.dragging { cursor:grabbing; }
.world-areas,.world-area-region,.world-area-fill { pointer-events:none; }.world-area-fill { fill:currentColor; opacity:.13; }
.world-passage-line { fill:none; stroke:#ff9f59; stroke-width:1.5; stroke-dasharray:1.5 4; stroke-linecap:round; vector-effect:non-scaling-stroke; pointer-events:none; }
.world-command-line { fill:none; stroke:#d890ff; stroke-width:1.8; stroke-dasharray:2 4; stroke-linecap:round; vector-effect:non-scaling-stroke; pointer-events:none; }
.world-command-marker { fill:#efd3ff; stroke:#25102f; stroke-width:5px; paint-order:stroke fill; font-size:8px; cursor:pointer; }
.world-command-marker.route-passage { fill:#5ae8f5; }
.world-command-line.route-passage { stroke:#5ae8f5; stroke-width:2.6; }
.world-room-command-flair { fill:none; stroke:#ef70ff; stroke-width:2.4; stroke-dasharray:3 2.5; stroke-linecap:round; vector-effect:non-scaling-stroke; pointer-events:none; }
.world-current-cell { fill:#ffe15a; fill-opacity:.08; pointer-events:none; animation:world-current-cell-throb 1.6s ease-in-out infinite; }
@keyframes world-current-cell-throb { 0%,100% { fill-opacity:.05; } 50% { fill-opacity:.2; } }
@media (prefers-reduced-motion:reduce) { .world-current-cell { animation:none; fill-opacity:.14; } }
.world-passage-arrow { fill:#aebdb3; font:700 22px/1 "Arial Unicode MS","Apple Symbols","Noto Sans Symbols 2",sans-serif; text-anchor:middle; paint-order:stroke; stroke:#020403; stroke-width:5px; vector-effect:non-scaling-stroke; cursor:pointer; outline:none; }.world-passage-arrow.displaced { fill:#ff9f59; }.world-passage-arrow:hover,.world-passage-arrow:focus { fill:var(--selected); stroke:#624f00; stroke-width:6px; }
.world-passage-arrow.routed { fill:#ff9f59; stroke:#28180d; stroke-width:6px; }
.world-passage-arrow.keyed { fill:#f1c75b; stroke:#332907; stroke-width:6px; }
.world-room-unseen-starburst { fill:none; stroke:#86dca1; stroke-width:1.35px; opacity:.62; stroke-linejoin:round; vector-effect:non-scaling-stroke; pointer-events:none; }
.world-room { color:var(--ordinary); cursor:pointer; outline:none; }.world-room-hit { fill:#020403; stroke:#33483b; stroke-width:1.5; vector-effect:non-scaling-stroke; }.world-room.special { color:var(--special); }.world-room.lair { color:var(--lair); }.world-room.npc { color:var(--npc); }.world-room.shop,.world-room.bank,.world-room.trainer,.world-room.arena,.world-room.healer,.world-room.inn,.world-room.guild { color:var(--venue); }.world-room.stairs { color:var(--stairs); }
.world-room-icon,.world-room-icon-rotor { transform-box:view-box; transform-origin:0 0; pointer-events:none; }.room-icon-solid { fill:currentColor; stroke:#020403; stroke-width:1.2; stroke-linejoin:round; vector-effect:non-scaling-stroke; }.room-icon-stroke { fill:none; stroke:currentColor; stroke-width:3; stroke-linecap:round; stroke-linejoin:round; paint-order:stroke; vector-effect:non-scaling-stroke; }.room-icon-letter { stroke-width:2.8; }
.world-room.regen-instant>.world-room-glyph>.world-room-icon>.world-room-icon-rotor { animation:world-room-instant-spin 1.15s linear infinite; }.world-room.regen-pulse>.world-room-glyph>.world-room-icon { animation:world-room-timed-pulse .9s ease-in-out 1; }
@keyframes world-room-instant-spin { to { transform:rotate(360deg); } }
@keyframes world-room-timed-pulse { 0%,100% { transform:scale(1); filter:brightness(1); } 45% { transform:scale(1.42); filter:brightness(1.8); } }
@media (prefers-reduced-motion:reduce) { .world-room.regen-instant>.world-room-glyph>.world-room-icon>.world-room-icon-rotor,.world-room.regen-pulse>.world-room-glyph>.world-room-icon { animation:none; } }
.world-room:hover .world-room-hit,.world-room:focus .world-room-hit { stroke:#8ff0ad; stroke-width:4; }
.world-passage-arrow.route-passage { fill:#5ae8f5; stroke:#052c31; stroke-width:7px; }.world-passage-line.route-passage { stroke:#5ae8f5; stroke-width:2.6; }.world-room.route-room .world-room-hit { stroke:#5ae8f5; stroke-width:3; }.world-room.route-start .world-room-hit { stroke:#8ff0ad; stroke-width:4; }.world-room.route-target .world-room-hit { stroke:#ffe15a; stroke-width:4; }.world-room-unseen-starburst.route-continuation { stroke:#5ae8f5; stroke-width:2.6; opacity:1; }.world-route-keys { flex-basis:100%; color:#f1c75b; }
.world-room .room-vertical-port { fill:var(--stairs); stroke:#020403; stroke-width:1px; vector-effect:non-scaling-stroke; pointer-events:none; }.world-room:hover .room-vertical-port,.world-room:focus .room-vertical-port { fill:var(--selected); }.world-room.selected .room-vertical-port { fill:var(--stairs); stroke:#fff4df; stroke-width:1.5px; }
.world-room-tooltip { position:fixed; z-index:50; width:min(22rem,calc(100vw - 1.5rem)); max-height:min(28rem,calc(100vh - 1.5rem)); overflow:hidden; pointer-events:none; border:1px solid #8ff0ad; border-radius:.3rem; background:#101713f5; color:var(--text); padding:.65rem .75rem; box-shadow:0 8px 28px #000; font-size:.82rem; }.world-room-tooltip[hidden] { display:none; }.world-room-tooltip>strong,.world-room-tooltip>span { display:block; }.world-room-tooltip>strong { color:#a6f4bd; font-size:.95rem; }.world-room-tooltip>span,.world-room-tooltip small { color:var(--muted); }.world-room-tooltip ul { margin:.4rem 0 0; padding-left:1.15rem; }.world-room-tooltip h3 { margin:.55rem 0 -.15rem; color:var(--special); font-size:.82rem; }.world-room-tooltip li small { display:block; }
.world-room-details { min-width:0; max-height:76vh; overflow:auto; border-left:1px solid var(--line); background:#101713; padding:.8rem; }.world-room-details h2 { margin:.1rem 0 .3rem; color:#a6f4bd; font-size:1rem; }.world-room-details h3 { margin-bottom:.3rem; color:var(--special); font-size:.95rem; }.world-room-details ul { padding-left:1.2rem; }.world-room-details .reference-area { color:var(--muted); font-size:.82rem; }.world-room-details dl { display:grid; grid-template-columns:2.5rem 1fr; gap:.35rem .5rem; }.world-room-details dt { color:#8ff0ad; padding-top:.38rem; }.world-room-details dd { margin:0; min-width:0; overflow-wrap:anywhere; }.world-room-details dd button { display:block; width:100%; text-align:left; }.world-room-details dd button strong,.world-room-details dd button span { display:block; }.world-room-details dd button strong { color:#f1c75b; overflow-wrap:anywhere; }.world-room-details dd small { display:block; color:var(--muted); font-size:.7rem; margin-top:.15rem; }.world-room-details .unavailable { color:#66736b; }.world-room-details dd.unavailable button { border-color:#2d3932; background:#0c120e; color:#66736b; cursor:not-allowed; opacity:.65; }.world-room-details .unmapped-exit { display:block; padding:.35rem .55rem; border:1px dashed var(--line); border-radius:.25rem; }.world-room-details .unmapped-exit strong,.world-room-details .unmapped-exit span { display:block; }
.world-room-details .fixed-exits { font-size:.78rem; line-height:1.15; }.world-room-details .fixed-exits button { padding:.27rem .42rem; }.world-room-details .room-commands { margin:.35rem 0; padding-left:1.1rem; font-size:.82rem; }.world-room-details .room-commands li { margin:.45rem 0; }.world-room-details .room-commands li>strong { display:block; color:#f1c75b; overflow-wrap:anywhere; }.world-room-details .room-commands button,.world-room-details .unmapped-command-destination { display:block; width:100%; margin-top:.2rem; text-align:left; }.world-room-details .room-commands small { display:block; color:var(--muted); font-size:.7rem; margin-top:.12rem; }
.fixed-npc-info .npc-name { font-weight:700; }.fixed-npc-info .npc-non-hostile { color:#aaa; }.fixed-npc-info .npc-hostile { color:#f5f; }.fixed-npc-info .npc-attacks-good { color:#f55; }.fixed-npc-info .npc-attacks-evil { color:#fff; }.fixed-npc-info small { display:block; color:var(--muted); font-size:.7rem; }
.world-room-details .command-aliases { margin:.18rem 0 .28rem; color:var(--muted); font-size:.72rem; }.world-room-details .command-aliases summary { width:max-content; max-width:100%; cursor:pointer; color:#b9a1c4; }.world-room-details .command-aliases[open] summary { color:#e6c5f5; }.world-room-details .command-aliases ul { margin:.18rem 0 0; padding-left:1.15rem; }.world-room-details .command-aliases li { margin:.12rem 0; }.world-room-details .command-aliases code { color:#d8c6df; white-space:normal; overflow-wrap:anywhere; }
.world-room-details .command-arrivals { margin:.35rem 0; padding-left:1.1rem; font-size:.82rem; }.world-room-details .command-arrivals li { margin:.35rem 0; }.world-room-details .command-arrivals button { display:block; width:100%; text-align:left; }.world-room-details .command-arrivals button strong,.world-room-details .command-arrivals button span,.world-room-details .command-arrivals button small { display:block; }.world-room-details .command-arrivals button strong { color:#8ff0ad; }.world-room-details .command-arrivals button small { color:var(--muted); font-size:.7rem; margin-top:.12rem; }
@media (max-width:1050px) { .world-workspace { grid-template-columns:240px minmax(400px,1fr); }.world-room-details { grid-column:1/-1; border-left:0; border-top:1px solid var(--line); max-height:none; }.world-results { max-height:70vh; } }
@media (max-width:760px) { .area-connections ul { columns:1; } .details { max-height:40vh; }.world-search-row,.world-workspace { grid-template-columns:1fr; }.world-results { max-height:14rem; border-right:0; border-bottom:1px solid var(--line); }.world-map-viewport { width:min(100%,62vh); }.world-room-details { grid-column:auto; }.world-toolbar output { width:100%; margin-left:0; } }
/* The searchable navigator is a viewport-filling application, not a document. */
body.world-page { width:100%; height:100vh; overflow:hidden; }
.world-page main { width:100%; height:100%; margin:0; }
.world-page .world-app { position:relative; display:flex; flex-direction:column; width:100%; height:100%; min-height:0; margin:0; }
.world-page .world-search { flex:0 0 auto; }
.world-page .world-workspace { flex:1 1 auto; min-height:0; height:0; grid-template-columns:minmax(0,1fr) minmax(280px,350px); border-bottom:0; }
.world-page .world-results { position:absolute; z-index:30; top:7.8rem; left:.75rem; width:min(36rem,calc(100% - 1.5rem)); max-height:min(60vh,38rem); border:1px solid var(--line); box-shadow:0 12px 35px #000; }
.world-page .world-results[hidden] { display:none; }
.world-page .world-map-panel { min-height:0; }
.world-page .world-map-viewport { flex:1 1 auto; width:100%; min-width:0; min-height:0; aspect-ratio:auto; align-self:stretch; }
.world-page .world-room-details { height:100%; max-height:none; }
@media (max-width:760px) {
  .world-page .world-workspace { grid-template-columns:1fr; grid-template-rows:minmax(0,1fr) minmax(10rem,35vh); }
  .world-page .world-room-details { grid-row:2; max-height:none; }
  .world-page .world-results { top:8.5rem; width:calc(100% - 1.5rem); max-height:45vh; }
}
@media print { .details,.atlas-controls,.floor-controls { display:none; } .atlas-viewport { width:auto; height:auto; max-height:none; overflow:visible; } .atlas-panels { display:block; }.atlas-panel { break-inside:avoid; margin-bottom:1rem; } }
