:root{--zn-ink: #1c2023;--zn-pine: #4f6b14;--zn-pine-deep: #3b5210;--zn-pine-shell: #7c9e22;--zn-sprout: #c8dc3c;--zn-sprout-soft: #eef4d2;--zn-char: #25292b;--zn-char-2: #2f3437;--zn-on-char: #e9ece6;--zn-on-char-muted: #aab3a7;--zn-canvas: #f3f5f1;--zn-paper: #ffffff;--zn-muted: #545c56;--zn-hair: color-mix(in srgb, #1c2023 14%, transparent);--zn-soft: color-mix(in srgb, #4f6b14 7%, #ffffff);--zn-radius: 4px;--zn-radius-lg: 10px;--zn-shadow: 0 1px 2px rgba(28, 32, 35, .06), 0 14px 30px -20px rgba(28, 32, 35, .38);--zn-ease: cubic-bezier(.2, .7, .2, 1);--zn-font: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", Roboto, "Noto Sans SC", "Source Han Sans SC", "Helvetica Neue", Arial, sans-serif;--zn-wrap: 1160px;--zn-measure: 66ch;--zn-s2: 8px;--zn-s3: 14px;--zn-s4: 22px;--zn-s5: 32px;--zn-s6: 56px;--zn-s7: 88px}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:76px;color-scheme:light;background:var(--zn-canvas)}body{margin:0;background:var(--zn-canvas);color:var(--zn-ink);font-family:var(--zn-font);font-size:16px;line-height:1.7;-webkit-font-smoothing:antialiased}img{max-width:100%;height:auto;display:block}h1,h2,h3{line-height:1.25;letter-spacing:-.01em;margin:0 0 var(--zn-s4);text-wrap:balance;font-weight:700}h1{font-size:clamp(1.9rem,1.3rem + 2.4vw,3rem)}h2{font-size:clamp(1.4rem,1.15rem + 1vw,2rem)}h3{font-size:1.1rem}p{margin:0 0 var(--zn-s4);max-width:var(--zn-measure)}a{color:var(--zn-pine);text-underline-offset:3px}a:hover{color:var(--zn-pine-deep)}.wrap{width:100%;max-width:var(--zn-wrap);margin-inline:auto;padding-inline:var(--zn-s5)}.vh{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.skip{position:absolute;left:-9999px;top:0;z-index:100;background:var(--zn-paper);padding:var(--zn-s3) var(--zn-s4);border-radius:var(--zn-radius);border:1px solid var(--zn-hair)}.skip:focus{left:var(--zn-s4);top:var(--zn-s4)}:where(a,button,input,select,textarea,summary):focus-visible{outline:3px solid var(--zn-sprout);outline-offset:2px}[hidden]{display:none!important}.zn-top{position:sticky;top:0;z-index:30;background:var(--zn-paper);border-bottom:1px solid var(--zn-hair)}.zn-top .wrap{display:flex;align-items:center;justify-content:space-between;gap:var(--zn-s4);min-height:64px}.home .zn-top.on-photo{position:fixed;inset:0 0 auto;background:transparent;border-color:transparent;transition:background-color .25s var(--zn-ease)}.home .zn-top.on-photo.is-solid{background:var(--zn-char);border-color:#ffffff14}.zn-logo{display:inline-flex;align-items:center;gap:10px;color:var(--zn-ink);text-decoration:none;font-size:1rem}.zn-logo b{font-weight:700}.zn-logo i{font-style:normal;opacity:.45;margin:0 4px}.zn-logo-av,.zn-logo .xb-av3d{flex:none}.zn-nav{display:flex;gap:var(--zn-s4);align-items:center}.zn-nav a{color:var(--zn-muted);text-decoration:none;font-size:.95rem;padding:6px 0;border-bottom:2px solid transparent}.zn-nav a:hover{color:var(--zn-ink)}.zn-nav a[aria-current=page]{color:var(--zn-ink);border-bottom-color:var(--zn-pine-shell)}.zn-nav .zn-nav-ask{display:inline-flex;align-items:center;gap:6px;padding:6px 12px 6px 8px;border:1px solid var(--zn-hair);border-radius:var(--zn-radius);color:var(--zn-ink);font-weight:600}.zn-nav .zn-nav-ask:hover{border-color:var(--zn-pine)}.on-photo .zn-logo,.on-photo .zn-nav a{color:#f4f6f0}.on-photo .zn-nav a:hover,.on-photo .zn-nav a[aria-current=page]{color:#fff}.on-photo .zn-nav a[aria-current=page]{border-bottom-color:var(--zn-sprout)}.on-photo .zn-nav .zn-nav-ask{background:var(--zn-char);border-color:var(--zn-char);color:#fff}.on-photo .zn-menu{color:#fff;border-color:#ffffff80;background:#25292b8c}.zn-menu{display:none;background:none;border:1px solid var(--zn-hair);border-radius:var(--zn-radius);padding:6px 12px;font:inherit;font-size:.9rem;color:var(--zn-ink);cursor:pointer;min-height:40px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--zn-s2);min-height:44px;padding:10px 20px;border-radius:var(--zn-radius);text-decoration:none;font-weight:650;font-size:.97rem;border:1px solid transparent;cursor:pointer;font-family:inherit;transition:background-color .18s var(--zn-ease),border-color .18s var(--zn-ease),transform .18s var(--zn-ease)}.btn-solid{background:var(--zn-pine);color:#fff}.btn-solid:hover{background:var(--zn-pine-deep);color:#fff}.btn-sprout{background:var(--zn-sprout);color:var(--zn-char)}.btn-sprout:hover{background:#d6e75a;color:var(--zn-char)}.btn-line{background:transparent;color:var(--zn-ink);border-color:color-mix(in srgb,var(--zn-ink) 30%,transparent)}.btn-line:hover{border-color:var(--zn-pine);color:var(--zn-pine)}.btn:active{transform:translateY(1px)}.btn-av,.btn .xb-av3d{margin:-6px 0 -6px -8px}.hero{position:relative;min-height:min(92vh,800px);display:flex;align-items:flex-end;background:var(--zn-char) var(--hero) center 42% / cover no-repeat;padding:120px 0 0;overflow:hidden}.hero:before{content:"";position:absolute;inset:0;background:linear-gradient(180deg,#1417188c 0,#14171800 150px),linear-gradient(0deg,#14171859 0,#14171800 40%)}.hero-grid{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--zn-s5)}.hero-grid .sign{order:0}.hero-grid .mascot{order:1}.sign{position:relative;background:var(--zn-char);color:var(--zn-on-char);max-width:620px;padding:calc(var(--zn-s5) + 6px) var(--zn-s5) var(--zn-s4);box-shadow:inset 0 6px 0 var(--zn-sprout)}.sign h1{color:#fff;margin-bottom:var(--zn-s3)}.sign-lede{color:var(--zn-on-char);font-size:1.04rem;margin-bottom:var(--zn-s4)}.quick{margin:0;padding:0;border:0}.quick legend{font-weight:650;color:#fff;margin-bottom:var(--zn-s2);padding:0}.quick-opts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-bottom:var(--zn-s3)}.quick-opts label{position:relative;display:flex;flex-direction:column;gap:1px;padding:10px 12px 10px 38px;border:1px solid rgba(255,255,255,.18);border-radius:var(--zn-radius);cursor:pointer;min-height:56px;transition:border-color .18s var(--zn-ease),background-color .18s var(--zn-ease)}.quick-opts label:hover{border-color:#ffffff73}.quick-opts input{position:absolute;left:12px;top:13px;width:18px;height:18px;margin:0;accent-color:var(--zn-sprout)}.quick-opts b{color:#fff;font-weight:650;font-size:.98rem}.quick-opts small{color:var(--zn-on-char-muted);font-size:.84rem}.quick-opts label:has(input:checked){border-color:var(--zn-sprout);background:#c8dc3c1a}.quick-go{display:flex;align-items:center;gap:var(--zn-s3);flex-wrap:wrap}.quick-go p{margin:0;font-size:.86rem;color:var(--zn-on-char-muted)}.mascot{position:relative;margin:0 0 10px;width:100%;max-width:330px;aspect-ratio:1;flex:none;align-self:flex-end}.mascot-canvas{position:absolute;inset:0;width:100%;height:100%;cursor:pointer;touch-action:manipulation}.mascot-still{width:100%;height:100%;object-fit:contain;opacity:0;transition:opacity .3s}.mascot.no-3d .mascot-still{opacity:1}.mascot.is-3d .mascot-still{display:none}.mascot figcaption{position:absolute;right:70%;top:14%;white-space:nowrap;background:var(--zn-paper);color:var(--zn-ink);font-size:.86rem;font-weight:600;padding:6px 12px;border-radius:var(--zn-radius);box-shadow:var(--zn-shadow);pointer-events:none}.mascot figcaption:after{content:"";position:absolute;right:-6px;top:50%;margin-top:-6px;border:6px solid transparent;border-right:0;border-left-color:var(--zn-paper)}.photo-credit{position:absolute;right:var(--zn-s3);top:76px;margin:0;font-size:.72rem;color:#fffc;text-shadow:0 1px 2px rgba(0,0,0,.6)}.photo-credit a{color:inherit}.band{padding:var(--zn-s7) 0}.band-tight{padding:var(--zn-s6) 0}.band-char{background:var(--zn-char);color:var(--zn-on-char)}.band-char h2,.band-char h3{color:#fff}.band-char p{color:var(--zn-on-char)}.band-char a{color:var(--zn-sprout)}.band-paper{background:var(--zn-paper);border-top:1px solid var(--zn-hair)}.lead{font-size:1.05rem;color:var(--zn-muted)}.tool{padding:var(--zn-s6) 0 var(--zn-s7);background:var(--zn-paper);border-bottom:1px solid var(--zn-hair)}.tool-grid{display:grid;grid-template-columns:300px minmax(0,1fr);gap:var(--zn-s6);align-items:start}.tool-side{position:sticky;top:88px;display:grid;gap:var(--zn-s4)}.tool-side h2{font-size:1.4rem;margin-bottom:0}.field{display:flex;flex-direction:column;gap:6px}.field label{font-size:.9rem;font-weight:650}.field select{width:100%;min-height:46px;padding:10px 12px;font:inherit;font-size:.98rem;border:1px solid color-mix(in srgb,var(--zn-ink) 28%,transparent);border-radius:var(--zn-radius);background:var(--zn-paper);color:var(--zn-ink)}.zn-progress p{margin:0 0 var(--zn-s2);font-weight:650}.zn-bar{height:10px;border-radius:2px;background:color-mix(in srgb,var(--zn-ink) 9%,transparent);overflow:hidden}.zn-bar span{display:block;height:100%;width:100%;background:var(--zn-pine-shell);transform:scaleX(0);transform-origin:left center;transition:transform .25s var(--zn-ease)}.calc-actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--zn-s2)}.side-status{margin-top:calc(-1 * var(--zn-s3))}.copy-status,.calc-status{font-size:.86rem;color:var(--zn-muted);margin:0}.copy-status:empty,.calc-status:empty{min-height:0}.tip{background:var(--zn-sprout-soft);border-radius:var(--zn-radius);padding:var(--zn-s3) var(--zn-s4)}.tip-title{display:flex;align-items:center;gap:8px;font-weight:700;margin:0 0 6px}.tip p{margin:0;font-size:.92rem;color:#3a413c}.zn-task h3{font-size:1.5rem;margin-bottom:var(--zn-s3)}.zn-intro{color:var(--zn-muted)}.zn-notice{margin:0 0 var(--zn-s4);padding:10px 14px;border:1px solid color-mix(in srgb,var(--zn-pine) 30%,transparent);background:var(--zn-soft);border-radius:var(--zn-radius);font-weight:600;font-size:.95rem}.zn-entry{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 14px;font-size:.92rem;margin:0 0 var(--zn-s5)}.zn-entry b{color:var(--zn-muted);font-weight:600}.flow{list-style:none;margin:0;padding:0;position:relative}.flow:before{content:"";position:absolute;left:19px;top:20px;bottom:20px;width:2px;background:repeating-linear-gradient(180deg,var(--zn-pine-shell) 0 8px,transparent 8px 14px)}.zn-step{position:relative;display:grid;grid-template-columns:40px minmax(0,1fr);gap:var(--zn-s3);padding-bottom:var(--zn-s5)}.zn-step:last-child{padding-bottom:0}.zn-node{position:relative;z-index:1;width:40px;height:40px;border-radius:50%;display:grid;place-items:center;background:var(--zn-paper);border:2px solid var(--zn-pine-shell);color:var(--zn-pine);font-weight:750;font-size:.95rem}.zn-step:has(.zn-check:checked) .zn-node{background:var(--zn-pine);border-color:var(--zn-pine);color:#fff}.zn-step-head{display:flex;gap:var(--zn-s3);align-items:flex-start;justify-content:space-between;padding-top:6px}.zn-step-head label{font-weight:700;font-size:1.06rem;cursor:pointer;display:flex;gap:10px;align-items:flex-start}.zn-check{width:22px;height:22px;flex:none;margin:3px 0 0;accent-color:var(--zn-pine);cursor:pointer}.zn-step:has(.zn-check:checked) .zn-step-head label span{text-decoration:line-through;color:var(--zn-muted)}.zn-detail{margin:var(--zn-s3) 0 0;display:grid;border-top:1px solid var(--zn-hair)}.zn-detail div{display:grid;grid-template-columns:5.5em minmax(0,1fr);gap:var(--zn-s3);padding:9px 0;border-bottom:1px solid var(--zn-hair)}.zn-detail dt{color:var(--zn-muted);font-size:.9rem}.zn-detail dd{margin:0;overflow-wrap:anywhere}.zn-tag{display:inline-block;padding:1px 9px;border-radius:2px;font-size:.84rem;font-weight:650;border:1px solid var(--zn-hair);margin-right:var(--zn-s2);white-space:nowrap}.zn-tag-onsite{background:var(--zn-char);color:#fff;border-color:var(--zn-char)}.zn-tag-face{border-color:var(--zn-pine);color:var(--zn-pine)}.zn-tag-proxy{background:var(--zn-sprout-soft);border-color:#a9bd2e;color:#3a4a0c}.zn-tag-local{border-style:dashed;border-color:color-mix(in srgb,var(--zn-ink) 40%,transparent);color:var(--zn-muted)}.zn-pnote{color:var(--zn-muted);font-size:.9rem}.zn-basis{margin-top:var(--zn-s5);font-size:.9rem;color:var(--zn-muted)}.zn-basis b{color:var(--zn-ink)}.zn-basis ul{margin:6px 0 0;padding-left:1.1em}.marks-grid{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:var(--zn-s6);align-items:start}.marks{margin:0;display:grid}.marks div{display:grid;grid-template-columns:9.5em minmax(0,1fr);gap:var(--zn-s4);padding:var(--zn-s3) 0;border-top:1px solid rgba(255,255,255,.12)}.marks div:last-child{border-bottom:1px solid rgba(255,255,255,.12)}.marks dt{font-weight:700;color:#fff}.marks dd{margin:0;color:var(--zn-on-char-muted)}.marks .zn-tag{margin:0}.marks .zn-tag-face{color:var(--zn-sprout);border-color:var(--zn-sprout)}.marks .zn-tag-local{color:var(--zn-on-char);border-color:#fff6}.marks .zn-tag-onsite{background:#fff;color:var(--zn-char);border-color:#fff}.pitfalls{margin:var(--zn-s4) 0 0;padding:0;list-style:none;display:grid;gap:var(--zn-s3)}.pitfalls li{padding-left:18px;position:relative;color:var(--zn-on-char)}.pitfalls li:before{content:"";position:absolute;left:0;top:.65em;width:8px;height:8px;background:var(--zn-sprout);transform:rotate(45deg)}.pitfalls b{color:#fff}.src-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:var(--zn-s6);align-items:start}.sources{list-style:none;margin:0;padding:0;border-top:2px solid var(--zn-ink)}.sources li{border-bottom:1px solid var(--zn-hair)}.sources a{display:flex;justify-content:space-between;gap:var(--zn-s3);padding:12px 2px;text-decoration:none;color:var(--zn-ink)}.sources a:hover b{color:var(--zn-pine)}.sources span{color:var(--zn-muted);font-size:.86rem;overflow-wrap:anywhere;text-align:right}.howto{margin:0;padding-left:1.3em}.howto li{margin-bottom:8px}.faq-wrap{display:grid;grid-template-columns:minmax(0,4fr) minmax(0,8fr);gap:var(--zn-s6)}.faq details{border-bottom:1px solid var(--zn-hair)}.faq details:first-child{border-top:1px solid var(--zn-hair)}.faq summary{cursor:pointer;padding:16px 32px 16px 0;font-weight:650;list-style:none;position:relative}.faq summary::-webkit-details-marker{display:none}.faq summary:after{content:"+";position:absolute;right:4px;top:12px;font-size:1.4rem;color:var(--zn-pine);font-weight:400}.faq details[open] summary:after{content:"−"}.faq details p{margin:0 0 16px;color:var(--zn-muted)}.ask-band{background:var(--zn-sprout-soft);padding:var(--zn-s6) 0}.ask{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:var(--zn-s4);align-items:center}.ask h2{font-size:1.35rem;margin-bottom:6px}.ask p{margin:0;color:#3a413c}.page-head{padding:var(--zn-s6) 0 var(--zn-s4);background:var(--zn-paper);border-bottom:1px solid var(--zn-hair)}.page-head h1{margin-bottom:var(--zn-s2)}.page-head p{color:var(--zn-muted);margin:0}.crumbs{font-size:.88rem;color:var(--zn-muted);margin:0 0 var(--zn-s3)}.crumbs a{color:var(--zn-muted)}.about-hero{display:grid;grid-template-columns:200px minmax(0,1fr);gap:var(--zn-s5);align-items:center}.about-hero .mascot{max-width:200px;margin:0}.doc>*{max-width:76ch}.page-head+.band{padding-top:var(--zn-s6)}.doc h2{margin-top:var(--zn-s5);font-size:1.35rem}.doc ul,.doc ol{padding-left:1.3em}.doc li{margin-bottom:6px}.doc .meta{font-size:.86rem;color:var(--zn-muted);margin-bottom:var(--zn-s5)}.doc article h1{margin-bottom:var(--zn-s3)}.prose h2{margin-top:var(--zn-s5)}.prose ul{list-style:disc}.prose table{border-collapse:collapse;width:100%;margin:0 0 var(--zn-s4)}.prose th,.prose td{border:1px solid var(--zn-hair);padding:8px 10px;text-align:left}.empty{display:grid;grid-template-columns:auto minmax(0,1fr);gap:var(--zn-s4);align-items:start;background:var(--zn-paper);border:1px solid var(--zn-hair);border-radius:var(--zn-radius-lg);padding:var(--zn-s5);max-width:760px}.nf{padding:140px 0 var(--zn-s7)}.zn-foot{background:var(--zn-char);color:var(--zn-on-char-muted);padding:var(--zn-s6) 0 var(--zn-s4);font-size:.92rem}.zn-foot-grid{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr) minmax(0,1fr);gap:var(--zn-s5)}.zn-foot-name{display:flex;align-items:center;gap:10px;color:#fff;font-size:1rem}.zn-foot-brand p:last-child{margin:0}.zn-foot nav{display:flex;flex-direction:column;gap:8px}.zn-foot nav b{color:#fff}.zn-foot a{color:var(--zn-on-char-muted);text-decoration:none}.zn-foot a:hover{color:#fff;text-decoration:underline}.zn-foot-legal{margin-top:var(--zn-s5)}.zn-foot-legal p{margin:0;max-width:none;font-size:.84rem;padding-top:var(--zn-s4);border-top:1px solid rgba(255,255,255,.1)}.xb-float-avatar,a .xb-av3d{flex:none}@media(max-width:980px){.tool-grid{grid-template-columns:1fr;gap:var(--zn-s5)}.tool-side{position:static}.marks-grid,.src-grid,.faq-wrap{grid-template-columns:1fr;gap:var(--zn-s4)}.mascot{max-width:250px}.mascot figcaption{display:none}}@media(max-width:760px){.wrap{padding-inline:16px}.zn-menu{display:inline-flex;align-items:center}.zn-top .wrap{flex-wrap:wrap}.zn-logo{font-size:.94rem}.zn-nav{display:none;width:100%;flex-direction:column;align-items:flex-start;gap:4px;padding:0 0 var(--zn-s3)}.zn-nav.open{display:flex}.home .zn-top.on-photo .zn-nav.open{background:var(--zn-char)}.hero{display:block;min-height:0;padding:0;background:var(--zn-char)}.hero:before{display:none}.hero-grid{display:block;padding:0}.hero-photo{position:relative;height:300px;background:var(--hero-m) center 45% / cover no-repeat}.hero-photo:before{content:"";position:absolute;inset:0;background:linear-gradient(180deg,#14171899 0,#14171800 120px)}.hero .mascot{position:absolute;right:8px;bottom:-14px;max-width:150px;margin:0}.photo-credit{inset:auto auto 8px 16px}.sign{max-width:none;padding:calc(var(--zn-s4) + 6px) 16px var(--zn-s5)}.hero-photo{height:210px}.hero .mascot{max-width:140px}.sign-lede{font-size:.98rem;margin-bottom:var(--zn-s3)}.quick-opts{grid-template-columns:1fr;gap:6px}.quick-opts label{flex-direction:row;align-items:center;justify-content:space-between;gap:8px;min-height:46px;padding:8px 12px 8px 38px}.quick-opts input{top:50%;margin-top:-9px}.quick-opts small{font-size:.8rem;text-align:right}.band{padding:var(--zn-s6) 0}.tool{padding:var(--zn-s5) 0 var(--zn-s6)}.tool-grid{gap:var(--zn-s3)}.tool-side{display:contents}.tool-side .tip{order:2;margin-top:var(--zn-s4)}.tool-main{order:1;margin-top:var(--zn-s3)}.side-status{margin-top:0}.zn-detail div{grid-template-columns:1fr;gap:2px}.marks div{grid-template-columns:1fr;gap:6px}.ask{grid-template-columns:auto minmax(0,1fr)}.ask .btn{grid-column:1 / -1;justify-self:start}.about-hero{grid-template-columns:1fr}.about-hero .mascot{max-width:160px}.zn-foot-grid{grid-template-columns:1fr 1fr}.zn-foot-brand{grid-column:1 / -1}.empty{grid-template-columns:1fr;padding:var(--zn-s4)}.sources a{flex-direction:column;gap:2px}.sources span{text-align:left}}@media(min-width:761px){.hero-photo{display:contents}}@media(max-width:340px){.quick-opts small{display:none}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{transition:none!important}}
