@font-face{font-family:"Source Serif 4";font-style:normal;font-weight:500;font-display:swap;src:url(/assets/fonts/source-serif-500.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+20AC,U+2122}@font-face{font-family:"Source Serif 4";font-style:normal;font-weight:600;font-display:swap;src:url(/assets/fonts/source-serif-600.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+20AC,U+2122}@font-face{font-family:"Source Serif 4";font-style:normal;font-weight:700;font-display:swap;src:url(/assets/fonts/source-serif-700.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+20AC,U+2122}@font-face{font-family:DM Sans;font-style:normal;font-weight:400;font-display:swap;src:url(/assets/fonts/dm-sans-400.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+20AC,U+2122}@font-face{font-family:DM Sans;font-style:normal;font-weight:500;font-display:swap;src:url(/assets/fonts/dm-sans-500.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+20AC,U+2122}@font-face{font-family:DM Sans;font-style:normal;font-weight:700;font-display:swap;src:url(/assets/fonts/dm-sans-700.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+2013-2014,U+2018-201A,U+201C-201E,U+2020-2022,U+2026,U+20AC,U+2122}:root{--bg: #faf9f6;--bg-elev: #ffffff;--bg-elev-2: #eef1ec;--fg: #1b2b21;--fg-muted: #4b5563;--accent: #1b6b4b;--accent-2: #4d7c4a;--cta: #1e7a54;--cta-fg: #ffffff;--danger: #b3261e;--ok: #047857;--border: rgba(11, 61, 46, .14);--rule: #d7e0d2;--ring: #1e7a54;--glow-cta: rgba(30, 122, 84, .28);--font-display: "Source Serif 4", "Georgia", serif;--font-body: "DM Sans", "Helvetica Neue", sans-serif;--font-mono: "Spline Sans Mono", "Courier New", monospace;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--space-6: 40px;--space-7: 64px;--space-8: 104px;--radius-s: 6px;--radius-m: 12px;--radius-l: 20px;--dur-1: .15s;--dur-2: .26s;--dur-3: .42s;--ease-out: cubic-bezier(.16, 1, .3, 1);--mw-content: 72rem;--mw-read: 66ch}*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--fg);font-family:var(--font-body);font-size:1.0625rem;line-height:1.65;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}h1,h2,h3{font-family:var(--font-display);font-weight:600;line-height:1.12;letter-spacing:-.01em;margin:0 0 var(--space-4);text-wrap:balance}h1{font-size:clamp(2.4rem,1.6rem + 4vw,4.4rem)}h2{font-size:clamp(1.6rem,1.25rem + 1.8vw,2.5rem)}h3{font-size:clamp(1.2rem,1.05rem + .8vw,1.55rem)}p{margin:0 0 var(--space-4);max-width:var(--mw-read)}a{color:var(--accent);text-decoration-thickness:1px;text-underline-offset:3px;transition:color var(--dur-1) var(--ease-out)}a:hover{color:var(--accent-2)}img,svg{max-width:100%;height:auto}code,.mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums}::selection{background:var(--accent);color:var(--bg)}[hidden]{display:none!important}:focus-visible{outline:2px solid var(--ring);outline-offset:2px;border-radius:2px}.container{max-width:var(--mw-content);margin-inline:auto;padding-inline:clamp(16px,4vw,40px)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);min-height:48px;padding:var(--space-3) var(--space-5);background:var(--cta);color:var(--cta-fg);font-family:var(--font-body);font-weight:700;font-size:1rem;border:1px solid transparent;border-radius:var(--radius-s);text-decoration:none;cursor:pointer;transition:transform var(--dur-1) var(--ease-out),background var(--dur-1) var(--ease-out),box-shadow var(--dur-1) var(--ease-out)}.btn:hover{transform:translateY(-1px);box-shadow:0 6px 24px var(--glow-cta);color:var(--cta-fg)}.btn:active{transform:translateY(0) scale(.98)}.btn[disabled]{opacity:.5;cursor:not-allowed;transform:none;box-shadow:none}.btn--ghost{background:transparent;border-color:var(--rule);color:var(--fg)}.btn--ghost:hover{border-color:var(--accent);box-shadow:none;color:var(--fg)}.nb{border:1px solid var(--rule);border-left:3px solid var(--accent);border-radius:var(--radius-s);padding:var(--space-3) var(--space-4);margin-block:var(--space-5);max-width:var(--mw-read)}.nb__label{font-family:var(--font-mono);font-size:.8rem;letter-spacing:.12em;color:var(--accent);display:block;margin-bottom:var(--space-1)}.nb p{margin:0;font-size:.95rem;color:var(--fg-muted);max-width:none}.article{display:grid;grid-template-columns:1fr;gap:var(--space-4);padding-block:var(--space-7);border-top:1px solid var(--rule)}.article__num{font-family:var(--font-mono);font-size:.85rem;letter-spacing:.14em;color:var(--accent);white-space:nowrap}.article__num:after{content:"";display:block;width:40px;border-top:1px dashed var(--accent);margin-top:var(--space-2);opacity:.6}@media(min-width:900px){.article{grid-template-columns:160px minmax(0,1fr);gap:var(--space-6)}.article__num{position:sticky;top:var(--space-6);align-self:start}}.node{fill:var(--accent);opacity:.55;transition:fill var(--dur-2) var(--ease-out),opacity var(--dur-2) var(--ease-out),r var(--dur-2) var(--ease-out)}.is-lit .node,.node.is-lit{fill:var(--accent-2);opacity:1}.synapse{stroke:var(--accent);stroke-width:1;opacity:.35;fill:none}.synapse--dotted{stroke-dasharray:2 5}@media(prefers-reduced-motion:no-preference){.draw .synapse{stroke-dashoffset:600;stroke-dasharray:600;animation:draw var(--dur-3) var(--ease-out) forwards}.draw .synapse:nth-of-type(2){animation-delay:.12s}.draw .synapse:nth-of-type(3){animation-delay:.24s}.draw .synapse:nth-of-type(4){animation-delay:.36s}.draw .synapse:nth-of-type(5){animation-delay:.48s}}@keyframes draw{to{stroke-dashoffset:0}}@keyframes pulse-once{0%{transform:scale(1)}40%{transform:scale(1.06)}to{transform:scale(1)}}.pulse-once{animation:pulse-once .48s var(--ease-out) 1}label{display:block;font-weight:700;margin-bottom:var(--space-2)}select,input[type=text]{width:100%;min-height:48px;padding:var(--space-3) var(--space-4);background:var(--bg-elev-2);color:var(--fg);border:1px solid var(--rule);border-radius:var(--radius-s);font:inherit;transition:border-color var(--dur-1) var(--ease-out)}select:hover{border-color:var(--accent)}fieldset{border:0;padding:0;margin:0 0 var(--space-5)}legend{font-weight:700;padding:0;margin-bottom:var(--space-2)}.field{margin-bottom:var(--space-5)}.field__error{display:none;color:var(--danger);font-size:.92rem;margin-top:var(--space-2)}.field.has-error .field__error{display:block}.field.has-error select{border-color:var(--danger)}.check{display:flex;align-items:flex-start;gap:var(--space-3)}.check input[type=checkbox]{flex:0 0 auto;width:22px;height:22px;margin:2px 0 0;accent-color:var(--cta);cursor:pointer}.check label{margin:0;font-weight:400;cursor:pointer;max-width:var(--mw-read)}.field.has-error .check input[type=checkbox]{outline:2px solid var(--danger);outline-offset:2px}.seg{display:flex;gap:var(--space-2)}.seg input{position:absolute;opacity:0;width:1px;height:1px}.seg label{flex:1;display:flex;align-items:center;justify-content:center;gap:var(--space-2);min-height:52px;margin:0;cursor:pointer;background:var(--bg-elev-2);border:1px solid var(--rule);border-radius:var(--radius-s);font-family:var(--font-mono);font-weight:400;letter-spacing:.08em;transition:border-color var(--dur-1) var(--ease-out),background var(--dur-1) var(--ease-out)}.seg label:hover{border-color:var(--accent)}.seg input:checked+label{border-color:var(--accent-2);background:var(--bg-elev);font-weight:600}.seg input:checked+label:before{content:"●";color:var(--accent-2);font-size:.6em}.seg input:focus-visible+label{outline:2px solid var(--ring);outline-offset:2px}.specimen{position:relative;padding:var(--space-5);background:var(--bg-elev-2);border:1px solid var(--rule);margin-block:var(--space-5)}.specimen:before,.specimen:after,.specimen>.crop:before,.specimen>.crop:after{content:"";position:absolute;width:14px;height:14px;border-color:var(--accent-2);border-style:solid}.specimen:before{top:-1px;left:-1px;border-width:2px 0 0 2px}.specimen:after{top:-1px;right:-1px;border-width:2px 2px 0 0}.specimen>.crop:before{bottom:-1px;left:-1px;border-width:0 0 2px 2px}.specimen>.crop:after{bottom:-1px;right:-1px;border-width:0 2px 2px 0}.specimen__stamp{font-family:var(--font-mono);font-size:.75rem;letter-spacing:.16em;color:var(--accent);margin-bottom:var(--space-3)}.specimen__token{font-family:var(--font-mono);font-size:.95rem;letter-spacing:.08em;word-break:break-all;line-height:1.7;color:var(--fg);margin:0 0 var(--space-4);max-width:none}.toc{list-style:none;margin:0;padding:0;counter-reset:toc}.toc li{display:grid;grid-template-columns:3.5rem minmax(0,1fr);align-items:baseline;gap:var(--space-4);padding-block:var(--space-4);border-bottom:1px dashed var(--rule);transition:padding-left var(--dur-2) var(--ease-out)}.toc li:hover{padding-left:var(--space-2)}.toc__num{font-family:var(--font-mono);color:var(--accent);font-size:.9rem;letter-spacing:.1em}.toc__title{font-family:var(--font-display);font-size:clamp(1.15rem,1rem + 1vw,1.6rem);font-weight:500}.toc__data{grid-column:2;font-family:var(--font-mono);font-size:.82rem;color:var(--fg-muted);letter-spacing:.06em}.steps{list-style:none;margin:0;padding:0;display:grid;gap:var(--space-5)}.step{display:grid;grid-template-columns:auto minmax(0,1fr);gap:var(--space-4);align-items:start}.step__badge{font-family:var(--font-mono);color:var(--accent-2);border:1px solid var(--rule);border-radius:50%;width:44px;height:44px;display:grid;place-items:center;font-size:1rem}.step h3{margin-bottom:var(--space-1)}.step p{margin:0;color:var(--fg-muted)}.status{margin-top:var(--space-4);font-size:.98rem}.status[data-kind=error]{color:var(--danger)}.status[data-kind=ok]{color:var(--ok)}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;clip-path:inset(50%);overflow:hidden;white-space:nowrap}.skip-link{position:absolute;left:-999px;top:var(--space-2);background:var(--cta);color:var(--cta-fg);padding:var(--space-2) var(--space-4);border-radius:var(--radius-s);z-index:100}.skip-link:focus{left:var(--space-2)}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}.draw .synapse{stroke-dashoffset:0;stroke-dasharray:none}}.etlogo[data-astro-cid-bpts3ogb]{display:inline-flex;width:var(--s);height:var(--s);line-height:0;color:var(--accent-2)}.etlogo[data-astro-cid-bpts3ogb] svg[data-astro-cid-bpts3ogb]{display:block;overflow:visible}.nav[data-astro-cid-dmqpwcec]{border-bottom:1px solid var(--rule);position:sticky;top:0;background:var(--bg);z-index:50}.nav__in[data-astro-cid-dmqpwcec]{display:flex;align-items:center;gap:var(--space-4);padding-block:var(--space-3)}.nav__brand[data-astro-cid-dmqpwcec]{display:inline-flex;align-items:center;gap:var(--space-2);color:var(--fg);text-decoration:none;font-family:var(--font-display);font-weight:600;font-size:1.1rem}.nav__name[data-astro-cid-dmqpwcec]{letter-spacing:.01em}.nav__links[data-astro-cid-dmqpwcec]{display:none;list-style:none;margin:0;padding:0;gap:var(--space-5)}.nav__links[data-astro-cid-dmqpwcec] a[data-astro-cid-dmqpwcec]{color:var(--fg-muted);text-decoration:none;font-size:.95rem;padding-block:var(--space-2)}.nav__links[data-astro-cid-dmqpwcec] a[data-astro-cid-dmqpwcec]:hover{color:var(--fg)}.nav__links[data-astro-cid-dmqpwcec] a[data-astro-cid-dmqpwcec][aria-current=page]{color:var(--fg);border-bottom:1px dashed var(--accent)}.nav__cta[data-astro-cid-dmqpwcec]{margin-left:auto;min-height:40px;padding:var(--space-2) var(--space-4);font-size:.92rem}@media(min-width:760px){.nav__links[data-astro-cid-dmqpwcec]{display:flex}}.footer[data-astro-cid-sz7xmlte]{border-top:1px solid var(--rule);margin-top:var(--space-8);padding-block:var(--space-7) var(--space-5)}.footer__in[data-astro-cid-sz7xmlte]{display:grid;gap:var(--space-6)}.footer__brand[data-astro-cid-sz7xmlte]{color:var(--accent);font-size:.85rem;letter-spacing:.14em;margin-bottom:var(--space-2)}.footer__tag[data-astro-cid-sz7xmlte]{color:var(--fg-muted);font-size:.95rem;margin:0}.footer__links[data-astro-cid-sz7xmlte]{list-style:none;margin:0;padding:0;display:grid;gap:var(--space-2)}.footer__links[data-astro-cid-sz7xmlte] a[data-astro-cid-sz7xmlte]{color:var(--fg-muted);text-decoration:none;font-size:.95rem}.footer__links[data-astro-cid-sz7xmlte] a[data-astro-cid-sz7xmlte]:hover{color:var(--fg);text-decoration:underline}.footer__base[data-astro-cid-sz7xmlte]{margin-top:var(--space-6);padding-top:var(--space-4);border-top:1px dashed var(--rule)}.footer__base[data-astro-cid-sz7xmlte] p[data-astro-cid-sz7xmlte]{color:var(--fg-muted);font-size:.8rem;letter-spacing:.04em;max-width:none;margin:0}@media(min-width:760px){.footer__in[data-astro-cid-sz7xmlte]{grid-template-columns:2fr 1fr 1fr}}
