/* The four village drawers share one compact rhythm. */
.quiet-panel{width:min(520px,calc(100vw - 24px));padding:24px;background:#f8f3e7}.quiet-panel h2{font-size:26px;margin-bottom:20px}.quiet-panel .dialogue-copy{min-height:0}.quiet-panel #dialogActions:empty{display:none}.panel-tabs{display:flex;gap:4px;padding:4px;background:#eae8d9;border-radius:10px}.panel-tabs button{flex:1;border:0;background:transparent;padding:10px 3px;border-radius:7px;font-size:12px;min-height:42px;white-space:nowrap}.panel-tabs button[aria-pressed=true]{background:#fffaf0;color:#58704b;box-shadow:0 2px 5px #35452c12}.quiet-panel .panel-hint{font-size:12px;line-height:1.7;margin:14px 0;color:#7c826c}.map-banner{height:100px;overflow:hidden;position:relative;margin-bottom:16px;border-radius:10px;background:#abb596}.map-banner img{width:100%;height:100%;object-fit:cover;object-position:center 49%;opacity:.6}.map-banner span{position:absolute;inset:0;display:grid;place-items:center;color:#fffdf1;text-shadow:0 2px 8px #25321a;font:18px 'Songti SC',serif;letter-spacing:5px;background:#35492d26}.place-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.place-tile{position:relative;display:flex;flex-direction:column;align-items:flex-start;text-align:left;padding:14px 12px 12px 42px;border:1px solid #d8cdb6;border-radius:10px;background:#fffaf0;min-height:83px}.place-tile:hover,.memory-card:hover{background:#eeeedd;border-color:#b0b98e}.place-tile strong{font-family:'Songti SC',serif;font-size:16px;font-weight:600}.place-tile small{margin-top:6px;font-size:10px;line-height:1.6;color:#8c8d74}.tile-symbol{position:absolute;left:12px;top:13px;font-size:21px;color:#9d8d65}.quiet-panel .panel-footnote{font-size:11px;text-align:center;margin:14px 0 0;color:#969981}.daily-note{background:linear-gradient(125deg,#edeedc,#f4eddc);padding:24px;border-radius:8px;border-top:2px solid #a8b18c}.daily-note>span{font-family:serif;color:#9b784d;border:1px solid;padding:4px}.daily-note h3{font-family:'Songti SC',serif;font-size:23px;margin:20px 0 10px}.daily-note p{margin:0;line-height:1.9}.daily-note small{display:block;margin-top:14px;font-size:12px;color:#8a8e78}.utility-links{display:flex;justify-content:center;gap:24px;margin:18px 0 0;border-top:1px solid #e0d9c7;padding-top:12px}.utility-links button{border:0;background:none;font-size:12px;color:#7e846c;min-height:36px;padding:4px}.memory-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:18px}.memory-card{display:flex;flex-direction:column;text-align:left;padding:15px 12px;gap:8px;border:1px solid #d9d3bf;background:#fffaf0;border-radius:9px;min-height:104px}.memory-card strong{font-family:serif;font-size:15px}.memory-card small,.memory-card span{font-size:10px;color:#8c9179}.memory-card span{color:#71835f}.person-card{display:flex;flex-direction:column;align-items:center;text-align:center;background:#eeeddf;border-radius:10px;padding:15px;gap:8px}.person-card>span{display:grid;place-items:center;width:42px;height:42px;border:1px solid #cfb3a0;background:#e7d8c6;border-radius:50%;font:22px serif;color:#87735d}.person-card strong{font:16px serif}.person-card small{font-size:10px;color:#8e927c}.empty-note{text-align:center;padding:32px 8px}.empty-note>span{font-size:36px;color:#cba090}.empty-note p{font-size:13px}.pager{display:flex;justify-content:center;align-items:center;gap:18px;margin-top:15px;font-size:12px}.pager button{border:1px solid #d5cab1;border-radius:6px;padding:8px;background:#faf6ea;min-height:40px}.pager button:disabled{cursor:default;opacity:.35}.management-grid .place-tile{min-height:112px}.management-grid .place-tile small{font-size:11px}
/* A quiet landing and a separate, uninterrupted letter reader. */
.welcome{position:fixed;inset:0;z-index:20;overflow-y:auto;overscroll-behavior:contain;background:#f6f3e9;color:#414b3b}.welcome[hidden]{display:none}.welcome-header{position:relative;z-index:2;display:flex;justify-content:space-between;align-items:center;padding:26px 5vw}.wordmark{border:0;background:none;text-align:left;font:22px 'Songti SC',serif;letter-spacing:4px}.wordmark span{display:block;font:9px sans-serif;color:#858d78;letter-spacing:3px;margin-top:7px}.music-switch{border:1px solid #b9bea180;border-radius:30px;padding:10px 14px;background:#f8f5e5b8;font-size:12px;color:#72815e;min-height:42px}.welcome.home{background:#e7ecda}.welcome-landscape{position:absolute;inset:0 0 0 30%;background:linear-gradient(90deg,#e7ecda 0%,#e7ecda16 28%),linear-gradient(0deg,#e7ecda 0%,transparent 20%),url('../assets/welcome-village-v1.png') center/cover;opacity:.78}.home-copy{position:relative;z-index:1;max-width:1100px;margin:6vh auto 0;padding:0 6vw}.home-copy h1{font-family:'Songti SC',serif;font-size:clamp(58px,7vw,92px);letter-spacing:.22em;margin:28px 0;color:#465b40;font-weight:500}.home-poem{font:22px/2.1 'Songti SC',serif;letter-spacing:4px;margin:0 0 24px}.home-invitation{font-size:13px;line-height:2;color:#7b866b;margin:0 0 26px}.return-greeting{font-family:serif;font-size:19px;margin:24px 0}.welcome-primary{display:block;border:1px solid #637855;border-radius:4px;background:#657a57;color:#fff9e9;padding:16px 26px;min-height:54px;font:17px 'Songti SC',serif;letter-spacing:2px;cursor:pointer}.welcome-primary span{margin-left:32px}.welcome-links{display:flex;gap:24px;align-items:center;margin-top:19px}.welcome-links button,.text-button{background:none;border:0;border-bottom:1px solid #bdc0a6;padding:9px 0;font-size:13px;color:#7e846b;min-height:42px}.welcome-note{font-size:11px;line-height:1.9;color:#96987e;margin:22px 0}.welcome-footer{position:relative;z-index:1;text-align:center;letter-spacing:5px;font-size:10px;color:#8c967c;padding:34px 10px}.home .welcome-footer{margin-top:6vh}.petals{position:fixed;inset:0;pointer-events:none;overflow:hidden}.petals i{position:absolute;left:calc(var(--n)*12%);top:-25px;width:9px;height:15px;border-radius:90% 0 90% 20%;background:#dfb4b6;opacity:.5;animation:petal-fall calc(14s + var(--n)*1s) linear infinite;animation-delay:calc(var(--n)*-2s)}@keyframes petal-fall{to{transform:translate(100px,110vh) rotate(300deg)}}.welcome-card{position:relative;width:min(520px,calc(100% - 32px));margin:30px auto 60px;padding:36px 42px;background:#fffcf1d9;border:1px solid #d8ceba;box-shadow:0 15px 70px #5769440b;text-align:center;border-radius:12px}.welcome-card h2{font:32px 'Songti SC',serif;margin:22px 0}.welcome-card>p{line-height:2;font-size:14px;color:#768368}.welcome-card .eyebrow{font-size:10px}.welcome-card .welcome-note{font-size:11px;color:#8b937c}.welcome-card .welcome-primary{width:100%;margin-top:24px}.welcome-card .welcome-links{justify-content:center}.welcome-card form{text-align:left}.welcome-card label{display:block;font:13px serif;margin:28px 0 10px}.welcome-card input{font:20px 'Songti SC',serif;letter-spacing:2px;width:100%;border:0;border-bottom:1px solid #abae8b;border-radius:0;background:#f1f0e2;padding:14px;color:#485840}.welcome-card input:focus{outline:2px solid #9baf87;outline-offset:2px}#nameError{font-size:12px;color:#a55c50;min-height:18px}.ceremony-portrait{width:112px;height:112px;object-fit:cover;object-position:top;border-radius:50%;margin:15px auto;border:3px solid #e2c3bd}.village-badge{width:158px;height:174px;margin:10px auto;filter:drop-shadow(0 6px 10px #a1884530)}.award-card .village-badge{animation:badge-arrive .9s ease-out}@keyframes badge-arrive{from{opacity:0;transform:translateY(-20px) scale(.8)}to{opacity:1;transform:none}}.welcome-card .badge-owner{font-size:18px;letter-spacing:3px;color:#987a4e}.passport-card .village-badge{width:110px;height:120px}.welcome.letter{background:#f8f6f1;font-family:'Noto Serif SC','Songti SC',serif;color:#2a2622}.letter .welcome-header{display:none}.letter-navigation{max-width:672px;margin:auto;padding:24px 24px 0;position:relative}.letter-navigation button{padding:6px 12px;border:1px solid #30343c33;border-radius:2px;background:#f3eee6cc;font:14px/20px 'Noto Serif SC',serif;min-height:36px}.chief-letter{position:relative;max-width:672px;margin:auto;padding:32px 24px 0;display:flex;flex-direction:column;align-items:center;letter-spacing:.025em}.chief-letter h1{font:36px/40px 'Ma Shan Zheng','KaiTi',cursive;letter-spacing:.15em;margin:0 0 32px;font-weight:400}.chief-portrait{width:192px;height:192px;border-radius:50%;object-fit:cover;object-position:top;border:4px solid #ce7e924d;margin-bottom:32px;box-shadow:0 10px 15px #0002}.chief-name{font-size:18px;line-height:28px;letter-spacing:.1em;color:#ce7e92;margin:0 0 8px}.chief-subtitle{font-size:14px;line-height:20px;color:#7e7367;margin:0 0 32px}.chief-paper{width:100%;padding:32px;border:1px solid #30343c33;border-radius:2px;background:#f3eee699;font-size:18px;line-height:28px}.chief-paper p{margin:20px 0 0}.chief-paper p:first-child{margin:0 0 24px}.chief-paper .chief-motto{font:24px/32px 'Ma Shan Zheng','KaiTi',cursive;color:#ce7e92;text-align:center}.chief-emphasis{font-weight:500;color:#ce7e92}.chief-paper .chief-quote{font:20px/28px 'Ma Shan Zheng','KaiTi',cursive;color:#ce7e92;text-align:center;padding:8px 0}.chief-paper .chief-sign{text-align:right;color:#7e7367;font-size:14px;line-height:20px}.letter-end{position:relative;display:flex;justify-content:center;padding:40px 24px 64px}.letter-end .welcome-primary{background:#ce7e92;border-color:#ce7e92;border-radius:2px;font-family:'Ma Shan Zheng','KaiTi',cursive;font-size:18px;box-shadow:0 0 30px #d7b44740}.hud #identityButton{font-family:serif;border:1px solid #cdbb97;border-radius:50%;min-height:30px;min-width:30px;width:30px;height:30px;font-size:15px;color:#997548;padding:0}.sound-control{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 0}.sound-control input{max-width:150px;accent-color:#6f805b}.scene-foot #buildVersion{display:none}
@media(max-width:760px){.home-copy{margin:10vh auto 0;padding:0 8vw}.welcome-landscape{inset:0;background:linear-gradient(180deg,#e7ecda70,#e7ecdae8 55%,#e7ecda),url('../assets/welcome-village-v1.png') center/cover;opacity:.8}.home-copy h1{font-size:66px;margin:22px 0}.home-poem{font-size:20px;line-height:2}.welcome-header{padding:20px 24px}.home-copy .eyebrow{font-size:10px;letter-spacing:3px}.home .welcome-footer{margin-top:20px;padding:18px 8px}.welcome-card{padding:28px 24px;margin-top:20px}.welcome-card h2{font-size:28px}.chief-letter h1{font-size:30px;line-height:36px}.chief-portrait{width:160px;height:160px}.chief-paper{padding:24px;font-size:16px;line-height:24px}.quiet-panel{padding:24px 18px}.quiet-panel h2{font-size:24px}.place-tile{padding-left:37px}.tile-symbol{left:10px}.place-tile strong{font-size:15px}.panel-tabs button{font-size:11px}.chief-paper .chief-motto{font-size:24px}.home-invitation{font-size:13px}.welcome .welcome-note{max-width:90%}}
@media(max-height:720px){.home-copy{margin-top:2vh}.home-copy h1{font-size:56px;margin:18px 0}.home-poem{font-size:18px;margin-bottom:16px}.home-invitation{margin-bottom:18px}.home .welcome-note{margin:14px 0}.home .welcome-footer{margin:0;padding:10px}.map-banner{height:64px}.place-tile{min-height:70px;padding-top:10px}.quiet-panel h2{margin-bottom:14px}.memory-card{min-height:88px}}
@media(prefers-reduced-motion:reduce){.petals i{animation:none;display:none}.award-card .village-badge{animation:none}}

.welcome h1:focus,.welcome h2:focus{outline:none}

.nav-badge{min-width:6px;width:6px;height:6px;padding:0;top:7px;right:8px;background:#ad9071}
.name-suggestions{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:13px}.name-suggestions span{width:100%;font-size:11px;color:#8b927b}.name-suggestions button{border:1px solid #cdbf9e;border-radius:999px;background:#fffaf0;color:#637855;padding:7px 14px;font:14px 'Songti SC',serif;letter-spacing:2px;min-height:36px}.name-suggestions button:hover,.name-suggestions button:focus{background:#e6ecd8}.diary-page{font-family:'Songti SC',serif;color:#4f5947}.diary-page img{display:block;width:100%;height:145px;object-fit:cover;border-radius:9px;margin:0 0 14px;filter:saturate(.8)}.diary-page p{font-size:16px;line-height:2;letter-spacing:.03em;margin:14px 0}.diary-meta{font-size:11px;letter-spacing:1px;color:#8b866e;border-bottom:1px solid #d9cfb8;padding-bottom:12px}.diary-shelf{display:grid;gap:10px}.diary-card{display:flex;flex-direction:column;align-items:flex-start;text-align:left;border:1px solid #d8cdb6;background:#fffaf0;border-radius:9px;padding:14px;gap:5px}.diary-card:hover{background:#edf0df}.diary-card span,.diary-card small{font-size:11px;color:#898d77}.diary-card strong{font:18px 'Songti SC',serif;color:#56694d}
.letter-navigation button,.letter-end .welcome-primary{font-family:'Songti SC','STSong',serif}.letter-navigation button{font-size:16px;letter-spacing:.08em}.village-intro{width:min(900px,calc(100% - 36px));margin:24px auto 54px;text-align:center}.village-intro h2{font:34px 'Songti SC',serif;margin:18px 0}.village-intro>p{max-width:540px;margin:14px auto;line-height:2;color:#69755f}.village-intro>img{display:block;width:100%;max-height:58vh;object-fit:contain;background:#dae0ca;border:1px solid #c7cfb0;border-radius:12px;margin:22px auto;box-shadow:0 14px 38px #58694122}.village-intro .welcome-primary{margin:26px auto 0}.map-overview-link{width:100%;border:1px dashed #b9b68e;border-radius:8px;background:#fffaf0;color:#687959;padding:9px;margin:0 0 10px;font:13px 'Songti SC',serif}.full-village-map img{display:block;width:100%;height:auto;border-radius:9px;border:1px solid #cbd1b5}.full-village-map p{font:13px/1.8 'Songti SC',serif;color:#78816b;margin:12px 2px 0}
.village-intro{width:min(1500px,calc(100% - 28px))}.village-intro>img{max-height:none;object-fit:initial;cursor:zoom-in}.full-map-panel{width:min(1500px,calc(100vw - 20px));max-width:none;max-height:calc(100vh - 20px);padding:22px}.full-map-panel .dialogue-copy{overflow:auto;max-height:calc(100vh - 205px)}.full-map-panel .full-village-map{min-width:880px}.full-map-panel .full-village-map img{border-radius:10px}.full-map-panel #dialogActions{position:sticky;bottom:0;background:#f8f3e7;padding-top:12px}@media(max-width:760px){.village-intro{width:calc(100% - 18px);margin-top:12px}.village-intro h2{font-size:27px}.village-intro>img{width:1536px;max-width:none;margin-left:0}.village-intro{overflow-x:auto;text-align:left}.village-intro>.eyebrow,.village-intro>h2,.village-intro>p,.village-intro>.welcome-primary{text-align:center;margin-left:auto;margin-right:auto}.full-map-panel{width:calc(100vw - 12px);padding:16px}.full-map-panel .full-village-map{min-width:980px}}
