:root{color-scheme:dark;--exhibit-paper:#f3efe6;--exhibit-ivory:#ded7c8;--exhibit-ink:#292823;--exhibit-muted:#bfb8ab;--exhibit-red:#973b31;--exhibit-red-bright:#b45043;--glass-ink:rgba(33,31,27,.78);--glass-line:rgba(245,239,227,.2);--paper-line:rgba(52,45,36,.15);--font-reading:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;--font-exhibit:"Songti SC","STSong","Noto Serif CJK SC","SimSun",serif;--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px)}
*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;height:100dvh;overflow:hidden}body{font-family:var(--font-reading);font-size:14px;background:var(--exhibit-ink);color:var(--exhibit-paper);-webkit-font-smoothing:antialiased;overscroll-behavior:none}button,input{font:inherit}button{color:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent}button:disabled{cursor:default;opacity:.35}button{transition:background-color .16s,color .16s,border-color .16s}button:focus-visible,a:focus-visible,input:focus-visible,canvas:focus-visible{outline:2px solid var(--exhibit-paper);outline-offset:5px}[hidden]{display:none!important}svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;flex:none}.icon-sprite{position:absolute;width:0;height:0;overflow:hidden}#viewer{position:fixed;inset:0;isolation:isolate;background:#302c25}#panorama{display:block;width:100%;height:100%;touch-action:none;cursor:grab;outline:none}#panorama:active{cursor:grabbing}#navigation-hotspots{position:absolute;inset:0;pointer-events:none;z-index:3}.move-hotspot{position:absolute;pointer-events:auto;transform:translate(-50%,-50%);min-width:52px;min-height:52px;border:1px solid rgba(255,255,255,.7);border-radius:50%;background:rgba(249,245,234,.85);color:#38332a;display:flex;align-items:center;justify-content:center;backdrop-filter:blur(8px)}.move-hotspot:hover{background:var(--exhibit-paper);border-color:white}.move-hotspot svg{width:26px;height:26px}.move-hotspot .label,.move-hotspot span{position:absolute;top:calc(100% + 8px);left:50%;transform:translateX(-50%);white-space:nowrap;color:var(--exhibit-paper);font-size:12px;background:rgba(29,26,22,.7);padding:5px 9px;border-radius:3px}
.intro{position:fixed;inset:0;z-index:30;display:flex;flex-direction:column;justify-content:space-between;padding:calc(36px + var(--safe-top)) 48px calc(30px + var(--safe-bottom));background:linear-gradient(90deg,rgba(17,19,16,.76) 0%,rgba(17,19,16,.42) 42%,rgba(17,19,16,.03) 80%),linear-gradient(0deg,rgba(17,19,16,.36),transparent 35%)}.intro-topline{display:flex;align-items:center;gap:14px;font-size:12px;letter-spacing:.16em;color:var(--exhibit-ivory)}.exhibition-mark,.brand-seal{display:inline-grid;place-items:center;flex:none;font-family:var(--font-exhibit);background:var(--exhibit-red);color:var(--exhibit-paper)}.exhibition-mark{width:34px;height:40px;writing-mode:vertical-rl;letter-spacing:.12em;font-size:16px}.intro-edition{margin-left:auto;font-size:11px;letter-spacing:.17em}.intro-content{margin-top:auto;margin-bottom:54px;max-width:620px}.intro-eyebrow{font-size:10px;letter-spacing:.23em;color:var(--exhibit-ivory);margin:0 0 28px}h1{font-family:var(--font-exhibit);font-weight:500;font-size:clamp(54px,6.3vw,88px);line-height:1.12;letter-spacing:.1em;margin:0}h1 span{display:block;font-size:.43em;letter-spacing:.23em;line-height:1.5;margin-top:14px}.intro-description{font-size:14px;line-height:1.9;letter-spacing:.06em;color:var(--exhibit-ivory);margin:28px 0 30px}.enter-button{height:54px;min-width:186px;padding:0 23px;display:inline-flex;align-items:center;justify-content:space-between;gap:40px;background:var(--exhibit-paper);color:var(--exhibit-ink);border:1px solid transparent;border-radius:2px;letter-spacing:.1em;font-size:14px}.enter-button:hover{background:#fffdf7}.enter-button svg{width:23px}.intro-note{display:flex;align-items:center;gap:8px;font-size:11px;letter-spacing:.04em;color:var(--exhibit-muted);margin:19px 0 0}.intro-note svg{width:17px;height:17px}.intro-footer{font-size:10px;letter-spacing:.16em;color:var(--exhibit-muted)}
.hud{position:fixed;inset:0;z-index:10;pointer-events:none}.hud button,.hud aside,.hud nav{pointer-events:auto}.viewer-header{position:absolute;top:0;left:0;right:0;display:flex;align-items:flex-start;justify-content:space-between;gap:24px;padding:calc(25px + var(--safe-top)) 30px 45px;background:linear-gradient(180deg,rgba(15,17,14,.55),rgba(15,17,14,0))}.viewer-brand{display:flex;align-items:center;gap:13px;filter:drop-shadow(0 1px 3px rgba(0,0,0,.2))}.brand-seal{width:30px;height:38px;font-size:14px;writing-mode:vertical-rl;letter-spacing:.1em}.brand-name{font-family:var(--font-exhibit);font-size:18px;letter-spacing:.1em}.brand-secondary{font-family:var(--font-reading);font-size:11px;letter-spacing:.08em;color:var(--exhibit-ivory)}.brand-separator{font-family:var(--font-reading);font-size:12px;padding:0 7px;color:var(--exhibit-muted)}.scene-name{font-size:11px;margin:6px 0 0;color:var(--exhibit-ivory);letter-spacing:.05em}.viewer-bottom{position:absolute;bottom:0;left:0;right:0;padding:40px 30px calc(25px + var(--safe-bottom));display:grid;grid-template-columns:1fr auto 1fr;align-items:end;gap:20px;background:linear-gradient(0deg,rgba(15,17,14,.6),rgba(15,17,14,0))}.bottom-right{display:flex;gap:8px;justify-content:flex-end}.bottom-center{display:flex;flex-direction:column;align-items:center}.utility-button{min-height:44px;border:1px solid var(--glass-line);background:var(--glass-ink);border-radius:4px;display:inline-flex;align-items:center;justify-content:center;gap:10px;font-size:12px;backdrop-filter:blur(16px)}.utility-button:hover{background:rgba(69,65,56,.92)}.utility-button[aria-expanded=true]{background:var(--exhibit-paper);color:var(--exhibit-ink)}.map-toggle{padding:0 15px}.map-toggle svg{width:19px;height:19px}.icon-button{width:44px;padding:0}.icon-button svg{width:19px;height:19px}.control-hint{margin:0 0 12px;font-size:11px;letter-spacing:.06em;color:var(--exhibit-ivory);text-shadow:0 1px 4px rgba(0,0,0,.5);text-align:center}.scene-navigation{display:flex;align-items:center;min-height:46px;border:1px solid var(--glass-line);border-radius:4px;background:var(--glass-ink);backdrop-filter:blur(16px)}.scene-counter{min-width:110px;max-width:230px;text-align:center;font-size:12px;padding:0 13px;letter-spacing:.06em;line-height:1.5}
.map-panel{position:absolute;left:30px;bottom:calc(83px + var(--safe-bottom));width:320px;max-height:calc(100dvh - 180px);overflow:auto;padding:24px;color:var(--exhibit-ink);background:var(--exhibit-paper);border:1px solid rgba(255,255,255,.35);border-radius:4px;pointer-events:auto}.panel-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:15px}.panel-kicker{font-size:9px;font-weight:600;letter-spacing:.19em;color:#82796b;margin:0 0 9px}.panel-heading h2{margin:0;font-family:var(--font-exhibit);font-weight:500;font-size:25px;letter-spacing:.05em}.plain-icon{width:44px;height:44px;display:grid;place-items:center;background:transparent;border:0;border-radius:2px;color:var(--exhibit-ink);margin-top:-10px;margin-right:-10px}.plain-icon:hover{background:rgba(52,45,36,.07)}.plain-icon svg{width:19px;height:19px}.map-content{margin:24px 0 20px;min-height:100px}.map-content svg{display:block;width:100%;height:auto;overflow:visible}.map-content button{color:var(--exhibit-ink);min-height:44px}.map-content .map-node{cursor:pointer}.map-content .map-node:focus-visible{outline:none;stroke:var(--exhibit-red);stroke-width:3}.map-content .current{fill:var(--exhibit-red)}.map-caption{padding-top:15px;margin:0;border-top:1px solid var(--paper-line);color:#746d61;font-size:10px;display:flex;align-items:center;gap:8px}.map-current-dot{width:6px;height:6px;border-radius:50%;background:var(--exhibit-red)}.map-caption-separator{padding:0 1px}.help-dialog{color-scheme:light;width:min(440px,calc(100vw - 32px));max-height:calc(100dvh - 40px);padding:30px;border:1px solid var(--paper-line);border-radius:5px;color:var(--exhibit-ink);background:var(--exhibit-paper);overflow-y:auto}.help-dialog::backdrop{background:rgba(19,21,17,.58);backdrop-filter:blur(6px)}.help-dialog .panel-heading{margin-bottom:27px}.help-section{padding-bottom:18px;margin-bottom:19px;border-bottom:1px solid var(--paper-line)}.help-section h3{margin:0 0 8px;font-size:13px;font-weight:600}.help-section p{margin:0;color:#726b5e;font-size:12px;line-height:1.9}.help-section kbd{display:inline-block;min-width:20px;margin:0 2px;font:10px var(--font-reading);padding:2px 4px;border:1px solid #cfc6b5;border-radius:3px;color:#5e574a;text-align:center}.motion-option{display:flex;align-items:center;gap:12px;cursor:pointer;position:relative;min-height:44px}.motion-option>span:first-child{flex:1}.motion-option strong{font-weight:500;font-size:12px}.motion-option small{display:block;font-size:10px;color:#82796b;margin-top:6px}.motion-option input{position:absolute;right:0;width:42px;height:30px;opacity:0;margin:0;cursor:pointer}.switch-track{width:36px;height:21px;border-radius:12px;background:#c7bfae;position:relative;flex:none;transition:background-color .15s}.switch-track::after{content:"";position:absolute;top:3px;left:3px;width:15px;height:15px;border-radius:50%;background:#fffdf7;transition:transform .15s}.motion-option input:checked+.switch-track{background:var(--exhibit-red)}.motion-option input:checked+.switch-track::after{transform:translateX(15px)}.motion-option input:focus-visible+.switch-track{outline:2px solid var(--exhibit-red);outline-offset:4px}.help-footnote{font-size:10px;color:#928878;margin:23px 0 0}.map-panel button:focus-visible,.help-dialog button:focus-visible{outline-color:var(--exhibit-red)}
.loading{position:fixed;z-index:42;bottom:calc(26px + var(--safe-bottom));left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:10px;padding:12px 17px;background:var(--glass-ink);color:var(--exhibit-paper);border:1px solid var(--glass-line);border-radius:4px;font-size:11px;white-space:nowrap;backdrop-filter:blur(12px)}body:has(.intro[hidden]) .loading{bottom:calc(119px + var(--safe-bottom))}.error-panel{position:fixed;z-index:45;left:50%;top:50%;transform:translate(-50%,-50%);width:min(400px,calc(100vw - 32px));padding:32px;background:var(--exhibit-paper);color:var(--exhibit-ink);border:1px solid var(--paper-line);border-radius:4px}.error-panel h2{font:500 25px var(--font-exhibit);margin:12px 0}.error-panel>p:not(.panel-kicker){color:#726b5e;font-size:13px;line-height:1.8;overflow-wrap:anywhere}.error-panel .enter-button{margin-top:15px;background:var(--exhibit-red);color:var(--exhibit-paper);height:46px}.error-panel .enter-button:hover{background:#7e2e26}.toast{position:fixed;z-index:44;top:calc(100px + var(--safe-top));left:50%;transform:translateX(-50%);max-width:calc(100vw - 36px);padding:12px 18px;background:var(--glass-ink);border:1px solid var(--glass-line);border-radius:3px;font-size:12px;line-height:1.6;backdrop-filter:blur(12px);text-align:center}.no-script{position:fixed;inset:0;z-index:100;display:grid;place-items:center;background:var(--exhibit-ink);padding:30px;text-align:center}.mobile-copy{display:none}
@media (max-width:760px),(pointer:coarse) and (max-width:1024px){.desktop-copy{display:none}.mobile-copy{display:inline}.intro{padding:calc(24px + var(--safe-top)) 25px calc(22px + var(--safe-bottom));background:linear-gradient(90deg,rgba(17,19,16,.68),rgba(17,19,16,.23)),linear-gradient(0deg,rgba(17,19,16,.6),transparent 60%)}.intro-topline{font-size:10px;gap:11px;letter-spacing:.08em}.exhibition-mark{width:29px;height:35px;font-size:14px}.intro-edition{display:none}.intro-content{margin-bottom:38px}.intro-eyebrow{font-size:8px;letter-spacing:.16em;margin-bottom:22px}h1{font-size:57px;letter-spacing:.08em}h1 span{font-size:29px;margin-top:11px}.intro-description{font-size:12px;margin-top:23px;margin-bottom:25px}.enter-button{min-width:176px;height:51px}.intro-note{font-size:10px}.intro-footer{font-size:9px}.viewer-header{padding:calc(20px + var(--safe-top)) 20px 35px}.viewer-brand{gap:10px}.brand-seal{width:26px;height:34px;font-size:13px}.brand-name{font-size:16px}.brand-secondary{font-size:10px}.brand-separator{padding:0 4px}.scene-name{font-size:10px;margin-top:5px}.viewer-bottom{padding:38px 16px calc(19px + var(--safe-bottom));gap:8px;grid-template-columns:44px minmax(0,1fr) auto}.bottom-left{min-width:0}.map-toggle{width:44px;padding:0}.map-toggle>span{display:none}.bottom-right{gap:6px}.bottom-right #fullscreen-button{display:none}.control-hint{font-size:10px;max-width:220px;line-height:1.5;margin-bottom:9px}.scene-navigation{min-height:44px;max-width:100%}.scene-counter{min-width:76px;padding:0 7px;font-size:11px;max-width:170px}.map-panel{left:16px;bottom:calc(80px + var(--safe-bottom));width:min(320px,calc(100vw - 32px));padding:22px}.help-dialog{padding:25px}.toast{top:calc(89px + var(--safe-top));font-size:11px}.move-hotspot{min-width:48px;min-height:48px}body:has(.intro[hidden]) .loading{bottom:calc(117px + var(--safe-bottom))}}
@media (max-height:540px) and (orientation:landscape){.intro{padding-top:20px;padding-bottom:18px}.intro-content{margin-bottom:12px}.intro-eyebrow{margin-bottom:12px}h1{font-size:40px}h1 span{font-size:21px;margin-top:6px}.intro-description{font-size:11px;margin:14px 0 16px}.intro-description br{display:none}.intro-note{display:none}.intro-footer{display:none}.intro-content{max-width:540px}.enter-button{height:44px}.intro-topline{margin-bottom:15px}.viewer-header{padding-top:16px}.viewer-bottom{padding-bottom:14px}.control-hint{display:none}.map-panel{max-height:calc(100dvh - 110px)}.toast{top:18px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important;animation-duration:.001ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important}}

/* Movement stays accessible even when the floor is outside the viewing angle. */
body:not([data-entered="true"]) .hud{display:none!important}
body:not([data-entered="true"]) #navigation-hotspots{display:none!important}
.move-controls{display:flex;align-items:center;gap:3px;padding:4px;margin-bottom:11px;border:1px solid rgba(255,255,255,.45);border-radius:4px;background:rgba(243,239,230,.94);color:var(--exhibit-ink);backdrop-filter:blur(12px);pointer-events:auto}

.move-controls button{display:flex;align-items:center;justify-content:center;gap:7px;min-width:72px;min-height:44px;padding:0 9px;border:0;border-radius:2px;background:transparent;color:var(--exhibit-ink);font-size:11px}
.move-controls button:hover:not(:disabled){background:rgba(51,43,32,.08)}
.move-controls button:focus-visible{outline-color:var(--exhibit-red);outline-offset:1px}
.move-controls .direction-glyph{font-size:19px;line-height:1;font-family:var(--font-reading)}
.move-controls kbd{font-size:9px;color:#82796b;border:1px solid #d3caba;min-width:17px;min-height:17px;line-height:15px;text-align:center;border-radius:2px}
@media(max-width:760px),(pointer:coarse) and (max-width:1024px){.move-controls{gap:0;margin-bottom:10px;padding:3px;max-width:calc(100vw - 50px)}.move-controls button{min-width:48px;min-height:44px;padding:0 7px;gap:5px}.move-controls button>span:not(.direction-glyph){font-size:10px}.move-controls kbd{display:none}.move-controls .direction-glyph{font-size:17px}}
@media(max-width:380px){.move-controls button{min-width:44px;padding:0 5px;gap:3px}.move-controls button>span:not(.direction-glyph){font-size:9px}.scene-counter{min-width:68px}}
@media(max-height:540px) and (orientation:landscape){.move-controls{margin-bottom:7px}.move-controls button{min-height:44px}}

#panorama{transition:opacity .16s ease}
body[data-mobile=true] .desktop-copy,body[data-mobile=true] .move-controls kbd{display:none!important}
body[data-mobile=true] .mobile-copy{display:inline}
body[data-mobile=false] .mobile-copy{display:none}
.map-content>svg{width:100%;height:auto;max-height:50dvh;stroke:none}
.map-node{cursor:pointer;outline:none}.map-node:focus circle:last-of-type{stroke-width:4}
body[data-busy=true] .move-controls{opacity:.45;pointer-events:none}
@media(max-width:820px){.viewer-bottom{grid-template-columns:44px minmax(0,1fr) 44px}.bottom-right #fullscreen-button{display:none}.move-controls button{min-width:44px;padding:0 5px}.move-controls kbd{display:none}.move-controls{max-width:none}.control-hint{max-width:220px}}
.intro .enter-button:disabled{opacity:.5}
.switch-track{pointer-events:none}
/* Exhibit sparks share one transparent 3D overlay; the panorama remains still underneath. */
#exhibit-sparks,#exhibit-hotspots{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:4}
#exhibit-hotspots{z-index:5}
.spark-hotspot{position:absolute;transform:translate(-50%,-50%);border:0;border-radius:50%;background:transparent;min-width:44px;min-height:44px;padding:0;pointer-events:auto;touch-action:manipulation}
.spark-hotspot:focus-visible{outline:1px solid rgba(255,224,162,.9);outline-offset:4px}
.spark-hotspot .spark-label{position:absolute;left:50%;top:calc(100% + 8px);transform:translateX(-50%);white-space:nowrap;border:1px solid rgba(255,223,166,.2);background:rgba(44,28,17,.82);color:#fff3d9;padding:6px 10px;border-radius:3px;font-size:11px;line-height:1.5;opacity:0;pointer-events:none;transition:opacity .16s}
.spark-hotspot:hover .spark-label,.spark-hotspot:focus-visible .spark-label{opacity:1}
body:not([data-entered=true]) #exhibit-sparks,body:not([data-entered=true]) #exhibit-hotspots,body[data-busy=true] #exhibit-sparks,body[data-busy=true] #exhibit-hotspots{display:none}
@media(pointer:coarse){.spark-hotspot:hover .spark-label{opacity:0}.spark-hotspot:focus-visible .spark-label{opacity:1}}

.intro-exhibition-name{min-width:0;max-width:32em;line-height:1.65;text-wrap:balance}.intro-edition{flex-shrink:0}

/* A quiet pause before the exhibition, with the room still visible behind it. */
.entry-loading{position:fixed;inset:0;z-index:44;display:grid;place-items:center;overflow:hidden;padding:calc(32px + var(--safe-top)) 24px calc(32px + var(--safe-bottom));background:rgba(21,18,14,.64);color:var(--exhibit-paper);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);opacity:1;transition:opacity .6s ease;cursor:wait;touch-action:none}
.entry-loading-content{display:flex;flex-direction:column;align-items:center;text-align:center;transform:translateY(-5px)}
.entry-loading-exhibition{margin:0 0 31px;font-family:var(--font-exhibit);font-size:14px;line-height:1.6;letter-spacing:.22em;color:var(--exhibit-ivory)}
.entry-loading-progress{display:flex;align-items:baseline;justify-content:center;gap:8px;margin:0;font-family:var(--font-exhibit);font-size:clamp(100px,14vw,174px);font-weight:400;line-height:1;font-variant-numeric:lining-nums tabular-nums;letter-spacing:-.035em}
#entry-loading-number{display:block;text-align:center}
.entry-loading-percent{font-size:.28em;letter-spacing:0;color:var(--exhibit-ivory)}
.entry-loading-caption{margin:27px 0 0;font-size:11px;line-height:1.6;letter-spacing:.24em;color:var(--exhibit-muted)}
.entry-loading.is-complete{opacity:0;pointer-events:none;cursor:default}
body[data-preparing=true] #loading{display:none!important}
@media(max-width:760px){.entry-loading-exhibition{font-size:12px;margin-bottom:28px}.entry-loading-progress{font-size:112px}.entry-loading-caption{font-size:10px;margin-top:25px}}
@media(max-height:540px) and (orientation:landscape){.entry-loading-exhibition{margin-bottom:18px}.entry-loading-progress{font-size:100px}.entry-loading-caption{margin-top:17px}}
