:root{--ink:#292c27;--muted:#77786f;--paper:#f3f0e8;--accent:#72785f}*{box-sizing:border-box}body{margin:0;overflow:hidden;background:var(--paper);color:var(--ink);font:14px/1.7 "Microsoft YaHei",sans-serif}button,a,input{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer}button{border:0;background:none}button:hover{color:#81866a}button:focus-visible,a:focus-visible,input:focus-visible{outline:2px solid #788461;outline-offset:5px}#scene{position:fixed;inset:0}#scene canvas{display:block;touch-action:none}header{position:fixed;top:0;left:0;width:100%;padding:30px 44px;display:flex;align-items:center;justify-content:space-between;background:linear-gradient(#f3f0e8ed,transparent);z-index:3}.brand{display:flex;gap:16px;align-items:center;text-decoration:none;color:var(--ink);font:25px Georgia,serif;letter-spacing:4px}.seal{display:grid;place-items:center;width:48px;height:48px;border:1px solid #6a6c5a;font:29px "Songti SC","SimSun",serif;letter-spacing:0}.brand small{display:block;font:8px/2.8 sans-serif;letter-spacing:2px}nav{display:flex;gap:28px;align-items:center}nav button{font-size:12px;letter-spacing:1px}nav span{font:10px Georgia;color:#858777;margin-left:9px}#aboutBtn{border:1px solid #a8aa9a;border-radius:50%;width:25px;height:25px;padding:0}.intro{position:fixed;top:24%;left:5%;pointer-events:none;transition:opacity .7s,transform .7s;z-index:2;text-shadow:0 1px 14px #f3f0e8}.intro.hide{opacity:0;transform:translateY(-15px);visibility:hidden}.eyebrow{font-size:9px;letter-spacing:3px;color:#757963}h1{font:44px/1.5 "Songti SC","SimSun",serif;letter-spacing:6px;margin:22px 0}p{color:var(--muted);font-size:12px;line-height:2.2}.intro button{pointer-events:auto}.text-button{padding:10px 0;border-bottom:1px solid #8b8d7f;margin-top:22px;font-size:12px;letter-spacing:2px}.text-button span{margin-left:40px}.room-label{position:fixed;right:44px;top:130px;font-size:10px;letter-spacing:2px;color:#737565}.room-label i{display:inline-block;width:4px;height:4px;background:#8e9578;border-radius:50%;margin:0 10px}footer{position:fixed;bottom:0;left:0;right:0;display:flex;align-items:center;gap:28px;padding:25px 44px;background:linear-gradient(transparent,#e9e4d8ee);z-index:3;font-size:10px;letter-spacing:1px}.instruction{display:flex;align-items:center;gap:12px}.mouse{width:13px;height:20px;border:1px solid #777d6c;border-radius:9px;position:relative}.mouse:after{content:'';position:absolute;top:4px;left:5px;height:5px;border-left:1px solid}.divider{height:12px;border-left:1px solid #a8ab9b;margin:0 10px}.journey{margin-left:auto;display:flex;align-items:center;gap:15px}.journey input{width:140px;accent-color:#747b60;height:2px;cursor:pointer}.arrows{display:flex;gap:8px}.arrows button{width:33px;height:33px;border:1px solid #9c9f8e;border-radius:50%}.hidden{display:none!important}.back{position:fixed;left:44px;top:125px;z-index:4;padding:10px 16px;background:#f3f0e8dc;border:1px solid #ddd9ce;font-size:11px}.back kbd{margin-left:24px;color:#939585}.detail{position:fixed;right:5%;top:24%;width:255px;padding:27px;background:#f5f2eaeF;border:1px solid #dedbd0;box-shadow:0 20px 80px #28291a12;z-index:4}h2{font:29px "Songti SC","SimSun",serif;letter-spacing:3px;margin:20px 0}.detail-copy{font-size:11px}.detail dl{margin:24px 0}.detail dl div{display:flex;justify-content:space-between;font-size:11px;padding:8px 0;border-bottom:1px solid #dfded4}dt{color:#888a7e}dd{margin:0}.primary{background:#626b50;color:#fff;padding:13px 18px;width:100%;font-size:12px;text-align:left}.primary:hover{background:#525c41;color:white}.primary span{float:right}.save{width:100%;margin:12px 0;font-size:12px}.detail small{font-size:9px;color:#929286;display:block;line-height:1.8}dialog{border:1px solid #d6d4c8;background:#f5f2ea;color:var(--ink);padding:32px;max-height:85vh;width:min(1000px,90vw)}dialog::backdrop{background:#25271dc0;backdrop-filter:blur(8px)}.modal-head{display:flex;justify-content:space-between;align-items:flex-start;gap:25px}.modal-head h2{margin:12px 0 24px}.close{font-size:30px;line-height:1}.grid{display:grid;grid-template-columns:repeat(4,1fr);gap:24px}.card{text-align:left;padding:0}.card img{width:100%;height:220px;object-fit:contain;background:#e8e4db;padding:15px;transition:transform .3s}.card:hover img{transform:translateY(-4px)}.card span{display:block;font-size:11px;margin-top:10px}.card small{font-size:9px;color:#868978}#info{width:min(480px,90vw)}#infoText{white-space:pre-line}#toast{position:fixed;bottom:95px;left:50%;transform:translateX(-50%);padding:10px 22px;background:#33392ceb;color:white;font-size:12px;opacity:0;transition:opacity .2s;z-index:20;pointer-events:none}#toast.show{opacity:1}#loading{position:fixed;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:var(--paper);z-index:30}#loading p{letter-spacing:4px}.empty{grid-column:1/-1;padding:30px}
@media(max-width:750px){header{padding:20px}.brand{font-size:19px;gap:10px}.brand small{font-size:6px;letter-spacing:1px}.seal{width:37px;height:37px;font-size:24px}nav{gap:10px}nav button{font-size:10px}nav span{margin-left:3px}.intro{top:20%;left:7%}h1{font-size:32px}.intro p{font-size:11px}.room-label{right:20px;top:98px;font-size:8px}.eyebrow{font-size:8px}.intro .eyebrow{max-width:130px;line-height:2}.secondary,.divider{display:none}footer{padding:19px 20px;gap:12px}.journey input{width:60px}.journey{gap:7px}.arrows{gap:4px}.arrows button{width:28px;height:28px}.instruction{gap:6px;font-size:9px}.detail{top:auto;bottom:85px;left:20px;right:20px;width:auto;padding:15px;display:grid;grid-template-columns:1fr 1fr;gap:5px 18px}.detail h2{font-size:22px;margin:4px 0}.detail .eyebrow{grid-column:1/-1}.detail-copy,.detail small{display:none}.detail dl{margin:0;grid-column:2;grid-row:2/4}.detail dl div{padding:3px 0}.detail .primary{font-size:11px;padding:8px 12px;grid-column:1}.detail .save{margin:2px 0;text-align:left}.back{left:20px;top:94px}.grid{grid-template-columns:repeat(2,1fr);gap:16px}.card img{height:170px}dialog{padding:22px}.journey>span:last-child{display:none}}
@media(prefers-reduced-motion:reduce){*{transition:none!important}}

@media(min-width:751px){.intro{left:44px}h1{font-size:40px;letter-spacing:5px}}

/* Exhibition palette: neutral stone, warm paper, charcoal typography. */
:root{--ink:#292d2c;--muted:#727772;--paper:#f3f3ef;--accent:#656e65}
header{background:linear-gradient(#f3f3efee,transparent)}
footer{background:linear-gradient(transparent,#eceeeaee)}
.detail{background:#f6f6f1f5;border-color:#d8dcd6;box-shadow:0 18px 70px #242c2314}
.room-label{color:#6c7470}.intro{text-shadow:0 1px 16px #ffffff80}
.back{background:#f4f5efeb;border-color:#dadfd7}
dialog{background:#f5f5f0}.card img{background:#e6e8e2}

/* Dark adaptation around the exhibition lighting. */
header{background:linear-gradient(#242a2bd9,transparent);color:#eeeee6}.brand,nav button{color:#eeeee6}.brand .seal{border-color:#b8b9ad}nav span{color:#b9bdad}
.intro{color:#f0eee5;text-shadow:0 2px 16px #20282780}.intro p,.intro .eyebrow,.intro button{color:#d7d9ce}.room-label{color:#cad0c7}
footer{background:linear-gradient(transparent,#242a2bdd);color:#e1e3d8}.journey input{accent-color:#bfc6ad}

.brand>span:last-child{font-size:18px;letter-spacing:.1em}.intro{pointer-events:none}.intro button{pointer-events:auto}@media(max-width:750px){.brand>span:last-child{font-size:13px}.brand small{font-size:7px}.intro h1{font-size:36px}.intro{top:22%}}

@media(max-width:750px){.intro{top:auto;bottom:105px;left:20px}.intro .eyebrow,.intro p{display:none}.intro h1{font-size:23px;line-height:1.35;margin:0 0 6px}.intro h1 br{display:none}.intro .text-button{margin-top:0;padding:5px 0}.room-label{display:none}}

.gallery-avatar{width:48px;height:48px;object-fit:cover;border-radius:50%;border:1px solid #d9c9a6}#loading .gallery-avatar{width:80px;height:80px}.end-contact{position:fixed;z-index:5;bottom:90px;left:50%;transform:translateX(-50%);padding:12px 24px;background:#eee4cf;color:#514534;border:1px solid #c5ad83;border-radius:30px;box-shadow:0 8px 28px #0003;white-space:nowrap}.end-contact[hidden]{display:none}#letterDialog{max-width:560px;width:calc(100% - 32px);max-height:85dvh;overflow:auto;background:#f3ead9;padding:42px;color:#514534;border:1px solid #d5c09c;border-radius:8px}#letterDialog::backdrop{background:#19171199;backdrop-filter:blur(5px)}.letter-close{position:absolute;right:14px;top:10px;font-size:28px}#letterBody{font:17px/2 Georgia,'Songti SC',serif;color:#675944;white-space:pre-line}#cowNameForm label{font-size:12px}.name-row{display:flex;gap:8px;margin-top:10px}.name-row input{min-width:0;width:100%;font:inherit;padding:8px;border:1px solid #cbb897;background:#fff8e9}.name-row button{width:auto;white-space:nowrap}#nameReply{color:#8e563b}#letterDialog small{font-size:11px;color:#938674}.letter-links{display:grid;gap:12px;margin-top:24px}.letter-links a{color:#67533b;text-decoration:none;padding:14px;border:1px solid #d4c4a7;font-size:12px}.letter-links strong{font-size:17px;font-weight:400}.letter-links a:hover{background:#e9dcc4}@media(max-width:750px){.gallery-avatar{width:36px;height:36px}nav{gap:10px}#aboutBtn{display:none}#letterNav{font-size:10px}#letterDialog{padding:30px 22px}.brand{gap:8px}.brand small{letter-spacing:0}.brand>span:last-child{font-size:12px}}

#letterTitle{font-size:26px;letter-spacing:1px}#letterBody{font-size:16px;line-height:1.85}
