:root{--scene-ink:#273f3a;--scene-muted:#3b554d;--scene-warm:#815239;--scene-glow:#f7f0d9;--season-accent:#a8653c}
body[data-season="秋"]{--scene-ink:#523b29;--scene-muted:#5e4d37;--scene-warm:#864529}body[data-season="冬"]{--scene-ink:#2c4057;--scene-muted:#3d5365;--scene-warm:#73513d}body.night{--scene-ink:#f4e5c4;--scene-muted:#ded5b7;--scene-warm:#e2b781;--scene-glow:#12243b}
header,.intro,.label,.npc-pin,.places-head,#destinations,#season-panel,#season-badge,#town-hours,.compass{font-family:'Zisha Kai','DFKai-SB','BiauKai','KaiTi',serif}
.brand,header nav{color:var(--scene-ink);text-shadow:0 1px 3px var(--scene-glow)}.brand b{border-color:currentColor}.intro{color:var(--scene-ink);padding:6px 20px 12px 0;background:radial-gradient(ellipse at 0 48%,#f4edd67d,transparent 75%);text-shadow:0 1px 2px var(--scene-glow),0 0 9px var(--scene-glow)}.intro h1{font-family:'Zisha Kai','DFKai-SB',serif;font-weight:400;color:var(--scene-ink);font-size:42px}.intro h1 span{font-size:25px}.intro p,.night .intro p{color:var(--scene-muted);font-size:13px;line-height:2;font-weight:400}.intro .eyebrow,.night .intro .eyebrow{color:var(--scene-warm);font-size:13px}.intro .seal{color:var(--scene-warm);border-color:var(--scene-warm)}.night .intro{background:radial-gradient(ellipse at 0 48%,#0c1b2e80,transparent 78%)}
.label,.night .label{font-family:'Zisha Kai','DFKai-SB',serif;font-size:14px;letter-spacing:1px;line-height:1.25;padding:6px 12px 7px;color:#f5e3ba;background:linear-gradient(110deg,#243e38f2,#364a3df2);border:1px solid #c1a976;border-radius:2px;box-shadow:inset 0 0 0 2px #273e35,0 3px 6px #14251f44;text-shadow:0 1px 2px #12251f;transition:color .18s,border-color .18s}.label:before{content:'◆';font:7px serif;color:#bd7856;display:inline-block;vertical-align:middle;margin-right:5px}.label:after{height:12px;background:linear-gradient(#c6ac75,#647c60);width:1px}.label:hover,.night .label:hover{background:linear-gradient(110deg,#4a4e36,#283e35);color:#fff3d3;border-color:#f2ce88}.night .label{background:linear-gradient(110deg,#1c2d37f2,#263c43f2);box-shadow:inset 0 0 0 2px #192b30,0 3px 8px #050c1677}
.npc-pin,.npc-pin.npc-met{font-family:'Zisha Kai','DFKai-SB',serif;font-size:14px;font-weight:400;line-height:1.3;letter-spacing:1px;padding:4px 12px 5px;color:#f9e8bf;background:linear-gradient(90deg,#293e2d00,#293e2df0 12%,#293e2df0 88%,#293e2d00);border:0;border-bottom:1px solid #bea064;border-radius:0;box-shadow:none;text-shadow:0 1px 3px #101e16}.npc-pin:before{content:'◈';font-size:9px;color:#d9b87b;margin-right:5px}.npc-pin:after{height:8px;background:linear-gradient(#c4a871,transparent)}.npc-pin:hover,.npc-pin.npc-met:hover{color:#fff7df;background:linear-gradient(90deg,#433c2800,#433c28f2 12%,#433c28f2 88%,#433c2800)}.night .npc-pin{background:linear-gradient(90deg,#1a273600,#1a2736f2 12%,#1a2736f2 88%,#1a273600)}
#season-badge{position:fixed;right:40px;top:246px;z-index:9;display:grid;grid-template-columns:auto 1fr;align-items:center;gap:11px;padding:10px 14px;min-width:160px;background:linear-gradient(120deg,#f4eddbef,#e2dcc6ed);border:1px solid #b9a47f;color:#4b4c38;box-shadow:inset 0 0 0 3px #f3edda80,0 4px 16px #243c3320;text-align:left}#season-badge span{font-size:23px;letter-spacing:3px;color:var(--season-accent)}#season-badge small{font-size:11px;letter-spacing:1px}.night #season-badge{background:linear-gradient(120deg,#21333eea,#1a2b36f5);color:#d8ccab;border-color:#8c805d}.night #season-badge span{color:#e2c087}.identity-view #season-badge{display:none}
#season-panel[hidden]{display:none}#season-panel{position:fixed;z-index:30;top:100px;right:38px;width:354px;max-height:calc(100dvh - 130px);overflow:auto;padding:26px 25px 22px;background:linear-gradient(135deg,#f8f0ddf7,#e9dfc7f7);border:1px solid #a88c61;box-shadow:inset 0 0 0 5px #f1e6cf,0 15px 65px #152d3855;color:#493f2e;backdrop-filter:blur(12px)}.season-close{position:absolute;right:12px;top:8px;font-size:26px}.season-kicker{font-size:12px;letter-spacing:3px;color:#8b6b44}#season-name{font:38px 'Zisha Kai',serif;color:var(--season-accent);margin:14px 0 9px;letter-spacing:7px}#season-description{font-size:14px;line-height:1.85;min-height:48px;margin:0 0 6px}#season-date{font:11px Georgia,serif;letter-spacing:1px;color:#8b7959;margin-bottom:18px}.season-select-label{display:grid;gap:8px;font-size:12px;letter-spacing:1px}.season-select-label select{width:100%;padding:9px 12px;font:16px 'Zisha Kai',serif;color:#384c43;background:#fff9e9;border:1px solid #b9a47f;border-radius:0}.season-steps{display:flex;justify-content:space-between;margin:10px 0 14px;font-size:12px;color:#856745}.season-steps button{padding:5px 0}.season-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:6px}.season-grid button{padding:8px 0;border:1px solid #c9b994;font:13px 'Zisha Kai',serif;writing-mode:vertical-rl;letter-spacing:3px;min-height:54px;background:#f6edd9}.season-grid button[aria-pressed=true]{color:#f7e7be;background:#405447;border-color:#405447;box-shadow:inset 0 0 0 2px #b7a16e}.season-grid button:hover{border-color:#936641;color:#9e5732}#season-real{display:block;width:100%;padding:11px;margin-top:18px;color:#f4e3bd;background:#455748;border:1px solid #6c7556;letter-spacing:2px}#season-mode{font-size:11px;line-height:1.7;color:#7c6343;margin:10px 0}#season-panel>small{font-size:10px;line-height:1.7;color:#8a7c65}#season-panel a{color:#7a6b50;text-underline-offset:3px}.night #season-panel{background:linear-gradient(135deg,#283a43f7,#192c37f7);color:#eadbc0;border-color:#a28d64;box-shadow:inset 0 0 0 5px #34444a,0 15px 65px #0008}.night #season-panel h2,.night #season-panel .season-kicker{color:#e1be83}.night #season-description{color:#ded2b7}.night #season-mode,.night #season-panel>small,.night #season-panel a,.night #season-date{color:#bead89}.night .season-grid button{background:#2c4147;border-color:#7e7e63;color:#dfd2b0}.night .season-grid button[aria-pressed=true]{background:#9e855d;color:#fff1d5}.night .season-select-label select{background:#243942;color:#f0dfbe;border-color:#8e805e}
@media(max-width:1000px){header nav{gap:7px}.intro h1{font-size:34px}.intro h1 span{font-size:21px}#season-badge{right:40px;top:254px}.label{font-size:13px;padding:5px 10px}}
@media(max-width:650px){header nav{gap:0}#seasons-open{padding:7px 4px;font-size:10px}.intro{padding-right:5px;max-width:230px}.intro h1{font-size:29px}.intro h1 span{font-size:18px}.intro .eyebrow{font-size:10px}.label{font-size:12px;padding:5px 8px}.label:before{margin-right:3px}.npc-pin{font-size:12px}#season-badge{top:139px;right:14px;min-width:124px;padding:7px 9px;gap:4px}#season-badge span{font-size:19px}#season-badge small{font-size:9px}#town-hours{display:none}#season-panel{top:77px;right:12px;left:12px;width:auto;max-height:calc(100dvh - 96px);padding:22px}.season-grid button{min-height:45px;padding:6px 0}.season-kicker{font-size:11px}.season-select-label select{font-size:15px}.close-view #season-badge{display:none}}
.close-view #season-badge,.close-view #town-hours{display:none}
