@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/fonts/inter-latin-wght-normal.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/fonts/jetbrains-mono-latin-wght-normal.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--font-sans:"Inter Variable", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono:"JetBrains Mono Variable", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--bg:#fbfaf7;--bg-2:#f3f1ec;--bg-3:#e9e6df;--fg:#1c1b18;--fg-2:#4b4a45;--fg-3:#77756f;--line:#dcd9d1;--line-2:#c9c5bb;--accent:#0b6e7a;--accent-2:#0a5660;--accent-bg:#dff3f5;--signal:#b4530a;--signal-bg:#fbe9d7;--ok:#1f7a3f;--ok-bg:#dff1e4;--warn:#9a5b00;--warn-bg:#fdf0cf;--code-bg:#f4f2ed;--shadow:0 1px 2px #1c1b180d, 0 4px 16px #1c1b180f;--measure:70ch;--wide:76rem;--radius:6px;--radius-lg:10px;--gutter:1rem;--step--1:clamp(.83rem, .8rem + .15vw, .9rem);--step-0:clamp(1rem, .96rem + .2vw, 1.0625rem);--step-1:clamp(1.15rem, 1.08rem + .35vw, 1.3rem);--step-2:clamp(1.4rem, 1.25rem + .7vw, 1.7rem);--step-3:clamp(1.7rem, 1.45rem + 1.2vw, 2.25rem);--step-4:clamp(2.1rem, 1.7rem + 2vw, 3rem);color-scheme:light}:root[data-theme=dark]{--bg:#121417;--bg-2:#191c21;--bg-3:#22262c;--fg:#e8e6e1;--fg-2:#b5b2aa;--fg-3:#85827a;--line:#2b3037;--line-2:#3a4048;--accent:#4fc3d1;--accent-2:#7dd6e1;--accent-bg:#10333a;--signal:#f0a060;--signal-bg:#3a2614;--ok:#6fcf8f;--ok-bg:#16311f;--warn:#f2c14e;--warn-bg:#3a2e0f;--code-bg:#171a1f;--shadow:0 1px 2px #0006, 0 6px 20px #00000059;color-scheme:dark}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#121417;--bg-2:#191c21;--bg-3:#22262c;--fg:#e8e6e1;--fg-2:#b5b2aa;--fg-3:#85827a;--line:#2b3037;--line-2:#3a4048;--accent:#4fc3d1;--accent-2:#7dd6e1;--accent-bg:#10333a;--signal:#f0a060;--signal-bg:#3a2614;--ok:#6fcf8f;--ok-bg:#16311f;--warn:#f2c14e;--warn-bg:#3a2e0f;--code-bg:#171a1f;--shadow:0 1px 2px #0006, 0 6px 20px #00000059;color-scheme:dark}}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:5rem}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition:none!important;animation:none!important}}body{font-family:var(--font-sans);font-size:var(--step-0);color:var(--fg);background:var(--bg);text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;font-feature-settings:"cv11", "ss01", "tnum" 0;margin:0;line-height:1.6}img,svg,video{max-width:100%;height:auto;display:block}a{color:var(--accent);text-underline-offset:.15em;text-decoration-thickness:1px}a:hover{color:var(--accent-2)}button,input,select{font:inherit;color:inherit}hr{border:0;border-top:1px solid var(--line);margin:2.5rem 0}code,kbd,pre,samp{font-family:var(--font-mono);font-variant-ligatures:none;font-feature-settings:"liga" 0, "calt" 0;font-size:.9em}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:2px}.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{background:var(--accent);color:#fff;border-radius:var(--radius);z-index:100;padding:.5rem .75rem;position:absolute;top:-3rem;left:1rem}.skip:focus{top:.75rem}.wrap{width:min(100% - 2 * var(--gutter), var(--wide));margin-inline:auto}.wrap-narrow{width:min(100% - 2 * var(--gutter), 52rem);margin-inline:auto}main{padding-block:2rem 4rem}.grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,17rem),1fr));gap:1rem;display:grid}.stack>*+*{margin-top:var(--stack,1rem)}.cluster{flex-wrap:wrap;align-items:center;gap:.5rem .75rem;display:flex}.site-header{z-index:50;background:color-mix(in oklab, var(--bg) 88%, transparent);backdrop-filter:blur(10px);border-bottom:1px solid var(--line);position:sticky;top:0}.site-header .wrap{align-items:center;gap:1rem;min-height:3.5rem;display:flex}.brand{letter-spacing:-.01em;color:var(--fg);align-items:center;gap:.55rem;font-size:1.05rem;font-weight:700;text-decoration:none;display:inline-flex}.brand svg{width:28px;height:28px}.brand:hover{color:var(--accent)}.nav{scrollbar-width:none;gap:.1rem;margin-left:auto;display:flex;overflow-x:auto}.nav::-webkit-scrollbar{display:none}.nav a{color:var(--fg-2);border-radius:var(--radius);white-space:nowrap;padding:.4rem .6rem;font-size:.93rem;font-weight:500;text-decoration:none}.nav a:hover,.nav a[aria-current=page],.nav a[data-active]{color:var(--fg);background:var(--bg-2)}.nav a[aria-current=page],.nav a[data-active]{box-shadow:inset 0 -2px 0 var(--accent)}.header-tools{align-items:center;gap:.25rem;display:flex}.icon-btn{border-radius:var(--radius);width:2.25rem;height:2.25rem;color:var(--fg-2);cursor:pointer;background:0 0;border:1px solid #0000;justify-content:center;align-items:center;text-decoration:none;display:inline-flex}.icon-btn:hover{background:var(--bg-2);color:var(--fg);border-color:var(--line)}.icon-btn svg{width:20px;height:20px}#theme-toggle .sun{display:none}:root[data-theme=dark] #theme-toggle .sun{display:block}:root[data-theme=dark] #theme-toggle .moon{display:none}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) #theme-toggle .sun{display:block}:root:not([data-theme=light]) #theme-toggle .moon{display:none}}@media (width<=760px){.site-header .wrap{flex-wrap:wrap;row-gap:0;padding-block:.4rem}.nav{order:3;width:100%;margin-left:-.5rem;padding:.15rem .5rem .35rem}.header-tools{margin-left:auto}}.site-footer{border-top:1px solid var(--line);background:var(--bg-2);color:var(--fg-2);font-size:var(--step--1);margin-top:2rem;padding:2.5rem 0 2rem}.site-footer .cols{grid-template-columns:repeat(auto-fit,minmax(10rem,1fr));gap:1.5rem;display:grid}.site-footer h3{text-transform:uppercase;letter-spacing:.08em;color:var(--fg-3);margin:0 0 .5rem;font-size:.8rem}.site-footer ul{margin:0;padding:0;list-style:none}.site-footer li{margin:.25rem 0}.site-footer a{color:var(--fg-2);text-decoration:none}.site-footer a:hover{color:var(--accent);text-decoration:underline}.site-footer .legal{border-top:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;gap:.5rem 1.5rem;margin-top:2rem;padding-top:1rem;display:flex}h1,h2,h3,h4{letter-spacing:-.015em;text-wrap:balance;margin:0;font-weight:700;line-height:1.2}h1{font-size:var(--step-3)}h2{font-size:var(--step-2)}h3{font-size:var(--step-1)}h4{font-size:var(--step-0)}.lede{font-size:var(--step-1);color:var(--fg-2);max-width:var(--measure);text-wrap:pretty;line-height:1.5}.eyebrow{text-transform:uppercase;letter-spacing:.1em;color:var(--accent);font-size:.78rem;font-weight:600}.meta{color:var(--fg-3);font-size:var(--step--1)}.meta a{color:inherit}.prose{max-width:var(--measure)}.prose>*+*{margin-top:1.1em}.prose h2{margin-top:2.2em;padding-top:.2em}.prose h3{margin-top:1.8em}.prose h2+*,.prose h3+*{margin-top:.6em}.prose p,.prose li{text-wrap:pretty}.prose ul,.prose ol{padding-left:1.4em}.prose li+li{margin-top:.3em}.prose blockquote{border-left:3px solid var(--accent);color:var(--fg-2);margin:1.5em 0;padding:.2em 0 .2em 1.2em;font-style:normal}.prose img,.prose svg.diagram{margin-inline:auto}.prose figure{margin:1.75em 0}.prose figcaption{font-size:var(--step--1);color:var(--fg-3);text-align:center;margin-top:.5em}.prose :not(pre)>code{background:var(--code-bg);border:1px solid var(--line);white-space:nowrap;border-radius:4px;padding:.08em .35em;font-size:.86em}.prose table{border-collapse:collapse;width:100%;font-size:var(--step--1);display:block;overflow-x:auto}.prose th,.prose td{text-align:left;border-bottom:1px solid var(--line);vertical-align:top;padding:.5em .7em}.prose th{background:var(--bg-2);white-space:nowrap;font-weight:600}.prose tbody tr:hover{background:var(--bg-2)}.prose .heading-anchor{color:var(--fg-3);opacity:0;margin-left:.35em;font-weight:400;text-decoration:none}.prose h2:hover .heading-anchor,.prose h3:hover .heading-anchor,.prose .heading-anchor:focus{opacity:1}.prose kbd{border:1px solid var(--line-2);background:var(--bg-2);border-bottom-width:2px;border-radius:4px;padding:.05em .4em;font-size:.85em}.prose details{border:1px solid var(--line);border-radius:var(--radius);background:var(--bg-2);padding:.6em .9em}.prose summary{cursor:pointer;font-weight:600}.prose .footnotes{font-size:var(--step--1);color:var(--fg-2);border-top:1px solid var(--line);margin-top:3em;padding-top:1em}.prose pre,pre.astro-code{border-radius:var(--radius-lg);border:1px solid var(--line);tab-size:4;margin:1.4em 0;padding:.9rem 1rem;font-size:.84rem;line-height:1.55;position:relative;overflow-x:auto;background:var(--code-bg)!important}.astro-code span{color:var(--shiki-light)}:root[data-theme=dark] .astro-code span{color:var(--shiki-dark)}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .astro-code span{color:var(--shiki-dark)}}.code-wrap{position:relative}.code-wrap .lang{font-family:var(--font-mono);letter-spacing:.05em;text-transform:uppercase;color:var(--fg-3);pointer-events:none;font-size:.68rem;position:absolute;top:.55rem;right:4.3rem}.copy-btn{font-size:.72rem;font-family:var(--font-sans);border:1px solid var(--line);background:var(--bg);color:var(--fg-2);cursor:pointer;opacity:.7;border-radius:4px;padding:.2rem .5rem;position:absolute;top:.45rem;right:.55rem}.copy-btn:hover,.copy-btn:focus-visible{opacity:1;color:var(--fg)}.copy-btn[data-done]{color:var(--ok);border-color:var(--ok)}.article{grid-template-columns:minmax(0,1fr);gap:2.5rem;display:grid}@media (width>=1040px){.article.has-toc{grid-template-columns:minmax(0,1fr) 15rem}}.toc{border-left:1px solid var(--line);align-self:start;max-height:calc(100vh - 5.5rem);padding-left:1rem;font-size:.86rem;position:sticky;top:4.5rem;overflow-y:auto}.toc h2{text-transform:uppercase;letter-spacing:.1em;color:var(--fg-3);margin-bottom:.6rem;font-size:.75rem}.toc ol{margin:0;padding:0;list-style:none}.toc li{margin:.3rem 0}.toc li.depth-3{padding-left:.9rem}.toc a{color:var(--fg-2);line-height:1.35;text-decoration:none;display:block}.toc a:hover,.toc a[aria-current=true]{color:var(--accent)}@media (width<=1039px){.toc{background:var(--bg-2);border-radius:var(--radius);border-left:0;max-height:none;margin-bottom:1.5rem;padding:.75rem 1rem;position:static}.toc details summary{cursor:pointer;font-weight:600}}.article-header{margin-bottom:2rem}.article-header h1{max-width:28ch;margin:.4rem 0 .75rem}.article-footer{border-top:1px solid var(--line);margin-top:3rem;padding-top:1.5rem}.card{border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--bg-2);color:inherit;flex-direction:column;gap:.5rem;padding:1.1rem 1.2rem;text-decoration:none;transition:border-color .15s,transform .15s;display:flex;position:relative}a.card:hover{border-color:var(--accent);color:inherit;transform:translateY(-1px)}.card h3,.card h2{font-size:var(--step-0);margin:0;font-weight:650}.card p{color:var(--fg-2);font-size:var(--step--1);margin:0}.card .meta{margin-top:auto}.card.flat{background:0 0}.card.lesson:before{content:attr(data-n);font-family:var(--font-mono);color:var(--accent);font-size:.75rem;font-weight:600}.badge{letter-spacing:.02em;border:1px solid var(--line-2);background:var(--bg);color:var(--fg-2);white-space:nowrap;border-radius:999px;align-items:center;gap:.3em;padding:.15em .55em;font-size:.72rem;font-weight:600;line-height:1.5;text-decoration:none;display:inline-flex}.badge.vendor{--vc:var(--accent);border-color:color-mix(in oklab, var(--vc) 45%, var(--bg));color:var(--vc)}.badge.vendor:before{content:"";background:var(--vc);border-radius:50%;width:.5em;height:.5em}.badge.track{background:var(--accent-bg);color:var(--accent-2);border-color:#0000}.badge.track.advanced,.badge.track.expert{background:var(--signal-bg);color:var(--signal)}a.badge:hover{border-color:var(--accent);color:var(--accent)}.tags{flex-wrap:wrap;gap:.35rem;display:flex}.callout{border-radius:var(--radius-lg);border:1px solid var(--line);background:var(--bg-2);grid-template-columns:auto 1fr;gap:.75rem;margin:1.5em 0;padding:.9rem 1rem;display:grid}.callout>svg{width:20px;height:20px;color:var(--accent);margin-top:.2rem}.callout .callout-title{margin-bottom:.2em;font-weight:650}.callout p{margin:.3em 0 0}.callout.tip{border-color:color-mix(in oklab, var(--ok) 40%, var(--line));background:var(--ok-bg)}.callout.tip>svg{color:var(--ok)}.callout.warn{border-color:color-mix(in oklab, var(--warn) 40%, var(--line));background:var(--warn-bg)}.callout.warn>svg{color:var(--warn)}.callout.key{border-color:color-mix(in oklab, var(--accent) 40%, var(--line));background:var(--accent-bg)}.diagram-wrap{margin:1.75em 0}.diagram-wrap svg{width:100%;height:auto;font-family:var(--font-mono)}.diagram-wrap .diagram-inner{border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--bg-2);padding:.75rem;overflow-x:auto}.wavedrom svg{max-width:100%;height:auto}.wavedrom .diagram-inner{background:#fff}:root[data-theme=dark] .wavedrom .diagram-inner{background:var(--bg-3)}:root[data-theme=dark] .wavedrom svg{filter:invert(.9)hue-rotate(180deg)}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .wavedrom .diagram-inner{background:var(--bg-3)}:root:not([data-theme=light]) .wavedrom svg{filter:invert(.9)hue-rotate(180deg)}}.block-svg{color:var(--fg)}.block-svg .box{fill:var(--bg);stroke:var(--fg-2);stroke-width:1.5px}.block-svg .box.accent{fill:var(--accent-bg);stroke:var(--accent)}.block-svg .box.signal{fill:var(--signal-bg);stroke:var(--signal)}.block-svg .wire{stroke:var(--fg-2);stroke-width:1.5px;fill:none}.block-svg .wire.bus{stroke-width:3px}.block-svg text{fill:var(--fg);font-size:12px;font-family:var(--font-mono)}.block-svg text.small{fill:var(--fg-2);font-size:10px}.block-svg .label{font-family:var(--font-sans);font-weight:600}.block-svg .arrow{fill:var(--fg-2)}.schematic-rule{opacity:.6;height:14px;margin:2.5rem auto}.hero{padding:2.5rem 0 2rem}.hero h1{font-size:var(--step-4);max-width:18ch}.hero .lede{margin-top:1rem}.hero-grid{align-items:center;gap:2rem;display:grid}@media (width>=900px){.hero-grid{grid-template-columns:1.15fr 1fr}}.hero .art{color:var(--fg-2)}.section{margin-top:3.5rem}.section-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:1rem;margin-bottom:1rem;display:flex}.section-head h2{font-size:var(--step-2)}.section-head a.more{font-size:var(--step--1);white-space:nowrap;font-weight:500}.home-split{gap:2.5rem;display:grid}@media (width>=960px){.home-split{grid-template-columns:minmax(0,2fr) minmax(0,1fr)}}.list{margin:0;padding:0;list-style:none}.list>li{border-top:1px solid var(--line);padding:.8rem 0}.list>li:last-child{border-bottom:1px solid var(--line)}.list .title{color:var(--fg);font-weight:600;text-decoration:none}.list .title:hover{color:var(--accent)}.news-item{grid-template-columns:5.5rem 1fr;gap:1rem;display:grid}.news-item time{font-family:var(--font-mono);color:var(--fg-3);padding-top:.2rem;font-size:.78rem}@media (width<=500px){.news-item{grid-template-columns:1fr;gap:.2rem}}.lesson-nav{grid-template-columns:1fr 1fr;gap:1rem;margin-top:2rem;display:grid}.lesson-nav a{border:1px solid var(--line);border-radius:var(--radius-lg);color:inherit;padding:.9rem 1rem;text-decoration:none}.lesson-nav a:hover{border-color:var(--accent)}.lesson-nav .dir{text-transform:uppercase;letter-spacing:.08em;color:var(--fg-3);font-size:.75rem}.lesson-nav .next{text-align:right;grid-column:2}.lesson-nav .prev{grid-column:1}@media (width<=540px){.lesson-nav{grid-template-columns:1fr}.lesson-nav .next,.lesson-nav .prev{text-align:left;grid-column:auto}}.objectives{border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--bg-2);margin:1.5rem 0;padding:1rem 1.2rem}.objectives h2{text-transform:uppercase;letter-spacing:.1em;color:var(--fg-3);margin:0 0 .5rem;font-size:.8rem}.objectives ul{margin:0;padding-left:1.2em}.objectives li+li{margin-top:.25em}.breadcrumbs{font-size:var(--step--1);color:var(--fg-3)}.breadcrumbs ol{flex-wrap:wrap;gap:.35rem;margin:0;padding:0;list-style:none;display:flex}.breadcrumbs li+li:before{content:"/";color:var(--line-2);margin-right:.35rem}.breadcrumbs a{color:var(--fg-2);text-decoration:none}.breadcrumbs a:hover{color:var(--accent)}.pager{justify-content:space-between;gap:1rem;margin-top:2rem;display:flex}.btn{border-radius:var(--radius);border:1px solid var(--line-2);background:var(--bg-2);color:var(--fg);font-weight:500;font-size:var(--step--1);cursor:pointer;align-items:center;gap:.4rem;padding:.55rem 1rem;text-decoration:none;display:inline-flex}.btn:hover{border-color:var(--accent);color:var(--accent)}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.primary:hover{background:var(--accent-2);color:#fff}.spec-table{border-collapse:collapse;width:100%;font-size:var(--step--1)}.spec-table th{text-align:left;width:11rem;color:var(--fg-3);border-bottom:1px solid var(--line);vertical-align:top;padding:.45em .6em .45em 0;font-weight:500}.spec-table td{border-bottom:1px solid var(--line);padding:.45em 0}.filter-bar{flex-wrap:wrap;gap:.5rem;margin:1rem 0 1.5rem;display:flex}.filter-bar input,.filter-bar select{border:1px solid var(--line-2);border-radius:var(--radius);background:var(--bg);min-width:10rem;padding:.45rem .6rem}.data-table{border-collapse:collapse;width:100%;font-size:.86rem}.data-table th,.data-table td{text-align:left;border-bottom:1px solid var(--line);vertical-align:top;padding:.5em .6em}.data-table th{background:var(--bg-2);cursor:pointer;user-select:none;white-space:nowrap}.data-table th[aria-sort=ascending]:after{content:" ↑";color:var(--accent)}.data-table th[aria-sort=descending]:after{content:" ↓";color:var(--accent)}.data-table tr[hidden]{display:none}.table-scroll{-webkit-overflow-scrolling:touch;overflow-x:auto}.glossary-letters{flex-wrap:wrap;gap:.25rem;margin:1rem 0 1.5rem;display:flex}.glossary-letters a{font-family:var(--font-mono);border:1px solid var(--line);border-radius:4px;padding:.2rem .5rem;font-size:.85rem;text-decoration:none}.glossary dl{margin:0}.glossary dt{margin-top:1.2rem;scroll-margin-top:5rem;font-weight:650}.glossary dd{color:var(--fg-2);max-width:var(--measure);margin:.25rem 0 0}.glossary dd .rel{font-size:var(--step--1);color:var(--fg-3);margin-top:.2rem}.glossary .letter-head{font-family:var(--font-mono);color:var(--accent);border-bottom:1px solid var(--line);margin-top:2.5rem;padding-bottom:.3rem;scroll-margin-top:5rem}.kpi{font-family:var(--font-mono);font-size:var(--step-2);letter-spacing:-.02em;font-weight:600}.pagefind-ui{--pagefind-ui-scale:.9;--pagefind-ui-primary:var(--accent);--pagefind-ui-text:var(--fg);--pagefind-ui-background:var(--bg);--pagefind-ui-border:var(--line-2);--pagefind-ui-tag:var(--bg-2);--pagefind-ui-font:var(--font-sans);--pagefind-ui-border-radius:var(--radius)}.notice{border-radius:var(--radius);background:var(--bg-2);border:1px dashed var(--line-2);color:var(--fg-2);font-size:var(--step--1);padding:.75rem 1rem}
