@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:100 700;font-display:swap;src:url(/_astro/ibm-plex-sans-latin-wght-normal.IvpUvPa2.woff2)format("woff2")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_astro/ibm-plex-mono-latin-400-normal.DMJ8VG8y.woff2)format("woff2")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/_astro/ibm-plex-mono-latin-500-normal.DSY6xOcd.woff2)format("woff2")}:root{color-scheme:light dark;--font-sans:"IBM Plex Sans", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono:"IBM Plex Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace;--bg:oklch(98.6% .004 80);--ink:oklch(18% .008 60);--ink-2:oklch(44% .008 60);--line:oklch(85% .006 70);--fill:oklch(96% .006 75);--signal:oklch(47% .2 262);--signal-ink:#fff;--container:68rem;--measure:66ch;--gutter:clamp(1rem, 4vw, 2.5rem)}@media (prefers-color-scheme:dark){:root{--bg:oklch(14% .006 60);--ink:oklch(92% .004 80);--ink-2:oklch(68% .006 70);--line:oklch(30% .006 60);--fill:oklch(18% .006 60);--signal:oklch(77% .13 245);--signal-ink:oklch(14% .006 60)}}[data-project]{--accent-ink:oklch(from var(--accent) min(l, .5) c h);--accent-line:oklch(from var(--accent) .8 calc(c * .5) h);--accent-wash:oklch(from var(--accent) .965 calc(c * .22) h)}@media (prefers-color-scheme:dark){[data-project]{--accent-ink:oklch(from var(--accent) max(l, .76) calc(c * .85) h);--accent-line:oklch(from var(--accent) .4 calc(c * .5) h);--accent-wash:oklch(from var(--accent) .21 calc(c * .35) h)}}[data-project]{--field:oklch(from var(--accent) .24 calc(c * .6) h);--glow:oklch(from var(--accent) .55 c h / .6);--glow-2:transparent;--field-bg:radial-gradient(70% 80% at 82% 15%, var(--glow), transparent 65%), radial-gradient(60% 70% at 8% 95%, var(--glow-2), transparent 65%), var(--field);--field-ink:#fff;--field-ink-2:#ffffffbd;--field-line:#ffffff52;--field-accent:oklch(from var(--accent) .82 calc(c * .75) h)}[data-project=sali]{--field:oklch(from var(--accent) .14 calc(c * .25) h);--glow:oklch(from var(--accent) .5 c h / .7)}[data-project=tunnit]{--field:oklch(21% .02 50);--glow:oklch(from var(--accent) .55 c h / .65);--glow-2:oklch(50% .17 262/.7)}@media (prefers-color-scheme:dark){[data-project]{--field:oklch(from var(--accent) .29 calc(c * .65) h);--glow:oklch(from var(--accent) .6 c h / .6)}[data-project=sali]{--field:oklch(from var(--accent) .18 calc(c * .3) h)}[data-project=tunnit]{--field:oklch(25% .025 50)}}[data-project] .sec>h2:before,[data-project] .prose h2:before,[data-project] .sub>h3:before,[data-project].sub>h3:before,[data-project] .fig figcaption:before,[data-project] caption:before{color:var(--accent-ink)}[data-project] .sec,[data-project] .prose h2{border-top-color:var(--accent-ink)}[data-project] .status .led{background:var(--accent)}*,:before,:after{box-sizing:border-box}html{background:var(--bg);color:var(--ink);font-family:var(--font-sans);-webkit-text-size-adjust:100%;text-size-adjust:100%;font-size:100%;line-height:1.55}@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}body{flex-direction:column;min-height:100dvh;margin:0;display:flex}main{counter-reset:section figure table;flex:1;overflow-x:clip}h1,h2,h3,h4{letter-spacing:-.015em;text-wrap:balance;margin:0;font-weight:600;line-height:1.15}h1{letter-spacing:-.025em;font-size:clamp(1.9rem,1.3rem + 2.4vw,3rem);line-height:1.05}h2{font-size:1.25rem}h3{font-size:1.05rem}p,ul,ol,dl,figure{margin:0}img,picture,svg{max-width:100%;display:block}img{height:auto}a{color:var(--signal);text-underline-offset:.15em;text-decoration:underline 1px}a:hover{text-decoration-thickness:2px}:focus-visible{outline:2px solid var(--signal);outline-offset:2px}::selection{background:var(--signal);color:var(--signal-ink)}[id]{scroll-margin-top:4.5rem}.container{width:min(100% - 2 * var(--gutter), var(--container));margin-inline:auto}.lead{text-wrap:pretty;max-width:38em;font-size:clamp(1.05rem,1rem + .3vw,1.2rem);line-height:1.5}.muted{color:var(--ink-2)}.mono{font-family:var(--font-mono)}.label{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2);font-size:.68rem;font-weight:500}.btn{border:1px solid var(--ink);background:var(--bg);color:var(--ink);align-items:center;gap:.4em;padding:.55em 1em;font-size:.9rem;font-weight:500;line-height:1.2;text-decoration:none;display:inline-flex}.btn:hover{background:var(--fill);text-decoration:none}.btn-primary{background:var(--ink);color:var(--bg)}.btn-primary:hover{background:var(--signal);border-color:var(--signal);color:var(--signal-ink)}.actions{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.status{align-items:center;gap:.45em;display:inline-flex}.status .led{background:var(--signal);flex:none;width:.5em;height:.5em}.sec{counter-increment:section;counter-reset:sub;border-top:1px solid var(--ink);margin-top:3rem;padding-top:.9rem}.sec>h2{gap:1rem;margin-bottom:1.25rem;display:flex}.sec>h2:before,.prose h2:before,.sub>h3:before{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--ink-2);flex:none;min-width:2rem;font-weight:500}.sec>h2:before,.prose h2:before{content:counter(section)}.sub{counter-increment:sub}.sub>h3{gap:1rem;display:flex}.sub>h3:before{content:counter(section) "." counter(sub)}table{border-collapse:collapse;font-variant-numeric:tabular-nums;text-align:left;width:100%;font-size:.9rem}caption{caption-side:top;text-align:left;color:var(--ink-2);padding-bottom:.5rem;font-size:.8rem}caption:before{counter-increment:table;content:"Table " counter(table) ". ";font-family:var(--font-mono);color:var(--ink);font-weight:500}th,td{vertical-align:top;border-top:1px solid var(--line);padding:.5rem .75rem}th:first-child,td:first-child{padding-left:0}th:last-child,td:last-child{padding-right:0}thead th{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2);border-top:0;padding-top:0;font-size:.68rem;font-weight:500}tbody tr:last-child>*{border-bottom:1px solid var(--line)}tbody th{font-weight:500}.specs th{width:9rem;color:var(--ink-2);font-weight:500}@media (width<=30rem){.specs th{width:6.5rem}}.fig{min-width:0;margin:0}.fig .plate{background:var(--field-bg,var(--fill));padding:5%}.fig-portrait .plate{padding:9% 11%}.fig picture,.fig img{width:100%;height:auto;display:block}.fig img{border:1px solid var(--field-line,var(--line))}.fig video{border:1px solid var(--field-line,var(--line));background:var(--ink);width:100%;height:auto;display:block}.callout{max-width:var(--measure);border:1px solid var(--line);border-left:4px solid var(--accent,var(--ink));text-wrap:pretty;gap:.3rem;margin-top:1.5rem;padding:.9rem 1.25rem;display:grid}.fig figcaption{color:var(--ink-2);text-wrap:pretty;margin-top:.5rem;font-size:.8rem;line-height:1.45}.fig figcaption:before{counter-increment:figure;content:"Figure " counter(figure) ". ";font-family:var(--font-mono);color:var(--ink);font-weight:500}.prose{text-wrap:pretty}.prose>:not(h2){max-width:var(--measure)}.prose>*+*{margin-top:.9em}.prose h2{border-top:1px solid var(--ink);counter-increment:section;gap:1rem;margin-top:2.5rem;padding-top:.9rem;font-size:1.25rem;display:flex}.prose ul,.prose ol{padding-left:1.2em}.prose ul{list-style:square}.prose li+li{margin-top:.4em}.prose li::marker{color:var(--ink-2)}.prose code{font-family:var(--font-mono);background:var(--fill);padding:.1em .3em;font-size:.9em}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}@media print{:root{--bg:#fff;--ink:#111;--ink-2:#555;--line:#bbb;--fill:#fff;--signal:#1d3fb3}html{font-size:10pt;line-height:1.4}.site-header,.site-footer,.btn,.no-print{display:none!important}a{color:inherit;text-decoration:none}.sec{break-inside:auto;margin-top:1.1rem;padding-top:.5rem}.sec>h2{break-after:avoid;margin-bottom:.6rem;font-size:1.05rem}th,td{padding:.3rem .6rem}tr{break-inside:avoid}.fig .plate{background:0 0;padding:0}}
