:root{--paper:#faf7f0;--paper-soft:#f3efe4;--ink:#23211c;--ink-soft:#55524a;--muted:#6b6455;--line:#ddd6c6;--accent:#8fa832;--accent-deep:#566a1c;--accent-wash:#eef1da;--dark:#201e19;--dark-ink:#e9e4d6;--dark-muted:#a49d8c;--dark-line:#3c3830;--serif:"Songti SC", "Noto Serif SC", Georgia, "Times New Roman", serif;--sans:-apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", system-ui, sans-serif;--mono:ui-monospace, "SF Mono", SFMono-Regular, Menlo, Consolas, monospace;--measure:42rem}*,:before,:after{box-sizing:border-box}html{color-scheme:light}body{background:var(--paper);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0;font-size:1rem;line-height:1.75}img{max-width:100%;height:auto}a{color:var(--accent-deep);text-underline-offset:.2em;text-decoration-thickness:1px}a:hover{color:var(--ink)}:focus-visible{outline:2px solid var(--accent-deep);outline-offset:3px;border-radius:1px}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.wrap{max-width:68rem;margin:0 auto;padding:0 1.25rem}@media (width>=48rem){.wrap{padding:0 2rem}}.skip-link{z-index:100;background:var(--ink);color:var(--paper);padding:.6rem 1rem;font-size:.9rem;transition:top .15s ease-in;position:absolute;top:-4rem;left:1rem}.skip-link:focus{top:1rem}.site-header{z-index:60;border-bottom:1px solid var(--line);background:var(--paper);position:relative}.site-header .wrap{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem 1rem;min-height:4.25rem;padding-top:.5rem;padding-bottom:.5rem;display:flex}@media (width<=48rem){.site-header .wrap{column-gap:.5rem}}.site-title{font-family:var(--mono);letter-spacing:.01em;overflow-wrap:anywhere;margin:0;font-size:1.02rem;font-weight:700}.site-title a{color:var(--ink);text-decoration:none}.site-title .en{font-family:var(--mono);color:var(--muted);letter-spacing:.12em;margin-left:.6rem;font-size:.7rem}@media (width<=40rem){.site-title .en{display:none}}.site-nav ul{flex-wrap:wrap;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}@media (width>=48rem){.site-nav ul{gap:1.75rem}}.site-nav a{min-width:2.75rem;min-height:2.75rem;color:var(--ink-soft);border-bottom:1px solid #0000;justify-content:center;align-items:center;padding:.45rem .35rem;font-size:.95rem;text-decoration:none;display:inline-flex}.site-nav a:hover{color:var(--ink);border-bottom-color:var(--accent)}.site-nav a[aria-current=page]{color:var(--ink);border-bottom:2px solid var(--accent);font-weight:600}.site-footer{border-top:1px solid var(--line);color:var(--muted);margin-top:5rem;padding:2.25rem 0 3rem;font-size:.85rem}.site-footer .wrap{flex-wrap:wrap;justify-content:space-between;gap:.75rem 2rem;display:flex}.site-footer a{color:var(--ink-soft)}.site-footer .meta{font-family:var(--mono);letter-spacing:.08em;font-size:.72rem}.kicker{font-family:var(--mono);letter-spacing:.18em;text-transform:uppercase;color:var(--accent-deep);margin:0 0 .75rem;font-size:.72rem}h1,h2,h3,h4{font-family:var(--serif);letter-spacing:.01em;overflow-wrap:break-word;margin:0 0 .75rem;font-weight:700;line-height:1.25}h1{font-size:clamp(1.9rem,5vw,3rem)}h2{font-size:clamp(1.35rem,3vw,1.8rem)}h3{font-size:1.15rem}.lead{color:var(--ink-soft);max-width:var(--measure);font-size:clamp(1.05rem,2.2vw,1.2rem)}.section{margin-top:4.5rem}.section-head{border-bottom:1px solid var(--line);align-items:baseline;gap:1rem;margin-bottom:2rem;padding-bottom:.6rem;display:flex}.section-head h2{margin:0}.section-head .index{font-family:var(--mono);color:var(--muted);letter-spacing:.12em;font-size:.75rem}.section-head .more{white-space:nowrap;margin-left:auto;font-size:.85rem}.button{border:1px solid var(--ink);cursor:pointer;font-size:.92rem;font-family:var(--sans);border-radius:2px;padding:.6rem 1.3rem;line-height:1.5;text-decoration:none;display:inline-block}.button.primary{background:var(--ink);color:var(--paper)}.button.primary:hover{background:var(--accent-deep);border-color:var(--accent-deep);color:#fff}.button.ghost{color:var(--ink);background:0 0}.button.ghost:hover{border-color:var(--accent-deep);color:var(--accent-deep)}.cta-row{flex-wrap:wrap;gap:.9rem;margin-top:2rem;display:flex}.card-grid{grid-template-columns:repeat(auto-fill,minmax(17rem,1fr));gap:1.25rem;display:grid}.featured-grid{grid-template-columns:1fr;gap:1.25rem;display:grid}.card-grid--two{grid-template-columns:1fr}@media (width>=40rem){.featured-grid,.card-grid--two{grid-template-columns:repeat(2,1fr)}}.card{border:1px solid var(--line);color:var(--ink);background:#fffdf8;border-radius:2px;flex-direction:column;gap:.5rem;padding:1.4rem 1.4rem 1.2rem;text-decoration:none;display:flex}.card:hover{border-color:var(--accent);background:var(--accent-wash)}.card .kicker{margin:0}.card h3{margin:0;font-size:1.2rem}.card h3 a{color:inherit;text-decoration:none}.card p{color:var(--ink-soft);margin:0;font-size:.92rem;line-height:1.7}.card .card-foot{border-top:1px solid var(--paper-soft);font-family:var(--mono);letter-spacing:.08em;color:var(--muted);margin-top:auto;padding-top:.75rem;font-size:.7rem}.card-flow{border:1px solid var(--paper-soft);background:var(--paper-soft);border-radius:2px;margin-top:.35rem;padding:.7rem .85rem}.card-flow-cap{font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin:0 0 .45rem;font-size:.62rem}.card-flow ol{color:var(--ink-soft);flex-wrap:wrap;align-items:center;gap:.3rem .5rem;margin:0;padding:0;font-size:.78rem;list-style:none;display:flex}.card-flow li{overflow-wrap:anywhere}.card-flow li:not(:first-child):before{content:"→";color:var(--accent-deep);font-family:var(--mono);margin-right:.5rem}.tag{font-family:var(--mono);letter-spacing:.1em;border:1px solid var(--line);color:var(--ink-soft);background:var(--paper-soft);border-radius:2px;padding:.15rem .5rem;font-size:.68rem;display:inline-block}.tag.accent{border-color:var(--accent);color:var(--accent-deep);background:var(--accent-wash)}.meta-row{color:var(--muted);flex-wrap:wrap;gap:.5rem 1.25rem;margin:.5rem 0 0;font-size:.82rem;display:flex}.meta-row .dt{font-family:var(--mono);letter-spacing:.06em}.filter-bar{flex-wrap:wrap;gap:.6rem;margin-bottom:2rem;display:flex}.filter-btn{font-family:var(--sans);border:1px solid var(--line);background:var(--paper);color:var(--ink-soft);cursor:pointer;border-radius:2px;padding:.4rem 1rem;font-size:.88rem}.filter-btn:hover{border-color:var(--accent);color:var(--ink)}.filter-btn[aria-pressed=true]{background:var(--ink);border-color:var(--ink);color:var(--paper)}.flow-panel{background:var(--dark);color:var(--dark-ink);border-radius:2px;margin:1.5rem 0 .5rem;padding:1.5rem 1.25rem}.flow-panel .flow-caption{font-family:var(--mono);letter-spacing:.14em;color:var(--dark-muted);text-transform:uppercase;margin:0 0 1rem;font-size:.68rem}.flow-steps{grid-template-columns:1fr;gap:.75rem;margin:0;padding:0;list-style:none;display:grid}@media (width>=40rem){.flow-steps{grid-template-columns:repeat(4,1fr);align-items:stretch;gap:0}}.flow-step{border:1px solid var(--dark-line);background:#ffffff05;border-radius:2px;padding:.85rem .9rem;position:relative}.flow-step .num{font-family:var(--mono);letter-spacing:.12em;color:var(--accent);margin-bottom:.35rem;font-size:.65rem;display:block}.flow-step .name{color:var(--dark-ink);font-size:.95rem;font-weight:600;display:block}.flow-step .desc{color:var(--dark-muted);margin-top:.3rem;font-size:.78rem;line-height:1.6;display:block}@media (width>=40rem){.flow-step:not(:last-child):after{content:"→";color:var(--accent);font-family:var(--mono);z-index:1;font-size:.9rem;position:absolute;top:50%;right:-.7em;transform:translateY(-50%)}.flow-step{margin-right:1rem}.flow-step:last-child{margin-right:0}}.flow-steps--stack{grid-template-columns:1fr;gap:.75rem}.flow-steps--stack .flow-step{margin-right:0}.flow-steps--stack .flow-step:not(:last-child):after{content:none}.prose{max-width:var(--measure)}.prose h2{border-bottom:1px solid var(--line);margin-top:2.75rem;padding-bottom:.4rem}.prose h3{margin-top:2rem}.prose p,.prose ul,.prose ol{color:var(--ink-soft)}.prose ul,.prose ol{padding-left:1.4rem}.prose li+li{margin-top:.4rem}.prose code{font-family:var(--mono);background:var(--paper-soft);border:1px solid var(--line);border-radius:2px;padding:.1em .35em;font-size:.85em}.prose pre{background:var(--dark);color:var(--dark-ink);border-radius:2px;padding:1.1rem 1.25rem;font-size:.84rem;line-height:1.7;overflow-x:auto}.prose pre code{font-size:inherit;color:inherit;background:0 0;border:none;padding:0}.prose blockquote{border-left:3px solid var(--accent);color:var(--ink-soft);margin:1.5rem 0;padding:.25rem 0 .25rem 1.25rem}.prose table{border-collapse:collapse;width:100%;font-size:.9rem;display:block;overflow-x:auto}.prose th,.prose td{border:1px solid var(--line);text-align:left;vertical-align:top;padding:.5rem .75rem}.prose th{background:var(--paper-soft);font-family:var(--mono);letter-spacing:.06em;font-size:.75rem}.hero{padding-top:4.5rem}.hero h1{max-width:20em}.hero .en-line{font-family:var(--mono);letter-spacing:.14em;color:var(--muted);overflow-wrap:break-word;margin-top:1.5rem;font-size:.78rem}.note-list{margin:0;padding:0;list-style:none}.note-list li{border-bottom:1px solid var(--line);padding:1.6rem 0}.note-list li:last-child{border-bottom:none}.note-list h3{margin:.4rem 0}.note-list h3 a{color:var(--ink);border-bottom:1px solid var(--accent);text-decoration:none}.note-list h3 a:hover{color:var(--accent-deep)}.article-layout{grid-template-columns:minmax(0,1fr);gap:2.5rem;display:grid}@media (width>=56rem){.article-layout{grid-template-columns:minmax(0,42rem) 12rem}}.toc{align-self:start;font-size:.82rem;position:sticky;top:1.5rem}.toc h2{font-family:var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin:0 0 .6rem;font-size:.68rem}.toc ul{border-left:1px solid var(--line);margin:0;padding:0;list-style:none}.toc li{margin:0}.toc a{color:var(--ink-soft);border-left:2px solid #0000;margin-left:-1px;padding:.3rem 0 .3rem .9rem;text-decoration:none;display:block}.toc a:hover{color:var(--ink);border-left-color:var(--accent)}.back-link{font-family:var(--mono);letter-spacing:.1em;color:var(--muted);margin-bottom:2rem;font-size:.75rem;text-decoration:none;display:inline-block}.back-link:hover{color:var(--accent-deep)}.project-hero{padding-top:3.25rem}.project-hero h1{font-size:clamp(1.8rem,4.5vw,2.6rem)}.project-body-grid{grid-template-columns:minmax(0,1fr);gap:3rem;margin-top:2.5rem;display:grid}@media (width>=56rem){.project-body-grid{grid-template-columns:minmax(0,42rem) 14rem}}.project-side{border:1px solid var(--line);background:#fffdf8;border-radius:2px;align-self:start;padding:1.25rem;font-size:.86rem;position:sticky;top:1.5rem}.project-side h2{font-family:var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin:1.25rem 0 .5rem;font-size:.68rem}.project-side h2:first-child{margin-top:0}.project-side ul{margin:0;padding:0;list-style:none}.project-side li{border-bottom:1px dotted var(--line);padding:.3rem 0}.project-side li:last-child{border-bottom:none}.project-side a{color:var(--accent-deep);word-break:break-all}.evidence-box{border-left:3px solid var(--accent);background:var(--accent-wash);color:var(--ink-soft);border-radius:0 2px 2px 0;padding:.9rem 1.2rem;font-size:.88rem}.evidence-box .kicker{color:var(--accent-deep);margin-bottom:.35rem}.error-page{text-align:center;padding-top:6rem;padding-bottom:6rem}.error-page .code{font-family:var(--mono);color:var(--accent);letter-spacing:.1em;font-size:3rem}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}
