:root{--ink:#292e2b;--cream:#f2e8d6;--gold:#d5bc8d;--line:rgba(234,216,182,.25);font-family:Inter,'Microsoft YaHei','PingFang SC',sans-serif;color:var(--cream);font-size:16px}*{box-sizing:border-box}html,body{margin:0;height:100%;overflow:hidden;background:var(--ink)}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer;color:inherit}button:focus-visible,a:focus-visible{outline:3px solid #ddc58f;outline-offset:5px}button:disabled{opacity:.38;cursor:default}button[hidden],[hidden]{display:none!important}.topbar{position:absolute;inset:0 0 auto;z-index:20;height:100px;padding:24px 3.4%;display:flex;align-items:center;justify-content:space-between;background:linear-gradient(#19221bd6,transparent)}.brand{display:flex;align-items:center;gap:15px;color:inherit;text-decoration:none;font-size:19px;letter-spacing:3px}.monogram{font-family:Georgia,serif;width:47px;height:47px;display:grid;place-items:center;border:1px solid var(--gold);border-radius:50%;font-size:29px;color:var(--gold)}.brand-sub{display:block;font-size:11px;letter-spacing:2px;margin-top:7px;opacity:.75}.where{display:flex;gap:10px;align-items:center;font-size:14px;letter-spacing:1px}.status-orb{width:6px;height:6px;border-radius:50%;background:#d6c097;box-shadow:0 0 10px #edcb7c}.header-actions{display:flex;gap:16px}.quiet{border:0;border-bottom:1px solid var(--line);background:transparent;padding:12px 0;font-size:14px}.quiet span{margin-left:10px;border:1px solid var(--line);border-radius:50%;padding:2px 7px}#viewport{position:absolute;inset:0;overflow:hidden;background:#ded7c9}#world{position:absolute;width:100%;height:100%;transform-origin:50% 55%;transition:transform 1.4s cubic-bezier(.2,.7,.2,1),filter 1s}#scene-image{width:100%;height:100%;object-fit:cover;user-select:none}#route{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}#route-line{fill:none;stroke:#e7cd95;stroke-width:1.8;stroke-dasharray:4 6;opacity:.85}.vignette{position:absolute;inset:0;pointer-events:none;background:linear-gradient(0deg,#15221cd9,transparent 40%,transparent 65%,#16231a30)}#visitor{position:absolute;width:54px;height:85px;left:50%;top:88%;transform:translate(-50%,-90%);z-index:6;pointer-events:none}#visitor img{position:relative;width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 4px 3px #0007);transform-origin:50% 80%}.visitor-shadow{position:absolute;width:32px;height:9px;border-radius:50%;background:#19201960;bottom:4px;left:11px;filter:blur(3px)}.visitor-name{position:absolute;top:100%;left:50%;transform:translateX(-50%);font-size:11px;letter-spacing:1px;white-space:nowrap;background:#28382acc;padding:4px 9px;border-radius:12px}.walking img{animation:walk .36s infinite alternate}.walking .visitor-name{opacity:0}@keyframes walk{0%{transform:rotate(-5deg) translateY(-3px)}50%{transform:rotate(0) translateY(0)}100%{transform:rotate(5deg) translateY(-3px)}}#hotspots{position:absolute;inset:0}.hotspot{position:absolute;transform:translate(-50%,-50%);border:1px solid #d5c39699;border-radius:3px;background:#25382ad9;backdrop-filter:blur(12px);box-shadow:0 8px 25px #0003;padding:11px 18px;text-align:left;min-height:48px;transition:.25s;z-index:5}.hotspot:hover{background:#466043;transform:translate(-50%,-53%)}.hotspot small{display:block;font-size:10px;letter-spacing:2px;color:#d8c9ac;margin-bottom:6px}.hotspot .label{font-size:15px;letter-spacing:2px}.hotspot .arrow{margin-left:17px;color:var(--gold)}.hotspot:after{content:'';position:absolute;left:50%;top:calc(100% + 7px);height:22px;width:1px;background:#e8d5a9}.hotspot .visited{font-size:11px;margin-left:8px;color:#bdd3ad}#intro{position:absolute;left:4%;bottom:128px;z-index:9;pointer-events:none;text-shadow:0 2px 18px #0009}.eyebrow{font-size:11px;letter-spacing:3px;font-weight:600;color:var(--gold);margin:0 0 22px}h1{font-family:Georgia,'Songti SC','SimSun',serif;font-weight:400;font-size:clamp(32px,3vw,50px);line-height:1.35;letter-spacing:5px;margin:0 0 18px}#intro>p:not(.eyebrow){font-size:14px;line-height:1.9;opacity:.85}.edition{font-size:11px;letter-spacing:2px;display:flex;align-items:center;gap:14px;margin-top:23px}.edition i{width:45px;height:1px;background:#e8dab677}.bottom-bar{position:absolute;bottom:0;left:0;right:0;padding:22px 3.5% 25px;display:flex;align-items:center;justify-content:space-between;z-index:10;background:linear-gradient(transparent,#15221ca8)}#hint{display:flex;align-items:center;gap:12px;font-size:13px;letter-spacing:1px}.mouse-icon{border:1px solid var(--line);padding:9px 11px;border-radius:50%;font-size:18px}#passport{display:flex;align-items:center;gap:12px;font-size:11px;letter-spacing:1px}#visited-count{font-family:Georgia,serif;font-size:25px}#stamps{display:flex;gap:5px;margin-left:5px}.stamp{width:8px;height:8px;border:1px solid #c7b188;border-radius:50%}.stamp.done{background:#d4c095}#journey{position:absolute;z-index:40;left:50%;bottom:145px;transform:translateX(-50%);padding:13px 24px;border-radius:30px;background:#233529e8;color:#eee3ca;font-size:14px;opacity:0;transition:opacity .3s;pointer-events:none;white-space:nowrap}#journey.show{opacity:1}#transition{position:absolute;inset:0;z-index:30;pointer-events:none;background:#f1e8d4;opacity:0;transition:opacity .65s}#transition.on{opacity:.9}#transition span{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);color:#5c5949;letter-spacing:4px;font-size:18px}#target-ring{position:absolute;width:19px;height:10px;border:1px solid #e5c789;border-radius:50%;transform:translate(-50%,-50%);pointer-events:none;opacity:0}#target-ring.active{opacity:.9}dialog{max-height:85dvh;max-width:560px;width:calc(100% - 32px);background:#f4eedf;color:#31382f;border:1px solid #bda780;padding:36px;box-shadow:0 25px 100px #0007}dialog::backdrop{background:#0d1a16bb;backdrop-filter:blur(8px)}dialog h2{font-family:Georgia,'Songti SC',serif;font-size:27px;font-weight:400;margin:0 0 24px}dialog p{line-height:1.9;font-size:16px}.small{font-size:13px!important;color:#747563}.close{position:absolute;top:12px;right:15px;border:0;background:transparent;font-size:30px}.solid{padding:13px 24px;background:#334a39;border:1px solid #334a39;color:#fff8ea;margin-top:10px}.solid:hover{background:#49614c}#room-nav{position:absolute;z-index:15;bottom:28px;left:50%;transform:translateX(-50%);display:flex;background:#233429ef;border:1px solid var(--line);border-radius:6px;box-shadow:0 12px 35px #0003;max-width:94%;backdrop-filter:blur(14px)}#room-nav button{background:none;border:0;border-right:1px solid var(--line);padding:13px 22px;white-space:nowrap;font-size:14px}#room-nav button:last-child{border:0}#room-nav button:hover{background:#53694b}#room-nav small{display:block;font-size:10px;color:#cfbb96;margin-bottom:6px;letter-spacing:1px}.scene-map #intro{display:none}.scene-map #scene-image{object-fit:contain}.scene-map .vignette{background:linear-gradient(0deg,#1d3026c9,transparent 25%,transparent 80%,#21342a88)}.scene-map #hint{position:absolute;bottom:100px;left:50%;transform:translateX(-50%);color:#fff;white-space:nowrap;text-shadow:0 1px 3px #000}.scene-map #passport{margin-left:auto}.scene-map #visitor{width:43px;height:67px}.scene-map .hotspot{padding:8px 13px}.scene-map .topbar{background:linear-gradient(#23372fe6,transparent)}
@media(max-width:700px){.topbar{height:82px;padding:17px 18px}.brand{font-size:16px;gap:10px}.monogram{width:37px;height:37px;font-size:23px}.brand-sub{font-size:10px}.where{position:absolute;top:90px;left:20px;font-size:12px}.header-actions{gap:10px}.quiet{font-size:12px}.quiet span{display:none}#intro{bottom:148px;left:22px}#intro .eyebrow{font-size:9px;letter-spacing:2px}h1{font-size:32px}#intro>p:not(.eyebrow){font-size:12px}.edition{display:none}.bottom-bar{padding:19px 18px;align-items:flex-end}#hint{font-size:11px;line-height:1.7;max-width:61%}#passport{gap:7px;flex-wrap:wrap;width:75px;justify-content:flex-end}#visited-count{font-size:23px}#passport>span:nth-child(2){display:none}#stamps{margin:0}.hotspot{padding:9px 12px}.hotspot .label{font-size:13px}.hotspot small{font-size:8px}#room-nav{bottom:22px;width:94%;justify-content:space-around}#room-nav button{padding:13px 7px;font-size:12px;min-width:0;flex:1}#room-nav small{font-size:9px;letter-spacing:0}.scene-map #hint{bottom:95px;max-width:100%;font-size:11px}.scene-map #passport{position:absolute;right:18px;bottom:112px}.scene-map .hotspot{min-height:44px;padding:6px 8px}.scene-map .hotspot small{display:none}.scene-map .hotspot .arrow{display:none}.scene-map .hotspot .label{font-size:12px;letter-spacing:0}.scene-map .hotspot:after{height:10px}.scene-map #visitor{width:35px;height:54px}#journey{font-size:12px;bottom:160px}dialog{padding:28px 22px}dialog p{font-size:15px}}

/* COMPLETE GALLERY */
/* Static review presentation only. Demo development remains paused. */
.scene-map #viewport{background:radial-gradient(ellipse at 50% 45%,#f2ede3,#c7c1b3)}
.scene-map #scene-image{mix-blend-mode:multiply}
.scene-map .vignette{background:linear-gradient(0deg,#263b2ded,transparent 19%,transparent 83%,#23382ace)}
#room-scene{position:absolute;inset:0;transform-origin:50% 65%;transition:transform .9s,opacity .7s}
.room-backdrop{position:absolute;inset:0;background:url('assets/gallery.webp') center/cover}
.scene-room .topbar{background:linear-gradient(#15231fe0,transparent)}
.scene-room .vignette{background:linear-gradient(0deg,#1d2b25e8,transparent 26%,transparent 77%,#15231f35)}
.gallery-heading{position:absolute;left:4%;top:145px;color:#343b30;z-index:2;width:230px}
.gallery-heading .eyebrow{color:#726445;font-size:11px;line-height:1.8;letter-spacing:2px;margin-bottom:15px}
.gallery-heading h1{font-size:34px;letter-spacing:4px;margin-bottom:16px}
.gallery-heading>p:last-child{font-size:13px;line-height:1.9;max-width:190px;color:#696556}
.room-back{position:absolute;top:118px;right:3.5%;z-index:10;background:#f4ead9db;border:1px solid #aa9671;color:#42513b;font-size:14px;padding:11px 18px;box-shadow:0 4px 14px #0001}
#gallery-wall{position:absolute;top:19%;left:15%;width:70%;height:49%;perspective:1100px;transition:opacity .25s,transform .4s}
#gallery-wall.sliding{opacity:0;transform:translateX(30px)}
#main-art,.side-art{position:absolute;background:#f4eee2;border:1px solid #9f8252;box-shadow:0 0 0 4px #c3ad82,0 0 0 6px #77674d,8px 17px 22px #0005;padding:12px;transition:transform .35s,filter .35s}
#main-art{left:50%;top:0;transform:translateX(-50%);height:100%;max-width:59%;width:auto}
#main-art img{display:block;max-width:100%;height:100%;width:auto;object-fit:contain}
.inspect{position:absolute;left:50%;bottom:16px;transform:translateX(-50%);background:#22392ddb;color:#f6ebd5;font-size:11px;letter-spacing:1px;padding:7px 13px;white-space:nowrap;opacity:.95}
.side-art{height:64%;max-width:21%;top:19%;padding:9px;filter:brightness(.88)}
.side-art img{height:100%;width:100%;object-fit:contain;display:block}
.side-art.left{left:1%;transform:rotateY(26deg)}
.side-art.right{right:1%;transform:rotateY(-26deg)}
.art-caption{position:absolute;top:71%;left:50%;transform:translateX(-50%);text-align:center;color:#31392e;z-index:3;min-width:450px;text-shadow:0 1px 2px #fff7}
.art-caption p{margin:0;line-height:1.7}
#art-number{font-size:10px;letter-spacing:2px;color:#76684e}
.art-caption h2{font-family:'Songti SC','SimSun',serif;font-size:25px;font-weight:400;letter-spacing:2px;margin:9px 0 5px}
#art-note{font-size:12px;color:#5e6656}
.gallery-controls{position:absolute;bottom:29px;left:50%;transform:translateX(-50%);z-index:15;display:flex;align-items:center;gap:15px}
.gallery-controls button{padding:14px 23px;min-height:48px;border:1px solid #c0a67466;background:#253b30e8;font-size:13px;white-space:nowrap}
.gallery-controls button span{margin:0 7px}
.gallery-controls #all-art{background:#e5d4b4;color:#2d4235;border-color:#d2ba8a}
.gallery-controls #all-art span{font-family:Georgia,serif;font-size:15px;border-left:1px solid #998866;margin-left:15px;padding-left:14px}
.room-person{position:absolute;width:53px;height:88px;bottom:109px;left:27%;filter:drop-shadow(2px 6px 4px #0004);z-index:4;transition:transform .45s,bottom .8s}
.room-person img{width:100%;height:100%;object-fit:contain}
.room-person.leaving{bottom:-40px;transform:scale(1.5)}
.pull-back{transform:scale(.92)}
.lobby-poster{position:absolute;left:50%;top:15%;transform:translateX(-50%);width:74%;height:66%;max-width:1100px;display:grid;grid-template-columns:39% 61%;background:#eae2d0;box-shadow:0 0 0 4px #baa57c,0 0 0 6px #71614a,12px 24px 40px #0005;color:#364332;overflow:hidden}
.portrait-wrap{position:relative;overflow:hidden;background:#454746}
.portrait-wrap img{height:100%;width:100%;object-fit:cover;object-position:56% 50%;filter:grayscale(.32)}
.portrait-wrap:after{content:'';position:absolute;inset:60% 0 0;background:linear-gradient(transparent,#26342bcc)}
.portrait-wrap span{position:absolute;bottom:34px;left:30px;z-index:2;color:#e6d6b6;font-size:12px;letter-spacing:3px;line-height:2}
.lobby-poster article{padding:38px 48px;overflow:auto;scrollbar-width:thin}
.lobby-poster .eyebrow{color:#8e7953;font-size:10px;margin-bottom:17px}
.lobby-poster h1{font-size:38px;letter-spacing:6px;margin-bottom:16px}
.lobby-lead{font-family:'Songti SC','SimSun',serif;font-size:21px!important;line-height:1.6!important;color:#485440;margin:0 0 17px}
.lobby-poster article>p{font-size:14px;line-height:1.9}
.lobby-poster details{border-top:1px solid #b5a98d;border-bottom:1px solid #b5a98d;margin-top:22px}
.lobby-poster summary{padding:15px 0;cursor:pointer;font-size:14px;list-style:none;display:flex;justify-content:space-between}
.experience p{font-size:13px;line-height:1.8;padding-bottom:12px;border-bottom:1px solid #d2c6ad}
.contact{display:block;color:#3b523e;text-decoration:none;font-size:13px;padding:17px 0 2px}
.contact span{display:inline-block;margin-left:14px;font-size:12px;color:#737961}
.scene-lobby .room-person{left:48%;bottom:82px;width:60px;height:98px}
#works-dialog{max-width:1200px;width:90%;max-height:86dvh;background:#eae2d2;padding:35px 40px}
#works-dialog .eyebrow{color:#85704c;margin-bottom:10px}
#works-dialog h2{font-size:24px;margin-bottom:22px}
#works-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:20px}
#works-grid button{padding:12px;background:#f6f0e5;border:1px solid #c5b99f;color:#3e4939;text-align:left;box-shadow:0 3px 8px #0001}
#works-grid img{width:100%;height:180px;object-fit:contain;background:#e4ddcf;display:block}
#works-grid span{display:block;padding:11px 1px 2px}
#works-grid small{font-size:10px;color:#8b795e;letter-spacing:1px;display:block;margin-bottom:6px}
#works-grid b{font-weight:500;font-size:13px;display:block;line-height:1.5}
#works-grid em{font-style:normal;color:#8c8d79;font-size:11px;display:block;margin-top:7px;line-height:1.5}
#zoom-dialog{padding:0;max-width:none;width:96%;height:94dvh;max-height:94dvh;background:#1c2923;color:#f1e7d5;border:1px solid #9b896866;overflow:hidden}
.zoom-toolbar{display:flex;justify-content:space-between;align-items:center;height:65px;padding:0 25px;border-bottom:1px solid #ba9c6633;font-size:14px}
.zoom-toolbar div{display:flex;gap:8px}.zoom-toolbar button{background:none;border:1px solid #a5916f55;padding:9px 14px;font-size:14px}
#zoom-scroll{height:calc(100% - 106px);overflow:auto;display:grid;place-items:center;padding:22px;touch-action:pan-x pan-y pinch-zoom}
#zoom-image{display:block;box-shadow:0 12px 50px #0008;max-width:100%;max-height:100%;object-fit:contain}
.zoom-hint{text-align:center;font-size:11px;letter-spacing:2px;margin:7px 0 0;color:#b8b69e}
@media(max-width:700px){
 .scene-map #world{top:137px!important}.scene-map #visitor{width:29px;height:44px}.scene-map .visitor-name{display:none}.scene-map #room-nav{top:405px;bottom:110px;display:grid;grid-template-columns:1fr 1fr;gap:7px;background:transparent;border:0;box-shadow:none}.scene-map #room-nav button{border:1px solid #bba88288;border-radius:3px;text-align:left;padding:14px;font-size:15px;white-space:normal;background-color:#304b3b;background-size:auto 100%;background-repeat:no-repeat;background-position:right}.scene-map #room-nav button:first-child{grid-column:1/-1;background-image:linear-gradient(90deg,#304b3b 45%,#304b3b10),url('assets/portrait.webp')}.scene-map #room-nav button:nth-child(2){background-image:linear-gradient(90deg,#304b3b 15%,#304b3b90),url('assets/work-04-0.webp')}.scene-map #room-nav button:nth-child(3){background-image:linear-gradient(90deg,#304b3b 15%,#304b3b90),url('assets/work-15-0.webp')}.scene-map #room-nav button:nth-child(4){background-image:linear-gradient(90deg,#304b3b 15%,#304b3b90),url('assets/work-21-0.webp')}.scene-map #room-nav button:nth-child(5){background-image:linear-gradient(90deg,#304b3b 15%,#304b3b90),url('assets/work-28-0.webp')}.scene-map #room-nav small{font-size:11px;margin-bottom:9px}.scene-map #hint{bottom:32px;left:18px;transform:none;font-size:10px;width:75%}.scene-map #passport{bottom:25px}.scene-map #hint .mouse-icon{display:none}.scene-map .vignette{background:linear-gradient(0deg,#223a2eed,transparent 30%,transparent 78%,#23382ace)}
 .gallery-heading{top:143px;left:22px;width:150px}.gallery-heading h1{font-size:25px;margin-bottom:0}.gallery-heading .eyebrow{font-size:8px;margin-bottom:7px}.gallery-heading>p:last-child{display:none}.room-back{top:139px;right:20px;font-size:12px;padding:10px}
 #gallery-wall{top:29%;height:39%;left:5%;width:90%}#main-art{max-width:86%;padding:8px}.side-art{display:none}.art-caption{top:71%;min-width:0;width:90%}.art-caption h2{font-size:21px}#art-note{font-size:11px}#art-number{font-size:9px}.gallery-controls{bottom:24px;gap:6px;width:94%;justify-content:center}.gallery-controls button{padding:12px 10px;font-size:11px}.gallery-controls #all-art span{padding-left:8px;margin-left:8px}.gallery-controls button span{margin:0 2px}.scene-room .bottom-bar{bottom:63px;padding-bottom:13px}.scene-room .bottom-bar #hint{font-size:10px;max-width:75%}.scene-room .bottom-bar .mouse-icon{display:none}.scene-room #passport{width:62px}.room-person{left:12%;bottom:117px;width:35px;height:58px}.scene-room .where{top:95px}
 .lobby-poster{top:24%;height:60%;width:88%;display:block;overflow:auto}.portrait-wrap{width:34%;height:190px;float:left;margin:22px 18px 9px 22px}.portrait-wrap img{object-position:55% 45%}.portrait-wrap span{display:none}.lobby-poster article{overflow:visible;padding:24px}.lobby-poster .eyebrow{font-size:8px;line-height:1.7}.lobby-poster h1{font-size:27px;margin:14px 0}.lobby-lead{font-size:17px!important}.lobby-poster article>p{font-size:13px}.lobby-poster details{clear:both}.contact span{margin:7px 0}.scene-lobby .room-person{display:none}
 #works-dialog{width:94%;padding:28px 18px}#works-dialog h2{font-size:20px;line-height:1.5}#works-grid{grid-template-columns:repeat(2,1fr);gap:12px}#works-grid img{height:140px}#works-grid button{padding:8px}#works-grid b{font-size:12px}#works-grid em{font-size:10px}.zoom-toolbar{padding:0 10px;font-size:11px;gap:8px}.zoom-toolbar button{padding:8px;font-size:12px}.zoom-toolbar div{gap:4px}#zoom-reset{display:none}.zoom-hint{font-size:9px;letter-spacing:0}
}
/* Revised map visual, for static review only. */
.scene-map #viewport{background:radial-gradient(ellipse at 50% 41%,#f6eee0 15%,#e6dac4 72%,#d9cbb0 100%)}
.scene-map #world{mix-blend-mode:multiply;background:transparent}
.scene-map #scene-image{mix-blend-mode:normal;filter:contrast(1.025) saturate(.9)}
.scene-map .topbar{height:79px;background:#263b30ed;border-bottom:1px solid #c2ac7e40;padding-top:16px;padding-bottom:16px}
.scene-map .vignette{background:linear-gradient(0deg,#243b2ef2 0%,#243b2eeb 7%,transparent 17%,transparent 90%,#695b4220 100%)}
.scene-map #hint{left:3.4%;bottom:23px;transform:none;font-size:12px;text-shadow:none}
.scene-map #hint .mouse-icon{display:none}
.scene-map #room-nav{bottom:16px;box-shadow:0 8px 20px #18261e33}
.scene-map #room-nav button{padding:12px 23px}
.scene-map #passport{position:absolute;right:3.5%;bottom:24px}
.scene-map .hotspot{background:#2c4638ed;border-color:#bda574;padding:10px 16px;box-shadow:0 5px 16px #493d262b}
.scene-map .hotspot:after{background:#a28653}
.scene-map #visitor{filter:drop-shadow(0 3px 2px #89785e44)}
/* Harmonize the floor plan using its own cut silhouette and a restrained stone floor. */
.scene-map #viewport{background-color:#e7ddcd;background-image:radial-gradient(ellipse at 50% 44%,#f1e9db 0%,#e8dece 72%,#ded2be 100%),repeating-linear-gradient(0deg,transparent 0 46px,#83785f08 46px 47px),repeating-linear-gradient(90deg,transparent 0 46px,#83785f08 46px 47px)}
.scene-map #world{z-index:1;mix-blend-mode:normal}
.scene-map #scene-image{mix-blend-mode:normal;filter:drop-shadow(0 5px 6px #4a402d20)}
.scene-map .vignette{background:linear-gradient(0deg,#243b2ef4 0%,#243b2eea 7%,transparent 17%,transparent 90%,#263b3010 100%)}

/* Interactive presentation and compact screens */
.scene-map #world{background:transparent}.scene-map .vignette{z-index:2}
#app[data-scene="outside"] #world.tracking{transition:transform .12s linear}
#journey{max-width:90%;white-space:normal;text-align:center}
.lobby-poster article>p{font-size:16px}.experience p{font-size:14px}
.walking .visitor-shadow{animation:footfall .36s infinite alternate}
@keyframes footfall{from{transform:translateX(-4px) scale(.85)}to{transform:translateX(4px) scale(1.05)}}
@media(max-width:700px){
 .scene-map #world{top:125px!important}.scene-map #room-nav{top:calc(140px + 55vw);bottom:100px}
 .scene-map #room-nav button{padding:10px 14px}.scene-map #room-nav small{margin-bottom:5px}
 .scene-map #hint{left:18px;bottom:28px;max-width:70%;font-size:10px}
 .scene-map #passport{right:18px;bottom:24px}
 .scene-map .hotspot{padding:6px;min-height:34px}.scene-map .hotspot .label{font-size:10px}
 .scene-map .hotspot small{display:none}.scene-map .hotspot:after{height:5px}
 .scene-lobby .room-person{display:block;left:75%;bottom:87px;width:30px;height:49px}
 .scene-lobby .room-person.leaving{bottom:-40px}
 .scene-map .where{color:#42533e}.scene-map #overview{display:none}
 #intro{bottom:143px;pointer-events:none}#intro h1{font-size:27px}#intro>p:not(.eyebrow){font-size:12px}
 .scene-map #world~.vignette{background:linear-gradient(0deg,#243b2e 0%,transparent 24%)}
}
@media(max-height:650px) and (min-width:701px){.gallery-heading{top:110px}.room-back{top:100px}.gallery-heading h1{font-size:26px}.gallery-heading>p:last-child{display:none}.art-caption h2{font-size:18px;margin:4px}.gallery-controls{bottom:15px}.scene-room #hint{display:none}.lobby-poster{top:20%;height:61%}}
.portrait-wrap img{object-fit:contain;object-position:center center;background:#737472;filter:none}
@media(max-width:700px){.portrait-wrap img{object-fit:contain;object-position:center;background:#737472}}

.contact-details{border-bottom:1px solid #b5a98d;margin-top:10px;color:#364332}
.contact-details summary{padding:14px 0;cursor:pointer;list-style:none;display:flex;justify-content:space-between;font-size:14px}
.contact-info{padding:0 0 8px}.contact-info p{display:grid;grid-template-columns:80px 1fr;gap:8px;align-items:start;margin:9px 0;font-size:14px!important;line-height:1.65!important}.contact-info b{font-weight:500;color:#776748}.contact-info a{color:#3b523e;overflow-wrap:anywhere}.contact-info span{color:#54594b}
@media(max-width:700px){.contact-info p{grid-template-columns:60px 1fr;font-size:13px!important}.contact-details summary{font-size:13px}}

.portrait-wrap{background:#27392e}
.portrait-wrap img{position:absolute;inset:0 0 auto;width:100%;height:auto;aspect-ratio:3/2;object-fit:contain;background:transparent}
.portrait-wrap:after{inset:auto 0 0;height:33.34%;background:linear-gradient(180deg,#26342b00 0%,#26342bcc 28%,#26342bf2 100%)}
.portrait-wrap span{top:76%;bottom:auto}
@media(max-width:700px){.portrait-wrap{height:auto;aspect-ratio:3/2;background:transparent}.portrait-wrap:after{display:none}.portrait-wrap span{display:none}.portrait-wrap img{width:100%;height:auto;aspect-ratio:3/2;object-fit:contain;background:transparent}}

/* Nini signature mark from the supplied logo artwork */
.monogram{position:relative;border:1px solid #cbb98c;border-radius:50%;background:#f2eadb;color:transparent;width:48px;height:48px;flex:0 0 48px;overflow:hidden}
.monogram img{display:block;position:absolute;left:-13px;top:-14px;width:75px;height:75px;max-width:none;object-fit:fill}
.lobby-poster{grid-template-columns:60% 40%}
@media(max-width:700px){.monogram{width:38px;height:38px;flex-basis:38px}.monogram img{left:-13px;top:-14px;width:65px;height:65px}.lobby-poster{top:17%;height:74%;display:flex;flex-direction:column;overflow:auto}.portrait-wrap{flex:0 0 auto;width:100%;height:auto;aspect-ratio:3/2;float:none;margin:0}.portrait-wrap:after{display:none}.portrait-wrap img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;aspect-ratio:3/2}.portrait-wrap span{display:none}.lobby-poster article{padding:20px 22px}.lobby-poster article>p{font-size:13px}.lobby-poster .eyebrow{font-size:8px}.lobby-poster h1{margin:8px 0 12px}}
#transition{background:rgba(241,232,212,.88);backdrop-filter:blur(3px);transition:opacity 1.1s cubic-bezier(.22,.61,.36,1)}
#transition.on{opacity:.86}

@media(max-width:700px){.lobby-poster article{flex:0 0 auto}}

/* Editorial museum palette: warm paper, charcoal and restrained champagne brass. */
:root{
 --museum-black:#1D1D1B;
 --museum-charcoal:#292927;
 --museum-dark-gray:#454541;
 --museum-text:#2C2C29;
 --museum-text-secondary:#6F6C65;
 --museum-text-muted:#A29D93;
 --museum-ivory:#F4F1EA;
 --museum-warm-white:#F8F6F1;
 --museum-stone:#E5DFD4;
 --museum-line:#D1C9BC;
 --museum-brass:#B49A6A;
 --museum-light-text:#F6F3EC;
 --ink:var(--museum-charcoal);
 --cream:var(--museum-light-text);
 --gold:var(--museum-brass);
 --line:rgba(209,201,188,.58);
 color:var(--museum-light-text);
}

html,body{background:var(--museum-charcoal)}
button:focus-visible,a:focus-visible{outline-color:var(--museum-brass)}
.topbar{background:linear-gradient(rgba(29,29,27,.72),transparent)}
.brand{color:var(--museum-light-text)}
.brand-sub{color:rgba(246,243,236,.72)}
.monogram{border-color:rgba(180,154,106,.85);background:var(--museum-ivory)}
.status-orb{background:var(--museum-brass);box-shadow:none}
.quiet{border-bottom-color:rgba(246,243,236,.26);color:var(--museum-light-text)}
.quiet span{border-color:rgba(246,243,236,.26)}

#viewport{background:var(--museum-stone)}
#route-line{stroke:var(--museum-brass);opacity:.68}
.vignette{background:linear-gradient(0deg,rgba(29,29,27,.68),transparent 42%,transparent 67%,rgba(29,29,27,.18))}
.visitor-shadow{background:rgba(29,29,27,.34)}
#visitor img{filter:drop-shadow(0 4px 3px rgba(29,29,27,.45))}
.visitor-name{background:rgba(29,29,27,.82);color:var(--museum-light-text)}
.hotspot{border-color:rgba(180,154,106,.45);background:rgba(29,29,27,.96);backdrop-filter:none;box-shadow:0 8px 24px rgba(0,0,0,.10);color:var(--museum-light-text)}
.hotspot:hover{background:rgba(20,20,19,.98);transform:translate(-50%,-52%)}
.hotspot small{color:#BDB7AC}
.hotspot .arrow{color:#D5D0C6}
.hotspot:after{background:var(--museum-brass)}
.hotspot .visited{color:#BDB7AC}
.eyebrow{color:var(--museum-brass)}
#intro{color:var(--museum-light-text)}
.edition i{background:rgba(180,154,106,.7)}
.bottom-bar{background:linear-gradient(transparent,rgba(29,29,27,.66))}
.mouse-icon,.stamp{border-color:rgba(246,243,236,.48)}
.stamp.done{background:var(--museum-brass)}
#journey{background:rgba(29,29,27,.90);color:var(--museum-light-text);box-shadow:0 8px 24px rgba(0,0,0,.10)}
#transition{background:rgba(244,241,234,.92);backdrop-filter:blur(3px)}
#transition span{color:var(--museum-text-secondary)}
#target-ring{border-color:var(--museum-brass)}

dialog{background:var(--museum-ivory);color:var(--museum-text);border-color:var(--museum-line);box-shadow:0 24px 72px rgba(29,29,27,.24)}
dialog::backdrop{background:rgba(29,29,27,.72);backdrop-filter:blur(4px)}
dialog .small{color:var(--museum-text-secondary)}
.solid{background:var(--museum-black);border-color:var(--museum-black);color:var(--museum-light-text)}
.solid:hover{background:#141413}

.scene-map #viewport{background-color:var(--museum-ivory);background-image:radial-gradient(ellipse at 50% 44%,var(--museum-warm-white) 0%,var(--museum-ivory) 71%,var(--museum-stone) 100%),repeating-linear-gradient(0deg,transparent 0 46px,rgba(69,69,65,.026) 46px 47px),repeating-linear-gradient(90deg,transparent 0 46px,rgba(69,69,65,.026) 46px 47px)}
.scene-map .topbar{background:rgba(248,246,241,.94);border-bottom:1px solid rgba(44,44,41,.12)}
.scene-map .brand,.scene-map .where,.scene-map .quiet{color:var(--museum-text)}
.scene-map .brand-sub{color:var(--museum-text-secondary)}
.scene-map .quiet{border-bottom-color:rgba(44,44,41,.14)}
.scene-map .quiet span{border-color:rgba(44,44,41,.18)}
.scene-map .vignette,.scene-map #world~.vignette{background:linear-gradient(0deg,rgba(29,29,27,.84) 0%,rgba(29,29,27,.75) 7%,transparent 17%,transparent 90%,rgba(29,29,27,.04) 100%)}
.scene-map #scene-image{opacity:1;filter:drop-shadow(0 5px 6px rgba(29,29,27,.10))}
.scene-map .hotspot{background:rgba(29,29,27,.96);border-color:rgba(180,154,106,.48);box-shadow:0 8px 24px rgba(0,0,0,.10)}
.scene-map .hotspot:after{background:var(--museum-brass)}
.scene-map .hotspot:hover{background:#141413}
.scene-map #hint{color:var(--museum-light-text);text-shadow:0 1px 3px rgba(29,29,27,.45)}
.scene-map #room-nav{background:rgba(29,29,27,.96);border-color:rgba(180,154,106,.34);box-shadow:0 8px 24px rgba(0,0,0,.10);backdrop-filter:none}
.scene-map #room-nav button{color:var(--museum-light-text);border-color:rgba(209,201,188,.22)}
.scene-map #room-nav button:hover{background:var(--museum-dark-gray)}
.scene-map #room-nav small{color:#BDB7AC}

.scene-room .topbar{background:linear-gradient(rgba(29,29,27,.78),transparent)}
.scene-room .vignette{background:linear-gradient(0deg,rgba(29,29,27,.76),transparent 26%,transparent 77%,rgba(29,29,27,.18))}
.gallery-heading{color:var(--museum-text)}
.gallery-heading .eyebrow{color:#9C8A6B}
.gallery-heading>p:last-child{color:var(--museum-text-secondary)}
.room-back{background:rgba(248,246,241,.94);border-color:rgba(209,201,188,.75);color:var(--museum-dark-gray);box-shadow:0 4px 14px rgba(29,29,27,.07)}
.room-back:hover{background:var(--museum-warm-white)}
#main-art,.side-art{background:var(--museum-warm-white);border-color:#8E8578;box-shadow:0 0 0 4px #D9D2C7,0 0 0 6px #645E55,8px 17px 22px rgba(29,29,27,.22)}
.inspect{background:rgba(29,29,27,.88);color:var(--museum-light-text)}
.art-caption{color:var(--museum-text);text-shadow:0 1px 2px rgba(248,246,241,.8)}
#art-number{color:#9C8A6B}
#art-note{color:var(--museum-text-secondary)}
.gallery-controls button{border-color:rgba(209,201,188,.40);background:rgba(29,29,27,.94);color:var(--museum-light-text)}
.gallery-controls button:hover{background:#141413}
.gallery-controls #all-art{background:rgba(248,246,241,.94);color:var(--museum-dark-gray);border-color:rgba(209,201,188,.75)}
.gallery-controls #all-art:hover{background:var(--museum-ivory)}
.gallery-controls #all-art span{border-left-color:rgba(69,69,65,.26)}
.room-person{filter:drop-shadow(2px 6px 4px rgba(29,29,27,.28))}

.lobby-poster{background:var(--museum-ivory);box-shadow:0 0 0 1px var(--museum-line),12px 24px 40px rgba(29,29,27,.22);color:var(--museum-text)}
.portrait-wrap{background:var(--museum-charcoal)}
.portrait-wrap:after{background:linear-gradient(180deg,rgba(29,29,27,0) 0%,rgba(29,29,27,.72) 28%,rgba(29,29,27,.96) 100%)}
.portrait-wrap span{color:var(--museum-light-text)}
.lobby-poster .eyebrow{color:#9C8A6B}
.lobby-lead{color:var(--museum-dark-gray)}
.lobby-poster details{border-color:var(--museum-line)}
.experience p{border-color:var(--museum-line)}
.contact-details{border-color:var(--museum-line);color:var(--museum-text)}
.contact-info b{color:#9C8A6B}
.contact-info a{color:var(--museum-text)}
.contact-info span{color:var(--museum-text-secondary)}

#works-dialog{background:var(--museum-ivory)}
#works-dialog .eyebrow{color:#9C8A6B}
#works-grid button{background:var(--museum-warm-white);border-color:var(--museum-line);color:var(--museum-text);box-shadow:0 3px 8px rgba(29,29,27,.04)}
#works-grid img{background:var(--museum-stone)}
#works-grid small{color:#9C8A6B}
#works-grid em{color:var(--museum-text-secondary)}
#zoom-dialog{background:var(--museum-black);color:var(--museum-light-text);border-color:rgba(180,154,106,.35)}
.zoom-toolbar{border-bottom-color:rgba(209,201,188,.22)}
.zoom-toolbar button{border-color:rgba(209,201,188,.30);color:var(--museum-light-text)}
#zoom-image{box-shadow:0 12px 50px rgba(0,0,0,.58)}
.zoom-hint{color:#BDB7AC}

@media(max-width:700px){
 .scene-map #room-nav button{background-color:rgba(29,29,27,.96)}
 .scene-map .where{color:var(--museum-text)}
 .scene-map .vignette{background:linear-gradient(0deg,rgba(29,29,27,.86),transparent 30%,transparent 78%,rgba(29,29,27,.04))}
 .portrait-wrap:after{display:none}
}

/* Identity and editorial wayfinding refinements */
.monogram{display:flex;align-items:center;justify-content:center;width:52px;height:52px;flex:0 0 52px;padding:0;border:0;border-radius:0;background:transparent;overflow:visible}
.monogram img{position:static;display:block;width:100%;height:100%;max-width:none;object-fit:contain;filter:brightness(0) invert(.94) sepia(.16) saturate(.55)}
.scene-map .monogram img{filter:brightness(.48) sepia(.2) saturate(.7)}
.where-title{display:flex;flex-direction:column;gap:3px}
.where-title small{font-size:9px;line-height:1.2;letter-spacing:2px;color:var(--museum-brass)}
.scene-map .where-title small{color:#9C8A6B}
.hotspot{min-width:142px;padding:10px 15px}
.hotspot .label{display:block;color:var(--museum-light-text);font-size:15px;line-height:1.4;letter-spacing:1px}
.hotspot .category{display:block;margin-top:3px;color:#BDB7AC;font-size:11px;line-height:1.4;letter-spacing:.5px}
.hotspot .visited{display:block;margin:5px 0 0;color:#BDB7AC;font-size:10px;letter-spacing:1px}
.hotspot-lobby{min-width:184px}
.scene-map #room-nav button{min-width:112px}
.scene-map #room-nav button span,.scene-map #room-nav button em{display:block;font-style:normal}
.scene-map #room-nav button em{margin-top:4px;color:#BDB7AC;font-size:10px;letter-spacing:.5px}
.gallery-heading .gallery-category{margin:0 0 9px;color:var(--museum-text-secondary);font-size:11px;letter-spacing:1px}
.gallery-heading>p:last-of-type{font-size:14px;line-height:1.9;max-width:190px;color:var(--museum-text-secondary)}
.gallery-rule{display:block;width:38px;height:1px;margin-top:15px;background:var(--museum-brass)}
.room-backdrop{filter:saturate(.82)}
#main-art img,.side-art img{filter:saturate(.86)}
.beyond-design{margin-top:22px!important;padding-top:14px;border-top:1px solid var(--museum-line);color:#9C8A6B!important;letter-spacing:1.3px}
.beyond-design span{display:inline-block;margin-top:6px;color:var(--museum-text-secondary);letter-spacing:0}
.visit-list{margin:0 0 24px;padding:0;list-style:none;counter-reset:visit}
.visit-list li{counter-increment:visit;display:grid;grid-template-columns:34px 1fr;gap:8px;padding:12px 0;border-bottom:1px solid var(--museum-line);line-height:1.6}
.visit-list li:before{content:'0' counter(visit);color:#9C8A6B;font-size:12px;letter-spacing:1px}
#map-editorial{display:none;position:absolute;inset:0;z-index:3;pointer-events:none;color:var(--museum-text)}
.scene-map #map-editorial{display:block}
.visitor-note,.exhibition-index{position:absolute;width:clamp(150px,14vw,184px)}
.visitor-note{left:2.5%;top:16%;}
.exhibition-index{right:2.5%;top:13%;}
.editorial-kicker{margin:0 0 8px;color:#9C8A6B;font-size:9px;line-height:1.4;letter-spacing:2px}
.visitor-note h2,.exhibition-index h2{margin:0 0 10px;color:var(--museum-text);font-family:'Songti SC','SimSun',serif;font-size:19px;font-weight:400;letter-spacing:1px}
.visitor-note p:not(.editorial-kicker){margin:0 0 9px;color:var(--museum-text-secondary);font-size:11px;line-height:1.75}
.editorial-rule{width:30px;height:1px;margin:10px 0 8px;background:var(--museum-brass)}
.visitor-note>small{color:var(--museum-text-muted);font-size:10px;letter-spacing:.5px}
.exhibition-index ol{margin:0;padding:0;list-style:none}
.exhibition-index li{display:grid;grid-template-columns:26px 1fr;gap:7px;padding:4px 0;border-bottom:1px solid rgba(209,201,188,.7)}
.exhibition-index li>span{color:#9C8A6B;font-size:10px;letter-spacing:1px}
.exhibition-index li b,.exhibition-index li small{display:block;font-weight:400}
.exhibition-index li b{color:var(--museum-text);font-size:12px;line-height:1.35;letter-spacing:.4px}
.exhibition-index li small{margin-top:2px;color:var(--museum-text-muted);font-size:9px;line-height:1.3}
@media(max-width:700px){
 .monogram{width:40px;height:40px;flex-basis:40px}
 .monogram img{width:100%;height:100%;left:auto;top:auto}
 .scene-map .hotspot{min-width:0;padding:6px 8px}
 .scene-map .hotspot-lobby{min-width:0}
 .scene-map .hotspot .category{display:none}
 .scene-map #room-nav button{background-image:none!important}
 .scene-map #room-nav button{padding:9px 10px}
 .scene-map #room-nav button em{font-size:9px}
 .gallery-heading .gallery-category{display:none}
 .gallery-heading>p:last-of-type,.gallery-rule{display:none}
 #map-editorial{display:none!important}
}

/* Legible museum typography and translucent wayfinding. */
:root{--museum-text:#292824;--museum-text-secondary:#54514B;--museum-text-muted:#696258}
.brand-sub{opacity:1;color:#E5DED2;line-height:1.5}
.topbar{background:linear-gradient(rgba(22,22,20,.9),rgba(22,22,20,.55) 70%,transparent)}
.where,.quiet{font-weight:500}.where-title small{color:#E1CDA9}
#intro{max-width:440px;text-shadow:0 2px 8px #000,0 0 32px #0008}
#intro>p:not(.eyebrow){opacity:1;color:#FFFBF3;line-height:1.9}
#intro .eyebrow{color:#EAD4AD}.edition{color:#F5EDDF}
.scene-map .brand-sub{color:#54514B}
.scene-map .where-title small,.editorial-kicker,.exhibition-index li>span{color:#79613F}
.scene-map .hotspot{background:rgba(35,34,30,.70);border:1px solid rgba(255,247,230,.34);backdrop-filter:blur(9px);-webkit-backdrop-filter:blur(9px);box-shadow:0 4px 14px rgba(34,30,22,.10);padding:11px 14px;min-width:136px;border-radius:5px}
.scene-map .hotspot:hover,.scene-map .hotspot:focus-visible{background:rgba(35,34,30,.84)}
.hotspot .label{color:#FFFDF7;font-weight:500;font-size:16px;letter-spacing:.5px}
.hotspot small{color:#F0E1C8;font-size:10px;line-height:1.4;letter-spacing:1.5px;margin-bottom:6px}
.hotspot .category,.hotspot .visited{color:#F3EEE5;font-size:11px;line-height:1.5}
.hotspot .visited{font-size:10px;margin-top:6px}
.scene-map .hotspot-lobby{min-width:180px}
.scene-map #room-nav{background:rgba(35,34,30,.80);backdrop-filter:blur(12px);border-color:#D8C9AB55}
.scene-map #room-nav button{padding:11px 18px;font-size:14px;min-width:104px}
.scene-map #room-nav small,.scene-map #room-nav button em{color:#E7DBCA;line-height:1.4}
.scene-map #hint{left:50%;bottom:100px;transform:translateX(-50%);padding:7px 14px;border-radius:20px;background:rgba(35,34,30,.72);color:#FFFBF3;font-size:11px}
.visitor-note p:not(.editorial-kicker){font-size:12px;line-height:1.85}
.visitor-note>small,.exhibition-index li small{font-size:11px;color:#625B51}
.exhibition-index li b{font-size:13px}.editorial-kicker{font-size:10px}
.scene-room .gallery-heading{left:3%;top:132px;width:194px;padding:19px 20px;background:rgba(248,246,241,.93);border-left:2px solid #A88B5D;box-shadow:0 5px 24px #241F1710;border-radius:0 4px 4px 0}
.gallery-heading h1{font-size:29px;letter-spacing:2px;line-height:1.4;margin-bottom:13px}
.gallery-heading .eyebrow,.gallery-heading .gallery-category{color:#705A3C;font-size:11px;line-height:1.6}
.gallery-heading>p:last-of-type{color:#46423B;font-size:13px;line-height:1.85;margin-bottom:0}
.gallery-rule{margin-top:15px}
#gallery-wall{left:16%;width:68%;top:23%;height:44%}
.art-caption{top:71%;min-width:0;width:max-content;max-width:64%;padding:10px 24px 12px;background:rgba(248,246,241,.94);border-radius:4px;text-shadow:none;box-shadow:0 3px 18px #241F170C}
.art-caption h2{font-size:clamp(19px,1.7vw,27px);letter-spacing:1px;line-height:1.45;margin:5px 0}
#art-number{color:#705A3C;font-size:11px}#art-note{color:#4C4740;font-size:13px}
.scene-room .bottom-bar{bottom:74px;padding-top:10px;padding-bottom:10px;background:none;pointer-events:none}
.scene-room #hint{font-size:11px;color:#FFF9EF;text-shadow:0 1px 5px #000}.scene-room #hint .mouse-icon{display:none}
.lobby-poster{grid-template-columns:52% 48%;top:18%;height:65%;width:78%}
.lobby-poster article{padding:30px 34px}.lobby-poster h1{font-size:36px;line-height:1.4;letter-spacing:4px}
.lobby-poster article>p{font-size:15px;line-height:1.95;color:#46423B}
.lobby-poster .eyebrow,.contact-info b,#works-dialog .eyebrow,#works-grid small,.visit-list li:before{color:#705A3C}
.lobby-poster .eyebrow{font-size:11px}.beyond-design{color:#705A3C!important}
.lobby-lead{font-size:21px!important}.experience p{line-height:1.9}
#works-grid b{font-size:14px;line-height:1.65}#works-grid em{font-size:12px;color:#54514B}
button:focus-visible,a:focus-visible{outline:3px solid #B56850;outline-offset:4px}
@media(min-width:701px) and (max-width:1100px){
 #map-editorial{display:none!important}.scene-map #room-nav button{padding:10px 12px;min-width:92px}
 .scene-room .gallery-heading{width:165px;padding:15px;left:2%}.gallery-heading h1{font-size:25px}
 .lobby-poster{width:85%;grid-template-columns:48% 52%}.lobby-poster article{padding:25px}
}
@media(max-width:700px){
 .topbar{padding:15px 16px}.brand{font-size:15px;letter-spacing:1.5px;gap:9px}.monogram{width:42px;height:42px;flex-basis:42px}.brand-sub{font-size:9px;letter-spacing:1px}
 .where{padding:6px 10px;background:rgba(29,29,27,.80);border-radius:4px}.scene-map .where{background:#F4F1EAEE}.where-title small{font-size:9px}
 .scene-map .hotspot{padding:6px 8px;min-width:0;min-height:35px}.scene-map .hotspot-lobby{min-width:0}.scene-map .hotspot .label{font-size:11px;letter-spacing:0}.scene-map .hotspot .visited{display:none}
 .scene-map #room-nav{background:none;backdrop-filter:none;gap:7px;overflow:auto}.scene-map #room-nav button{background-color:rgba(35,34,30,.78);min-width:0;padding:10px 12px;font-size:14px}.scene-map #room-nav small{font-size:9px}.scene-map #room-nav button em{font-size:10px}
 .scene-map #hint{left:16px;bottom:23px;transform:none;max-width:73%;padding:6px 9px;font-size:10px;white-space:normal}
 .scene-room .gallery-heading{top:141px;left:5%;width:90%;padding:11px 14px;display:grid;grid-template-columns:1fr auto;gap:3px 12px}.gallery-heading h1{font-size:24px;grid-column:1;grid-row:2;margin:0}.gallery-heading .eyebrow{grid-column:1;grid-row:1;font-size:9px;margin:0}.gallery-heading .gallery-category{grid-column:2;grid-row:2;align-self:center;font-size:9px;margin:0}.gallery-heading>p:last-of-type,.gallery-rule{display:none}
 .room-back{top:97px;right:16px;padding:8px 10px;font-size:11px}
 #gallery-wall{top:34%;left:5%;width:90%;height:31%}.art-caption{top:68%;max-width:90%;width:90%;padding:9px 13px}.art-caption h2{font-size:19px;line-height:1.5;letter-spacing:.5px}#art-note{font-size:11px}#art-number{font-size:10px}
 .gallery-controls{bottom:18px;gap:5px}.gallery-controls button{padding:11px 8px;font-size:11px}.scene-room .bottom-bar{bottom:70px}.scene-room #hint{font-size:10px;max-width:74%}
 .room-person{bottom:122px;width:34px;height:56px;left:7%}.scene-lobby .room-person{display:none}
 .lobby-poster{top:20%;height:66%;width:90%;display:flex;grid-template-columns:none}.lobby-poster article{padding:23px}.lobby-poster h1{font-size:30px}.lobby-poster article>p{font-size:14px}.lobby-poster .eyebrow{font-size:10px}.lobby-lead{font-size:19px!important}
}
@media(max-height:650px) and (min-width:701px){.scene-room .gallery-heading{top:110px;padding:12px 16px}.gallery-heading h1{font-size:25px}.gallery-heading>p:last-of-type,.gallery-rule{display:none}.art-caption{top:69%;padding:6px 18px}.art-caption h2{font-size:18px}.lobby-poster{top:21%;height:62%}.scene-room .bottom-bar{display:none}}
.gallery-heading .gallery-category{word-break:keep-all;letter-spacing:.3px;font-size:10px}
@media(min-width:1101px){.scene-room .gallery-heading{width:210px}}

/* Continuous 3D museum flight */
#museum-3d{position:absolute;inset:0;width:100%;height:100%;display:block;z-index:1;opacity:1;transition:opacity .32s cubic-bezier(.22,.61,.36,1);background:radial-gradient(ellipse at 50% 39%,#f7f0e4 0%,#ded4c4 70%,#beb4a5 100%)}
.has-webgl-museum #scene-image{opacity:0;pointer-events:none}
.has-webgl-museum #world{overflow:visible;transform:none!important;transition:none!important}
.has-webgl-museum #route{z-index:2;opacity:.42}
.has-webgl-museum #hotspots,.has-webgl-museum #visitor,.has-webgl-museum #target-ring{z-index:4}
.has-webgl-museum #visitor{transition:opacity .2s}
.scene-outside #museum-3d{background:linear-gradient(180deg,#c9d2d2 0%,#e7dfd0 43%,#c7bcaa 100%)}
.scene-map #museum-3d{background:radial-gradient(ellipse at 50% 36%,#faf6ef 0%,#e8dfd2 68%,#c9bead 100%)}
.scene-map #viewport{background:#e5dccf}
.has-webgl-museum .scene-map #scene-image{display:none}
.has-webgl-museum .scene-map .vignette{background:linear-gradient(0deg,rgba(24,23,20,.80) 0%,rgba(24,23,20,.58) 8%,transparent 19%,transparent 89%,rgba(29,29,27,.06) 100%);z-index:3}
.has-webgl-museum .scene-outside .vignette{z-index:3;background:linear-gradient(0deg,rgba(25,24,21,.72),transparent 42%,transparent 72%,rgba(29,29,27,.18))}
.has-webgl-museum .scene-map .hotspot{background:rgba(31,30,27,.68);backdrop-filter:blur(10px);box-shadow:0 6px 22px rgba(18,16,12,.18);transition:left .08s linear,top .08s linear,background .2s,transform .2s,opacity .2s}
.has-webgl-museum .scene-map .hotspot:after{height:15px;opacity:.6}
.flight-active #hotspots,.flight-active #room-nav,.flight-active #map-editorial,.flight-active #visitor,.flight-active #route,.flight-active #target-ring{opacity:0!important;pointer-events:none!important}
.scene-flight #world{display:block!important;z-index:5}
.scene-flight #room-scene{display:block!important;z-index:1;opacity:0;transform:scale(1.055);transform-origin:50% 55%;transition:none}
.scene-flight .vignette{z-index:6;background:radial-gradient(ellipse at 50% 50%,transparent 35%,rgba(18,17,15,.18) 100%)}
.scene-flight .topbar{z-index:20}
#room-scene{will-change:transform,opacity;transition:transform .38s cubic-bezier(.22,.61,.36,1),opacity .3s}
.scene-room #room-scene{transform:scale(1);opacity:1}
.scene-room #gallery-wall{animation:gallery-arrival .42s cubic-bezier(.22,.61,.36,1) both}
.scene-room .art-caption{animation:caption-arrival .38s .12s ease both}
.scene-room .gallery-controls{animation:caption-arrival .38s .18s ease both}
@keyframes gallery-arrival{from{transform:translateY(12px) scale(1.025);filter:blur(2px);opacity:.68}to{transform:none;filter:none;opacity:1}}
@keyframes caption-arrival{from{transform:translate(-50%,10px);opacity:0}to{transform:translate(-50%,0);opacity:1}}
@media(prefers-reduced-motion:reduce){#museum-3d,#room-scene{transition:none!important}.scene-room #gallery-wall,.scene-room .art-caption,.scene-room .gallery-controls{animation:none!important}}
@media(max-width:700px){
 #museum-3d{background:radial-gradient(ellipse at 50% 35%,#f8f3eb 0%,#dfd5c6 72%,#bdb2a2 100%)}
 .has-webgl-museum .scene-map #world{top:88px!important;width:100%!important;height:calc(100% - 174px)!important;left:0!important}
 .has-webgl-museum .scene-map #room-nav{top:auto;bottom:12px}
 .has-webgl-museum .scene-map .hotspot{padding:6px 8px;background:rgba(31,30,27,.72)}
 .has-webgl-museum .scene-map #visitor{width:30px;height:49px}
 .scene-flight #world{top:0!important;width:100%!important;height:100%!important;left:0!important}
}

/* Approved rendered endpoints with the live 3D model reserved for continuous flight. */
.has-webgl-museum #scene-image{position:absolute;inset:0;display:block;z-index:0;opacity:1;pointer-events:none;transition:opacity .28s ease,transform .34s cubic-bezier(.22,.61,.36,1);will-change:transform,opacity}
.has-webgl-museum .scene-map #scene-image{display:block;object-fit:cover;filter:saturate(.94) contrast(1.02)}
.has-webgl-museum .scene-outside:not(.flight-active) #museum-3d,
.has-webgl-museum .scene-map:not(.flight-active) #museum-3d{opacity:0!important}
.has-webgl-museum .flight-active #scene-image,.has-webgl-museum .scene-flight #scene-image{opacity:0}
.has-webgl-museum .scene-outside #scene-image{object-fit:cover}

/* Keep the approved 3D museum visible as the destination scene. The renders
   guide the model's appearance; they are not flat scene backgrounds. */
.has-webgl-museum .scene-outside:not(.flight-active) #museum-3d,
.has-webgl-museum .scene-map:not(.flight-active) #museum-3d{opacity:1!important}
.has-webgl-museum .scene-outside:not(.flight-active) #scene-image,
.has-webgl-museum .scene-map:not(.flight-active) #scene-image{opacity:0!important;visibility:hidden}
.scene-map #map-editorial{display:none!important}
.has-webgl-museum .scene-map #world{top:0!important;width:100%!important;height:100%!important;left:0!important}
.scene-outside #museum-3d{background:radial-gradient(ellipse at 50% 40%,#e6e9de 0%,#d2ddd3 48%,#abbcaf 100%)}
.scene-map #museum-3d{background:radial-gradient(ellipse at 50% 38%,#f0eee6 0%,#e4e8df 57%,#cdd8cb 100%)}
#exit-museum{display:none;color:#f4ead7;border:1px solid rgba(225,205,171,.48);border-radius:3px;padding:9px 13px;background:rgba(34,45,37,.58);font-size:12px;letter-spacing:.8px}
.scene-map #exit-museum{display:inline-flex;align-items:center}
.scene-map #exit-museum{color:#4c463b;background:#e9e4d8;border-color:#ac9979}
#exit-museum:hover{background:#d7ccbb}
.scene-room .art-caption{top:calc(23% + 44% + 7px);width:max-content;min-width:0;max-width:min(52%,470px);padding:9px 22px 10px;background:rgba(246,243,236,.96);border:1px solid rgba(128,113,88,.38);border-radius:2px;box-shadow:0 4px 12px rgba(47,39,27,.12)}
.scene-room .art-caption h2{margin:2px 0;font-size:clamp(19px,1.65vw,25px)}
.scene-room .art-caption:before{content:'';position:absolute;top:-7px;left:50%;height:6px;border-left:1px solid rgba(130,109,75,.5)}
@media(max-width:700px){.scene-map #exit-museum{padding:7px 9px;font-size:11px}.scene-room .art-caption{top:calc(34% + 31% + 6px);width:max-content;max-width:88%;padding:7px 13px 8px}.scene-room .art-caption h2{font-size:18px}}
.scene-outside #museum-3d{background:radial-gradient(ellipse at 77% 29%,rgba(255,221,172,.76),transparent 33%),linear-gradient(180deg,#929eaa 0%,#c5c6bc 49%,#dfc9ab 72%,#86978b 100%)}
.has-webgl-museum .scene-map .hotspot{background:rgba(44,43,37,.40);backdrop-filter:blur(5px);border:1px solid rgba(255,249,234,.45);box-shadow:0 3px 12px rgba(28,24,18,.10);color:#fffdf5;text-shadow:0 1px 3px rgba(0,0,0,.6)}
.has-webgl-museum .scene-map .hotspot:hover{background:rgba(44,43,37,.56)}
.has-webgl-museum .scene-map .hotspot small,.has-webgl-museum .scene-map .hotspot .category,.has-webgl-museum .scene-map .hotspot .visited{color:#fff9eb}
.scene-map .hotspot[data-enter="outside"]{padding:7px 14px;white-space:nowrap;z-index:7;transform:translate(-50%,-100%)}
.scene-map .hotspot[data-enter="outside"] .label{font-size:15px}
.scene-map .hotspot[data-enter="outside"] small{font-size:9px}
.flight-active #museum-3d,.returning-map #room-scene{transition:none!important}
.returning-map #room-scene{transform:scale(1);pointer-events:none}
.scene-room .art-caption{left:50%}
@media(max-width:700px){.scene-room .art-caption{left:50%}}
.scene-map .hotspot[data-enter="outside"]{text-align:center}

/* Compact navigation and continuous artwork browsing. */
.scene-map .hotspot .category,.scene-map .hotspot .visited{max-height:0;opacity:0;overflow:hidden;transition:max-height .2s,opacity .2s}
.scene-map .hotspot:hover .category,.scene-map .hotspot:focus-visible .category,.scene-map .hotspot:hover .visited,.scene-map .hotspot:focus-visible .visited{max-height:34px;opacity:1}
.scene-map .hotspot:hover,.scene-map .hotspot:focus-visible{background:rgba(68,62,52,.65);outline:1px solid #dbc89d;box-shadow:0 0 22px #d6bf7755}
#gallery-wall{transition:opacity .16s,transform .32s cubic-bezier(.2,.7,.2,1)}
#gallery-wall.sliding{opacity:0;transform:translateX(calc(var(--browse-direction, -1)*45px)) rotateY(calc(var(--browse-direction, -1)*3deg))}
#zoom-scroll{touch-action:none;overscroll-behavior:contain}#zoom-image{user-select:none}
#zoom-dialog[open]{animation:detail-arrival .22s ease-out} @keyframes detail-arrival{from{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}
@media(pointer:coarse){.scene-map .hotspot .visited{max-height:25px;opacity:1}}
@media(prefers-reduced-motion:reduce){#gallery-wall,#zoom-dialog[open]{animation:none!important;transition:none!important}}

/* Movement feedback follows the physical model rather than the old 2D overlay. */
#visitor{transform:translate(-50%,-90%);transition:filter .18s ease}
#target-ring.blocked{opacity:.95;border-color:#b76f59;box-shadow:0 0 0 4px #b76f5930;animation:blocked-ground .38s ease-out}
@keyframes blocked-ground{50%{transform:translate(-50%,-50%) scale(1.8)}100%{transform:translate(-50%,-50%) scale(.8)}}
.has-webgl-museum #route{display:none}
.has-webgl-museum #viewport.blocked-ground{cursor:not-allowed}

/* The visitor keeps a readable walking rhythm while moving through the model. */
#visitor.walking img{animation:visitor-stride var(--walk-rate,.38s) steps(2,end) infinite!important}
#visitor.walking .visitor-shadow{animation:visitor-footfall var(--walk-rate,.38s) steps(2,end) infinite!important}
@keyframes visitor-stride{0%{transform:translate(-2px,-3px) rotate(-4deg) scale(.98,1.02)}50%{transform:translate(2px,0) rotate(4deg) scale(1.02,.98)}100%{transform:translate(-2px,-3px) rotate(-4deg) scale(.98,1.02)}}
@keyframes visitor-footfall{0%,100%{transform:scale(.75,.8);opacity:.42}50%{transform:scale(1.15,.95);opacity:.22}}
.flight-active #visitor{transition:opacity .2s .42s!important}
.has-webgl-museum .scene-map #visitor{width:42px;height:66px;z-index:10;filter:drop-shadow(0 3px 4px rgba(34,27,18,.32))}
.has-webgl-museum .scene-map .visitor-name{display:block;top:92%;font-size:11px;white-space:nowrap;box-shadow:0 2px 8px rgba(31,26,18,.26)}
#visitor.walking img{animation:visitor-steady-step var(--walk-rate,.4s) ease-in-out infinite!important}
@keyframes visitor-steady-step{0%,100%{transform:translateY(0)}25%,75%{transform:translateY(-2px)}50%{transform:translateY(0)}}
@media(prefers-reduced-motion:reduce){#visitor.walking img,#visitor.walking .visitor-shadow{animation:none!important}}
