@font-face{font-family:'Cormorant Garamond';font-style:normal;font-weight:400 500;font-display:swap;src:url('./fonts/cormorant-regular.ttf') format('truetype')}
@font-face{font-family:'Cormorant Garamond';font-style:italic;font-weight:400 500;font-display:swap;src:url('./fonts/cormorant-italic.ttf') format('truetype')}
@font-face{font-family:'DM Sans';font-style:normal;font-weight:400 600;font-display:swap;src:url('./fonts/dm-sans.ttf') format('truetype')}
:root{color-scheme:dark;--bg:#111514;--ink:#e9e7de;--muted:#8f9590;--gold:#c9b58b;--line:rgba(205,193,157,.16);font-family:'DM Sans','Microsoft YaHei',sans-serif;font-synthesis:none}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);overflow:hidden}button,a,input{-webkit-tap-highlight-color:transparent}button{color:inherit;font:inherit;cursor:pointer;background:none;border:0}button:focus-visible,a:focus-visible,input:focus-visible{outline:2px solid var(--gold);outline-offset:6px}button:disabled{cursor:default}a{color:inherit;text-decoration:none}svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round}button{transition:color .2s,background .2s,border-color .2s}button:hover{color:#f1d4a0}[hidden]{display:none!important}
#stage{position:fixed;inset:0;background:radial-gradient(ellipse at 54% 48%,#272c29 0%,#171c1a 43%,#101413 78%)}#stage canvas{width:100%;height:100%;display:block;touch-action:none}.edge-glow{position:fixed;inset:0;pointer-events:none;background:radial-gradient(ellipse at center,transparent 38%,rgba(3,8,7,.3) 100%)}.exhibition-ui{position:fixed;inset:0;pointer-events:none;transition:opacity .55s,visibility .55s}.exhibition-ui button,.exhibition-ui a,.exhibition-ui input,.inspector,.anatomy-panel{pointer-events:auto}.cinematic .exhibition-ui{opacity:0;visibility:hidden}.cinematic .part-label{display:none}
.masthead{position:absolute;left:3.8%;right:3.8%;top:32px;display:flex;align-items:center;justify-content:space-between;height:54px;border-bottom:1px solid var(--line);padding-bottom:25px}.brand{display:flex;gap:13px;align-items:center}.brand svg{width:25px;height:34px;color:var(--gold);stroke-width:1}.brand span{font-size:12px;line-height:1.6;letter-spacing:2px}.brand b{font-weight:400;color:var(--muted);letter-spacing:1.5px}.topnav{display:flex;gap:40px;position:absolute;left:50%;transform:translateX(-50%);height:100%;align-items:start}.nav-link{font-size:14px;letter-spacing:2px;position:relative;color:#939990;padding:2px 0 28px}.nav-link.active{color:var(--ink)}.nav-link.active:after{content:'';width:16px;height:2px;background:var(--gold);position:absolute;bottom:0;left:calc(50% - 8px)}.nav-link span{margin-left:7px;font-size:12px;color:var(--gold);letter-spacing:0}.icon-button{height:38px;width:38px;display:grid;place-items:center;border:1px solid var(--line);border-radius:50%;color:#b0b4ad}.icon-button svg{width:17px;height:17px}
.specimen-title{position:absolute;left:5.3%;top:17.5%;width:330px}.eyebrow{font-size:12px;letter-spacing:2.6px;font-weight:500;color:var(--gold)}.specimen-title .eyebrow{display:flex;align-items:center;gap:13px}.small-rule{height:1px;width:27px;background:var(--gold);opacity:.75}h1{font-family:'Cormorant Garamond',Georgia,serif;font-weight:400;font-size:clamp(68px,6.2vw,118px);line-height:.9;letter-spacing:-3px;margin:28px 0 26px}h1 i{font-weight:400}h1 .title-dot{color:var(--gold)}.chinese-title{font-size:18px;letter-spacing:4px;margin:0 0 23px}.intro{font-size:14px;color:var(--muted);line-height:2;letter-spacing:1.5px;margin:0}.specimen-taxonomy{margin-top:38px;display:flex;gap:13px;align-items:center;flex-wrap:wrap;width:280px;font-size:12px;letter-spacing:2px;color:#b7b9ac}.specimen-taxonomy .divider{color:#58615a}.specimen-taxonomy small{width:100%;font-size:12px;color:var(--muted);letter-spacing:2px;margin-top:-3px}.text-button{padding:0;display:flex;gap:21px;align-items:center;margin-top:31px;font-size:14px;color:var(--gold);letter-spacing:1.5px}.text-button svg{width:23px;height:23px;stroke-width:1}
.inspector{position:absolute;right:4.1%;top:30%;width:252px;border-top:1px solid rgba(199,181,142,.4);padding-top:17px;background:linear-gradient(90deg,rgba(17,21,20,0),rgba(17,21,20,.26));transition:opacity .3s}.inspector-heading{display:flex;align-items:center;justify-content:space-between}.inspector-heading .eyebrow{font-size:12px;letter-spacing:2px;color:#a9ad9f}.small-icon{height:26px;width:26px;display:grid;place-items:center;color:var(--muted)}.small-icon svg{width:17px;height:17px}.part-index{display:flex;align-items:center;gap:14px;margin:28px 0 12px}.part-index>span:first-child{color:var(--gold);font:italic 26px 'Cormorant Garamond',Georgia,serif}.part-index>span:last-child{font-size:12px;letter-spacing:1px;color:var(--muted)}.inspector h2{font-size:21px;letter-spacing:3px;font-weight:400;margin:0 0 18px}.inspector p{font-size:14px;line-height:1.9;color:#9ba097;margin:0 0 22px}.part-specs{margin:0;border-top:1px solid var(--line);padding:15px 0;display:flex;flex-direction:column;gap:13px}.part-specs div{display:flex;align-items:baseline;justify-content:space-between;gap:12px;font-size:12px}.part-specs dt{color:#7f8880;letter-spacing:1px;flex-shrink:0}.part-specs dd{margin:0;color:#c0c2b6;text-align:right;line-height:1.6}.inspector-footer{border-top:1px solid var(--line);padding-top:15px;display:flex;align-items:center;justify-content:space-between;min-height:30px;color:#747d75;font-size:12px;letter-spacing:1px}.probe-button{width:100%;border:1px solid var(--line);padding:11px;margin:0 0 15px;color:var(--gold);font-size:14px}.probe-button[aria-pressed=true]{background:rgba(190,155,85,.12)}.inspector.collapsed #inspector-content{display:none}.inspector.collapsed .small-icon{transform:rotate(180deg)}
.anatomy-panel{position:absolute;left:5.3%;top:calc(17.5% + 240px);width:288px;max-height:calc(67% - 260px);overflow:auto;background:rgba(17,21,20,.55);backdrop-filter:blur(12px);border-top:1px solid var(--line);padding-top:16px;scrollbar-width:thin;scrollbar-color:#484b3f transparent}.anatomy-label{display:flex;justify-content:space-between;align-items:center;margin:0 0 12px}.anatomy-label .eyebrow{font-size:12px;letter-spacing:1.3px}.anatomy-label>span:last-child{font-size:12px;color:var(--muted)}.part-list{display:grid;grid-template-columns:1fr 1fr;gap:2px}.part-list button{padding:11px 6px;text-align:left;font-size:14px;color:#a6aca2;border:1px solid transparent}.part-list button span{color:#657063;font-size:12px;margin-right:10px}.part-list button:hover,.part-list button.active{background:rgba(187,161,110,.08);border-color:var(--line);color:var(--gold)}.anatomy-mode .specimen-title .intro,.anatomy-mode .specimen-taxonomy,.anatomy-mode .specimen-title .text-button{display:none}.anatomy-mode .specimen-title .chinese-title{font-size:14px}.anatomy-mode h1{font-size:clamp(62px,5vw,96px);margin-bottom:19px}
.view-controls{position:absolute;right:4.1%;bottom:182px;display:flex;gap:8px;align-items:center}.view-controls>span{font-size:12px;letter-spacing:2px;color:#747f76;margin-right:12px}.view-button{font-size:12px;color:#8b968b;padding:9px 11px;border:1px solid transparent;border-radius:2px}.view-button.active{border-color:var(--line);color:var(--gold);background:rgba(196,177,135,.06)}.interaction-hint{position:absolute;bottom:176px;left:50%;transform:translateX(-50%);display:flex;gap:11px;align-items:center;color:#7a837a;font-size:12px;letter-spacing:1px;white-space:nowrap}.interaction-hint svg{width:16px;height:20px;opacity:.65}.interaction-hint i{margin:0 9px;font-style:normal;color:#505c50}
.control-dock{position:absolute;bottom:83px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:7px;padding:11px 16px;background:rgba(26,31,27,.82);backdrop-filter:blur(20px);border:1px solid rgba(207,190,151,.18);border-radius:6px;box-shadow:0 15px 45px #0003}.dock-button{height:44px;display:flex;gap:10px;align-items:center;justify-content:center;padding:0 13px;white-space:nowrap;font-size:14px;color:#b4b9ad;border-radius:3px}.dock-button svg{width:20px;height:20px}.dock-button.active{color:var(--gold);background:rgba(189,161,104,.1)}.dock-button:hover{background:rgba(189,161,104,.06);color:#decaa2}.dock-button.icon-only{padding:0 10px;width:40px}.dock-separator{width:1px;height:24px;background:var(--line);margin:0 5px}.speed-control{display:flex;align-items:center;gap:12px;padding:0 8px}.speed-control label{font-size:12px;white-space:nowrap;color:var(--muted)}input[type=range]{width:87px;height:2px;appearance:none;-webkit-appearance:none;background:#4d5545;cursor:pointer;accent-color:var(--gold)}input[type=range]::-webkit-slider-thumb{appearance:none;width:8px;height:8px;border:0;border-radius:50%;background:var(--gold)}input[type=range]::-moz-range-thumb{width:8px;height:8px;border:0;background:var(--gold)}.speed-control output{font-size:12px;color:var(--gold);width:42px;font-variant-numeric:tabular-nums}
.exhibit-footer{position:absolute;left:3.8%;right:3.8%;bottom:25px;border-top:1px solid var(--line);padding-top:20px;display:flex;justify-content:space-between;align-items:center;color:#69756b;font-size:12px;letter-spacing:1.4px}.exhibit-footer>div{display:flex;align-items:center;gap:10px;font-size:12px;letter-spacing:1.1px}.live-indicator{width:4px;height:4px;border-radius:50%;background:#c6ac70;box-shadow:0 0 8px #c6ac7050}.footer-separator{padding:0 3px;color:#3e4c41}.footer-year{margin-left:13px}.return-ui{position:fixed;right:28px;bottom:24px;border:1px solid var(--line);background:#111514a0;backdrop-filter:blur(14px);padding:12px 17px;border-radius:4px;color:#a3ac9e;font-size:12px;opacity:.35;transition:opacity .2s}.return-ui:hover{opacity:1}.return-ui kbd{margin-left:15px}.part-label{position:fixed;pointer-events:none;background:#151c17ee;border:1px solid #72654b;color:var(--gold);font-size:12px;letter-spacing:1px;padding:8px 12px;border-radius:3px;transform:translate(14px,14px)}
.loading{position:fixed;inset:0;z-index:50;background:#111514;display:flex;align-items:center;justify-content:center;flex-direction:column;transition:opacity .8s}.loading.loaded{opacity:0;pointer-events:none}.loader-orbit{width:46px;height:46px;border-radius:50%;border:1px solid #c9b58b25;border-top-color:var(--gold);animation:turn 2.5s linear infinite}.loading p{color:var(--gold);font-size:12px;letter-spacing:4px;margin-top:24px}.loading span{color:var(--muted);font-size:12px;letter-spacing:2px;margin-top:5px}.error{position:fixed;inset:0;z-index:60;background:#111514;display:flex;justify-content:center;align-items:center;flex-direction:column;padding:25px;text-align:center}.error p{font-size:20px;color:var(--gold)}.error span{font-size:14px;color:var(--muted)}.error button{border:1px solid var(--line);padding:13px 25px;margin-top:25px}.modal-backdrop{position:fixed;inset:0;z-index:20;background:#030805aa;backdrop-filter:blur(10px);display:grid;place-items:center;padding:28px}.about-dialog{position:relative;width:min(620px,100%);max-height:90vh;overflow:auto;padding:50px;background:#1b211c;border:1px solid #c9b58b30;border-radius:5px;box-shadow:0 30px 100px #0007}.modal-close{position:absolute;top:20px;right:20px}.about-dialog h2{font:400 38px/1.3 'Cormorant Garamond',Georgia,'Microsoft YaHei',serif;letter-spacing:2px;margin:30px 0 26px}.about-dialog h2 i{color:var(--gold);font-style:normal}.about-dialog p{font-size:16px;line-height:1.95;color:#b5bdb0}.about-dialog p.about-note{font-size:14px;color:#8c9788;margin-top:25px}.material-samples{display:flex;justify-content:space-between;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:22px 0;margin:25px 0}.material-samples>div{display:flex;align-items:center;gap:12px}.material-samples span{font-size:14px}.material-samples small{display:block;font-size:12px;color:#758371;letter-spacing:1px;margin-top:7px}.sample{width:26px;height:26px;border-radius:50%;display:block}.sample.porcelain{background:radial-gradient(circle at 30% 25%,#fffceb,#c0c2b4 60%,#5a6b59)}.sample.brass{background:linear-gradient(130deg,#746240,#f4df9d,#a8884d,#f1d28b)}.sample.glass{background:linear-gradient(140deg,#829b9160,#e0b4c680,#99bce650);border:1px solid #abbcaf77}.about-keys{display:flex;gap:22px;color:#8e9b87;font-size:12px}.about-keys kbd{display:inline-block;border:1px solid #46543f;border-radius:3px;padding:3px 6px;font:11px 'DM Sans',sans-serif;margin-right:4px}.source-link{display:inline-block;font-size:12px;color:var(--gold);margin-top:28px;border-bottom:1px solid var(--line);padding-bottom:5px}@keyframes turn{to{transform:rotate(360deg)}}
@media(min-width:1800px){.specimen-title{top:20%}.inspector{top:34%;width:282px}.inspector p{font-size:15px}.part-specs div{font-size:13px}.control-dock{bottom:106px;padding:15px 20px;gap:12px}.interaction-hint,.view-controls{bottom:214px}.dock-button{padding:0 18px}.speed-control input{width:107px}.exhibit-footer{bottom:32px}.masthead{top:42px}}
@media(max-width:1150px){.specimen-title{width:250px;left:4%;top:18%}h1{font-size:77px}.chinese-title{font-size:16px;letter-spacing:2px}.intro{font-size:13px}.inspector{right:3.5%;width:210px;top:30%}.part-specs div{font-size:12px;gap:7px}.inspector p{font-size:13px}.speed-control label{display:none}.control-dock{gap:3px;padding:9px 10px}.dock-button{padding:0 10px}.exhibit-footer>span:first-child{letter-spacing:.5px}.exhibit-footer>span:last-child{display:none}.anatomy-panel{left:4%;width:250px}.view-controls{bottom:169px}}
@media(max-width:800px){.masthead{top:22px;left:6%;right:6%;height:52px;padding-bottom:21px}.brand span{font-size:10px;letter-spacing:1.5px}.brand b{letter-spacing:1px}.brand svg{width:19px}.brand{gap:9px}.topnav{position:static;transform:none;gap:21px;margin-left:auto;margin-right:22px}.nav-link{font-size:13px;letter-spacing:1px;padding-bottom:25px}.nav-link span{display:none}.fullscreen-button{width:31px;height:31px}.specimen-title{top:111px;left:6%;width:240px}.specimen-title .eyebrow{font-size:10px;letter-spacing:2px}.small-rule{width:20px}h1{font-size:70px;line-height:.9;margin:21px 0 15px}.chinese-title{font-size:13px;letter-spacing:2px;margin-bottom:14px}.intro{display:none}.specimen-taxonomy{margin-top:23px;font-size:10px;gap:9px;width:240px}.specimen-taxonomy small{font-size:11px}.text-button{font-size:12px;margin-top:23px;gap:14px}.text-button svg{width:20px}.inspector{top:auto;bottom:182px;right:6%;width:200px;padding-top:9px;border-top-color:rgba(199,181,142,.25)}.inspector-heading .eyebrow{font-size:10px}.part-index{margin:12px 0 6px;gap:9px}.part-index>span:first-child{font-size:22px}.part-index>span:last-child{font-size:10px}.inspector h2{font-size:17px;margin-bottom:10px}.inspector p{font-size:12px;line-height:1.75;margin-bottom:12px}.part-specs{gap:8px;padding:11px 0}.part-specs div{font-size:11px}.inspector-footer{font-size:11px;padding-top:10px}.view-controls{left:6%;right:auto;bottom:198px;flex-direction:column;gap:0;align-items:start}.view-controls>span{font-size:10px;margin:0 0 7px 9px}.view-button{font-size:12px;min-width:53px;padding:7px 9px}.interaction-hint{bottom:146px;font-size:10px;letter-spacing:.5px}.interaction-hint svg{width:14px}.interaction-hint i{margin:0 5px}.control-dock{bottom:76px;padding:8px;gap:1px;width:calc(100% - 12%);max-width:520px;justify-content:space-around}.dock-button{height:40px;gap:6px;font-size:12px;padding:0 8px}.dock-button svg{width:17px;height:17px}.dock-separator{margin:0 2px;height:20px}.speed-control{gap:7px;padding:0 5px}.speed-control input{width:51px}.speed-control output{font-size:11px;width:35px}.dock-button.icon-only{width:30px;padding:0 6px}#orbit span{display:none}.exhibit-footer{left:6%;right:6%;bottom:22px;justify-content:center;padding-top:15px}.exhibit-footer>span:first-child{display:none}.exhibit-footer>div{font-size:10px;letter-spacing:1px}.anatomy-panel{top:345px;left:6%;width:180px;max-height:calc(100% - 545px);padding-top:10px}.anatomy-label>span:last-child{display:none}.anatomy-label .eyebrow{font-size:10px}.part-list{grid-template-columns:1fr}.part-list button{font-size:12px;padding:8px}.anatomy-mode h1{font-size:66px}.about-dialog{padding:37px 27px}.about-dialog h2{font-size:30px}.about-dialog p{font-size:14px}.material-samples{gap:12px}.material-samples>div{gap:7px;flex-direction:column;align-items:start}.material-samples small{font-size:9px;letter-spacing:.4px}.material-samples span{font-size:12px}.about-keys{gap:10px;flex-wrap:wrap}}
@media(max-width:480px){.topnav{gap:16px;margin-right:0}#about-open{display:none}.fullscreen-button{margin-left:17px}.brand span{font-size:9px}.brand svg{width:17px}.control-dock{width:90%;padding:7px 5px;bottom:72px}.dock-button{padding:0 6px;font-size:11px}.dock-button svg{width:16px}.speed-control{padding:0 3px}.speed-control input{width:38px}.speed-control output{width:31px;font-size:10px}.speed-separator{display:none}.inspector{bottom:169px;width:174px;background:linear-gradient(90deg,rgba(17,21,20,.0),rgba(17,21,20,.7))}.inspector p{font-size:12px}.part-specs div{font-size:10px}.interaction-hint{bottom:138px}.view-controls{bottom:191px}.specimen-title{top:105px}.text-button{margin-top:19px}.anatomy-panel{width:146px;max-height:calc(100% - 533px)}.anatomy-label .eyebrow{font-size:9px}.exhibit-footer{bottom:19px}.inspector-footer{font-size:10px}.probe-button{font-size:12px;padding:9px}}
@media(max-height:720px) and (min-width:801px){.masthead{top:24px}.specimen-title{top:19%}h1{font-size:75px;margin:20px 0}.specimen-taxonomy{margin-top:20px}.text-button{margin-top:21px}.inspector{top:25%}.inspector p{margin-bottom:13px}.part-index{margin-top:15px}.control-dock{bottom:65px}.interaction-hint,.view-controls{bottom:145px}.exhibit-footer{bottom:18px;padding-top:13px}.anatomy-panel{top:calc(19% + 216px);max-height:calc(66% - 206px)}}
@media(prefers-reduced-motion:reduce){*{transition:none!important}.loader-orbit{animation:none}}
@media(min-width:801px){.view-controls{bottom:119px}.inspector{max-height:calc(70% - 183px);overflow:auto;scrollbar-width:thin;scrollbar-color:#484b3f transparent}} @media(min-width:1800px){.view-controls{bottom:133px}.inspector{max-height:calc(66% - 187px)}} @media(max-width:800px){.inspector{padding:12px;background:rgba(19,25,20,.85);backdrop-filter:blur(16px);border:1px solid var(--line);border-radius:3px;max-height:46vh;overflow:auto}.inspector.collapsed{width:174px;background:rgba(19,25,20,.55)}.inspector h2{font-size:18px}.inspector p,.part-specs div{font-size:12px}.part-list button{font-size:14px}.probe-button{font-size:14px}.dock-button{min-height:40px}.view-controls{bottom:185px}}
@media(min-width:801px) and (max-aspect-ratio:13/10){.inspector{top:auto;bottom:180px;background:rgba(19,25,20,.88);backdrop-filter:blur(16px);padding:16px;border:1px solid var(--line);border-radius:3px;max-height:45vh}.inspector.collapsed{padding:10px 15px;width:225px;background:rgba(19,25,20,.6)}}
