:root{color-scheme:dark;--gold:#edc98a;--ink:#0b121d;--line:#e7c17b42}*{box-sizing:border-box}body{margin:0;background:var(--ink);color:#f7f1e3;font-family:"Hiragino Sans","Yu Gothic",sans-serif}button,a{-webkit-tap-highlight-color:transparent}button,a:where(:not(.brand)){font:inherit}button{cursor:pointer}button:focus-visible,a:focus-visible,canvas:focus-visible{outline:3px solid #fff0bd;outline-offset:4px}button{color:inherit;border:1px solid var(--line);background:#131e2be8;border-radius:4px;min-height:44px;padding:10px 17px}button:hover{background:#293448;border-color:#e7c17b}a{color:inherit;text-decoration:none}[hidden]{display:none!important}header{height:82px;display:flex;align-items:center;justify-content:space-between;padding:0 4vw;border-bottom:1px solid var(--line);position:relative;z-index:5;background:#0c1520}.brand{display:flex;align-items:center;gap:12px;color:var(--gold);font:30px Georgia,serif}.brand small{display:block;font:10px sans-serif;letter-spacing:2px;text-align:center;margin-top:3px}.header-tools{display:flex;gap:10px;font-size:12px}.header-tools button[aria-pressed=true]{color:#132032;background:var(--gold)}#room{position:relative;height:min(69vw,700px);min-height:440px;overflow:hidden;background:#142038}.backdrop{position:absolute;inset:0;background:url(assets/hall.webp) center/cover;opacity:.5}#canvas{position:absolute;inset:0;width:100%;height:100%;touch-action:none;cursor:grab}#canvas:active{cursor:grabbing}.scene-title{position:absolute;top:24px;left:0;right:0;z-index:2;text-align:center;pointer-events:none;text-shadow:0 2px 20px #000}.scene-title span,.eyebrow{font-size:10px;letter-spacing:3px;color:var(--gold)}h1{font-family:"Hiragino Mincho ProN",serif;font-size:clamp(28px,3.7vw,52px);font-weight:500;margin:8px 0}.scene-title p{font-size:13px;margin:0;color:#f1e9d8}.scene-caption{position:absolute;bottom:12px;left:18px;right:18px;text-align:center;font-size:10px;color:#e6e3dbcf;pointer-events:none;text-shadow:0 1px 3px #000}#labels{position:absolute;inset:0;pointer-events:none}.portal-label{position:absolute;pointer-events:auto;transform:translate(-50%,-50%);background:linear-gradient(#101c2cec,#0a1722ed);border:1px solid #cdaa6680;border-radius:6px;min-width:150px;box-shadow:0 5px 22px #000a;text-align:center;padding:8px 15px;white-space:nowrap;transition:border-color .15s}.portal-label strong{display:block;color:#fff3d8;font-family:"Hiragino Mincho ProN",serif;font-size:20px}.portal-label small{font-size:10px;color:#d4dce2}.portal-label.selected{border-color:#fff0a8;box-shadow:0 0 18px #ffd97488}.portal-label:hover{background:#293448}.controls{position:relative;z-index:3;border-top:1px solid var(--line);padding:12px 4vw 18px;background:#0e1825}.look-controls{display:flex;align-items:center;justify-content:center;gap:20px;margin-bottom:12px}.look-controls button{width:48px;padding:5px;font-size:22px}.look-controls span{font-size:12px;color:#c6c9ce;text-align:center}.door-nav{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;max-width:1000px;margin:auto}.door-nav button{display:flex;align-items:center;justify-content:center;gap:9px;font-size:13px}.door-nav button.active{border-color:var(--gold);background:#33312a}.door-nav small{font-size:9px;color:#cbb88f}.door-nav i{width:6px;height:6px;border-radius:50%;box-shadow:0 0 10px currentColor}.blue{background:#79beff;color:#79beff}.green{background:#a6d56e;color:#a6d56e}.teal{background:#77e4d1;color:#77e4d1}.amber{background:#f0be6f;color:#f0be6f}.detail{padding:24px 5vw;display:flex;gap:25px;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);background:#1d2834}.detail-kicker{font-size:10px;letter-spacing:1px;color:var(--gold)}.detail h2{font-size:23px;margin:8px 0}.detail p{font-size:13px;max-width:620px;line-height:1.8;margin:0;color:#d5d9de}.detail-actions{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.detail-actions a{background:var(--gold);color:#142031;padding:14px 25px;font-size:13px;font-weight:bold;border-radius:4px}.detail-actions button{font-size:12px}.detail-actions span{font-size:13px;color:var(--gold)}.works{padding:35px 5vw 45px;background:#101c29}.section-heading{display:flex;align-items:center;justify-content:space-between}.section-heading h2{font-family:serif;font-size:29px;margin:10px 0 25px}.work-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:25px}.work-grid article{padding-top:20px;border-top:2px solid var(--gold)}.work-grid article>span{font-size:10px;color:var(--gold)}.work-grid h3{font-size:18px}.work-grid p{font-size:13px;line-height:1.9;color:#c6ced7;min-height:75px}.work-grid a{display:inline-block;padding:12px 0;border-bottom:1px solid var(--gold);font-size:13px;color:#ffe1a7}.upcoming strong{font-size:12px;color:#b9b5ae}.about{margin:24px 5vw;color:#aeb8c5;font-size:12px;line-height:1.9}.about summary{cursor:pointer;min-height:44px;padding:12px 0}.about p{max-width:900px}footer{padding:20px 5vw;border-top:1px solid var(--line);font:18px Georgia,serif;color:#d1b47b;display:flex;justify-content:space-between}footer span{font:10px sans-serif;color:#a8b3c0}#loading,#fallback{position:absolute;z-index:4;top:50%;left:50%;transform:translate(-50%,-50%);text-align:center;border:1px solid var(--line);padding:24px;background:#111d2cec;min-width:280px;font-size:14px;line-height:1.8}#loading button{margin-top:12px;font-size:12px}#fallback h2{font-size:21px}.fallback-mode .scene-title{opacity:.5}.fallback-mode #canvas,.fallback-mode #labels{display:none}.fallback-mode #room{min-height:350px;height:450px}.list-mode #room{display:none}.list-mode .controls{display:none}.list-mode #detail{display:none!important}@media(max-width:650px){header{height:72px;padding:0 15px}.brand{font-size:23px;gap:5px}.brand small{font-size:8px;letter-spacing:1px}.header-tools{gap:5px}.header-tools button{padding:8px;font-size:10px}#room{height:54svh;min-height:400px;max-height:550px}.scene-title{top:20px}.scene-title span{font-size:8px;letter-spacing:2px}.scene-title h1{font-size:30px;margin:10px 0}.scene-title p{font-size:11px}.scene-caption{font-size:8px;bottom:8px}.controls{padding:10px 12px 15px}.look-controls{gap:9px}.look-controls span{font-size:10px;max-width:230px}.look-controls button{min-width:44px}.door-nav{grid-template-columns:repeat(2,1fr);gap:7px}.door-nav button{font-size:11px;min-height:46px}.portal-label{min-width:128px;padding:7px 12px}.portal-label strong{font-size:17px}.portal-label small{font-size:9px}.detail{padding:22px;display:block}.detail h2{font-size:23px}.detail-actions{margin-top:16px}.work-grid{grid-template-columns:1fr;gap:22px}.work-grid p{min-height:0}.section-heading{align-items:start}.section-heading button{font-size:11px}.section-heading h2{font-size:24px}.about{margin:15px 22px}footer{padding:20px 22px}.fallback-mode #room{height:400px}.reduced .portal-label{transition:none}}

.travel-controls{display:flex;justify-content:center;align-items:center;gap:10px;margin:0 auto 12px}.move-pad{display:flex;gap:6px}.travel-controls button{font-size:12px;min-width:44px}.move-pad button{font-size:16px;touch-action:none;user-select:none}.move-pad button:active{background:#6b5535}.travel-controls>button{color:#edc98a}@media(max-width:650px){.travel-controls{gap:6px;flex-wrap:wrap}.travel-controls button{padding:8px;font-size:10px}.move-pad button{font-size:14px}.move-pad{gap:4px}.travel-controls>button{flex:1}#room{height:50svh;min-height:360px;max-height:500px}.look-controls{margin-bottom:8px}.door-nav button{min-height:44px}.controls{padding-bottom:12px}}

.viewing-exhibit .scene-title{display:none}.viewing-exhibit .controls{display:none}.viewing-exhibit .detail{border-top:1px solid var(--line)}

.brand em{display:block;font:12px "Hiragino Mincho ProN",serif;letter-spacing:2px;text-align:center;font-style:normal;margin-top:6px;color:#f1dfb6}@media(max-width:650px){header{height:88px}.brand em{font-size:10px;letter-spacing:1px;margin-top:5px}}

.preview-focused .scene-title{display:none}#preview-badge{display:none;position:absolute;z-index:2;top:16px;left:50%;transform:translateX(-50%);width:max-content;max-width:95%;padding:9px 12px;background:#091320df;border:1px solid #e7c17b66;border-radius:4px;font-size:12px;color:#f1dfb6;pointer-events:none}.preview-focused #preview-badge{display:block}@media(max-width:650px){#preview-badge{font-size:10px}}

/* Mobile controls: direct destinations first; travel actions have their own row. */
@media(max-width:650px){
 .controls{display:flex;flex-direction:column;gap:10px;padding:12px}
 .door-nav{order:-1;margin:0;width:100%;gap:8px}
 .door-nav button{font-size:12px;min-height:46px}
 .look-controls{margin:0}.look-controls span{font-size:11px;line-height:1.6}
 .travel-controls{display:grid;grid-template-columns:1fr 1fr;width:100%;gap:8px;margin:0}
 .move-pad{grid-column:1/-1;display:grid;grid-template-columns:1fr 1.5fr 1fr 1fr;gap:8px}
 .travel-controls>button{font-size:12px;white-space:nowrap}.move-pad button{font-size:15px}
 .header-tools{flex-shrink:0}.brand{min-width:0}.brand>span{white-space:nowrap}
 .scene-caption{font-size:9px;padding:0 10px;line-height:1.5}
}
@media(max-width:360px){header{padding:0 10px}.brand{font-size:20px;gap:3px}.header-tools button{font-size:9px;padding:7px 5px}.brand small{font-size:7px}.brand em{font-size:9px}.scene-title h1{font-size:26px}}
@media(max-height:740px) and (max-width:650px){#room{min-height:290px;height:44svh}.scene-title{top:14px}.scene-title h1{font-size:27px}.controls{gap:8px}}

#hint{text-wrap:balance}

button:disabled{opacity:.45;cursor:default}.auto-walking #hint{color:#edc98a}
