*{box-sizing:border-box}body{margin:0;background:#081625;color:#f0e5cf;font-family:system-ui,sans-serif}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer;font:inherit;color:inherit;background:#0d2233da;border:1px solid #ceb37d66;border-radius:3px;padding:11px 17px}button:hover{background:#c7af7b;color:#132238}button:disabled{opacity:.4;cursor:default}button:focus-visible,a:focus-visible{outline:3px solid #eed7a0;outline-offset:4px}a{color:inherit}#tour{height:100svh;min-height:560px;position:relative;overflow:hidden}#stage{position:absolute;inset:0;touch-action:none;outline:none}#stage canvas{display:block;width:100%;height:100%;touch-action:none}.vignette{position:absolute;inset:0;pointer-events:none;background:linear-gradient(#05111d99,transparent 25%,transparent 65%,#05111dee)}.top{position:absolute;top:22px;left:28px;pointer-events:none}.back{display:inline-block;font-size:11px;pointer-events:auto;margin-bottom:22px;text-decoration:none}.top p{font-size:9px;letter-spacing:.22em;color:#d4bb86;margin:0 0 10px}.top h1{font:normal 30px/1.5 'Yu Mincho',serif;letter-spacing:.08em;margin:0 0 8px;text-shadow:0 2px 16px #000}.proposal{font-size:9px;color:#bdc7ce}.bottom{position:absolute;bottom:18px;left:20px;right:20px;display:grid;justify-items:center;gap:10px;pointer-events:none}.bottom>*{pointer-events:auto}#navigation{display:flex;gap:10px}#next-room{background:#d1b580;color:#0c2332;min-width:190px}#travel-status{font-size:10px;color:#c6ced5;margin:0}.utility{display:flex;gap:7px;align-items:center;flex-wrap:wrap;justify-content:center}.utility button,.utility a{font-size:10px;padding:7px 11px}.utility a{text-decoration:none}#info{position:absolute;right:28px;top:35px;max-width:270px;padding:18px;background:#0b1b2bce;border-left:1px solid #d3b78166}#place-tag{font-size:9px;letter-spacing:.2em;color:#d5bd8f}#place-copy{font:normal 14px/1.9 'Yu Mincho',serif;margin:9px 0}#design-button{font-size:10px;padding:8px 10px}#door-pins{position:absolute;inset:0;pointer-events:none}.door-pin{position:absolute;transform:translate(-50%,-50%);pointer-events:auto;background:#092235d9;border:1px solid #d7b982;border-radius:30px;padding:10px 16px;font-size:12px;white-space:nowrap;box-shadow:0 5px 30px #0006}.door-pin::before{content:'↗';margin-right:8px;color:#e4c792}.door-pin[hidden]{display:none}#map-panel{position:absolute;top:20px;right:20px;width:350px;max-height:calc(100% - 170px);overflow:auto;background:#0a1c2df5;border:1px solid #cdb48466;padding:20px;z-index:4}.map-title{display:flex;justify-content:space-between;align-items:center}.map-title h2{font:normal 19px 'Yu Mincho',serif}.map-title button{padding:5px 12px;font-size:19px}.floor-map{height:285px;position:relative;background:#122638;border:1px solid #8f9eae33;margin:15px 0}.map-court{position:absolute;left:25%;top:34%;width:45%;height:33%;background:#b5ab8555;border:1px solid #cfc09a66;display:grid;place-content:center;text-align:center;font-size:13px;line-height:1.8}.map-court small{font-size:9px}.map-loop{position:absolute;left:19%;top:29%;width:56%;height:44%;border:8px solid #96734944;pointer-events:none}.map-room{position:absolute;transform:translate(-50%,-50%);font-size:10px;padding:9px 10px;white-space:nowrap;z-index:1}.map-room[aria-current=true]{background:#d1b580;color:#0b2130}.map-bridge{position:absolute;bottom:9px;left:48%;font-size:9px;color:#c2af87}.map-note{font-size:10px;line-height:1.9;color:#a4b6c7}.corridor-link{font-size:10px;padding:7px 10px}#load-status{position:absolute;top:48%;left:0;right:0;text-align:center;font-size:12px}#design-dialog{width:min(1100px,96vw);max-height:94svh;background:#102233;color:#f3e7ce;border:1px solid #b79f6c77;padding:24px}#design-dialog::backdrop{background:#020b14de;backdrop-filter:blur(7px)}#design-dialog header{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:16px}#design-dialog header p{font-size:9px;letter-spacing:.18em;color:#cbb88c}#design-dialog h2{font:normal 24px 'Yu Mincho',serif;margin:8px 0}#design-image{display:block;width:100%;max-height:48svh;object-fit:contain;background:#091726}#design-spec{display:grid;grid-template-columns:1fr 1fr;gap:12px 24px;font-size:12px;line-height:1.7}#design-spec div{border-top:1px solid #bdaa7840;padding-top:10px}#design-spec dt{color:#ceb787;font-size:10px}#design-spec dd{margin:4px 0}.design-note{font-size:10px;line-height:1.8;color:#a5b7c5}@media(max-width:650px){.top{top:16px;left:16px}.back{margin-bottom:15px}.top h1{font-size:23px}.top p{font-size:8px}#info{top:auto;bottom:157px;left:16px;right:auto;max-width:240px;padding:12px}#place-copy{font-size:12px;margin:5px 0}#place-tag{font-size:8px}.bottom{left:8px;right:8px;bottom:12px;gap:10px}#navigation button{padding:10px 14px;font-size:12px}#next-room{min-width:165px}.utility{gap:4px}.utility button,.utility a{font-size:9px;padding:7px 9px}#travel-status{font-size:9px}.door-pin{font-size:10px;padding:9px 11px}#map-panel{top:12px;right:12px;left:12px;width:auto;max-height:calc(100% - 140px)}#design-dialog{padding:15px}#design-dialog h2{font-size:20px}#design-dialog button{font-size:11px}#design-spec{grid-template-columns:1fr;font-size:11px}#design-image{max-height:40svh}}
/* Floor targets match the exact destination; UI never substitutes another room. */
.walk-pin{position:absolute;transform:translate(-50%,-50%) scaleY(.64);width:46px;height:46px;padding:0;border:2px solid #efd6a2b8;border-radius:50%;background:#ffdf9920;box-shadow:0 0 20px #d9bd7844;pointer-events:auto;color:#fff0c8;font-size:30px;line-height:1;transition:background .15s,box-shadow .15s}.walk-pin:hover,.walk-pin:focus-visible{background:#ffdf9970;box-shadow:0 0 22px #f5d68c88;color:#fff}.walk-pin[hidden]{display:none}.walk-pin span{display:block;transform:scaleY(1.4) translateY(2px)}
.floor-map{height:auto;min-height:320px;background:#132738}.walk-map{display:block;width:100%;height:350px}.walk-map .map-room{transform:none;cursor:pointer;fill:#f0e2c4}.walk-map .map-room rect{fill:#142839;stroke:#cdb57a;stroke-width:.04}.walk-map .map-room[aria-current=true] rect{fill:#a78955}.walk-map .map-room:hover rect{fill:#896f48}.walk-map circle[role=button]{cursor:pointer;stroke:transparent;stroke-width:.85;paint-order:stroke}.walk-map circle[role=button]:hover{fill:#fff;stroke:#b68d4566}.walk-map [role=button]:focus{outline:none;filter:drop-shadow(0 0 .12px #fff)}
#info{max-width:230px;background:#0b1b2ba8}#place-copy{font-size:12px}#navigation button{min-width:140px}#travel-status{max-width:90vw;text-align:center}.top h1{font-size:26px}.vignette{background:linear-gradient(#05111d88,transparent 26%,transparent 72%,#05111dd9)}
@media(max-width:650px){#tour{min-height:520px}#info{bottom:auto;top:130px;left:16px;max-width:205px;padding:9px 12px}#place-copy{display:none}#place-tag{display:none}#info:has(#design-button[hidden]){display:none}#design-button{font-size:10px}.walk-pin{width:44px;height:44px}.walk-map{height:310px}.top h1{font-size:22px}#navigation button{min-width:135px}.proposal{font-size:8px}}

#entry-door-toggle{display:block;font-size:11px;margin:10px 0;padding:9px 12px;border-color:#d1b580}#entry-door-toggle[hidden]{display:none}@media(max-width:650px){#info:has(#entry-door-toggle:not([hidden])){display:block}#entry-door-toggle{font-size:10px;margin:0 0 8px;padding:8px 10px}}

.room-visual-switch{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 12px}.room-visual-switch button{font:inherit;font-size:12px;padding:9px 14px;border:1px solid #a68d60;background:#152d40;color:#ecdfc5;cursor:pointer}.room-visual-switch button[aria-pressed="true"]{background:#d4bc87!important;color:#14293b!important}.room-visual-switch button:focus-visible{outline:2px solid #f1deb2;outline-offset:3px}
