@font-face{font-family:AutumnDisplay;src:url('../assets/display.ttf') format('truetype');font-display:swap}
:root{color-scheme:dark;--ground:#0d1614;--surface:#17221d;--ink:#f0ede2;--muted:#b0b8a8;--gold:#d6b56f;--rule:#364139;--sage:#a6b89a;--clay:#ce9c83;font-family:'Microsoft YaHei','PingFang SC',sans-serif;font-size:14px}*{box-sizing:border-box}body{margin:0;background:var(--ground);color:var(--ink)}button,input,a{-webkit-tap-highlight-color:transparent}button,input{font:inherit}button,a{color:inherit}button{cursor:pointer}button{border:0}button:focus-visible,a:focus-visible,input:focus-visible,#universe:focus-visible{outline:2px solid var(--gold);outline-offset:5px}::selection{background:var(--gold);color:var(--ground)}button:disabled{opacity:.4;cursor:default}a{text-underline-offset:5px}button svg,.search svg,.gesture svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}#app{height:100svh;min-height:650px;position:relative;overflow:hidden;background:radial-gradient(ellipse at 60% 50%,#27302666,transparent 60%),var(--ground)}.topbar{height:100px;position:absolute;inset:0 48px auto;z-index:5;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #ffffff12;gap:16px}.wordmark{display:flex;align-items:center;gap:12px;text-decoration:none;white-space:nowrap}.wordmark>svg{width:32px;height:32px;fill:none;stroke:var(--gold);stroke-width:1.15}.wordmark>span:first-of-type{font-family:AutumnDisplay,'KaiTi',serif;font-size:32px;letter-spacing:4px}.brand-en{font-size:10px;letter-spacing:2px;color:var(--muted);margin-left:18px}nav{display:flex;align-items:center;gap:32px;font-size:13px}.nav-current{color:var(--gold)}.text-button{background:none;padding:12px 0}.text-button span{font-size:11px;color:var(--muted);margin-left:7px}.intro{position:absolute;z-index:4;left:50px;top:153px;width:280px;pointer-events:none}h1{font-family:AutumnDisplay,'KaiTi',serif;font-size:49px;font-weight:400;line-height:1.4;letter-spacing:1px;margin:0 0 20px}h1 span{display:block}h1+p{font-size:13px;line-height:2.1;color:var(--muted);margin:0}.category-nav{margin-top:30px;display:flex;flex-wrap:wrap;gap:6px;max-width:245px;pointer-events:auto}.category-nav button{border:1px solid #ffffff15;border-radius:30px;padding:9px 13px;display:flex;align-items:center;gap:7px;background:#15201a;font-size:12px;min-height:36px;transition:background .2s,border-color .2s}.category-nav button:hover{border-color:var(--gold)}.category-nav button[aria-pressed=true]{background:#d6b56f;color:#17221b;border-color:#d6b56f}.dot{width:5px;height:5px;border-radius:50%;display:inline-block;flex-shrink:0}.gold{background:#e3bd69}.yellow{background:#c8ba78}.sage{background:var(--sage)}.clay{background:var(--clay)}.selection-note{font-size:11px;color:var(--muted);margin-top:17px;line-height:1.8;max-width:240px}#universe{position:absolute;inset:101px 0 74px;touch-action:none;cursor:grab;overflow:hidden}#universe.dragging{cursor:grabbing}#network,#nodes,#trunks{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}#nodes,#trunks{z-index:2}.scene-word{position:absolute;left:33%;bottom:6%;font-size:clamp(80px,12vw,200px);font-family:Georgia,serif;color:#b6a27a05;letter-spacing:.18em;pointer-events:none}.photo-node{position:absolute;left:0;top:0;width:160px;padding:0;background:none;pointer-events:auto;will-change:transform;transform-origin:50% 50%;text-align:left;user-select:none;touch-action:none;color:var(--ink)}.node-photo{height:107px;width:100%;display:block;background:#202b23;position:relative;overflow:hidden;box-shadow:0 12px 30px #0005;border-radius:3px}.node-photo img{width:100%;height:100%;object-fit:contain;display:block;pointer-events:none}.photo-node .node-name{font-size:12px;display:block;margin-top:8px;text-shadow:0 2px 5px #000;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.node-meta{font-size:9px;letter-spacing:1px;color:var(--muted);margin-top:3px;display:block}.photo-node .node-photo:after{content:'';position:absolute;inset:0;border:1px solid #f0ede226;border-radius:3px;transition:border-color .2s}.photo-node:hover .node-photo:after,.photo-node:focus-visible .node-photo:after{border-color:var(--gold)}.photo-node:hover .node-name{color:var(--gold)}.trunk{position:absolute;left:0;top:0;pointer-events:auto;border:0;background:none;text-align:center;color:var(--gold);white-space:nowrap;transform-origin:50% 50%;padding:18px 20px}.trunk .trunk-name{font:400 28px/1.2 AutumnDisplay,'KaiTi',serif;letter-spacing:5px;display:block}.trunk .trunk-en{font-size:8px;letter-spacing:2px;margin-top:8px;display:block;color:var(--muted)}.trunk:before{content:'';display:block;margin:0 auto 10px;width:6px;height:6px;border-radius:50%;background:currentColor;box-shadow:0 0 20px currentColor}.scene-caption{position:absolute;bottom:132px;left:50px;display:flex;align-items:center;gap:13px;color:var(--muted);font-size:12px;pointer-events:none;z-index:4}.short-rule{width:24px;height:1px;background:var(--gold)}.view-tools{position:absolute;bottom:105px;left:61%;transform:translateX(-50%);display:flex;align-items:center;gap:8px;z-index:5;background:#17211bf5;border:1px solid #4a5141;border-radius:40px;padding:5px 10px;box-shadow:0 8px 24px #0003}.view-tools button{background:none;display:flex;align-items:center;justify-content:center;gap:8px;padding:9px;color:var(--muted);min-width:36px}.view-tools button:hover{color:var(--gold)}.view-tools button span{font-size:11px;white-space:nowrap}.view-tools button[aria-pressed=true]{color:var(--gold)}.view-tools button svg{width:17px;height:17px}#zoom-value{font-size:10px;width:34px;text-align:center;font-variant-numeric:tabular-nums}.tool-separator{height:15px;width:1px;background:var(--rule);margin:0 5px}.bottom{position:absolute;inset:auto 48px 0;height:74px;display:flex;align-items:center;justify-content:space-between;gap:14px;border-top:1px solid #ffffff12;font-size:10px;color:var(--muted);z-index:4}.bottom>span{display:flex;align-items:center;gap:8px}.live-dot{height:4px;width:4px;border-radius:50%;background:var(--gold)}.gesture svg{width:15px;height:15px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}dialog{color:var(--ink);background:#14201a;border:1px solid var(--rule);padding:0}dialog::backdrop{background:#050a08b8;backdrop-filter:blur(12px)}.close-button{background:#233027;border-radius:50%;width:40px;height:40px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.close-button:hover{background:#394332}.directory{width:460px;height:100svh;max-height:100svh;max-width:100vw;margin:0 0 0 auto;border-right:0;padding:30px;overflow:auto}.drawer-top{display:flex;align-items:start;justify-content:space-between;gap:15px}.drawer-top h2{font-family:AutumnDisplay,'KaiTi',serif;font-size:32px;font-weight:400;margin:0}.drawer-top p{font-size:12px;color:var(--muted);margin:10px 0 24px}.search{display:flex;gap:10px;align-items:center;background:#202d23;border:1px solid #43513e;border-radius:5px;padding:12px 14px}.search input{min-width:0;width:100%;background:none;border:0;color:var(--ink);font-size:14px;caret-color:var(--gold)}.search input::placeholder{color:var(--muted)}.directory-summary{font-size:11px;color:var(--muted);padding:18px 0}.result{display:flex;gap:15px;align-items:center;width:100%;background:none;padding:13px 0;text-align:left;border-bottom:1px solid #ffffff12}.result img{width:85px;height:65px;object-fit:contain;background:#273023;border-radius:3px}.result div{min-width:0}.result strong{font-size:13px;font-weight:400;display:block}.result span{display:block;font-size:11px;color:var(--muted);margin-top:7px}.result:hover strong{color:var(--gold)}.empty{padding:28px 0;color:var(--muted);font-size:13px;line-height:1.8}.detail{width:1160px;max-width:94vw;max-height:90svh;overflow:auto;border-radius:6px}.detail[open]{display:grid;grid-template-columns:1.35fr 1fr}.detail-close{position:absolute;top:15px;right:15px;z-index:2}.detail-photo{background:#0a100d;display:flex;flex-direction:column;justify-content:center;min-height:640px;padding:24px}.detail-photo>img{width:100%;height:530px;max-height:65svh;object-fit:contain}.photo-caption{margin-top:18px;font-size:11px;color:var(--muted);display:flex;gap:10px;flex-direction:column;line-height:1.7}.photo-caption a{color:var(--gold);width:fit-content}.detail-copy{padding:48px 35px 30px}.location{font-size:11px;color:var(--muted);letter-spacing:2px}.detail-copy h2{font:400 34px/1.3 AutumnDisplay,'KaiTi',serif;margin:14px 0}.detail-copy>p{color:var(--muted);font-size:12px;line-height:1.9}.detail-tags{display:flex;gap:7px;flex-wrap:wrap;margin:18px 0 26px}.detail-tags span{border:1px solid #45503e;color:#c3cbb6;font-size:10px;border-radius:20px;padding:5px 10px}.season{border-top:1px solid var(--rule);padding-top:24px}.detail h3{font-size:12px;font-weight:400;color:var(--muted);margin:0 0 12px}.season strong{font:400 27px/1.5 AutumnDisplay,'KaiTi',serif;display:block;color:var(--gold)}#season-confidence{font-size:10px;display:inline-block;background:#2c3526;padding:4px 7px;color:#d9c594;margin-top:8px}.season-track{display:flex;align-items:center;gap:10px;font-size:10px;color:var(--muted);margin-top:20px}.track{height:3px;background:#3b4533;position:relative;flex:1}.track i{position:absolute;height:3px;background:var(--gold)}.season p{font-size:11px;line-height:1.9;color:var(--muted);margin:15px 0 7px}.season a{font-size:11px;color:var(--gold)}.today{margin-top:22px;padding-top:20px;border-top:1px solid var(--rule)}.today p{font-size:13px;margin:0 0 8px}.today span{color:var(--muted);font-size:11px;line-height:1.8}.caution{font-size:11px!important}.primary-button{width:100%;background:var(--gold);color:#1e271c;padding:14px 20px;margin-top:18px;border-radius:3px;font-size:12px}.primary-button[aria-pressed=true]{background:#45533b;color:var(--ink)}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-thumb{background:#59604b;border-radius:4px}::-webkit-scrollbar-track{background:#14201a}
.intro h1{font-size:43px}.intro h1 span{white-space:nowrap}
@media(min-width:1600px){.intro{left:65px;top:180px;width:310px}.intro h1{font-size:49px}.node-photo{height:115px}.photo-node{width:175px}}
@media(max-width:900px){.brand-en{display:none}.topbar{inset:0 25px auto}nav{gap:20px}.intro{left:28px;top:126px;width:220px}h1{font-size:39px}.category-nav{max-width:210px;gap:5px}.category-nav button{font-size:11px;padding:8px 10px}.bottom{inset:auto 25px 0}.bottom>span:last-child{display:none}.view-tools{left:62%}.scene-caption{left:28px;max-width:210px;line-height:1.7}.detail-copy{padding:48px 24px 24px}.detail-photo{padding:18px;min-height:570px}}
@media(max-width:600px){#app{min-height:700px}.topbar{height:76px;inset:0 20px auto}.wordmark>span:first-of-type{font-size:27px}.wordmark>svg{width:26px;height:26px}nav{gap:17px}.nav-current{display:none}.text-button{font-size:11px}.intro{top:103px;left:22px;width:calc(100% - 44px)}h1{font-size:37px;line-height:1.35;margin-bottom:10px}h1 span{display:inline}h1+p{font-size:11px;line-height:1.8}h1+p br{display:none}.category-nav{margin-top:15px;max-width:none;gap:5px}.category-nav button{font-size:10px;padding:7px 9px;min-height:32px}.selection-note{font-size:10px;margin-top:10px;max-width:none}#universe{inset:245px 0 100px}.scene-caption{display:none}.view-tools{left:50%;bottom:99px;gap:6px}.bottom{height:80px;inset:auto 20px 0;flex-direction:column;justify-content:center;gap:9px;font-size:9px}.gesture svg{display:none}.node-photo{height:92px}.photo-node{width:140px}.photo-node .node-name{font-size:11px}.trunk .trunk-name{font-size:24px}.trunk .trunk-en{font-size:8px}.directory{padding:24px}.detail{max-width:96vw;max-height:94svh}.detail[open]{display:block}.detail-photo{min-height:0;padding:18px}.detail-photo>img{height:290px;max-height:48svh}.detail-copy{padding:25px}.detail-copy h2{font-size:30px}.photo-caption{font-size:10px}.detail-close{background:#233027ee}.scene-word{display:none}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition:none!important}}
@media(max-width:600px){.intro h1{font-size:34px}.intro h1 span{white-space:nowrap;display:block}.intro{top:99px}.intro p{max-width:100%}#universe{top:325px}.photo-node .node-meta{display:none}.selection-note{font-size:10px}.category-nav{margin-top:13px}.photo-node .node-name{margin-top:6px}.trunk .trunk-name{font-size:21px}}

/* Two-dimensional edition */
.intro{left:50px;top:125px;width:calc(100% - 100px);display:grid;grid-template-columns:1.4fr 1fr;column-gap:30px;pointer-events:none}.intro h1{font-size:39px;margin:0;line-height:1.35}.intro h1 span{display:inline}.intro>p{font-size:12px;grid-column:1;line-height:1.8;margin-top:12px}.intro>p br{display:none}.category-nav{grid-column:2;grid-row:1;max-width:none;align-self:center;justify-content:flex-end;margin:0}.selection-note{grid-column:2;grid-row:2;max-width:none;text-align:right;margin-top:12px}#universe{top:240px}.photo-node{width:180px}.node-photo{height:116px}.node-meta{letter-spacing:0}.view-tools{left:50%;bottom:95px}.scene-caption{bottom:112px}.trunk .trunk-name{font-size:30px}.intro h1 span{white-space:nowrap}.bottom{height:65px}.scene-word{display:none}
@media(max-width:900px){.intro{left:25px;width:calc(100% - 50px);grid-template-columns:1fr}.intro h1{font-size:32px}.category-nav{grid-column:1;grid-row:3;justify-content:flex-start;margin-top:18px}.selection-note{display:none}#universe{top:285px}.intro>p{grid-row:2}.scene-caption{display:none}}
@media(max-width:600px){.intro{left:22px;top:103px;width:calc(100% - 44px)}.intro h1{font-size:30px}.intro h1 span{display:block}.intro>p{font-size:11px}#universe{top:305px;bottom:135px}.photo-node{width:160px}.node-photo{height:106px}.view-tools{bottom:96px}.bottom{height:80px}}

.topbar nav a{font-size:13px;text-decoration:none;color:var(--muted)}.date-picker{margin-top:14px}.detail-copy{min-width:0}.guide-evidence{color:var(--ink)}.guide-evidence .muted{color:var(--muted)}.guide-gallery{grid-template-columns:1fr}.guide-evidence .tag{color:var(--gold)}@media(max-width:600px){nav{gap:10px}.topbar nav a,.text-button{font-size:10px}.topbar{inset-inline:14px}.wordmark{gap:7px}.wordmark>span:first-of-type{font-size:24px}.detail-copy{padding:22px}}
