@font-face{font-family:ZCOOL QingKe HuangYou;src:url(/fonts/ZCOOLQingKeHuangYou-Regular.subset.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}:root{color-scheme:light;--bg-primary:#f0f3ef;--bg-secondary:#e6ebe6;--bg-tertiary:#f7f9f5;--bg-card:#fafbf8;--text-primary:#13201b;--text-secondary:#4b5b54;--text-tertiary:#6a7a72;--accent:#2d7a52;--accent-hover:#236040;--accent-rgb:45, 122, 82;--border:#d2dbd4;--border-light:#dbe4dc;--line:#d2dbd4;--soft-line:#dbe4dc;--gutter:36px;--shadow-card:0 1px 2px #13201b0d, 0 6px 20px #13201b0f;--shadow-hover:0 2px 4px #13201b0f, 0 12px 32px #13201b17;--shadow-lg:0 24px 64px #13201b21;--nav-bg:#f0f3efeb;--nav-border:#d2dbd4;--hero-gradient:linear-gradient(180deg, #f0f3ef 0%, #eef2ec 100%);--code-bg:#e6ebe6;--success:#2d7a52;--warning:#975800;--brand-green:#8fa876;--brand-green-light:#a7b77a;--brand-green-dark:#7a9468;--brand-green-rgb:143, 168, 118;--signal-blue:#3a6ea8;--signal-blue-light:#5a8fc0;--leaf:#2d7a52;--bloom:#e08600;--bloom-text:#975800;--bloom-soft:#e0860021;--wire:#9fb2a8;--logo-hex:var(--text-primary);--logo-sprout:var(--brand-green);--font-sans:-apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans SC", sans-serif;--font-serif:"Songti SC", "STSong", "SimSun", serif;--font-mono:"SF Mono", "JetBrains Mono", "Fira Code", "Cascadia Code", monospace;--font-display:"ZCOOL QingKe HuangYou", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;--text-xs:12px;--text-sm:14px;--text-base:17px;--text-lg:19px;--text-xl:24px;--text-2xl:30px;--text-3xl:38px;--text-hero:46px;--leading-tight:1.2;--leading-title:1.4;--leading-body:1.8;--leading-loose:1.9;--measure:38em;--measure-narrow:30em;--container:1120px;--container-wide:1200px;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--space-7:48px;--space-8:64px;--space-9:96px;--radius-sm:6px;--radius:10px;--radius-lg:16px;--radius-pill:980px;--dur-fast:.15s;--dur:.25s;--dur-slow:.4s;--ease-out:cubic-bezier(.22, 1, .36, 1);--tracking-kicker:.14em}[data-theme=dark]{color-scheme:dark;--bg-primary:#16181a;--bg-secondary:#1c1f21;--bg-tertiary:#1a1d1f;--bg-card:#202426;--text-primary:#eceae3;--text-secondary:#a9ada4;--text-tertiary:#767b72;--accent:#9db883;--accent-hover:#b2c99a;--accent-rgb:157, 184, 131;--border:#31363a;--border-light:#282c2f;--shadow-card:0 4px 24px #0000004d;--shadow-hover:0 8px 32px #0006;--shadow-lg:0 20px 60px #00000080;--nav-bg:#16181ad1;--nav-border:#ffffff0f;--hero-gradient:linear-gradient(180deg, #16181a 0%, #17191b 100%);--code-bg:#202426;--success:#9db883;--warning:#d9a45b;--brand-green:#a7b77a;--brand-green-light:#b6c48b;--brand-green-dark:#8f9d67;--brand-green-rgb:167, 183, 122;--signal-blue:#6ea3d8;--signal-blue-light:#8fbde8;--logo-hex:#eceae3;--logo-sprout:var(--brand-green)}body{font-family:var(--font-sans);font-size:var(--text-base);line-height:var(--leading-body);color:var(--text-primary);background:var(--bg-primary)}::selection{background:rgba(var(--brand-green-rgb), .25);color:var(--text-primary)}h1,h2,h3,.font-display{font-family:var(--font-display);letter-spacing:.02em;font-weight:400}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;scrollbar-gutter:stable;-webkit-font-smoothing:antialiased;scroll-padding-top:112px}img,svg,video{max-width:100%;display:block}a{color:inherit;text-decoration:none}ul{list-style:none}button{font:inherit;color:inherit;cursor:pointer}button,a,summary{-webkit-tap-highlight-color:transparent;touch-action:manipulation}h1,h2,h3{text-wrap:balance}p{text-wrap:pretty}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link{z-index:400;background:var(--text-primary);color:var(--bg-primary);font-size:var(--text-sm);border-radius:8px;padding:10px 18px;position:fixed;top:-80px;left:20px}.skip-link:focus{top:16px}.wrap{width:min(100%, var(--container));padding-inline:var(--gutter);margin-inline:auto}body{isolation:isolate;position:relative}.eyebrow{color:var(--text-tertiary);font-size:var(--text-xs);letter-spacing:.08em;font-weight:400}.site-nav{z-index:1000;pointer-events:none;padding:8px 16px 0;position:fixed;inset:0 0 auto}.site-nav__inner{pointer-events:auto;max-width:var(--container);height:68px;padding:0 var(--space-5);transition:height .28s var(--ease), background .28s, border-color .28s, box-shadow .28s;border:1px solid #0000;border-radius:22px;align-items:center;gap:30px;margin:0 auto;display:flex;position:relative}.site-nav.is-scrolled .site-nav__inner,.site-nav:has(.site-nav__menu[open]) .site-nav__inner{background:var(--nav-bg);border-color:var(--nav-border);-webkit-backdrop-filter:blur(22px)saturate(1.15);height:58px;box-shadow:inset 0 1px #13201b12,0 10px 30px #13201b26}.site-nav__logo{color:var(--text-primary);letter-spacing:.07em;flex-shrink:0;align-items:center;gap:11px;min-height:44px;font-size:14px;font-weight:500;display:inline-flex}.site-nav__logo svg{width:25px;height:25px;display:block}.logo-hex{stroke:var(--logo-hex)}.logo-sprout{stroke:var(--logo-sprout)}.logo-bud{fill:var(--logo-sprout)}.site-nav__links{align-items:center;gap:28px;margin-left:auto;display:flex}.site-nav__link{min-height:44px;color:var(--text-secondary);align-items:center;padding:12px 0;font-size:13px;font-weight:400;transition:color .16s;display:inline-flex;position:relative}.site-nav__link:after{content:"";transform-origin:0;height:1px;transition:transform .2s var(--ease);background:currentColor;position:absolute;bottom:6px;left:0;right:0;transform:scaleX(0)}.site-nav__link:hover,.site-nav__link[aria-current=page]{color:var(--text-primary)}.site-nav__link:hover:after,.site-nav__link[aria-current=page]:after{transform:scaleX(1)}.site-nav__menu{display:none}.site-nav__menu summary{border-radius:var(--radius-sm);width:44px;height:44px;color:var(--text-primary);cursor:pointer;justify-content:center;align-items:center;margin-left:auto;list-style:none;display:inline-flex}.site-nav__menu summary::-webkit-details-marker{display:none}.site-nav__menu summary:hover{background:#13201b0f}.site-nav__menu summary svg{width:22px;height:22px}.site-nav__menu .icon-close,.site-nav__menu[open] .icon-open{display:none}.site-nav__menu[open] .icon-close{display:block}.site-nav__panel{border:1px solid var(--line);-webkit-backdrop-filter:blur(20px);background:#fafbf8eb;border-radius:16px;padding:14px 22px;position:absolute;top:calc(100% + 8px);left:0;right:0;box-shadow:0 12px 32px #13201b29}.site-nav__panel ul{margin:0}.site-nav__panel a{min-height:48px;font-size:var(--text-sm);color:var(--text-secondary);border-bottom:1px solid var(--soft-line);align-items:center;display:flex}.site-nav__panel li:last-child a{border-bottom:none}.site-nav__panel a:hover,.site-nav__panel a[aria-current=page]{color:var(--text-primary)}@media (width<=768px){.site-nav{padding:6px 10px 0}.site-nav__inner{gap:var(--space-4);border-radius:17px;height:60px;padding-inline:17px}.site-nav.is-scrolled .site-nav__inner,.site-nav:has(.site-nav__menu[open]) .site-nav__inner{height:54px}.site-nav__links{display:none}.site-nav__menu{margin-left:auto;display:block}.site-nav__menu summary{margin-left:0}}.site-footer{margin-top:72px}.site-footer__inner{max-width:var(--container);padding:0 var(--gutter);margin:0 auto}.footer-top{justify-content:space-between;align-items:flex-end;gap:28px;padding:56px 0;display:flex}.footer-top h2{color:var(--text-primary);margin:0;font-size:clamp(2.2rem,5vw,3.9rem);line-height:1.12}.footer-top h2 em{color:var(--bloom);font-style:normal}.footer-top .mail-label{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.18em;color:var(--text-tertiary);margin-bottom:10px}.footer-top .mail-row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.footer-top .site-footer__contact{margin:0}.footer-top .copy-mail{font-size:var(--text-xs);border:1px solid var(--line);color:var(--text-secondary);cursor:pointer;background:0 0;border-radius:999px;padding:5px 14px;transition:border-color .16s,color .16s}.footer-top .copy-mail:hover{border-color:var(--bloom);color:var(--bloom-text)}.footer-top p:last-child{color:var(--text-secondary);font-size:var(--text-sm)}.footer-top .site-footer__contact a{color:var(--text-secondary)}.footer-top .site-footer__contact a:hover{color:var(--text-primary);text-decoration:underline}.footer-bottom{border-top:1px solid var(--line);font-size:var(--text-xs);color:var(--text-tertiary);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:24px;padding:24px 0 30px;display:flex}.footer-bottom__links{flex-wrap:wrap;gap:24px;display:flex}.footer-bottom__links a{color:var(--text-tertiary);transition:color .16s}.footer-bottom__links a:hover{color:var(--text-primary)}.footer-bottom__links .footer-bottom__sub{color:var(--text-tertiary);opacity:.8}.site-footer__brand{color:var(--text-primary);letter-spacing:.07em;align-items:center;gap:10px;font-size:13px;display:inline-flex}.site-footer__brand svg{width:22px;height:22px}.site-footer__legal{gap:var(--space-2) var(--space-4);flex-wrap:wrap;display:flex}.site-footer__legal a{color:var(--text-tertiary)}.site-footer__legal a:hover{color:var(--text-primary)}.site-footer__copy{font-family:var(--font-mono);font-size:10px}@media (width<=768px){.footer-top{gap:16px;padding:16px 0 32px}.footer-top h2{max-width:10em;font-size:25px}.round-link{width:44px;height:44px;font-size:23px}.footer-bottom{gap:22px}.footer-bottom__links{width:100%}}@supports not (backdrop-filter:blur(1px)){.site-nav.is-scrolled .site-nav__inner,.site-nav:has(.site-nav__menu[open]) .site-nav__inner,.site-nav__panel{background:var(--bg-card)}}@media (prefers-reduced-transparency:reduce){.site-nav.is-scrolled .site-nav__inner,.site-nav:has(.site-nav__menu[open]) .site-nav__inner,.site-nav__panel{background:var(--bg-card);-webkit-backdrop-filter:none}}@media (prefers-reduced-motion:reduce){.work-card:hover,.round-link:hover{transform:none}}.vz{margin:var(--space-6) 0;font-size:var(--text-sm);color:var(--text-primary);line-height:1.7}.vz__head{align-items:baseline;gap:var(--space-3);margin-bottom:var(--space-4);display:flex}.vz__kind{font-size:var(--text-xs);letter-spacing:var(--tracking-kicker);color:var(--accent);flex:none;font-weight:600}.vz__title{font-size:var(--text-sm);color:var(--text-secondary);font-weight:600}.vz code{font-family:var(--font-mono);background:var(--code-bg);border-radius:4px;padding:1px 5px;font-size:.9em}.vz strong{font-weight:600}.vz-flow__grid{gap:var(--space-3);counter-reset:vzflow;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));display:grid}.vz-flow__node{background:var(--bg-card);border:1px solid var(--border-light);border-radius:var(--radius);padding:var(--space-4);position:relative}.vz-flow__no{width:22px;height:22px;margin-bottom:var(--space-2);border-radius:var(--radius-pill);background:rgba(var(--brand-green-rgb), .28);color:var(--accent);font-size:var(--text-xs);justify-content:center;align-items:center;font-weight:700;line-height:1;display:inline-flex}.vz-flow__t{margin-bottom:var(--space-1);font-weight:600}.vz-flow__d{color:var(--text-secondary);font-size:var(--text-sm)}@media (width>=900px){.vz-flow--arrows .vz-flow__node:not(:last-child):after{content:"→";top:50%;right:calc(-1 * var(--space-3) - 2px);color:var(--border);font-size:var(--text-sm);line-height:1;position:absolute;transform:translate(50%,-50%)}}.vz-steps__list{border-left:2px solid var(--border-light);padding-left:var(--space-5);margin-left:11px}.vz-steps__item{padding-bottom:var(--space-5);position:relative}.vz-steps__item:last-child{padding-bottom:0}.vz-steps__no{left:calc(-1 * var(--space-5) - 12px);border-radius:var(--radius-pill);background:var(--bg-primary);border:2px solid var(--brand-green);width:24px;height:24px;color:var(--accent);font-size:var(--text-xs);justify-content:center;align-items:center;font-weight:700;line-height:1;display:inline-flex;position:absolute;top:1px}.vz-steps__t{margin-bottom:var(--space-1);font-weight:600}.vz-steps__d{color:var(--text-secondary);font-size:var(--text-sm)}.vz-compare__table{border:1px solid var(--border-light);border-radius:var(--radius);background:var(--bg-card);overflow:hidden}.vz-compare__row{grid-template-columns:1fr 1fr;display:grid}.vz-compare__row+.vz-compare__row{border-top:1px solid var(--border-light)}.vz-compare__cell{padding:var(--space-3) var(--space-4);font-size:var(--text-sm);color:var(--text-secondary)}.vz-compare__cell+.vz-compare__cell{border-left:1px solid var(--border-light);color:var(--text-primary)}.vz-compare__row--head .vz-compare__cell{background:var(--bg-secondary);color:var(--text-primary);font-weight:600;font-size:var(--text-xs);letter-spacing:.02em}.vz-timeline__list{border-left:2px solid var(--border-light);padding-left:var(--space-5);margin-left:5px}.vz-timeline__item{padding-bottom:var(--space-5);position:relative}.vz-timeline__item:last-child{padding-bottom:0}.vz-timeline__item:before{content:"";left:calc(-1 * var(--space-5) - 5px);background:var(--brand-green);border-radius:50%;width:8px;height:8px;position:absolute;top:8px}.vz-timeline__tag{margin-bottom:var(--space-1);font-size:var(--text-xs);letter-spacing:.02em;color:var(--accent);font-weight:600;display:inline-block}.vz-timeline__t{margin-bottom:var(--space-1);font-weight:600}.vz-timeline__d{color:var(--text-secondary);font-size:var(--text-sm)}.vz-stats__grid{gap:var(--space-3);grid-template-columns:repeat(auto-fit,minmax(140px,1fr));display:grid}.vz-stats__item{background:var(--bg-secondary);border-radius:var(--radius);padding:var(--space-4)}.vz-stats__num{font-family:var(--font-serif);font-size:var(--text-xl);font-weight:700;line-height:var(--leading-tight);color:var(--accent);margin-bottom:var(--space-1)}.vz-stats__label{font-size:var(--text-xs);color:var(--text-secondary);line-height:1.6}.vz-terms__list{border-top:1px solid var(--border-light)}.vz-terms__item{gap:var(--space-4);padding:var(--space-3) 0;border-bottom:1px solid var(--border-light);grid-template-columns:9em minmax(0,1fr);display:grid}.vz-terms__key{color:var(--text-primary);font-weight:600}.vz-terms__val{color:var(--text-secondary);font-size:var(--text-sm)}.vz-callout{border-radius:var(--radius);padding:var(--space-4) var(--space-5);background:var(--bg-secondary);border-left:3px solid var(--brand-green)}.vz-callout--warn{border-left-color:var(--warning)}.vz-callout--key{border-left-color:var(--accent)}.vz-callout__label{font-size:var(--text-xs);letter-spacing:var(--tracking-kicker);color:var(--accent);margin-bottom:var(--space-2);font-weight:700}.vz-callout--warn .vz-callout__label{color:var(--warning)}.vz-callout__p{color:var(--text-secondary);font-size:var(--text-sm)}.vz-callout__p+.vz-callout__p{margin-top:var(--space-2)}.vz-figure{margin:var(--space-6) 0}.vz-figure img{background:var(--bg-card);border:1px solid var(--border-light);border-radius:var(--radius);width:100%;height:auto;display:block}.vz-figure figcaption{margin-top:var(--space-2);font-size:var(--text-xs);color:var(--text-tertiary);line-height:1.7}@media (width<=640px){.vz-compare__row--head{display:none}.vz-compare__row{grid-template-columns:1fr}.vz-compare__cell:first-child{border-top:none}.vz-compare__cell+.vz-compare__cell{border-left:none;border-top:1px dashed var(--border-light)}.vz-compare__cell[data-side]:before{content:attr(data-side);font-size:var(--text-xs);color:var(--accent);margin-bottom:2px;font-weight:600;display:block}.vz-terms__item{gap:var(--space-1);grid-template-columns:minmax(0,1fr)}}@media print{.vz,.vz-figure{break-inside:avoid}}.kicker{font-size:var(--text-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--text-tertiary);margin-bottom:var(--space-3);font-weight:400}.section-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:20px;margin-bottom:30px;display:flex}.section-head h2{font-family:var(--font-serif);letter-spacing:.015em;color:var(--text-primary);font-size:29px;font-weight:450;line-height:1.5}.section-more{color:var(--text-secondary);white-space:nowrap;align-items:center;gap:16px;font-size:13px;font-weight:400;display:inline-flex}.section-more:hover{color:var(--text-primary);text-decoration:none}.rule{border:none;border-top:1px solid var(--soft-line)}.status{font-size:var(--text-xs);color:var(--text-secondary);align-items:center;gap:7px;display:inline-flex}.status:before{content:"";background:var(--accent);border-radius:50%;width:5px;height:5px}.status--dev:before{background:var(--warning)}.status--archive:before{background:var(--text-tertiary)}.btn{min-height:45px;transition:transform .2s var(--ease), background .2s, box-shadow .2s, border-color .2s;border-radius:28px;justify-content:center;align-items:center;gap:17px;padding:8px 25px;font-size:13px;font-weight:400;display:inline-flex}.btn--primary{background:var(--text-primary);border:1px solid var(--text-primary);color:var(--bg-primary);box-shadow:inset 0 1px #ffffff0f,0 4px 14px #13201b21}.btn--primary:hover{transform:translateY(-2px);box-shadow:0 8px 24px #13201b30}.btn--ghost{border:1px solid var(--border);color:var(--text-primary);background:0 0;box-shadow:inset 0 1px #13201b0d}.btn--ghost:hover{border-color:var(--wire);transform:translateY(-2px);box-shadow:0 8px 24px #13201b1f}.btn:active{transform:translateY(0)scale(.98)}.list-page{padding-top:142px;padding-bottom:var(--space-8)}.list-page__title{font-family:var(--font-display);font-size:var(--text-3xl);letter-spacing:.02em;color:var(--text-primary);margin-bottom:var(--space-3);font-weight:400;line-height:1.2}.list-page__desc{font-size:var(--text-base);color:var(--text-secondary);max-width:var(--measure);margin-bottom:var(--space-7)}.index-hint{font-size:var(--text-sm);color:var(--text-tertiary)}.index-hint a{color:var(--accent)}.index-hint a:hover{color:var(--accent-hover);text-decoration:underline}.list-page__lede{margin-bottom:var(--space-7)}.list-page__lede .list-page__desc{margin-bottom:var(--space-3)}.list-page h2{font-family:var(--font-serif);font-size:var(--text-xl);color:var(--text-primary);margin:var(--space-7) 0 var(--space-4);font-weight:450}.list-page ul.items{flex-direction:column;display:flex}.list-page .item{align-items:baseline;gap:var(--space-4);border-bottom:1px solid var(--soft-line);flex-wrap:wrap;padding:20px 0;display:flex}.list-page .item a{font-size:var(--text-base);color:var(--text-primary);transition:color .16s, transform .2s var(--ease);font-weight:400}.list-page .item a:hover{color:var(--accent);transform:translate(3px)}.list-page .item .meta{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-tertiary)}.art-wrap{max-width:calc(var(--measure) + 2 * var(--space-5));padding:0 var(--space-5);margin:0 auto}.art-head{border-bottom:1px solid var(--line);margin-bottom:48px;padding:142px 0 40px}.art-crumb{color:var(--text-tertiary);margin-bottom:28px;font-size:13px}.art-crumb a{color:var(--text-tertiary)}.art-crumb a:hover{color:var(--text-primary);text-decoration:none}.art-kicker{font-size:var(--text-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--text-tertiary);margin-bottom:20px;font-weight:400}.art-title{font-family:var(--font-display);letter-spacing:.02em;color:var(--text-primary);max-width:24em;margin-bottom:24px;font-size:clamp(32px,3.5vw,44px);font-weight:400;line-height:1.25}.art-lede{font-size:17px;line-height:var(--leading-loose);color:var(--text-secondary);max-width:43em;margin-bottom:var(--space-4)}.art-meta{gap:var(--space-2) var(--space-5);font-size:var(--text-xs);letter-spacing:.04em;color:var(--text-tertiary);flex-wrap:wrap;display:flex}.art-toc{border:1px solid var(--line);border-radius:var(--radius);background:var(--bg-card);padding:var(--space-4) var(--space-5);margin-bottom:var(--space-8)}.art-toc summary{cursor:pointer;font-size:var(--text-sm);color:var(--text-primary);justify-content:space-between;align-items:center;min-height:44px;font-weight:500;list-style:none;display:flex}.art-toc summary::-webkit-details-marker{display:none}.art-toc summary .hint{font-size:var(--text-xs);color:var(--text-tertiary);font-weight:400}.art-toc ol{counter-reset:toc;padding:var(--space-2) 0;list-style:none}.art-toc li{counter-increment:toc}.art-toc a{align-items:baseline;gap:var(--space-3);padding:var(--space-2) 0;font-size:var(--text-sm);color:var(--text-secondary);min-height:32px;display:flex}.art-toc a:before{content:counter(toc, decimal-leading-zero);font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-tertiary)}.art-toc a:hover{color:var(--text-primary)}.art-end{border-top:1px solid var(--line);font-size:var(--text-xs);color:var(--text-tertiary);gap:var(--space-2) var(--space-5);flex-wrap:wrap;margin-top:44px;padding-top:25px;display:flex}.art-end a{color:var(--accent)}.art-end a:hover{text-decoration:underline}.art-pagenav{gap:var(--space-5);grid-template-columns:1fr 1fr;margin-top:35px;display:grid}.art-pagenav a{font-size:var(--text-xs);color:var(--text-tertiary);border-top:1px solid var(--line);max-width:none;padding-top:15px}.art-pagenav a:hover{color:var(--accent)}.art-pagenav b{font-family:var(--font-serif);font-size:var(--text-sm);color:var(--text-primary);font-weight:400;line-height:var(--leading-title);margin-top:7px;display:block}.art-pagenav .next{text-align:right}.prose{color:var(--text-primary);font-size:18px;line-height:1.95}.prose>p{margin-bottom:24px}.prose h2{font-family:var(--font-serif);color:var(--text-primary);border-top:1px solid var(--line);margin:52px 0 22px;padding-top:26px;font-size:27px;font-weight:450;line-height:1.6}.prose h2:first-of-type{margin-top:var(--space-6);border-top:none;padding-top:0}.prose h3{color:var(--text-primary);margin:30px 0 16px;font-size:21px;font-weight:450;line-height:1.65}.prose strong{color:var(--text-primary);font-weight:550}.prose a{color:inherit;text-underline-offset:5px;text-decoration:underline #2d7a5273}.prose a:hover{color:var(--accent-hover)}.prose ul,.prose ol{margin:0 0 var(--space-4);padding-left:var(--space-5)}.prose ol{list-style:decimal}.prose ul li,.prose ol li{margin-bottom:var(--space-2);line-height:1.95}.prose ul li{list-style:none;position:relative}.prose ul li:before{content:"";left:calc(-1 * var(--space-5) + 2px);background:var(--accent);border-radius:1px;width:8px;height:2px;position:absolute;top:.85em}.prose ol li{padding-left:var(--space-1)}.prose blockquote{border-left:2px solid var(--wire);background:0 0;margin:32px 0;padding:0 0 0 24px}.prose blockquote p{font-family:var(--font-serif);color:var(--text-primary);margin-bottom:0;font-size:21px;line-height:1.7}.prose code{font-family:var(--font-mono);background:var(--code-bg);border-radius:4px;padding:2px 6px;font-size:.85em}.prose pre{background:var(--code-bg);border:1px solid var(--soft-line);border-radius:var(--radius-sm);padding:var(--space-4) var(--space-5);margin:var(--space-5) 0;overflow-x:auto}.prose pre.astro-code{background:var(--code-bg)!important;color:var(--text-primary)!important}.prose pre code{font-size:var(--text-sm);color:var(--text-primary);background:0 0;padding:0;line-height:1.7}.prose figure{margin:var(--space-6) 0}.prose img{border:1px solid var(--soft-line);border-radius:var(--radius);background:var(--bg-card);overflow:hidden}.prose figcaption{padding:var(--space-3) var(--space-1) 0;font-size:var(--text-sm);color:var(--text-tertiary);line-height:1.7}.prose figcaption b{color:var(--text-secondary);font-weight:600}.prose hr{margin:var(--space-7) 0;text-align:center;border:none}.prose hr:after{content:"· · ·";color:var(--text-tertiary);letter-spacing:.5em;font-size:var(--text-sm)}.prose table{border-collapse:collapse;width:100%;margin:var(--space-5) 0;font-size:var(--text-sm)}.prose th,.prose td{border:1px solid var(--soft-line);padding:var(--space-2) var(--space-3);text-align:left}.prose th{background:var(--bg-secondary);font-weight:500}@media (width<=640px){.list-page{padding-top:109px}.art-head{margin-bottom:27px;padding-top:109px;padding-bottom:27px}.art-title{font-size:29px;line-height:1.35}.art-lede{font-size:16px}.prose{font-size:17px}.prose h2{margin-top:40px;font-size:23px}.prose h3{font-size:20px}.art-pagenav{grid-template-columns:1fr;gap:20px}.art-pagenav .next{text-align:left}}.atmosphere{position:relative}.sky{z-index:-1;pointer-events:none;background:radial-gradient(75% 46% at 50% -6%,#b0caeab3,#0000 62%),radial-gradient(46% 30% at 14% 4%,#7a9ccc8c,#0000 68%),radial-gradient(50% 34% at 88% 2%,#6082b280,#0000 70%),linear-gradient(#3c5a88 0%,#24406a 30%,#122136 58%,#0000 88%);height:calc(100% + 22vh);animation:2.2s cubic-bezier(.22,1,.36,1) both dawn;position:absolute;top:0;left:0;right:0;overflow:hidden}@keyframes dawn{0%{opacity:0;filter:brightness(.4)}to{opacity:1;filter:brightness()}}.sky canvas{width:100%;height:100%;position:absolute;inset:0}.sky i{filter:blur(70px);mix-blend-mode:screen;opacity:.5;border-radius:50%;position:absolute}.sky i:first-child{background:#c9dcf0;width:55vw;height:55vw;animation:46s ease-in-out infinite alternate skyDrift1;top:-14%;left:-8%}.sky i:nth-child(2){background:#8fb2dc;width:44vw;height:44vw;animation:58s ease-in-out infinite alternate skyDrift2;top:-6%;right:-12%}.sky i:nth-child(3){opacity:.35;background:#aecbea;width:38vw;height:38vw;animation:52s ease-in-out infinite alternate skyDrift3;top:18%;left:30%}@keyframes skyDrift1{to{transform:translate(9vw,5vh)scale(1.12)}}@keyframes skyDrift2{to{transform:translate(-8vw,7vh)scale(1.08)}}@keyframes skyDrift3{to{transform:translate(-6vw,-4vh)scale(1.15)}}.sky:after{content:"";opacity:.05;pointer-events:none;background:url(/assets/grain.svg);position:absolute;inset:0;-webkit-mask-image:linear-gradient(#000 55%,#0000 88%);mask-image:linear-gradient(#000 55%,#0000 88%)}.page-home .site-nav__logo,.page-home .site-nav__link{text-shadow:0 1px 10px #08142680}.workshop-preview{--bg-primary:#111923;--bg-secondary:#1a2735;--bg-card:#1a2735;--text-primary:#f0f6fb;--text-secondary:#c0d0df;--text-tertiary:#acbed1;--accent:#b9d9f5;--accent-hover:#e2f1ff;--logo-sprout:#b9d9f5;--logo-hex:#f0f6fb;--line:#394c60;--soft-line:#2c3d50;--border:#394c60;--border-light:#2c3d50;--nav-bg:#111923fa;--nav-border:#394c60;--measure:730px;--container:1184px;--gutter:36px;--radius:10px;--section-gap:80px;background:var(--bg-primary);color:var(--text-primary)}.workshop-preview.page-home{background-color:var(--bg-primary);background-image:radial-gradient(78% 63% at 55% -12%,#95b9da47,#0000 76%),radial-gradient(60% 50% at 12% 0,#6795bd29,#0000 85%),linear-gradient(#273b50 0%,#1c2c3d 48%,#111923 100%);background-repeat:no-repeat;background-size:100% 880px}.workshop-preview:before,.workshop-preview:after{display:none}.workshop-preview a:focus-visible,.workshop-preview button:focus-visible,.workshop-preview summary:focus-visible{outline:2px solid var(--accent);outline-offset:5px}.workshop-preview .site-nav{-webkit-backdrop-filter:blur(18px);background:#111923b3;border-bottom:1px solid #b9d9f526;padding-top:0}.workshop-preview .site-nav__inner,.workshop-preview .site-nav.is-scrolled .site-nav__inner,.workshop-preview .site-nav:has(.site-nav__menu[open]) .site-nav__inner{height:72px;padding-inline:var(--gutter);box-shadow:none;-webkit-backdrop-filter:none;background:0 0;border:0;border-radius:0}.workshop-preview .site-nav__logo,.workshop-preview .site-nav__link{text-shadow:none}.workshop-preview .site-nav nav{margin-left:auto}.workshop-preview .site-nav__menu{margin-left:0}.workshop-preview .site-nav__panel{backdrop-filter:none;background:#192735;border-radius:10px}.workshop-preview .site-nav__logo svg{width:28px;height:28px}.workshop-preview .kicker,.workshop-preview .section-no{font:11px/1.6 var(--font-mono);letter-spacing:.07em;color:var(--text-tertiary)}.workshop-preview .section-no{color:var(--accent);margin-right:14px}.workshop-preview .section-head{gap:16px;margin-bottom:26px}.workshop-preview .section-head h2{letter-spacing:-.025em;font-size:24px;font-weight:550}.workshop-preview .section-more{gap:8px;min-height:44px;font-size:12px}.workshop-preview .text-link{min-height:44px;color:var(--accent);align-items:center;gap:28px;font-size:14px;display:inline-flex}.workshop-preview .text-link:hover{color:var(--accent-hover);text-underline-offset:5px;text-decoration:underline}.workshop-preview .hero-workshop{grid-template-columns:1.2fr 1fr;align-items:center;gap:60px;padding-top:148px;padding-bottom:64px;display:grid}.workshop-preview .hero-workshop h1{letter-spacing:-.035em;margin:24px 0;font-size:clamp(44px,4.5vw,64px);font-weight:450;line-height:1.2}.workshop-preview .hero-workshop__lede{color:var(--text-secondary);font-size:16px;line-height:1.9}.workshop-preview .hero-workshop__links{gap:34px;margin-top:22px;display:flex}.workshop-preview .hero-workshop__links a{align-items:center;gap:25px;min-height:44px;font-size:14px;display:inline-flex}.workshop-preview .hero-workshop__links a:first-child{color:var(--accent)}.workshop-preview .hero-workshop__mark{flex-direction:column;justify-content:center;align-self:stretch;padding-left:38px;display:flex}.workshop-preview .hero-workshop__mark p{font-size:11px;font-family:var(--font-mono);text-align:center;color:var(--text-tertiary);margin-top:12px}.workshop-preview .signal-bloom{width:100%;height:auto}.workshop-preview .signal-bloom__routes{color:#7291ac}.workshop-preview .signal-bloom__sprout{color:var(--accent)}.workshop-preview .signal-bloom__ticks{color:#7291ac}.workshop-preview .home-section{margin-top:58px}.workshop-preview .studio{border:1px solid var(--line);-webkit-backdrop-filter:blur(16px);background:#1a293994;border-radius:12px;grid-template-columns:180px minmax(0,1fr);display:grid;overflow:hidden;box-shadow:0 16px 40px #040c151a}.workshop-preview .studio-side{border-right:1px solid var(--line);background:#b9d9f509;flex-direction:column;padding:24px 14px;display:flex}.workshop-preview .studio-label{color:var(--text-tertiary);margin:0 12px 20px;font-size:11px}.workshop-preview .studio-tabs{flex-direction:column;gap:6px;display:flex}.workshop-preview .studio-tabs button{text-align:left;min-height:46px;color:var(--text-secondary);background:0 0;border:0;border-radius:7px;align-items:center;gap:9px;padding:9px 12px;font-size:13px;transition:background .14s,color .14s;display:flex}.workshop-preview .studio-tabs button span{font:10px var(--font-mono);color:var(--text-tertiary)}.workshop-preview .studio-tabs button[aria-selected=true]{color:var(--accent);background:#a9d2f824}.workshop-preview .studio-tabs button:hover{background:#a9d2f814}.workshop-preview .studio-side-note{color:var(--text-tertiary);margin:auto 12px 0;padding-top:30px;font-size:11px}.workshop-preview .project-license{color:var(--text-secondary);margin-bottom:12px;font-size:12px;line-height:1.8}.workshop-preview .studio-main{min-width:0}.workshop-preview .studio-main>section{min-height:346px}.workshop-preview .studio-main>section[hidden]{display:none}.workshop-preview .studio-project{grid-template-columns:minmax(0,.85fr) minmax(0,1.3fr);align-items:center;gap:32px;min-height:346px;padding:32px;display:grid}.workshop-preview .studio-project h3,.workshop-preview .studio-notes h3{letter-spacing:-.025em;margin-bottom:18px;font-size:30px;font-weight:550;line-height:1.25}.workshop-preview .studio-project__copy>p:not(.kicker),.workshop-preview .studio-notes>p:not(.kicker){color:var(--text-secondary);margin-bottom:15px;font-size:14px;line-height:1.85}.workshop-preview .studio-project__visual img{border:1px solid var(--line);border-radius:7px;width:100%;height:auto}.workshop-preview .studio-project__visual figcaption{color:var(--text-tertiary);margin-top:10px;font-size:11px}.workshop-preview .gateway-repository{margin-left:20px}.workshop-preview .studio-notes{max-width:700px;padding:44px}.workshop-preview .studio-notes__links{flex-wrap:wrap;gap:24px;margin-top:24px;display:flex}.workshop-preview .studio-notes__links a{color:var(--accent);min-height:44px;font-size:14px}.workshop-preview .works-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:30px;margin-top:30px;display:grid}.workshop-preview .work-card{border-top:1px solid var(--line);flex-direction:column;padding:20px 0 8px;display:flex}.workshop-preview .work-card__top{justify-content:space-between;align-items:center;display:flex}.workshop-preview .work-card__number{font:11px var(--font-mono);color:var(--text-tertiary)}.workshop-preview .work-card h3{justify-content:space-between;align-items:center;gap:10px;margin:18px 0 12px;font-size:22px;font-weight:550;line-height:1.45;display:flex}.workshop-preview .work-card h3 span{color:var(--text-tertiary);font-size:17px}.workshop-preview .work-card p{color:var(--text-secondary);flex:1;font-size:14px;line-height:1.85}.workshop-preview .work-card__family{font:11px var(--font-mono);color:var(--text-tertiary);margin-top:18px}.workshop-preview .work-card:hover{border-color:var(--accent)}.workshop-preview .work-card:hover h3{color:var(--accent)}.workshop-preview .briefing__grid{border-block:1px solid var(--line);grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:60px;padding-block:30px;display:grid}.workshop-preview .briefing__lead h3{letter-spacing:-.02em;margin-bottom:16px;font-size:27px;font-weight:550;line-height:1.45}.workshop-preview .briefing__summary{color:var(--text-secondary);margin-bottom:13px;font-size:15px;line-height:1.9}.workshop-preview .briefing__topics{border-left:1px solid var(--line);padding-left:30px}.workshop-preview .briefing__topics li+li{border-top:1px solid var(--soft-line)}.workshop-preview .briefing__topics a{color:var(--text-secondary);align-items:baseline;gap:14px;padding:14px 0;font-size:14px;line-height:1.7;display:flex}.workshop-preview .briefing__topics .section-no{flex-shrink:0;margin:0}.workshop-preview .briefing__topics b{color:var(--text-tertiary);margin-left:auto;font-weight:400}.workshop-preview .briefing__topics a:hover{color:var(--accent)}.workshop-preview .learning-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:60px;display:grid}.workshop-preview .article-feature,.workshop-preview .classroom-feature{border-top:1px solid var(--line);padding-top:24px}.workshop-preview .learning-grid h3{letter-spacing:-.02em;margin-bottom:16px;font-size:25px;font-weight:550;line-height:1.45}.workshop-preview .learning-grid p:not(.kicker){color:var(--text-secondary);margin-bottom:18px;font-size:15px;line-height:1.9}.workshop-preview .classroom-feature__latest{border-left:2px solid var(--line);margin-block:24px;padding-left:16px}.workshop-preview .site-footer{margin-top:96px}.workshop-preview .footer-top h2{font-size:24px}.workshop-preview .round-link{border-radius:4px}.workshop-preview .list-page__title{letter-spacing:-.04em;font-size:42px;font-weight:550}.workshop-preview .list-page .item{padding-block:18px}.workshop-preview .list-page .item a{line-height:1.6}.workshop-preview .art-head{margin-bottom:28px;padding-top:132px;padding-bottom:28px}.workshop-preview .art-crumb{margin-bottom:20px}.workshop-preview .art-kicker{color:var(--accent);font-family:var(--font-mono);margin-bottom:14px}.workshop-preview .art-title{letter-spacing:-.03em;margin-bottom:18px;font-size:clamp(29px,3vw,38px);font-weight:550;line-height:1.35}.workshop-preview .news-detail .art-title{font-size:clamp(28px,2.8vw,36px)}.workshop-preview .art-toc{background:0 0;border-inline:0;border-radius:0;margin-bottom:32px;padding:6px 0}.workshop-preview .prose{color:#d4e0eb;overflow-wrap:anywhere;font-size:18px;line-height:1.95}.workshop-preview .pd-main{min-width:0}.workshop-preview .prose h2{font-size:26px;font-weight:550;line-height:1.45}.workshop-preview .prose h3{font-size:21px;font-weight:550}.workshop-preview .prose a{text-underline-offset:4px;text-decoration-thickness:1px}.workshop-preview .vz-stats__grid{border-top:1px solid var(--line);grid-template-columns:repeat(2,minmax(0,1fr));gap:0}.workshop-preview .vz-stats__item{border-bottom:1px solid var(--line);background:0 0;border-radius:0;min-width:0;padding:22px 20px 22px 0}.workshop-preview .vz-stats__item:nth-child(2n){border-left:1px solid var(--line);padding-left:24px}.workshop-preview .vz-stats__num{font-family:var(--font-mono);overflow-wrap:anywhere;font-size:25px;font-weight:500;line-height:1.3}.workshop-preview .vz-stats__label{color:var(--text-secondary);font-size:13px;line-height:1.8}.workshop-preview .pd-title{letter-spacing:-.035em;font-weight:550}.workshop-preview .pd-aside__box{box-shadow:none;background:0 0;border-radius:0}.workshop-preview .btn{box-shadow:none;color:var(--accent);background:0 0;border-radius:4px}.workshop-preview .btn:hover{box-shadow:none;transform:none}.workshop-preview .read-col__more{background:0 0;border-radius:2px}.workshop-preview .project-gallery{grid-template-columns:repeat(2,minmax(0,1fr));gap:40px;display:grid}.workshop-preview .project-gallery__item{border-top:1px solid var(--line);padding-top:20px}.workshop-preview .project-gallery img{aspect-ratio:2;object-fit:contain;border:1px solid var(--line);background:#172331;border-radius:3px;width:100%}.workshop-preview .project-gallery figcaption{color:var(--text-tertiary);margin:8px 0 22px;font-size:11px}.workshop-preview .project-gallery h3{margin-bottom:14px;font-size:25px;font-weight:550;line-height:1.4}.workshop-preview .project-gallery__desc{color:var(--text-secondary);font-size:15px;line-height:1.85}.workshop-preview .growth__ripple,.workshop-preview .growth__sprout,.workshop-preview .growth__stem,.workshop-preview .growth__leaf,.workshop-preview .growth__bud{animation:none;transform:none}.workshop-preview .growth__stem,.workshop-preview .growth__leaf{stroke-dashoffset:0}.workshop-preview .growth__ripple{opacity:.13}@media (width<=1000px){.workshop-preview .studio-project{grid-template-columns:minmax(0,1fr);gap:20px}.workshop-preview .studio-project__visual{max-width:500px}.workshop-preview .hero-workshop{gap:30px}.workshop-preview .learning-grid,.workshop-preview .briefing__grid{gap:32px}}@media (width<=768px){.gateway-detail .pd-body{grid-template-columns:minmax(0,1fr)}.gateway-detail .pd-main{overflow-wrap:anywhere;min-width:0}.gateway-detail .prose table{max-width:100%;display:block;overflow-x:auto}.gateway-detail .prose pre{max-width:100%;overflow-x:auto}.workshop-preview{--gutter:24px}.workshop-preview .site-nav{padding-inline:0}.workshop-preview .site-nav__inner,.workshop-preview .site-nav.is-scrolled .site-nav__inner{height:64px}.workshop-preview .site-nav nav{display:none}.workshop-preview .site-nav__menu{margin-left:auto}.workshop-preview .site-nav__menu nav{display:block}.workshop-preview .hero-workshop{grid-template-columns:1fr;gap:30px;padding-top:110px;padding-bottom:20px}.workshop-preview .hero-workshop h1{font-size:42px}.workshop-preview .hero-workshop__mark{border-left:0;border-top:1px solid var(--line);grid-template-columns:104px minmax(0,1fr);align-items:center;gap:20px;padding:20px 0 0;display:grid}.workshop-preview .hero-workshop__mark p{text-align:left;margin:0;line-height:1.8}.workshop-preview .home-section{margin-top:48px}.workshop-preview .section-head h2{font-size:21px}.workshop-preview .section-head .section-no{margin-right:10px}.workshop-preview .section-head{margin-bottom:20px}.workshop-preview .studio{grid-template-columns:minmax(0,1fr)}.workshop-preview .studio-side{border-right:0;border-bottom:1px solid var(--line);padding:10px}.workshop-preview .studio-label,.workshop-preview .studio-side-note{display:none}.workshop-preview .studio-tabs{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;display:grid}.workshop-preview .studio-tabs button{flex:1;justify-content:center;padding-inline:5px;font-size:12px}.workshop-preview .studio-tabs button span{display:none}.workshop-preview .studio-project{padding:24px 20px}.workshop-preview .gateway-repository{margin-left:18px}.workshop-preview .studio-main>section{min-height:430px}.workshop-preview .studio-project h3{font-size:26px}.workshop-preview .studio-notes{padding:28px 20px}.workshop-preview .works-grid{grid-template-columns:1fr;gap:20px;margin-top:22px}.workshop-preview .project-gallery{grid-template-columns:1fr;gap:32px}.workshop-preview .work-card h3{margin-block:12px;font-size:21px}.workshop-preview .work-card p{font-size:14px}.workshop-preview .work-card__family{margin-top:12px}.workshop-preview .briefing__grid,.workshop-preview .learning-grid{grid-template-columns:1fr;gap:36px}.workshop-preview .briefing__topics{border-left:0;border-top:1px solid var(--line);padding:22px 0 0}.workshop-preview .briefing__lead h3,.workshop-preview .learning-grid h3{font-size:24px}.workshop-preview .art-wrap{padding-inline:24px}.workshop-preview .art-head{padding-top:108px}.workshop-preview .art-title,.workshop-preview .news-detail .art-title{font-size:28px;line-height:1.4}.workshop-preview .prose{font-size:17px}.workshop-preview .prose h2{font-size:23px}.workshop-preview .list-page__title{font-size:34px}.workshop-preview .site-footer{margin-top:64px}}@media (width<=640px){.workshop-preview .vz-stats__grid{grid-template-columns:minmax(0,1fr)}.workshop-preview .vz-stats__item:nth-child(2n){border-left:0;padding-left:0}}@media (prefers-reduced-motion:reduce){html:has(.workshop-preview){scroll-behavior:auto}.workshop-preview *,.workshop-preview :before,.workshop-preview :after{transition:none!important;animation:none!important}}
