:root{--ink:#153f43;--muted:#537277;--paper:#f2f6f0;--line:#153f4324;--accent:#ad7540;--gold:#d9c693;--sea:#39938f;font-family:"PingFang SC","Microsoft YaHei",system-ui,sans-serif;color:var(--ink);font-synthesis:none}*{box-sizing:border-box}body{margin:0;overflow:hidden}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer;border:0;min-height:2.75rem;background:none}button:focus-visible,a:focus-visible,[tabindex]:focus-visible{outline:3px solid var(--accent);outline-offset:4px}button:hover{filter:brightness(.87)}button:disabled{opacity:.6;cursor:default}button[hidden],[hidden]{display:none!important}button.selected{background:var(--ink);color:white}#experience,#world{position:absolute;inset:0;width:100%;height:100%;height:100dvh}#world{display:block;outline:0;touch-action:none}.vignette{position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,#e5efec77 0%,transparent 19%,transparent 75%,#e5efec88 100%)}.topbar{position:absolute;top:0;left:0;width:100%;padding:1.1rem 1.2rem;display:flex;justify-content:space-between;gap:1rem;align-items:center;pointer-events:none}.topbar>*{pointer-events:auto}.brand{text-decoration:none;color:inherit;display:flex;align-items:center;gap:.7rem;font-family:"Avenir Next",sans-serif;font-size:1.15rem;font-weight:600;letter-spacing:-.03em}.brand small{display:none;font-family:"PingFang SC",sans-serif;font-size:.75rem;font-weight:400;letter-spacing:.12em;margin-top:.25rem}.origin-mark{width:2.2rem;height:2.2rem;border:1px solid currentColor;border-radius:50%;display:grid;place-items:center;flex-shrink:0}.origin-mark:before{content:"";width:1.55rem;height:1.55rem;border:1px solid currentColor;border-radius:50%;position:absolute}.origin-mark i{width:.35rem;height:.35rem;background:currentColor;border-radius:50%}.toolbar{display:flex;align-items:center;gap:.3rem}.toolbar button{font-size:.875rem;padding:0 .6rem;background:#f5f8f0b8;backdrop-filter:blur(12px);border-radius:4rem}.toolbar .icon-button{display:none}.live-tag{display:none}.intro{position:absolute;top:6.5rem;left:1.4rem;pointer-events:none;max-width:22rem}.intro button{pointer-events:auto}.eyebrow{font-size:.75rem;letter-spacing:.22em;font-weight:600;margin:0 0 .7rem}.intro h1{font-family:"Songti SC","STSong","Noto Serif SC",serif;font-size:clamp(2.9rem,5vw,5.2rem);font-weight:500;letter-spacing:.025em;line-height:1.13;margin:.25rem 0 1rem}.intro h1 span{font-family:"Avenir Next",sans-serif;font-weight:300;font-size:.86em;letter-spacing:-.08em;margin:0 .1em}.title-rule{width:2.75rem;height:2px;background:var(--accent);margin:1.2rem 0}.thesis{line-height:1.8;font-size:1rem;margin:0 0 1.4rem}.primary{background:var(--ink);color:var(--paper);padding:.75rem 1.2rem;border-radius:.2rem;font-size:.95rem;min-width:10rem;text-align:left;display:flex;justify-content:space-between;gap:2rem;box-shadow:0 8px 24px #153f4322}.intro-note{font-size:.75rem;color:var(--muted);margin:.8rem 0}.map-panel{display:none}.zone-card{position:absolute;left:1rem;top:5.5rem;width:calc(100% - 2rem);padding:1.2rem;background:#f2f6f0e8;border:1px solid #ffffffaa;backdrop-filter:blur(18px);border-radius:.6rem;box-shadow:0 12px 40px #153f4310}.zone-card h2{font-family:"Songti SC","STSong",serif;font-size:1.75rem;font-weight:500;margin:.2rem 0 .75rem}.zone-card>p:not(.eyebrow){font-size:.875rem;line-height:1.65;margin:.4rem 0}.principle{border-top:1px solid var(--line);padding-top:.85rem;margin-top:.9rem}.principle>span{font-size:.7rem;color:var(--muted)}.principle p{font-size:.875rem;margin:.4rem 0;line-height:1.6}.text-button{border-top:1px solid var(--line);margin-top:.6rem;padding:.75rem 0 0;width:100%;display:flex;justify-content:space-between;font-size:.875rem}.view-controls{position:absolute;bottom:7.4rem;left:50%;transform:translateX(-50%);display:flex;white-space:nowrap;background:#f2f6f0da;backdrop-filter:blur(18px);border:1px solid #ffffffa6;border-radius:4rem;padding:.25rem;box-shadow:0 4px 16px #153f4310}.view-controls button{padding:.2rem .85rem;border-radius:4rem;font-size:.8rem;min-height:2.6rem}.zone-nav{position:absolute;bottom:2.5rem;left:1rem;right:1rem;display:flex;justify-content:space-around;gap:.1rem;border-radius:.7rem;background:#f2f6f0e8;border:1px solid #ffffffb3;backdrop-filter:blur(18px);padding:.5rem;box-shadow:0 12px 32px #153f4319}.zone-nav button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.25rem;position:relative;min-width:0;flex:1;font-size:.68rem;border-radius:.3rem;padding:.2rem}.zone-icon{font-size:1.2rem;line-height:1.1}.zone-nav button.active{background:#dce9df}.zone-nav button.visited i{position:absolute;top:.15rem;right:.3rem;width:.3rem;height:.3rem;border-radius:50%;background:var(--sea)}footer{position:absolute;bottom:.6rem;left:1.2rem;right:1.2rem;display:flex;justify-content:center;font-size:.65rem;color:var(--muted);pointer-events:none}.concept-note{display:none}.close{position:absolute;right:1rem;top:1rem;font-size:1.8rem;width:2.75rem;border:1px solid var(--line);border-radius:50%}dialog{background:var(--paper);color:var(--ink);border:0;border-radius:1rem;width:min(55rem,calc(100% - 1.5rem));max-height:90dvh;padding:2.4rem 1.4rem;box-shadow:0 30px 90px #0f303780}dialog::backdrop{background:#0b3139a6;backdrop-filter:blur(7px)}dialog h2{font-family:"Songti SC","STSong",serif;font-weight:500;font-size:2.2rem;margin:1rem 0}.dialog-lead{font-size:1rem;line-height:1.85;max-width:42rem}.principles-grid{display:grid;gap:1rem;margin:2rem 0}.principles-grid article{padding:1.2rem;border-top:1px solid var(--line);background:#e4ece4}.principles-grid b{font-size:1.3rem}.principles-grid p,.derivation p{font-size:.875rem;line-height:1.7}.derivation{display:grid;gap:.75rem}.derivation div{border-top:1px solid var(--line);padding:.7rem 0}.derivation span{font-size:.75rem;display:block;color:var(--muted);margin-bottom:.5rem}.derivation b{font-weight:500}.derivation p{margin:.5rem 0}dialog h3{font-size:1.1rem;margin:2rem 0 1rem}.references{display:grid;gap:1rem}.references figure{margin:0}.references img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:.4rem}.references figcaption{font-size:.75rem;line-height:1.6;margin-top:.5rem}.disclaimer{font-size:.8rem;line-height:1.85;color:var(--muted)}.dialog-bottom{border-top:1px solid var(--line);padding-top:1.2rem;margin-top:1.5rem;display:flex;flex-wrap:wrap;gap:1rem;justify-content:space-between}.dialog-bottom span{font-size:.8rem}#loading{position:absolute;inset:0;background:#dbe9e5;display:flex;flex-direction:column;align-items:center;justify-content:center;transition:opacity .7s;z-index:9}#loading p{font-family:"Songti SC",serif;font-size:1.5rem;letter-spacing:.12em}#loading small{color:var(--muted);letter-spacing:.25em}.loading-ring{height:4rem;width:4rem;border:1px solid #153f4344;border-top-color:var(--ink);border-radius:50%;animation:spin 1.5s linear infinite}.loading-ring:after{content:"";display:block;width:2.6rem;height:2.6rem;border:1px solid var(--gold);border-radius:50%;margin:.6rem}#error{position:absolute;inset:0;background:var(--paper);display:grid;align-content:center;padding:3rem;z-index:10}#error button{background:var(--ink);color:white;padding:1rem}#toast{position:absolute;bottom:11.5rem;left:50%;transform:translateX(-50%);background:var(--ink);color:white;box-shadow:0 5px 30px #0002;padding:.9rem 1.2rem;border-radius:.4rem;font-size:.85rem;max-width:90%;text-align:center;z-index:8}#crosshair{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);pointer-events:none;color:#fff9;font-size:1.5rem;text-shadow:0 0 2px #000}.walk-pad{position:absolute;left:1rem;bottom:11.5rem;text-align:center;touch-action:none}.walk-pad button{background:#f2f6f0c9;width:2.8rem;margin:.12rem;border-radius:.5rem;font-size:1.2rem;touch-action:none}.walk-pad button:active{background:var(--ink);color:white}body.night{--ink:#deede4;--muted:#adc6c5;--paper:#163e43;--line:#deede424;--accent:#e3c47e}body.night .topbar button,body.night .zone-nav,body.night .view-controls,body.night .zone-card,body.night .walk-pad button{background:#15383ae8;border-color:#74928c33}body.night button.selected,body.night .primary{background:#e5d39c;color:#183d40}body.night .vignette{background:linear-gradient(180deg,#102e3855,transparent 18%,transparent 76%,#102e3855)}body.night .zone-nav button.active,body.night .principles-grid article{background:#315b5a}body.night .map-shell{fill:#15383aa8;stroke:#deede477}body.night .map-node circle{fill:#244c4d;stroke:#aec2b4}body.night .map-node.active circle{fill:#b3a779}body.night .map-node.active text{fill:#173b40}body.night .map-grid{stroke:#a7bfb12b}
body{color:var(--ink)}
@media(max-width:767px){.zone-nav button{font-size:.85rem}.intro{top:6rem}.intro .title-rule{margin:.9rem 0}.thesis{margin-bottom:1rem}.intro-note{font-size:.8rem}}
@keyframes spin{to{transform:rotate(360deg)}}
@media(min-width:768px){.topbar{padding:1.5rem 2rem}.brand small{display:block}.brand{font-size:1.25rem}.toolbar{gap:.5rem}.toolbar button{padding:0 .95rem}.toolbar .icon-button{display:block;padding:0;width:2.75rem;font-size:1.4rem}.intro{top:9.2rem;left:2.25rem}.zone-card{top:8.75rem;left:2.25rem;width:19rem;padding:1.5rem}.map-panel{display:block;position:absolute;right:2rem;bottom:8.5rem;width:13rem;color:var(--ink)}.map-heading{display:flex;justify-content:space-between;font-size:.7rem;letter-spacing:.1em;margin-bottom:.4rem}.map-panel p{text-align:center;font-size:.7rem;margin:.25rem 0;color:var(--muted)}.map-shell{fill:#f0f5eacf;stroke:#527b7355;stroke-width:1}.map-grid{stroke:#5a827522;fill:none}.map-node{cursor:pointer}.map-node circle{fill:#e4ebe0;stroke:#90a89a;stroke-width:1}.map-node text{fill:var(--ink);font-size:10px;text-anchor:middle;font-family:"PingFang SC",sans-serif}.map-node.active circle{fill:#376f67;stroke:#376f67}.map-node.active text{fill:white}.map-node.visited circle{stroke:#9b723d;stroke-width:2}#playerDot{fill:#b17e40;stroke:white;stroke-width:2}.view-controls{bottom:8rem;left:2rem;transform:none}.view-controls button{padding:.2rem 1rem;font-size:.875rem}.zone-nav{bottom:2.75rem;left:50%;right:auto;transform:translateX(-50%);width:min(43rem,calc(100% - 4rem));padding:.5rem .8rem}.zone-nav button{flex-direction:row;gap:.65rem;font-size:.85rem;padding:.6rem}.zone-icon{font-size:1.5rem}.zone-nav button.visited i{top:.3rem;right:.3rem}footer{bottom:1rem;left:2rem;right:2rem;justify-content:space-between;font-size:.7rem}.concept-note{display:block}dialog{padding:3rem}.principles-grid{grid-template-columns:repeat(3,1fr)}.derivation{grid-template-columns:repeat(5,1fr);gap:1rem}.references{grid-template-columns:repeat(2,1fr)}dialog h2{font-size:3rem}#toast{bottom:12.5rem}.walk-pad{bottom:12rem;left:2rem}}
@media(min-width:1024px){.live-tag{font-size:.7rem;color:var(--muted);display:flex;align-items:center;gap:.45rem;margin-right:1.5rem}.live-tag i{height:.3rem;width:.3rem;background:#449788;border-radius:50%}.intro{left:3rem}.topbar{padding:1.7rem 3rem}.zone-card{left:3rem}.view-controls{left:3rem}.map-panel{right:3rem;width:14rem}footer{left:3rem;right:3rem}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}

/* Geographic view: a planning study, deliberately distinct from the interior concept. */
.site-card{position:absolute;left:1rem;top:5.5rem;width:calc(100% - 2rem);padding:1.2rem;background:#f2f6f0e8;border:1px solid #ffffffaa;backdrop-filter:blur(18px);border-radius:.6rem;box-shadow:0 12px 40px #153f4310}.site-card h2{font-family:"Songti SC","STSong",serif;font-size:1.75rem;font-weight:500;margin:.2rem 0 .75rem}.site-card>p:not(.eyebrow){font-size:.875rem;line-height:1.65;margin:.4rem 0}.site-facts{display:flex;gap:.35rem;flex-wrap:wrap;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:.7rem 0;margin:.9rem 0}.site-facts span{font-size:.72rem;letter-spacing:.06em;padding:.3rem .45rem;border:1px solid var(--line);border-radius:3rem}.site-card .primary{width:100%;margin-top:.15rem}.site-note{font-size:.72rem!important;color:var(--muted);margin-top:.8rem!important}body.night .site-card{background:#15383ae8;border-color:#74928c33}
@media(min-width:768px){.site-card{top:8.75rem;left:2.25rem;width:19rem;padding:1.5rem}}
@media(min-width:1024px){.site-card{left:3rem}}
