:root{--red:#a3262c;--red-deep:#791c23;--paper:#f6f0e4;--ink:#4d2c29;--muted:#967b6d;--gold:#dcc29a;--line:#ded0bc;--ease:cubic-bezier(.22,1,.36,1);--serif:'Songti SC','STSong',serif;--sans:'PingFang SC','Microsoft YaHei',sans-serif}*{box-sizing:border-box}[hidden]{display:none!important}html,body{margin:0;height:100%;overflow:hidden}body{background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:14px}button,a{font:inherit;touch-action:manipulation}button{cursor:pointer;border:0;color:inherit;background:none}a{color:var(--red);text-underline-offset:4px}button:focus-visible,a:focus-visible,summary:focus-visible{outline:2px solid var(--red);outline-offset:4px}h1,h2,h3,p{margin:0}.atlas-header{height:84px;display:flex;align-items:center;justify-content:space-between;padding:0 34px;background:var(--red-deep);color:var(--paper);border-bottom:3px solid var(--gold);position:relative;z-index:3}.atlas-brand{display:flex;align-items:center;gap:16px}.atlas-mark{width:42px;height:42px;color:var(--gold);flex-shrink:0}.atlas-brand h1{font-family:var(--serif);font-weight:600;letter-spacing:4px;font-size:29px}.atlas-brand p{font-size:10px;letter-spacing:2.5px;color:var(--gold);margin-top:7px}.header-end{display:flex;align-items:center;gap:28px}.header-end span{font-size:12px;letter-spacing:3px;color:#ecdbbd}.header-end button{font-size:12px;color:var(--paper);min-height:44px}.header-end button:focus-visible{outline-color:var(--gold)}.atlas{position:relative;height:calc(100svh - 84px);isolation:isolate}.map-canvas{position:absolute;inset:0 0 74px;overflow:hidden}.map-surface{width:100%;height:100%;display:block;touch-action:none;user-select:none;-webkit-user-select:none;cursor:grab}.map-surface.dragging{cursor:grabbing}.land{fill:#f1e8d8;stroke:#decfba;stroke-width:1}.district-fill{fill:#f8f2e8;stroke:#e1d4c1;stroke-width:.8}.streets{fill:none;stroke:#e2d5c3;stroke-width:.65;opacity:.65}.district-name{fill:#b59a85;font-size:19px;letter-spacing:9px;opacity:.65}.river-base{fill:none;stroke:#dfb9a7;stroke-width:36;stroke-linecap:round;stroke-linejoin:round}.river-bank{fill:none;stroke:#f8ead7;stroke-width:27;stroke-linecap:round;opacity:.5}.suzhou-base{stroke-width:13}.suzhou-bank{stroke-width:8}.river-trace{fill:none;stroke:#b96e58;stroke-width:1.8;stroke-linecap:round;stroke-dasharray:1;stroke-dashoffset:1;animation:riverTrace 1.65s var(--ease) .12s forwards}.river-trace.second{animation-delay:.38s;stroke-width:1}.river-flow{fill:none;stroke:#b57a62;stroke-width:1;stroke-dasharray:5 19;opacity:.4;animation:riverFlow 12s linear infinite}.water-label{fill:#a77962;font-family:var(--serif);font-size:14px;letter-spacing:7px}.map-ornament{color:#af9079;opacity:.25}.map-ornament path,.map-ornament rect{fill:none;stroke:currentColor;stroke-width:1}.themebar{position:absolute;top:23px;left:30px;z-index:2;display:flex;align-items:center;gap:2px;background:rgba(246,240,228,.95);padding:4px;border-bottom:1px solid var(--line)}.themebar button{min-height:44px;padding:0 17px;font-size:12px;color:var(--muted);transition:color .25s,background .25s}.themebar button[aria-pressed=true]{color:var(--paper);background:var(--red)}.themebar button:hover{color:var(--red-deep)}.themebar button[aria-pressed=true]:hover{color:var(--paper)}.map-hint{position:absolute;top:89px;left:34px;z-index:1;font-size:11px;letter-spacing:1px;color:var(--muted);pointer-events:none}.map-tools{position:absolute;right:26px;bottom:120px;display:flex;flex-direction:column;z-index:2;background:rgba(246,240,228,.96);border:1px solid var(--line)}.map-tools button{height:43px;width:44px;font-size:21px}.map-tools button+button{border-top:1px solid var(--line)}.map-tools button:hover{color:var(--red);background:#ede0cf}.map-tools .reset{font-size:19px}.map-meta{position:absolute;bottom:91px;left:32px;z-index:1;font-size:10px;color:var(--muted);letter-spacing:.5px;pointer-events:none}.atlas-compass{fill:var(--red);stroke:var(--red);opacity:.6}.atlas-compass text{stroke:none;fill:var(--red);font-family:var(--serif);font-size:13px;letter-spacing:2px}.memory-pin{cursor:pointer;outline:none}.pin-appearance{animation:pinArrival .7s var(--ease) both;animation-delay:var(--delay);transform-origin:0 0}.pin-body{transition:transform .3s var(--ease)}.pin-body .hit{fill:transparent}.pin-core{fill:var(--paper);stroke:var(--red);stroke-width:1.7;transition:fill .2s,stroke-width .2s}.pin-no{fill:var(--red);font:11px var(--sans);pointer-events:none;transition:fill .2s}.pin-name{fill:var(--ink);font-size:14px;font-weight:500;paint-order:stroke;stroke:var(--paper);stroke-width:5px;stroke-linejoin:round;pointer-events:none}.pin-year{fill:var(--muted);font-family:var(--serif);font-size:12px;letter-spacing:1px;paint-order:stroke;stroke:var(--paper);stroke-width:3px;pointer-events:none}.pin-building{color:#9f5c4b;opacity:.75;transition:opacity .3s,transform .3s var(--ease);pointer-events:none}.pin-building path,.pin-building rect,.pin-building circle,.pin-building line{fill:none;stroke:currentColor;stroke-width:2.2}.memory-pin:hover .pin-core,.memory-pin:focus-visible .pin-core,.memory-pin.selected .pin-core{fill:var(--red);stroke-width:2}.memory-pin:hover .pin-no,.memory-pin:focus-visible .pin-no,.memory-pin.selected .pin-no{fill:var(--paper)}.memory-pin:hover .pin-body{transform:translateY(-3px)}.memory-pin.selected .pin-name{fill:var(--red-deep);font-weight:600}.memory-pin:hover .pin-building,.memory-pin.selected .pin-building{opacity:1;transform:translateY(-3px)}.focus-ring{fill:none;stroke:var(--red);stroke-width:1.5;opacity:0;pointer-events:none}.memory-pin:focus-visible .focus-ring{opacity:1;stroke-dasharray:3 3}.selection-ring{fill:none;stroke:var(--red);stroke-width:1.3;opacity:0;transform-origin:0 0;pointer-events:none}.memory-pin.selected .selection-ring{animation:pointEcho 1.6s var(--ease) 2}.selection-link{fill:none;stroke:var(--red);stroke-width:1.2;stroke-dasharray:4 7;opacity:.35;pointer-events:none}.index-rail{position:absolute;bottom:0;left:0;right:0;height:74px;display:flex;background:rgba(246,240,228,.98);border-top:1px solid var(--line);z-index:2;padding:0 28px;overflow:auto}.index-rail button{flex:1;min-width:123px;padding:12px 12px 10px;text-align:left;border-top:3px solid transparent;transition:background .25s,color .25s}.index-rail button:hover{background:#eee2d0}.index-rail button[aria-pressed=true]{border-top-color:var(--red);color:var(--red)}.index-year{display:block;font-family:var(--serif);font-size:23px;line-height:1.05}.index-name{font-size:10px;display:block;margin-top:7px;white-space:nowrap}.index-empty{padding:25px;color:var(--muted)}.detail{position:absolute;z-index:4;top:20px;right:20px;bottom:93px;width:374px;background:var(--paper);border-top:5px solid var(--red);box-shadow:0 12px 45px #54272214;display:flex;flex-direction:column}.detail-header{flex-shrink:0;display:flex;align-items:center;justify-content:space-between;padding:16px 22px 10px;font-size:10px;letter-spacing:1px;color:var(--muted)}.detail-header .close{width:38px;height:38px;font-size:24px;line-height:1}.detail-scroll{overflow-y:auto;overscroll-behavior:contain;flex:1;padding:0 26px 24px;scrollbar-width:thin;scrollbar-color:#d4bd9f transparent}.detail-year{font-family:var(--serif);font-size:66px;color:var(--red);line-height:1}.detail-year small{display:inline-block;font-family:var(--sans);font-size:10px;color:var(--muted);margin-left:12px;vertical-align:middle;letter-spacing:0;max-width:105px;line-height:1.8}.detail h2{font-family:var(--serif);font-size:26px;font-weight:600;line-height:1.4;margin-top:14px}.detail-address{font-size:11px;color:var(--muted);margin-top:10px;line-height:1.8}.detail .drawing{width:100%;height:145px;display:block;margin:15px 0 5px}.drawing path,.drawing rect,.drawing circle,.drawing line,.drawing polyline{stroke:#9b5140;stroke-width:1.5;fill:none}.drawing .wash{fill:#b94136;stroke:none;opacity:.09}.drawing .waterline{stroke:#c4a487;stroke-width:1.5}.detail h3{font-family:var(--serif);font-weight:500;font-size:20px;line-height:1.7;margin-bottom:12px}.detail p{font-size:13px;line-height:1.95;color:#876b5f}.detail-tabs{display:flex;gap:22px;border-bottom:1px solid var(--line);margin:16px 0 12px}.detail-tabs button{min-height:44px;font-size:12px;border-bottom:2px solid transparent}.detail-tabs button[aria-pressed=true]{border-bottom-color:var(--red);color:var(--red)}.detail-object{font-size:11px;color:var(--red);line-height:1.8;margin-top:15px}.detail-events{border-left:1px solid var(--line);padding-left:14px;margin:20px 0}.detail-event{display:flex;gap:13px;padding:7px 0;font-size:11px;color:var(--muted);line-height:1.7}.detail-event b{min-width:40px;color:var(--ink);font-weight:500;font-family:var(--serif);font-size:16px}.detail-sources{border-top:1px solid var(--line);padding:14px 0;color:var(--muted);font-size:11px}.detail-sources summary{cursor:pointer;min-height:28px}.detail-sources ol{padding-left:16px;line-height:1.9}.detail-nav{flex-shrink:0;border-top:1px solid var(--line);padding:11px 18px;display:flex;align-items:center;justify-content:space-between;gap:10px}.detail-nav button{min-height:42px;padding:0 12px;font-size:12px}.detail-nav .next{background:var(--red);color:var(--paper)}.detail-nav button:disabled{opacity:.3;cursor:default}.detail-nav span{font-size:11px;color:var(--muted)}.about{border:0;border-top:5px solid var(--red);background:var(--paper);color:var(--ink);padding:30px;max-width:530px;width:calc(100% - 32px)}.about::backdrop{background:#381b1a55;backdrop-filter:blur(4px)}.about h2{font-family:var(--serif);font-size:25px;margin:0 0 18px}.about p{line-height:1.9;font-size:13px;margin-bottom:12px;color:#876b5f}.about .close-about{float:right;font-size:24px;padding:0 0 8px 15px}.about a{font-size:12px}.about-note{margin-top:22px;font-size:11px;line-height:1.8;color:var(--muted)}.noscript{padding:30px}
@keyframes riverTrace{to{stroke-dashoffset:0}}@keyframes riverFlow{to{stroke-dashoffset:-240}}@keyframes pinArrival{from{opacity:0;transform:translateY(14px) scale(.8)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes pointEcho{0%{opacity:.55;transform:scale(.7)}100%{opacity:0;transform:scale(1.65)}}
@media(min-width:1800px){.atlas-header{height:96px}.atlas{height:calc(100svh - 96px)}.atlas-brand h1{font-size:33px}.detail{width:430px}.detail p{font-size:14px}.detail h2{font-size:30px}.detail .drawing{height:175px}}
@media(max-width:900px){.atlas-header{padding:0 22px}.atlas-brand h1{font-size:24px}.header-end span{display:none}.themebar{left:20px}.themebar button{padding:0 12px}.map-hint{left:24px}.detail{width:340px}.index-rail{padding:0 12px}.map-meta{left:20px;font-size:9px}}
@media(max-width:600px){.atlas-header{height:74px;padding:0 16px}.atlas{height:calc(100svh - 74px)}.atlas-brand{gap:10px}.atlas-mark{width:30px;height:30px}.atlas-brand h1{font-size:20px;letter-spacing:2px}.atlas-brand p{font-size:8px;letter-spacing:1px;margin-top:6px}.header-end button{font-size:11px}.themebar{top:14px;left:12px;right:12px;padding:3px}.themebar button{flex:1;padding:0 5px;white-space:nowrap;font-size:11px;min-height:41px}.map-hint{top:73px;left:16px;font-size:10px}.map-canvas{bottom:65px}.index-rail{height:65px;padding:0 8px}.index-rail button{min-width:116px;padding:9px 10px}.index-year{font-size:21px}.index-name{font-size:10px}.map-tools{right:12px;bottom:96px}.map-tools button{height:41px;width:41px}.map-meta{left:14px;bottom:80px;max-width:240px;line-height:1.6;font-size:9px}.detail{top:auto;bottom:0;left:0;right:0;width:auto;height:55%;max-height:550px;border-top-width:4px;box-shadow:0 -8px 35px #54272220}.detail-header{padding:8px 18px 5px}.detail-header .close{height:36px;width:36px}.detail-scroll{padding:0 22px 18px}.detail-year{font-size:46px}.detail h2{font-size:24px;margin-top:10px}.detail .drawing{height:120px;margin:8px 0}.detail h3{font-size:20px}.detail p{font-size:13px}.detail-nav{padding:8px 14px}.atlas.has-detail .map-tools{display:none}.about{padding:25px}.pin-name{font-size:15px}.pin-year{font-size:12px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.river-trace{stroke-dashoffset:0}.selection-ring{opacity:0}.pin-appearance{opacity:1}}

/* Digital exhibition revision: a continuous burgundy space and copper map. */
:root{--red:#ad353b;--red-deep:#501a23;--gold:#e3c38b;--night:#1b1016;--copper:#ba8661}
body{background:var(--night)}
.atlas-header{background:#211219;border-bottom:1px solid #b88b573d;padding-left:38px;padding-right:38px}
.atlas-brand h1{font-size:32px;letter-spacing:5px;color:#f3e7d3}
.atlas-brand p{font-size:10px;letter-spacing:4px;color:#c7a779}
.atlas-mark{width:40px;height:40px;color:#dbb577}
.header-end span{color:#bea38a;letter-spacing:2px}.header-end button{color:#e6c99d}
.atlas{background:#211219;color:#ead7bb}
.map-canvas{background:#211219;animation:exhibitReveal 1.5s var(--ease) both}
.map-canvas:after{content:'';position:absolute;inset:0;pointer-events:none;box-shadow:inset 0 0 110px 35px #170d1445;background:linear-gradient(180deg,#21121930,transparent 24%,transparent 80%,#21121935)}
.land{fill:url(#land-light);stroke:none}
.district-fill{fill:url(#district-material);stroke:#b485624a;stroke-width:.8;filter:drop-shadow(4px 9px 3px #09060a50)}
.streets{stroke:#c4946845;stroke-width:.7;opacity:.5}
.district-name{fill:#d1a87c;font-size:21px;letter-spacing:12px;opacity:.43}
.river-base{stroke:#120f15;stroke-width:36;filter:drop-shadow(0 3px 4px #07040c8c)}
.river-bank{stroke:url(#river-metal);stroke-width:28;opacity:.8}
.suzhou-base{stroke-width:13}.suzhou-bank{stroke-width:8;opacity:.68}
.river-trace{stroke:#f1c888;stroke-width:1.1;animation-duration:2.1s;animation-delay:.2s}
.river-trace.second{stroke-width:.8;animation-delay:.5s}
.river-flow{stroke:#f9d7a4;stroke-width:.8;stroke-dasharray:3 30;opacity:.32;animation-duration:18s}
.river-light,.river-light-halo{fill:none;stroke:#fff0bc;stroke-dasharray:100 1800;stroke-dashoffset:1900;pointer-events:none;animation:riverLight 12s linear 1.4s infinite}
.river-light{stroke-width:1.8;opacity:.9}.river-light-halo{stroke-width:9;opacity:.4}
.water-label{fill:#dec098;letter-spacing:7px;font-size:13px;opacity:.65}
.map-ornament{color:#c49672;opacity:.15}.atlas-compass{fill:#dfbd85;stroke:#dfbd85;opacity:.55}.atlas-compass text{fill:#dfbd85}
.point-light{pointer-events:none;transition:opacity .5s}
.themebar{left:34px;top:20px;background:transparent;border:0;border-bottom:1px solid #c397633a;padding:0;gap:16px}
.themebar button{color:#bfa58e;padding:0 3px 3px;font-size:12px;position:relative;border-bottom:2px solid transparent;transition:color .3s,border-color .3s}
.themebar button[aria-pressed=true]{background:none;color:#f3d49d;border-bottom-color:#d2ad73}
.themebar button:hover,.themebar button[aria-pressed=true]:hover{color:#ffe0a8}
.map-hint{left:38px;top:77px;color:#b39178;font-size:10px;letter-spacing:1.5px}
.map-tools{background:#25171ee8;border:1px solid #cba67447;right:28px}
.map-tools button{color:#e4c494}.map-tools button+button{border-color:#b88f6330}.map-tools button:hover{background:#683337;color:#ffe4ae}
.map-meta{color:#c5a381;font-size:10px;line-height:1.6}
.pin-appearance{animation:monumentArrival 1.15s var(--ease) both;animation-delay:var(--delay)}
.pin-shadow{fill:#0b070d;opacity:.7;filter:blur(3px);pointer-events:none}
.pin-plinth{fill:#754043;stroke:#d5aa774a;stroke-width:.6;pointer-events:none}
.pin-plinth-side{fill:#371a23;stroke:#aa745752;stroke-width:.5;pointer-events:none}
.pin-building{color:#e1bd91;opacity:.95;filter:drop-shadow(0 3px 4px #10091080);transition:color .4s,transform .5s var(--ease),filter .4s}
.pin-building path{stroke-width:2.6}.building-shadow{color:#160f17;opacity:.8}.building-shadow path{stroke-width:5}
.pin-core{fill:#4d252d;stroke:#d2a572;stroke-width:1.2;transition:fill .25s,stroke .25s,filter .4s}
.pin-no{fill:#ecd0a3;font-size:11px}.pin-name{fill:#f0dfc5;stroke:#341c23;stroke-width:5px;font-family:var(--serif);font-size:16px;font-weight:600}
.pin-year{fill:#c79d70;stroke:#341c23;font-size:12px;letter-spacing:2px}
.memory-pin:hover .pin-body{transform:translateY(-5px)}
.memory-pin:hover .pin-building,.memory-pin.selected .pin-building{color:#ffdda0;transform:translateY(-4px);filter:drop-shadow(0 0 6px #dca96365)}
.memory-pin:hover .pin-core,.memory-pin:focus-visible .pin-core,.memory-pin.selected .pin-core{fill:#b83b3e;stroke:#f6d79f;stroke-width:1.5;filter:drop-shadow(0 0 7px #bf51495c)}
.memory-pin:hover .pin-no,.memory-pin:focus-visible .pin-no,.memory-pin.selected .pin-no{fill:#fff0d1}
.memory-pin.selected .pin-name{fill:#ffdda0}.focus-ring,.selection-ring{stroke:#f1cc8c}.selection-link{stroke:#d5b47d;opacity:.25;stroke-width:.8}
.index-rail{background:#211219;border-top:1px solid #ba8f604a;color:#d3b797;height:82px;padding:0 30px;overflow-y:hidden;scrollbar-width:thin;scrollbar-color:#956647 transparent}
.map-canvas{bottom:82px}
.index-rail:before{content:'';height:1px;position:absolute;left:44px;right:44px;top:15px;background:#b4885940;pointer-events:none}
.index-rail button{position:relative;padding:25px 12px 10px;border-top:none;min-width:123px}
.index-rail button:before{content:'';position:absolute;left:14px;top:12px;width:6px;height:6px;background:#8d614b;border:1px solid #c09a6a;border-radius:50%;transition:box-shadow .3s,background .3s}
.index-rail button:hover{background:#62303636;color:#f7d6a1}.index-rail button[aria-pressed=true]{background:#80353a40;color:#ffdda0}
.index-rail button[aria-pressed=true]:before{background:#f3cc86;box-shadow:0 0 9px #e1ac65}
.index-year{font-size:22px;letter-spacing:1px}.index-name{color:#ad8d78;margin-top:5px;font-size:10px}
.detail{color:var(--ink);background:#f2e9d8;border-top:2px solid #d6b078;box-shadow:-14px 8px 60px #0e071945;bottom:101px;right:24px}
.detail-header{color:#947053}.detail h2{color:#4e2829}.detail-year{color:#9c2e35}
.detail .drawing{background:linear-gradient(135deg,#ead8bc30,transparent);margin-top:18px}
.detail .drawing path{stroke:#864d3c}.detail .drawing .wash{fill:#ac343e;stroke:none}
.detail-nav .next{background:#8e2832}.about{border-top:2px solid #d6b078}.about::backdrop{background:#100912ad}
.atlas-header,.themebar,.map-hint,.index-rail{animation:chromeReveal .9s var(--ease) .2s both}
@keyframes exhibitReveal{from{opacity:0;filter:brightness(.6)}to{opacity:1;filter:brightness(1)}}
@keyframes chromeReveal{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:translateY(0)}}
@keyframes monumentArrival{from{opacity:0;transform:translateY(24px) scale(.93)}to{opacity:1;transform:translateY(0) scale(1)}}
@keyframes riverLight{to{stroke-dashoffset:0}}
@media(min-width:1800px){.atlas-brand h1{font-size:35px}}
@media(max-width:900px){.atlas-header{padding:0 22px}.atlas-brand h1{font-size:25px}.themebar{left:22px;gap:13px}.map-hint{left:26px}.detail{width:340px}.index-rail{padding:0 12px}}
@media(max-width:600px){.atlas-header{padding:0 14px}.atlas-brand h1{font-size:19px;letter-spacing:2px}.atlas-brand p{font-size:8px;letter-spacing:2px}.atlas-mark{width:28px;height:28px}.header-end button{font-size:10px}.themebar{top:12px;left:14px;right:14px;gap:8px;background:#23151dc9}.themebar button{font-size:11px;padding:0 3px;min-height:43px}.map-hint{top:67px;left:18px;font-size:9px;letter-spacing:1px}.map-canvas{bottom:69px}.index-rail{height:69px;padding:0 8px}.index-rail button{padding:22px 10px 8px;min-width:116px}.index-rail:before{left:20px;right:20px;top:12px}.index-rail button:before{top:9px}.index-year{font-size:21px}.detail{left:0;right:0;bottom:0;border-top-width:2px;box-shadow:0 -14px 55px #0e071950}.map-tools{right:12px;bottom:97px}.map-meta{left:16px;bottom:83px;font-size:9px}.pin-name{font-size:16px}.map-canvas:after{box-shadow:inset 0 0 65px 15px #170d1440}.river-light-halo{display:none}}
@media(prefers-reduced-motion:reduce){.river-light,.river-light-halo{display:none}.map-canvas{opacity:1;filter:none}.pin-appearance{opacity:1;transform:none}.atlas-header,.themebar,.map-hint,.index-rail{opacity:1;transform:none}}

.detail .drawing path[pathLength]{stroke-dasharray:1;stroke-dashoffset:1;animation:architectTrace 1.4s var(--ease) .15s forwards}
@keyframes architectTrace{to{stroke-dashoffset:0}}
@media(prefers-reduced-motion:reduce){.detail .drawing path[pathLength]{stroke-dashoffset:0}}

/* Pinches belong to the map; preserve native scrolling in story/index panels. */
html{touch-action:pan-x pan-y}
/* The chronology is cumulative: older places remain, current-stage clues are labeled. */
.era-bar{position:absolute;left:0;right:0;bottom:82px;height:60px;z-index:2;display:flex;gap:20px;align-items:center;padding:0 38px;background:#211219;border-top:1px solid #ba8f6040;animation:chromeReveal .9s var(--ease) .35s both}
.era-bar button{height:52px;min-width:94px;text-align:left;color:#aa8b73;position:relative;padding:7px 0;border-bottom:2px solid transparent;transition:color .3s,border-color .3s}
.era-bar button span{display:block;font-size:12px;letter-spacing:1px}.era-bar button small{display:block;font-size:9px;letter-spacing:1px;margin-top:5px;color:#a4876a}
.era-bar button[aria-pressed=true]{color:#f5d7a1;border-bottom-color:#d3ac6f}.era-bar button:hover{color:#ffe0ae}
.era-caption{margin-left:auto;font-size:11px;color:#d2b794;line-height:1.7;letter-spacing:1px}.era-caption small{display:block;font-size:9px;color:#a48b76;letter-spacing:.5px}
.map-canvas{bottom:142px}.map-meta{bottom:157px}.map-tools{bottom:186px}.detail{bottom:161px}
.pin-period{fill:#f0c783;stroke:#341c23;paint-order:stroke;stroke-width:3px;font-size:9px;letter-spacing:2px;pointer-events:none}
.memory-pin.era-current .pin-core{stroke:#f8d89e;stroke-width:2}.memory-pin.era-current .pin-building{color:#ffdda0}
.index-rail .era-current .index-name:after{content:' · 本阶段';color:#e4bd80}.index-rail .era-current:before{background:#d7b071}
.index-empty{font-size:12px;line-height:1.8;padding:20px 12px;color:#c5a587}
@media(max-width:1000px){.era-caption{display:none}.era-bar{gap:18px;padding:0 26px}}
@media(max-width:600px){.era-bar{bottom:69px;height:58px;padding:0 15px;gap:9px;justify-content:space-between}.era-bar button{min-width:0;flex:1;height:50px}.era-bar button span{font-size:11px;letter-spacing:.5px;white-space:nowrap}.era-bar button small{font-size:8px;letter-spacing:0}.map-canvas{bottom:127px}.map-meta{bottom:139px}.map-tools{bottom:154px}.detail{bottom:0}.index-empty{font-size:10px;padding:13px 8px}.pin-period{font-size:10px}}
@media(prefers-reduced-motion:reduce){.era-bar{opacity:1;transform:none}}

@media(max-width:600px){.detail{width:auto}}

/* Geographic revision: downloaded boundaries and coordinate-anchored points. */
.map-canvas{background:radial-gradient(ellipse at 50% 45%,#301a25,#170f19 80%)}
.geography-district{fill:url(#district-material);stroke:#b889665e;stroke-width:1;filter:none;vector-effect:non-scaling-stroke;animation:geographyReveal 1.2s var(--ease) both}
.geography-district:nth-child(3n){fill:#49252e}.geography-district:nth-child(3n+1){fill:#542b33}.geography-district:hover{fill:#68363d}
.geographic-river{fill:none;stroke:#dfb87b;stroke-linejoin:round;stroke-linecap:round;opacity:.85;pointer-events:none}.geographic-river.huangpu{stroke-width:3.75}.geographic-river.suzhou{stroke-width:.6}
.district-label{pointer-events:none}.district-name{fill:#ddb88f;font-family:var(--serif);font-size:13px;letter-spacing:2px;opacity:.75;paint-order:stroke;stroke:#391d28;stroke-width:3px}
.sea-name{fill:#ac896d;letter-spacing:12px;font-family:var(--serif);font-size:23px;opacity:.45;pointer-events:none}
.geographic-pin .hit{fill:transparent}.geographic-pin .pin-name{font-size:15px;stroke-width:5px}.geographic-pin .pin-year{font-size:11px;letter-spacing:1px}.geographic-pin .pin-period{font-size:10px;letter-spacing:1px}
.geographic-pin:hover .pin-core{filter:drop-shadow(0 0 8px #d59960)}.geographic-pin .pin-screen{transform-origin:0 0}.geographic-pin .geographic-label[hidden]{display:none}
.location-area{fill:#d19d64;fill-opacity:.08;stroke:#c89d75;stroke-opacity:.5;stroke-width:1;stroke-dasharray:3 3;vector-effect:non-scaling-stroke;pointer-events:none}
.map-cluster{cursor:pointer;outline:none}.cluster-core{fill:#84373d;stroke:#e0b778;stroke-width:1.5}.cluster-halo{fill:none;stroke:#af7358;stroke-width:1;opacity:.5}.map-cluster text{fill:#f6e4be;font-size:15px;pointer-events:none}.map-cluster .cluster-caption{font-size:10px;fill:#d2ad82;letter-spacing:1px;paint-order:stroke;stroke:#27141e;stroke-width:4px}.map-cluster:hover .cluster-core,.map-cluster:focus-visible .cluster-core{fill:#ae4449;stroke:#ffe0a3}.map-cluster:focus-visible .cluster-halo{opacity:1;stroke:#ffe0a3;stroke-width:2}
.map-meta{pointer-events:auto;line-height:1.8}.map-meta a{color:#b79879;font-size:9px;text-decoration:none}.map-meta a:hover{text-decoration:underline;color:#f0d6a6}.location-note{font-size:10px;line-height:1.8;color:#98785f;margin-top:10px}.location-note a{white-space:nowrap}
@keyframes geographyReveal{from{opacity:0}to{opacity:1}}
@media(max-width:600px){.district-name{font-size:11px;letter-spacing:1px}.map-meta{font-size:8px}.map-meta a{font-size:8px}.map-hint{letter-spacing:0}.geographic-pin .pin-name{font-size:13px}}

.geographic-orientation{position:absolute;right:39px;top:40px;z-index:1;color:#c3a076;font-family:var(--serif);font-size:11px;text-align:center;pointer-events:none}.geographic-orientation span{display:block;font-size:27px;margin-top:3px}.geographic-scale{position:absolute;left:32px;bottom:206px;z-index:1;color:#b79879;font-size:9px;pointer-events:none}.geographic-scale span{display:block;height:7px;border:1px solid #b79879;border-top:0}.geographic-scale small{display:block;margin-top:5px;font-size:9px;letter-spacing:1px}
@media(max-width:600px){.geographic-orientation{top:94px;right:18px}.geographic-scale{left:16px;bottom:188px}}

/* District browsing follows the existing exhibit palette. */
.district-picker{position:absolute;top:83px;left:32px;z-index:2;display:flex;align-items:center;gap:9px;font-size:10px;color:#c7a989}.district-picker select{font:inherit;font-size:11px;color:#f1dfbd;background:#2c1924;border:1px solid #8f655066;border-radius:0;padding:0 9px;height:36px;min-width:122px;cursor:pointer;touch-action:manipulation}.district-picker select:focus-visible{outline:2px solid var(--gold);outline-offset:3px}.map-hint{left:245px;top:96px}.geography-district.is-active{fill:#72363f;stroke:#e4bc87;stroke-width:1.5}
@media(max-width:600px){.district-picker{top:67px;left:16px;gap:7px;font-size:9px}.district-picker select{height:34px;font-size:10px;min-width:119px}.map-hint{left:16px;top:110px;font-size:8px;letter-spacing:0}}

/* Chronological guided playback; camera motion stays optically sharp. */
.tour-controls{position:absolute;z-index:2;top:83px;left:244px;display:flex;align-items:center;gap:7px;max-width:calc(100% - 310px);min-height:38px;padding:0 9px 0 0;border:1px solid #a77d5050;background:#25161ee6;color:#ecd2aa}.tour-controls button{height:38px;flex-shrink:0;padding:0 12px;font-size:11px}.tour-controls #tour-play{background:#83333b;color:#f7e6c9;min-width:100px}.tour-controls #tour-stop{padding:0 5px;font-size:11px;min-width:30px}.tour-controls button:disabled{opacity:.28;cursor:default}.tour-symbol{margin-right:8px}.tour-info{font-size:10px;white-space:nowrap;min-width:0;overflow:hidden;text-overflow:ellipsis;letter-spacing:.3px}.tour-progress{position:absolute;bottom:-1px;left:0;right:0;height:2px;background:#50313c}.tour-progress span{display:block;height:100%;width:0;background:#e4bd83;transition:width .7s var(--ease)}.map-hint{top:133px;left:32px}.tour-glide{position:absolute;inset:0;pointer-events:none;z-index:1;opacity:0;background:linear-gradient(115deg,transparent 30%,#f1ce8b07 46%,#f1ce8b12 50%,transparent 68%);transform:translateX(-25%)}.tour-travelling .tour-glide{animation:tourGlide 1.4s cubic-bezier(.45,0,.2,1) both}.tour-mode .detail-year{font-size:43px}.tour-mode .detail h2{font-size:24px;line-height:1.4}.tour-mode .detail .drawing{height:92px;margin:10px 0}.tour-mode .detail h3{font-size:19px;line-height:1.6}.tour-mode .detail-scroll{scroll-behavior:smooth}.tour-mode .detail p{font-size:13px;line-height:1.8}
@keyframes tourGlide{0%{opacity:0;transform:translateX(-25%)}40%{opacity:1}100%{opacity:0;transform:translateX(25%)}}
@media(max-width:600px){.tour-controls{left:16px;right:16px;top:110px;max-width:none;height:35px;min-height:35px}.tour-controls button{height:35px;font-size:10px}.tour-controls #tour-play{min-width:92px}.tour-info{font-size:9px}.map-hint{top:156px;left:16px;font-size:8px}.tour-mode .detail-year{font-size:35px}.tour-mode .detail h2{font-size:21px}.tour-mode .detail .drawing{height:62px;margin:5px 0}.tour-mode .detail h3{font-size:17px}.tour-mode .detail p{font-size:12px}.tour-mode .detail-address{font-size:10px}.tour-mode .location-note{font-size:9px;margin-top:5px}}
@media(prefers-reduced-motion:reduce){.tour-travelling .tour-glide{animation:none}.tour-progress span{transition:none}.tour-mode .detail-scroll{scroll-behavior:auto}}
.atlas.has-detail .tour-controls{top:126px;left:32px;right:386px;max-width:none}.atlas.has-detail .map-hint{top:175px}
@media(max-width:600px){.atlas.has-detail .tour-controls{top:110px;left:16px;right:16px}.atlas.has-detail .map-hint{top:156px}}
