@font-face{font-family:Grenze;src:url(../dungeon/fonts/grenze.ttf) format("truetype");font-weight:500;font-display:swap}@font-face{font-family:Ysabeau;src:url(../dungeon/fonts/ysabeau.ttf) format("truetype");font-weight:400 600;font-display:swap}:root{--text: #e7e0d5;--scene-background: #14121c;--button: #1e1a28e8;--hover-text: #fff3cf;--hover-line: #ccb68b99;--focus: #cfb58b;--selected: #38303e;--selected-line: #baa079;--selected-text: #f2dfb4;--map-panel: #17141ede;--map-corridor: #76657e;--map-room: #292333;--map-line: #7b688b;--map-hover: #574260;--map-active: #674e7b;--map-active-line: #e7c78c;--map-label: #d9c9b1;--panel-start: #211c2bf2;--panel-end: #15131deb;--loading: #14121cf5;--seal: #bd9ed5;--notice: #282030;--scene-sky: #c5bbdc;--scene-ground: #3d2e45;--scene-key: #d9d1f5;--scene-rim: #8e74d0;--scene-floor: #17151e;font-family:Ysabeau,sans-serif;color:var(--text);background:var(--scene-background);font-synthesis:none;color-scheme:dark;--muted: #b3a8bd;--line: #bba77836;--gold: #ccb68b}:root[data-dungeon=spectral]{--text: #e1eee0;--scene-background: #0e1c1a;--scene-sky: #bcdac6;--scene-ground: #2c473d;--scene-key: #d5f4df;--scene-rim: #70bf9e;--scene-floor: #12211c;--muted: #afc6ba;--line: #96cbb338;--gold: #b4d6b1;--button: #152b23e8;--hover-text: #d9ffe4;--hover-line: #a5d5b199;--focus: #a9dfb9;--selected: #2c5040;--selected-line: #82b499;--selected-text: #ddf5da;--map-panel: #10231ede;--map-corridor: #618e77;--map-room: #1f362c;--map-line: #6c9a80;--map-hover: #2b5140;--map-active: #35614e;--map-active-line: #a9dfb9;--map-label: #c8e5d1;--panel-start: #1a322af2;--panel-end: #10251eeb;--loading: #0e1c1af5;--seal: #a5dfb7;--notice: #1d3a2e}:root[data-dungeon=forge]{--text: #f0e4d5;--scene-background: #151315;--scene-sky: #d6c5b1;--scene-ground: #332c2b;--scene-key: #ffe3bd;--scene-rim: #c27c52;--scene-floor: #1c191b;--muted: #c0ada0;--line: #cc8c513d;--gold: #e9b77d;--button: #29201ce8;--hover-text: #fff0d9;--hover-line: #e5a55b99;--focus: #f0ad60;--selected: #5c3826;--selected-line: #c88d58;--selected-text: #ffe5b8;--map-panel: #211b19e8;--map-corridor: #987354;--map-room: #362b28;--map-line: #9c7959;--map-hover: #6c4630;--map-active: #824b29;--map-active-line: #e9b77d;--map-label: #f0d4af;--panel-start: #34271ff2;--panel-end: #201b19ed;--loading: #151315f5;--seal: #efa455;--notice: #402c20}.dungeon-nav{display:flex;flex-wrap:wrap;align-items:center;gap:6px 18px}*{box-sizing:border-box}html,body,#app{margin:0;width:100%;height:100%;overflow:hidden}button,a,select{-webkit-tap-highlight-color:transparent}button,select{font:inherit}a{color:inherit;text-decoration:none}button{cursor:pointer;color:inherit}button,select,.top-actions a{border:1px solid var(--line);border-radius:2px;background:var(--button);min-height:40px;padding:8px 13px}button:hover,a:hover,select:hover{color:var(--hover-text);border-color:var(--hover-line)}button:focus-visible,a:focus-visible,select:focus-visible,[role=button]:focus-visible{outline:2px solid var(--focus);outline-offset:4px}button[aria-pressed=true]{background:var(--selected);border-color:var(--selected-line);color:var(--selected-text)}[hidden]{display:none!important}#viewport{position:absolute;inset:0}#viewport canvas{display:block;width:100%;height:100%;touch-action:none}.hud{position:absolute;z-index:2}.heading{left:30px;top:23px;pointer-events:none}.heading a{pointer-events:auto}.back-link{font-size:15px;color:var(--gold)}h1,h2,p{margin:0}h1,h2{font-family:Grenze,serif;font-weight:500}h1{font-size:34px;line-height:1.15;margin-top:9px;text-shadow:0 2px 15px #000}.heading p{color:var(--muted);font-size:15px;margin-top:4px}.top-actions{right:28px;top:29px;display:flex;gap:8px;font-size:15px}.top-actions a{display:flex;align-items:center;gap:20px}.floor-map{right:28px;bottom:77px;width:176px;padding:13px 13px 8px;background:var(--map-panel);border:1px solid var(--line);box-shadow:0 6px 28px #0003}.map-heading{display:flex;justify-content:space-between;color:var(--gold);font-size:13px}#map{display:block;width:100%;margin-top:8px;overflow:visible}.map-corridor{fill:none;stroke:var(--map-corridor);stroke-width:2}.map-room{cursor:pointer}.map-room rect{fill:var(--map-room);stroke:var(--map-line);stroke-width:.6;transition:fill .2s}.map-room:hover rect{fill:var(--map-hover)}.map-room[aria-pressed=true] rect{fill:var(--map-active);stroke:var(--map-active-line)}.map-room text{fill:var(--map-label);font-size:4px;text-anchor:middle;dominant-baseline:central;pointer-events:none}.chamber-panel{left:28px;bottom:73px;width:332px;padding:17px 19px 14px;background:linear-gradient(125deg,var(--panel-start),var(--panel-end));border:1px solid var(--line);box-shadow:0 8px 30px #0004}.room-heading{display:flex;gap:12px;align-items:center;justify-content:space-between}#room-number{font-size:10px;letter-spacing:.16em;color:var(--gold)}h2{font-size:26px;line-height:1.15;margin:5px 0}.room-arrows{display:flex;gap:5px}.room-arrows button{padding:0;min-width:33px;min-height:34px}#room-description{color:var(--muted);line-height:1.4;font-size:15px;margin:9px 0 15px;min-height:42px}#room-select{width:100%;font-size:15px}.view-controls{display:grid;grid-template-columns:repeat(4,1fr);gap:4px;margin-top:10px}.view-controls button{font-size:13px;padding:8px 2px;min-height:36px}.view-hint{left:28px;right:28px;bottom:22px;display:flex;justify-content:space-between;align-items:center;font-size:13px;color:var(--muted)}.view-hint button{font-size:13px;min-height:32px}kbd{font:inherit;font-size:11px;margin-left:5px;opacity:.6}#show-ui{position:absolute;z-index:4;right:20px;bottom:20px}.ui-hidden .hud{visibility:hidden;pointer-events:none}#loading{position:absolute;z-index:8;inset:0;background:var(--loading);display:grid;place-items:center}.loading-card{padding:30px;text-align:center;width:min(440px,95vw)}.loading-card h2{font-size:30px}.loading-card p{color:var(--muted);font-size:16px;margin-top:12px}.seal{width:65px;height:65px;fill:none;stroke:var(--seal);stroke-width:1;margin-bottom:12px;animation:breathe 2s ease-in-out infinite}#load-error{margin-top:25px}#load-error details{text-align:left;margin-bottom:15px}#load-error pre{white-space:pre-wrap;word-break:break-word;font-size:12px;max-height:150px;overflow:auto}#notice{position:absolute;z-index:9;top:100px;left:50%;transform:translate(-50%);border:1px solid var(--line);padding:10px 20px;background:var(--notice);max-width:90vw}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@keyframes breathe{50%{opacity:.4}}@media(max-width:700px){.heading{top:16px;left:18px;right:18px}.dungeon-index-nav{flex-wrap:nowrap;overflow-x:auto;white-space:nowrap;pointer-events:auto}.dungeon-index-nav a{flex:0 0 auto}h1{font-size:27px;margin-top:7px}.heading p{font-size:13px}.top-actions{top:112px;right:auto;left:18px;font-size:13px}.top-actions a,.top-actions button{min-height:35px;padding:6px 11px}.floor-map{display:none}.chamber-panel{left:14px;right:14px;bottom:max(54px,calc(env(safe-area-inset-bottom) + 40px));width:auto;padding:12px 14px}h2{font-size:23px}#room-description{font-size:14px;margin:5px 0 9px;min-height:0}#room-select{min-height:36px;padding:5px 9px}.view-controls{margin-top:8px}.view-controls button{min-height:36px;font-size:13px}.view-hint{bottom:max(10px,env(safe-area-inset-bottom));left:16px;right:16px;gap:10px}.view-hint span{font-size:11px}.view-hint kbd{display:none}}@media(max-width:380px){.top-actions{top:132px}}@media(max-height:560px)and (min-width:701px){.heading p,#room-description,.floor-map{display:none}.chamber-panel{bottom:65px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}
