:root{--gold:#edc989;--ink:#16110d;--muted:#baa98e;--cream:#fff3db;--red:#a94732;color-scheme:dark;font-family:"Microsoft YaHei","PingFang SC",sans-serif}*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;background:#17110c;color:var(--cream)}button{font:inherit;cursor:pointer;color:inherit;border:1px solid #b9995b55;background:#241b14;border-radius:8px;transition:background .2s,transform .2s,border-color .2s}button:hover{background:#513925;border-color:var(--gold)}button:active{transform:scale(.97)}button:focus-visible{outline:3px solid #ffd991;outline-offset:4px}button:disabled{cursor:wait;opacity:.6}#panorama,#hotspots{position:fixed;inset:0}#panorama{touch-action:none;cursor:grab}#panorama:active{cursor:grabbing}#panorama canvas{display:block;width:100%;height:100%}#hotspots{pointer-events:none}.topbar{position:fixed;top:0;left:0;right:0;display:flex;justify-content:space-between;align-items:center;padding:26px 32px;background:linear-gradient(#120e0cbb,transparent);pointer-events:none}.brand{display:flex;align-items:center;gap:14px;text-shadow:0 2px 10px #000}.seal{font-family:serif;font-size:32px;border:1px solid var(--gold);padding:3px 8px;color:var(--gold);border-radius:2px}.brand h1{font-family:"SimSun",serif;letter-spacing:.17em;font-size:25px;margin:0}.brand p{font-size:12px;letter-spacing:.3em;margin:6px 0 0;color:#e2cbaa}.tools{display:flex;gap:10px;pointer-events:auto}.tools button{width:42px;height:42px;background:#21180bb0;backdrop-filter:blur(10px);font-size:23px;border-radius:50%}.view-help{position:fixed;top:113px;left:50%;transform:translateX(-50%);font-size:14px;letter-spacing:.08em;padding:9px 18px;border-radius:30px;background:#160f0ac9;transition:opacity 1s;pointer-events:none;white-space:nowrap}.hotspot{position:absolute;transform:translate(-50%,-50%);pointer-events:auto;border:0;background:none!important;text-align:center;filter:drop-shadow(0 3px 10px #000);padding:0}.hotspot .orb{display:block;width:65px;height:65px;border-radius:50%;background:#160e06bd;border:1px solid #eac07caa;box-shadow:0 0 22px #ffc36d44;position:relative;animation:breathe 3s ease-in-out infinite}.hotspot .orb::after{content:"";position:absolute;inset:-8px;border:1px solid #edc98955;border-radius:50%;animation:ring 3s infinite}.hotspot .label{display:block;margin-top:13px;background:#1b130ad9;border:1px solid #d1a56766;border-radius:4px;padding:6px 11px;font-size:14px;letter-spacing:.1em;white-space:nowrap}.hotspot.visited .orb{border-color:#c4ddad}.icon-art{display:block;background-image:url('assets/icons.png');background-size:300% 200%;background-repeat:no-repeat;width:100%;height:100%;mix-blend-mode:screen;border-radius:inherit}.icon0{background-position:0 0}.icon1{background-position:50% 0}.icon2{background-position:100% 0}.icon3{background-position:0 100%}.icon4{background-position:50% 100%}.icon5{background-position:100% 100%}#dock{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);display:flex;gap:5px;padding:9px 13px;border:1px solid #e7c08466;background:linear-gradient(180deg,#2a2118ee,#120e0eee);box-shadow:0 16px 45px #0006;border-radius:16px;backdrop-filter:blur(15px)}.nav-item{width:90px;border:0;background:none;padding:4px 9px;position:relative;font-size:14px;white-space:nowrap}.nav-item .icon-art{width:48px;height:48px;margin:0 auto 5px}.nav-item.visited:after{content:"";position:absolute;top:3px;right:11px;width:6px;height:6px;border-radius:50%;background:#e3c790}.nav-item.active{background:#b9874933}.visit-count{position:fixed;right:30px;bottom:35px;font-size:13px;color:#e8d5b8;text-shadow:0 2px 5px #000}.visit-count span{font-size:27px;color:var(--gold);margin-right:4px}.compass{position:fixed;bottom:39px;left:32px;width:66px;height:66px;border:1px solid #edc98977;border-radius:50%;background:#1710089c;display:grid;place-items:center;font-size:12px;color:#e3c89b}.compass div{position:absolute;width:2px;height:24px;top:4px;left:31px;background:linear-gradient(var(--gold),transparent);transform-origin:1px 28px}#entrance{position:fixed;inset:0;z-index:20;perspective:1500px;overflow:hidden}.door-half{position:absolute;top:0;bottom:0;width:50%;background-image:linear-gradient(#0002,#0004),url('assets/door.png');background-size:200% 100%;transition:transform 2.5s cubic-bezier(.2,.65,.25,1),opacity 2.5s}.door-half.left{left:0;background-position:left center;transform-origin:left center}.door-half.right{right:0;background-position:right center;transform-origin:right center}.entry-copy{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:radial-gradient(ellipse,#100a0480,transparent 65%);text-align:center;transition:opacity .4s}.eyebrow{font-size:12px;letter-spacing:.18em;text-transform:uppercase;color:var(--gold)}.entry-copy h2{font-family:"SimSun",serif;font-size:clamp(48px,6vw,84px);font-weight:400;line-height:1.35;letter-spacing:.15em;margin:25px 0 34px;text-shadow:0 6px 30px #000}.entry-copy h2 em{font-style:normal;color:#e7c489}.entry-copy p{color:#d4b98d;font-size:13px;letter-spacing:.16em}.primary{background:linear-gradient(135deg,#e4c28b,#b18345);border-color:#ffe1ac;color:#231b10;padding:15px 37px;font-weight:bold;font-size:17px;box-shadow:0 8px 36px #0008}.primary:hover{background:#f1d098}.opening .entry-copy{opacity:0;pointer-events:none}.opening .left{transform:rotateY(-100deg);opacity:0}.opening .right{transform:rotateY(100deg);opacity:0}dialog{padding:0;border:1px solid #b3905777;border-radius:18px;background:radial-gradient(ellipse at 50% 5%,#3b2b1b,#191410 65%);color:var(--cream);width:min(1120px,94vw);max-height:90dvh;box-shadow:0 30px 120px #000c;overflow:auto}dialog::backdrop{background:#070605b8;backdrop-filter:blur(7px)}.modal-head{display:flex;align-items:center;justify-content:space-between;padding:24px 30px 15px;border-bottom:1px solid #cbaa5e25}.modal-head h2{font-family:"SimSun",serif;font-size:30px;letter-spacing:.1em;margin:7px 0 0}.close{width:42px;height:42px;border-radius:50%;font-size:28px;background:#16110b}.modal-footer{padding:16px 28px;display:flex;align-items:center;justify-content:space-between;gap:15px;border-top:1px solid #cbaa5e25;min-height:65px;font-size:14px;color:var(--muted)}.small-btn{padding:9px 16px;white-space:nowrap;color:var(--gold)}#content{min-height:350px;padding:20px 30px}.instruction{text-align:center;color:#dcc8a4;font-size:16px;margin:0 0 18px}.split{display:grid;grid-template-columns:1fr 1fr;gap:25px;align-items:center}.visual-stage{background:#100e0c;border:1px solid #ac8d4e44;border-radius:14px;overflow:hidden;position:relative;min-height:370px}.model-stage{height:min(49vh,440px);touch-action:none;cursor:grab}.model-stage canvas{width:100%;height:100%;display:block}.stage-badge{position:absolute;left:14px;top:12px;font-size:12px;background:#17110caa;padding:6px 10px;border-radius:20px;color:#d5bd92;pointer-events:none}.control-row{display:flex;justify-content:center;gap:10px;flex-wrap:wrap;margin:14px 0 0}.control-row button{padding:10px 20px}.control-row .selected,.choice.selected{border-color:var(--gold);background:#b1844744}.note{font-size:12px;color:#ac9b85;text-align:center;margin:12px 0 0}.compare-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:15px}.face-box{background:#070605;border-radius:12px;overflow:hidden;position:relative;border:1px solid #b3915044;aspect-ratio:1}.face-box img{width:300%;height:100%;max-width:none;position:absolute;left:0;top:0}.face-box[data-face="1"] img{left:-100%}.face-box[data-face="2"] img{left:-200%}.face-box .focus-box{position:absolute;left:18%;width:64%;height:16%;border:2px solid #ffdb8e;border-radius:15px;box-shadow:0 0 0 999px #0005;top:34%;opacity:0;transition:top .3s,opacity .3s}.face-box.focused .focus-box{opacity:1}.face-label{text-align:center;font-size:15px;letter-spacing:.15em;color:var(--gold);margin:12px 0 0}.mix-stage{width:min(100%,420px);aspect-ratio:1;position:relative;margin:auto;background:#050403;border-radius:16px;overflow:hidden}.mix-stage canvas{width:100%;height:100%;display:block}.choices{display:flex;flex-direction:column;gap:15px}.choices .row-title{font-size:15px;color:var(--gold);margin-bottom:8px}.choice-group{display:flex;gap:10px}.choice{width:80px;height:68px;padding:0;overflow:hidden;position:relative;background:#080604}.choice canvas{width:100%;height:100%}.mix-result{font-size:14px;color:#cbb698;margin-top:18px}.restore-layout{display:grid;grid-template-columns:1fr 170px;gap:24px;max-width:740px;margin:auto}.restore-stage{aspect-ratio:1;position:relative;background:#050403;border-radius:14px;overflow:hidden}.restore-stage canvas{width:100%;height:100%;display:block}.patches{display:flex;flex-direction:column;justify-content:center;gap:14px}.patch{padding:4px;background:#080604;border-radius:10px;height:88px}.patch canvas{width:100%;height:100%}.patch.done{opacity:.4;border-color:#afd99b}.repair-status{text-align:center;color:var(--gold);font-size:16px;margin:15px 0 0}.success-glow{animation:success 1.1s ease}.pattern-layout{display:grid;grid-template-columns:1fr 1fr;gap:24px}.pattern-main{aspect-ratio:1;background:#0a0806;border-radius:14px;position:relative;overflow:hidden}.pattern-main img{width:300%;height:100%;max-width:none;position:absolute;left:-100%}.detail-dot{position:absolute;border:2px solid #ffe1a4;background:#d69a3c66;border-radius:50%;width:32px;height:32px;animation:breathe 2s infinite}.zoom-window{aspect-ratio:1;background:#080604;border-radius:14px;overflow:hidden;position:relative;border:1px solid #bd935f77}.zoom-window canvas{width:100%;height:100%}.culture-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.culture-card{border:1px solid #ba995233;border-radius:12px;background:#120e0a;overflow:hidden;padding:0;text-align:left}.culture-card img{width:100%;height:275px;object-fit:cover;display:block;transition:transform .6s}.culture-card:hover img{transform:scale(1.035)}.culture-card div{padding:17px}.culture-card h3{font-size:19px;color:var(--gold);margin:0 0 8px}.culture-card p{font-size:14px;color:#c4b195;margin:0;line-height:1.6}.photo-large{max-height:56vh;max-width:100%;display:block;margin:auto;object-fit:contain}.source-link{color:#d7b982;font-size:12px}.source-list{font-size:14px;line-height:1.9;color:#d1c0a7}.source-list a{color:var(--gold)}.source-list p{margin:8px 0}.error{position:fixed;inset:20%;z-index:100;background:#261c13;padding:35px;border:1px solid var(--gold)}#toast{position:fixed;left:50%;top:22%;transform:translate(-50%,-10px);padding:12px 23px;background:#20170ef0;border:1px solid #d9b97988;border-radius:25px;opacity:0;pointer-events:none;z-index:100;transition:.3s;font-size:15px}#toast.show{opacity:1;transform:translate(-50%,0)}@keyframes breathe{50%{box-shadow:0 0 28px #ffbf6577}}@keyframes ring{0%{transform:scale(.8);opacity:.8}100%{transform:scale(1.24);opacity:0}}@keyframes success{50%{box-shadow:0 0 70px #d7b56799}}@media(max-width:800px){.topbar{padding:18px}.brand h1{font-size:19px}.brand p{font-size:11px}.seal{font-size:26px}.tools{gap:6px}.tools button{width:35px;height:35px;font-size:20px}.view-help{top:94px;font-size:12px}#dock{bottom:13px;gap:0;padding:7px 5px;width:calc(100% - 20px);justify-content:space-around}.nav-item{width:16.6%;padding:4px 0;font-size:12px}.nav-item .icon-art{width:40px;height:40px}.compass{left:18px;bottom:110px;width:48px;height:48px}.compass div{left:23px;top:1px;transform-origin:1px 23px}.visit-count{right:18px;bottom:110px}.hotspot .orb{width:52px;height:52px}.hotspot .label{font-size:12px}.modal-head{padding:17px 20px}.modal-head h2{font-size:24px}#content{padding:17px;min-height:260px}.split{grid-template-columns:1fr;gap:15px}.model-stage{height:40vh;min-height:270px}.mix-stage{max-width:290px}.choices{gap:8px}.choice-group{justify-content:center}.choices .row-title{text-align:center}.choice{height:51px;width:70px}.mix-result{display:none}.compare-grid{gap:7px}.face-label{font-size:12px}.restore-layout{grid-template-columns:1fr 90px;gap:10px}.patch{height:70px}.pattern-layout{gap:12px}.culture-grid{grid-template-columns:1fr}.culture-card{display:flex;align-items:center}.culture-card img{width:40%;height:125px}.culture-card div{padding:12px}.modal-footer{padding:12px 17px;font-size:12px}.modal-footer .small-btn{padding:8px 11px}.entry-copy h2{font-size:52px}.instruction{font-size:14px}.control-row button{padding:9px 14px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}

.choice canvas,.patch canvas{object-fit:contain}
