:root{--font-mono:"JetBrains Mono", ui-monospace, "Cascadia Mono", "SFMono-Regular", Consolas, monospace;--font-sans:"Atkinson Hyperlegible Next", "Segoe UI", system-ui, -apple-system, "Helvetica Neue", Arial, sans-serif;--grid-size:44px;--gutter:clamp(1rem, 4vw, 2.5rem);--measure:68ch;--radius:10px;--radius-sm:6px;--wide:72rem}:root,:root[data-theme=noir]{color-scheme:dark;--accent:#fec503;--accent-soft:rgba(254,197,3,.12);--accent-text:#fec503;--bg:#0a141e;--bg-deep:#060d14;--bg-glow:#12293c;--border:#1f3446;--border-strong:#28576c;--code-bg:#0c1822;--cyan:#249EBD;--cyan-soft:rgba(36,158,189,.14);--danger:#ff7b72;--glyph:rgba(99,164,181,.55);--glyph-hot:#fec503;--grid:rgba(99,164,181,.045);--lime:#B4FF00;--link:#7cc6d9;--link-visited:#a9b8f0;--muted:#8fa3af;--on-accent:#06101a;--selection-bg:#fec503;--selection-fg:#06101a;--shadow:0 1px 0 rgba(255,255,255,.03) inset, 0 12px 32px -18px rgba(0,0,0,.8);--surface:#0f1c28;--surface-2:#142533;--syn-com:#7f95a3;--syn-err:#ff7b72;--syn-fn:#7cc6d9;--syn-kw:#fec503;--syn-num:#f2a65e;--syn-op:#a9bcc8;--syn-str:#b5e06a;--syn-type:#c9b0ff;--syn-var:#e6edf2;--text:#c3d0d8;--text-strong:#e6edf2}@media(prefers-color-scheme:light){:root:not([data-theme]){color-scheme:light;--accent:#bf8700;--accent-soft:#fff8c5;--accent-text:#9a6700;--bg:#ffffff;--bg-deep:#ffffff;--bg-glow:#f6f8fa;--border:#d1d9e0;--border-strong:#b7c1cb;--code-bg:#f6f8fa;--cyan:#0969da;--cyan-soft:#ddf4ff;--danger:#cf222e;--glyph:rgba(31,35,40,.16);--glyph-hot:#9a6700;--grid:rgba(31,35,40,.035);--lime:#1a7f37;--link:#0969da;--link-visited:#8250df;--muted:#59636e;--on-accent:#1f2328;--selection-bg:#fff8c5;--selection-fg:#1f2328;--shadow:0 1px 0 rgba(31,35,40,.04), 0 8px 24px -16px rgba(31,35,40,.18);--surface:#ffffff;--surface-2:#f6f8fa;--syn-com:#59636e;--syn-err:#82071e;--syn-fn:#8250df;--syn-kw:#cf222e;--syn-num:#0550ae;--syn-op:#1f2328;--syn-str:#0a3069;--syn-type:#953800;--syn-var:#1f2328;--text:#1f2328;--text-strong:#1f2328}}:root[data-theme=daylight]{color-scheme:light;--accent:#bf8700;--accent-soft:#fff8c5;--accent-text:#9a6700;--bg:#ffffff;--bg-deep:#ffffff;--bg-glow:#f6f8fa;--border:#d1d9e0;--border-strong:#b7c1cb;--code-bg:#f6f8fa;--cyan:#0969da;--cyan-soft:#ddf4ff;--danger:#cf222e;--glyph:rgba(31,35,40,.16);--glyph-hot:#9a6700;--grid:rgba(31,35,40,.035);--lime:#1a7f37;--link:#0969da;--link-visited:#8250df;--muted:#59636e;--on-accent:#1f2328;--selection-bg:#fff8c5;--selection-fg:#1f2328;--shadow:0 1px 0 rgba(31,35,40,.04), 0 8px 24px -16px rgba(31,35,40,.18);--surface:#ffffff;--surface-2:#f6f8fa;--syn-com:#59636e;--syn-err:#82071e;--syn-fn:#8250df;--syn-kw:#cf222e;--syn-num:#0550ae;--syn-op:#1f2328;--syn-str:#0a3069;--syn-type:#953800;--syn-var:#1f2328;--text:#1f2328;--text-strong:#1f2328}@font-face{font-family:atkinson hyperlegible next;font-style:normal;font-display:swap;font-weight:200 800;src:url(/fonts/atkinson-hyperlegible-next-latin-wght-normal.woff2)format("woff2-variations");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:atkinson hyperlegible next;font-style:normal;font-display:swap;font-weight:200 800;src:url(/fonts/atkinson-hyperlegible-next-latin-ext-wght-normal.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:atkinson hyperlegible next;font-style:italic;font-display:swap;font-weight:200 800;src:url(/fonts/atkinson-hyperlegible-next-latin-wght-italic.woff2)format("woff2-variations");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:atkinson hyperlegible next;font-style:italic;font-display:swap;font-weight:200 800;src:url(/fonts/atkinson-hyperlegible-next-latin-ext-wght-italic.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:jetbrains mono;font-style:normal;font-display:swap;font-weight:100 800;src:url(/fonts/jetbrains-mono-latin-wght-normal.woff2)format("woff2-variations");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;font-style:normal;font-display:swap;font-weight:100 800;src:url(/fonts/jetbrains-mono-latin-ext-wght-normal.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}*,*::before,*::after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-padding-top:5rem;hanging-punctuation:first last}body{margin:0;min-height:100vh;min-height:100svh;display:flex;flex-direction:column;font-family:var(--font-sans);font-size:clamp(1.0625rem,.99rem + .3vw,1.1875rem);line-height:1.7;font-optical-sizing:auto;color:var(--text);background-color:var(--bg);background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px),radial-gradient(ellipse at 20% -10%,var(--bg-glow) 0%,var(--bg) 55%,var(--bg-deep) 100%);background-size:var(--grid-size)var(--grid-size),var(--grid-size)var(--grid-size),auto;background-attachment:fixed;-webkit-font-smoothing:antialiased;overflow-x:clip}main{flex:1 0 auto;outline:none}::selection{background:var(--selection-bg);color:var(--selection-fg)}img,svg,video,canvas{max-width:100%;height:auto}svg{fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}h1,h2,h3,h4{color:var(--text-strong);line-height:1.2;text-wrap:balance;letter-spacing:-.01em;margin:0 0 .5em}h1{font-size:clamp(2.1rem,1.6rem + 2.4vw,3.4rem);font-weight:750;letter-spacing:-.025em}h2{font-size:clamp(1.5rem,1.25rem + 1.1vw,2.1rem);font-weight:700}h3{font-size:clamp(1.15rem,1.08rem + .35vw,1.35rem);font-weight:650}p{margin:0 0 1em;text-wrap:pretty}a{color:var(--link);text-decoration-thickness:1px;text-underline-offset:.2em}a:hover{text-decoration-thickness:2px}.prose a:visited{color:var(--link-visited)}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:3px}.mono,code,kbd,pre,samp{font-family:var(--font-mono);font-variant-ligatures:none}.mono{font-size:.86em;letter-spacing:.01em}.muted{color:var(--muted)}.accent{color:var(--accent-text)}.visually-hidden{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.sr-trap{position:absolute;left:-1e4px;top:auto;width:1px;height:1px;overflow:hidden;user-select:none;pointer-events:none}.skip-link{position:absolute;left:1rem;top:-4rem;z-index:100;padding:.6rem 1rem;background:var(--accent);color:var(--on-accent);border-radius:var(--radius-sm);font-weight:700}.skip-link:focus{top:1rem}.wrap{width:100%;max-width:var(--wide);margin-inline:auto;padding-inline:var(--gutter)}[hidden]{display:none!important}.caret{display:inline-block;width:.55em;height:1.05em;margin-left:.15em;vertical-align:-.15em;background:var(--accent);animation:blink 1.1s steps(1)infinite}@keyframes blink{50%{opacity:0}}.btn{display:inline-flex;align-items:center;gap:.5em;padding:.62em 1.15em;border-radius:var(--radius-sm);font:600 .95rem/1.2 var(--font-sans);text-decoration:none;border:1px solid transparent;cursor:pointer;transition:background-color .15s,border-color .15s,color .15s,transform .15s}.btn-primary{background:var(--accent);color:var(--on-accent)}.btn-primary:hover{transform:translateY(-1px);filter:brightness(1.05)}.btn-ghost{background:0 0;color:var(--text-strong);border-color:var(--border-strong)}.btn-ghost:hover{border-color:var(--accent);color:var(--accent-text)}.badge{display:inline-block;padding:.05em .55em;border-radius:999px;font:600 .72rem/1.6 var(--font-mono);text-transform:uppercase;letter-spacing:.06em;border:1px solid var(--border-strong);color:var(--muted)}.badge-up{color:var(--lime);border-color:initial}.badge-accent{color:var(--accent-text);border-color:initial}.chips{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:.45rem}.chip{padding:.2em .7em;border-radius:var(--radius-sm);background:var(--surface-2);border:1px solid var(--border);font-size:.9rem;color:var(--text-strong)}.chip-muted{color:var(--muted);background:0 0}.tag-row,.tag-cloud{list-style:none;margin:.8rem 0 0;padding:0;display:flex;flex-wrap:wrap;gap:.5rem}.tag{font:.82rem/1.6 var(--font-mono);color:var(--accent-text);text-decoration:none}.tag:hover{text-decoration:underline}.site-header{position:sticky;top:0;z-index:50;background:color-mix(in srgb,var(--bg) 82%,transparent);backdrop-filter:saturate(1.4)blur(10px);-webkit-backdrop-filter:saturate(1.4)blur(10px);border-bottom:1px solid var(--border)}.header-inner{display:flex;align-items:center;gap:1rem;min-height:3.6rem}.brand{display:inline-flex;align-items:baseline;font:600 1rem/1 var(--font-mono);color:var(--text-strong);text-decoration:none;letter-spacing:.02em}.brand-hex{color:var(--accent-text)}.brand:hover .brand-name{color:var(--accent-text)}.nav-desktop{margin-left:auto;display:none}.nav-desktop ul{list-style:none;display:flex;gap:.25rem;margin:0;padding:0}.nav-desktop a{display:block;padding:.4rem .65rem;border-radius:var(--radius-sm);color:var(--text);text-decoration:none;font-size:.95rem}.nav-desktop a:hover{color:var(--text-strong);background:var(--surface-2)}.nav-desktop a[aria-current=page]{color:var(--accent-text);box-shadow:inset 0 -2px 0 var(--accent);border-radius:0}.header-tools{margin-left:auto;display:flex;align-items:center;gap:.3rem}.nav-desktop+.header-tools{margin-left:.5rem}.tool{display:inline-flex;align-items:center;justify-content:center;gap:.35rem;min-width:2.4rem;height:2.4rem;padding:0 .55rem;border-radius:var(--radius-sm);border:1px solid transparent;background:0 0;color:var(--text);font:600 .8rem/1 var(--font-mono);text-decoration:none;cursor:pointer}.tool:hover{background:var(--surface-2);color:var(--text-strong);border-color:var(--border)}.tool-kbd{font-size:.72rem;color:var(--muted);border:1px solid var(--border);border-radius:4px;padding:.1rem .3rem;display:none}.theme-toggle .ti{display:none}.theme-toggle .ti .fill{fill:currentColor;stroke:none}:root[data-theme-mode=auto] .theme-toggle .ti-auto,:root:not([data-theme-mode]) .theme-toggle .ti-auto,:root[data-theme-mode=day] .theme-toggle .ti-day,:root[data-theme-mode=night] .theme-toggle .ti-night{display:block}@media(min-width:62rem){.nav-desktop{display:block}.menu-open{display:none}.tool-kbd{display:inline}}.lang-hint{border-top:1px solid var(--border);background:var(--accent-soft)}.lang-hint-inner{display:flex;align-items:center;justify-content:space-between;gap:1rem;min-height:2.6rem;font-size:.92rem}.lang-hint a{color:var(--text-strong)}dialog{color:var(--text);background:var(--surface);border:1px solid var(--border-strong);padding:0}dialog::backdrop{background:rgba(3,8,13,.55);backdrop-filter:blur(3px)}:root[data-theme=daylight] dialog::backdrop{background:rgba(31,35,40,.25)}.sheet{margin:auto auto 0;width:100%;max-width:32rem;border-radius:16px 16px 0 0;border-bottom:0;padding:.5rem 1rem calc(1rem + env(safe-area-inset-bottom))}.sheet[open]{animation:sheet-in .22s ease-out}@keyframes sheet-in{from{transform:translateY(30%);opacity:0}}.sheet-head{display:flex;justify-content:space-between;align-items:center;padding:.3rem 0 .6rem;border-bottom:1px solid var(--border)}.sheet-title{color:var(--muted)}.sheet-nav{list-style:none;margin:.5rem 0 0;padding:0}.sheet-nav a{display:block;padding:.8rem .4rem;font-size:1.1rem;color:var(--text-strong);text-decoration:none;border-bottom:1px solid var(--border)}.sheet-nav a[aria-current=page]{color:var(--accent-text)}.sheet-nav li:last-child a{border-bottom:0;color:var(--muted);font-size:1rem}.cmdk{margin:12vh auto auto;width:min(40rem,calc(100% - 2rem));border-radius:var(--radius);box-shadow:0 30px 80px -20px rgba(0,0,0,.6)}.cmdk[open]{animation:cmdk-in .16s ease-out}@keyframes cmdk-in{from{transform:translateY(-6px)scale(.985);opacity:0}}.cmdk-input-row{display:flex;align-items:center;gap:.6rem;padding:.7rem .9rem;border-bottom:1px solid var(--border)}.cmdk-prompt{color:var(--accent-text);font-size:1.1rem}.cmdk-input{flex:1;min-width:0;background:0 0;border:0;color:var(--text-strong);font:1.05rem/1.4 var(--font-mono);outline:none}.cmdk-input::placeholder{color:var(--muted)}.cmdk-list{list-style:none;margin:0;padding:.4rem;max-height:min(55vh,26rem);overflow-y:auto}.cmdk-group{padding:.6rem .7rem .25rem;font:600 .7rem/1 var(--font-mono);text-transform:uppercase;letter-spacing:.1em;color:var(--muted)}.cmdk-item{display:flex;flex-direction:column;gap:.1rem;padding:.55rem .7rem;border-radius:var(--radius-sm);cursor:pointer;color:var(--text-strong)}.cmdk-item small{color:var(--muted);font-size:.82rem;line-height:1.4}.cmdk-item[aria-selected=true]{background:var(--accent-soft);box-shadow:inset 2px 0 0 var(--accent)}.cmdk-item[data-cmd]::before{content:"$ ";font-family:var(--font-mono);color:var(--accent-text)}.cmdk-item[data-cmd]{flex-direction:row;font-family:var(--font-mono);font-size:.92rem}.cmdk-hint{margin:0;padding:.55rem .9rem;border-top:1px solid var(--border);font-size:.75rem}.hero{position:relative;isolation:isolate;min-height:min(92svh,56rem);display:flex;align-items:center;padding-block:clamp(4rem,10vh,7rem)clamp(5rem,12vh,8rem);overflow:hidden;border-bottom:1px solid var(--border)}.hero-canvas{position:absolute;inset:0;width:100%;height:100%;z-index:-2}.hero-vignette{position:absolute;inset:0;z-index:-1;background:radial-gradient(ellipse 70% 60% at 30% 45%,color-mix(in srgb,var(--bg) 88%,transparent) 0%,color-mix(in srgb,var(--bg) 55%,transparent) 55%,transparent 100%);pointer-events:none}.hero-inner{position:relative}.hero-kicker{color:var(--muted);margin-bottom:1.2rem;font-size:.9rem;letter-spacing:.12em}.hero-name{font-size:clamp(2.8rem,1.6rem + 6.2vw,6.2rem);line-height:.98;font-weight:800;letter-spacing:-.04em;margin-bottom:.35em}.hero-role{color:var(--accent-text);margin-bottom:1.2rem;font-size:clamp(.82rem,.78rem + .2vw,.95rem);letter-spacing:.04em}.hero-tagline{font-size:clamp(1.25rem,1.05rem + 1vw,1.75rem);line-height:1.4;max-width:34ch;color:var(--text-strong);margin-bottom:2rem}.hero-cta{display:flex;flex-wrap:wrap;gap:.75rem;margin-bottom:3rem}.tx{max-width:46rem;border-left:2px solid var(--accent);padding:.2rem 0 .2rem 1.1rem;min-height:7.5rem}.tx-label{color:var(--muted);margin:0 0 .4rem;font-size:.78rem;letter-spacing:.08em}.tx-list{list-style:none;margin:0;padding:0}.tx-item blockquote{margin:0}.tx-item blockquote p{margin:0;font-size:clamp(1rem,.95rem + .3vw,1.15rem);color:var(--text-strong);font-style:italic}.tx-de{margin:.25rem 0 0;color:var(--muted);font-size:.92rem}.tx-item figcaption{margin-top:.4rem;color:var(--muted);font-size:.8rem}.tx-item figure{margin:0}.tx-whisper{margin:0;color:var(--lime);font-size:.98rem}:root[data-theme=daylight] .tx-whisper{color:var(--accent-text)}.tx-item.is-entering{animation:tx-in .5s ease-out}@keyframes tx-in{from{opacity:0;transform:translateY(4px);filter:blur(2px)}}.hero-scroll{position:absolute;left:50%;bottom:1.4rem;transform:translateX(-50%);color:var(--muted);text-decoration:none;font-size:1.2rem;animation:bob 2.4s ease-in-out infinite}@keyframes bob{50%{transform:translate(-50%,5px)}}.section{padding-block:clamp(3.5rem,8vw,6.5rem)}.section+.section{padding-top:0}.section-head{max-width:46rem;margin-bottom:2.2rem}.eyebrow{color:var(--muted);text-transform:lowercase;letter-spacing:.1em;margin-bottom:.6rem;font-size:.8rem}.lead{font-size:clamp(1.1rem,1.02rem + .35vw,1.3rem);color:var(--text);line-height:1.6;max-width:60ch}.more-link{margin-top:1.6rem;font-family:var(--font-mono);font-size:.9rem}.more-link a{text-decoration:none;color:var(--accent-text)}.more-link a:hover{text-decoration:underline}.group-title{margin-top:3rem;font-size:1.1rem;font-family:var(--font-mono);color:var(--muted);font-weight:600;text-transform:lowercase;letter-spacing:.06em}.card{position:relative;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1.3rem 1.4rem;box-shadow:var(--shadow);transition:border-color .2s,transform .2s}.card:hover{border-color:var(--border-strong)}.card-title{font-size:1.12rem;margin-bottom:.45rem}.card-title a{color:var(--text-strong);text-decoration:none}.card-title a:hover{color:var(--accent-text)}.card p:last-child{margin-bottom:0}.card-link{font:.85rem var(--font-mono);text-decoration:none;color:var(--accent-text)}.cloud-years{margin-top:-.3rem}.cloud-grid{display:grid;gap:1.5rem}@media(min-width:64rem){.cloud-grid{grid-template-columns:1.15fr 1fr;align-items:start}}.term{background:var(--code-bg);border:1px solid var(--border-strong);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow);font-family:var(--font-mono);font-size:.84rem}.term-bar{display:flex;align-items:center;gap:.8rem;padding:.55rem .9rem;border-bottom:1px solid var(--border);color:var(--muted);font-size:.78rem;background:var(--surface)}.term-dots{display:inline-flex;gap:.35rem}.term-dots i{width:.62rem;height:.62rem;border-radius:50%;background:var(--border-strong)}.term-dots i:first-child{background:var(--danger);opacity:.7}.term-dots i:nth-child(2){background:var(--accent);opacity:.7}.term-cmd{margin:0;padding:.9rem 1rem .4rem;color:var(--text-strong)}.term-scroll{overflow-x:auto}.term-table{width:100%;border-collapse:collapse;margin:0 0 .2rem}.term-table th,.term-table td{text-align:left;padding:.26rem 1rem;white-space:nowrap;font-weight:400}.term-table thead th{color:var(--muted);font-size:.74rem;letter-spacing:.08em;padding-top:.5rem}.term-table tbody th{color:var(--text-strong);font-weight:600}.term-table td{color:var(--text)}.term-table .ok{color:var(--lime)}.term-table tbody tr:hover{background:var(--accent-soft)}.term-more{margin:0;padding:.4rem 1rem 1rem;font-size:.8rem}@media(max-width:34rem){.term-table td:nth-child(2){display:none}.term-table th,.term-table td{padding-inline:.7rem}}.review-cards{list-style:none;margin:0;padding:0;display:grid;gap:1rem}@media(min-width:40rem) and (max-width:63.99rem){.review-cards{grid-template-columns:1fr 1fr}}.review-cards .card{padding:1.1rem 1.25rem}.review-cards .card p{font-size:.96rem;line-height:1.6}.review-cards .card::before{content:"";position:absolute;left:-1px;top:1.2rem;bottom:1.2rem;width:2px;background:var(--accent);border-radius:2px}.feature-list{display:grid;gap:1.5rem}.project-grid{display:grid;gap:1.25rem;grid-template-columns:repeat(auto-fill,minmax(min(100%,18rem),1fr))}.project-card{padding:0;overflow:hidden;display:flex;flex-direction:column}.project-cover{display:block;aspect-ratio:16/9;overflow:hidden;background:var(--surface-2);border-bottom:1px solid var(--border)}.project-cover img{width:100%;height:100%;object-fit:cover;transition:transform .5s ease}.project-card:hover .project-cover img{transform:scale(1.03)}.project-body{padding:1.1rem 1.3rem 1.3rem}.project-body p:not(.post-meta){font-size:.97rem;line-height:1.6}@media(min-width:52rem){.project-card.is-big{flex-direction:row}.project-card.is-big .project-cover{flex:0 0 48%;aspect-ratio:auto;border-bottom:0;border-right:1px solid var(--border)}.project-card.is-big .project-body{padding:1.8rem 2rem;align-self:center}.project-card.is-big .card-title{font-size:1.5rem}}:root[data-theme=noir] .project-cover img{filter:saturate(.75)contrast(1.05)}.project-links{list-style:none;display:flex;flex-wrap:wrap;gap:.6rem;padding:0;margin:1.2rem 0 0}.project-hero{margin:0 0 2.5rem;border-radius:var(--radius);overflow:hidden;border:1px solid var(--border)}.project-hero img{width:100%;display:block}.post-list{list-style:none;margin:0;padding:0;display:grid;gap:.2rem}.post-item{padding:1.2rem 0;border-bottom:1px solid var(--border)}.post-item:first-child{padding-top:0}.post-meta{color:var(--muted);margin:0 0 .35rem;font-size:.8rem}.post-title{font-size:clamp(1.15rem,1.08rem + .4vw,1.4rem);margin:0 0 .35rem}.post-title a{color:var(--text-strong);text-decoration:none}.post-title a:hover{color:var(--accent-text);text-decoration:underline;text-decoration-color:var(--accent)}.post-summary{margin:0;color:var(--text);font-size:.98rem;max-width:70ch}.ext{font-size:.8em;color:var(--muted)}.training-list{list-style:none;margin:0;padding:0;display:grid;gap:1rem}@media(min-width:56rem){.training-list{grid-template-columns:repeat(auto-fill,minmax(22rem,1fr))}}.training-tags{display:flex;flex-wrap:wrap;align-items:center;gap:.45rem;font-size:.88rem;margin-bottom:.6rem}.training p:last-child{font-size:.96rem;line-height:1.6}.page{padding-block:clamp(2.5rem,6vw,4.5rem)clamp(3.5rem,8vw,6rem)}.page-head{max-width:52rem;margin-bottom:2.4rem}.page-head .lead{margin-top:.4rem}.prose{max-width:var(--measure)}.prose>*+*{margin-top:0}.prose h2{margin-top:2.2em}.prose h3{margin-top:1.8em}.prose h2 .anchor,.prose h3 .anchor{opacity:0;margin-left:.25em;text-decoration:none;color:var(--muted);font-weight:400}.prose h2:hover .anchor,.prose h3:hover .anchor,.prose .anchor:focus{opacity:1}.prose ul,.prose ol{padding-left:1.3em;margin:0 0 1.1em}.prose li{margin:.3em 0}.prose li::marker{color:var(--accent-text)}.prose blockquote{margin:1.5em 0;padding:.2em 0 .2em 1.2em;border-left:3px solid var(--cyan);color:var(--text-strong);font-style:italic}.prose hr{border:0;height:1px;background:var(--border);margin:2.5em 0}.prose img{border-radius:var(--radius-sm)}.prose table{width:100%;border-collapse:collapse;margin:1.5em 0;font-size:.95rem;display:block;overflow-x:auto}.prose th,.prose td{border-bottom:1px solid var(--border);padding:.5em .8em;text-align:left}.prose th{color:var(--text-strong)}.prose :not(pre)>code{font-size:.86em;padding:.12em .38em;border-radius:4px;background:var(--code-bg);border:1px solid var(--border);color:var(--text-strong);overflow-wrap:anywhere}.prose pre,.highlight pre{position:relative;margin:1.4em 0;padding:1rem 1.15rem;border-radius:var(--radius-sm);background:var(--code-bg);border:1px solid var(--border);overflow-x:auto;font-size:.86rem;line-height:1.6;tab-size:2}.prose pre code{background:0 0;border:0;padding:0}.highlight{position:relative}.copy-btn{position:absolute;top:.45rem;right:.45rem;z-index:1;opacity:0;transition:opacity .15s;font:.72rem var(--font-mono);padding:.25rem .5rem;border-radius:4px;border:1px solid var(--border-strong);background:var(--surface);color:var(--muted);cursor:pointer}.highlight:hover .copy-btn,.copy-btn:focus{opacity:1}.md-figure{margin:1.8em 0}.md-figure figcaption,.cast figcaption{font-size:.88rem;color:var(--muted);margin-top:.6rem}.callout{margin:1.6em 0;padding:1rem 1.2rem;border-radius:var(--radius-sm);border:1px solid var(--border-strong);border-left:3px solid var(--cyan);background:var(--cyan-soft)}.callout-warn{border-left-color:var(--accent);background:var(--accent-soft)}.callout-title{margin:0 0 .3rem;font-weight:700;color:var(--text-strong)}.callout>:last-child{margin-bottom:0}.post-head .post-meta{margin-bottom:1rem}.post-layout{display:grid;gap:2rem}@media(min-width:76rem){.post-layout:has(.toc){grid-template-columns:minmax(0,var(--measure))15rem;justify-content:start;column-gap:4rem}.post-layout .toc{order:2;position:sticky;top:5rem;align-self:start}}.toc{font-size:.9rem}.toc-title{margin-bottom:.4rem;text-transform:lowercase}.toc ul{list-style:none;margin:0;padding-left:.8rem;border-left:1px solid var(--border)}.toc li{margin:.3rem 0}.toc a{color:var(--muted);text-decoration:none}.toc a:hover{color:var(--text-strong)}.post-nav{display:grid;gap:1rem;margin-top:4rem;padding-top:2rem;border-top:1px solid var(--border);max-width:var(--measure)}@media(min-width:40rem){.post-nav{grid-template-columns:1fr 1fr}.post-nav-next{text-align:right;grid-column:2}}.post-nav a{display:flex;flex-direction:column;gap:.2rem;text-decoration:none;color:var(--text-strong)}.post-nav a:hover span:last-child{color:var(--accent-text)}.resume-head{display:flex;flex-wrap:wrap;align-items:end;justify-content:space-between;gap:1rem;max-width:none}.resume-summary{margin-bottom:1rem}.resume-block{margin-top:3.2rem}.resume-block>h2{font-size:1.35rem;padding-bottom:.5rem;border-bottom:1px solid var(--border);margin-bottom:1.4rem}.platform-groups{display:grid;gap:1.2rem}@media(min-width:52rem){.platform-groups{grid-template-columns:repeat(auto-fit,minmax(16rem,1fr))}}.platform-group h3{font-size:.8rem;font-weight:600;text-transform:lowercase;letter-spacing:.06em;margin-bottom:.6rem}.timeline{list-style:none;margin:0;padding:0 0 0 1.4rem;position:relative}.timeline::before{content:"";position:absolute;left:.35rem;top:.5rem;bottom:.5rem;width:1px;background:linear-gradient(var(--accent),var(--border) 30%,var(--border))}.tl-item{position:relative;margin-bottom:.6rem}.tl-item::before{content:"";position:absolute;left:-1.4rem;top:1.45rem;width:.72rem;height:.72rem;border-radius:50%;background:var(--bg);border:2px solid var(--border-strong);transform:translateX(-.02rem)}.tl-item.is-current::before{border-color:var(--accent);background:var(--accent);box-shadow:0 0 0 4px var(--accent-soft)}.tl-item details{border:1px solid transparent;border-radius:var(--radius);padding:.6rem .9rem;transition:background-color .15s,border-color .15s}.tl-item details[open]{background:var(--surface);border-color:var(--border)}.tl-item summary{display:grid;grid-template-columns:3rem 1fr;grid-template-areas:"logo when" "logo role" "logo org";column-gap:1rem;cursor:pointer;list-style:none}.tl-item summary::-webkit-details-marker{display:none}.tl-item summary:hover .tl-role{color:var(--accent-text)}.tl-logo{grid-area:logo;width:3rem;height:3rem;border-radius:8px;object-fit:contain;padding:3px;background:#fff;border:1px solid var(--border)}.tl-logo-empty{background:var(--surface-2)}.tl-when{grid-area:when;color:var(--muted);font-size:.78rem}.tl-role{grid-area:role;font-weight:700;color:var(--text-strong);line-height:1.35}.tl-org{grid-area:org;color:var(--text);font-size:.94rem}.tl-body{padding:.8rem 0 .2rem 4rem;font-size:.98rem}.tl-body ul{padding-left:1.1em}.tl-body li::marker{color:var(--accent-text)}@media(max-width:30rem){.tl-body{padding-left:0}}.earlier{margin-top:1.5rem}.earlier summary{cursor:pointer;color:var(--muted)}.earlier[open] summary{margin-bottom:1rem}.resume-links{display:flex;flex-wrap:wrap;gap:.7rem}.pub-list{list-style:none;margin:0;padding:0;max-width:52rem}.pub{padding:1.3rem 0;border-bottom:1px solid var(--border)}.pub-title{font-size:1.15rem;margin-bottom:.3rem}.pub-title a{color:var(--text-strong);text-decoration:none}.pub-title a:hover{color:var(--accent-text);text-decoration:underline}.pub-authors{margin:0;font-size:.96rem}.pub-venue{margin:0;font-size:.92rem;font-style:italic}.pub-files{display:flex;gap:1rem;margin:.5rem 0 0;font-size:.8rem}.pub-files a{color:var(--accent-text)}.contact-grid{display:grid;gap:1.2rem;margin-bottom:2.5rem}@media(min-width:48rem){.contact-grid{grid-template-columns:1fr 1fr}}.contact-card .email-address{font:600 1.05rem var(--font-mono);overflow-wrap:anywhere}.profile-list{list-style:none;margin:0;padding:0}.profile-list a{display:flex;justify-content:space-between;gap:1rem;padding:.6rem 0;border-bottom:1px solid var(--border);text-decoration:none;color:var(--text-strong)}.profile-list li:last-child a{border-bottom:0}.profile-list a:hover span:first-child{color:var(--accent-text)}.cast{margin:2em 0}.cast-frame{border:1px solid var(--border-strong);border-radius:var(--radius);overflow:hidden;background:var(--code-bg)}.cast-stage{position:relative;min-height:12rem}.cast-stage:not(.is-mounted){display:grid;place-items:center}.cast-play{font:600 .9rem var(--font-mono);padding:.7rem 1.1rem;border-radius:var(--radius-sm);border:1px solid var(--accent);background:var(--accent-soft);color:var(--accent-text);cursor:pointer}.cast-noscript{padding:1rem}.cast-stage .ap-wrapper{width:100%}.cast-transcript{margin-top:.6rem}.cast-transcript summary{cursor:pointer;color:var(--muted);font-size:.85rem}.ap-player.asciinema-player-theme-df{--term-color-foreground:var(--text);--term-color-background:var(--code-bg);--term-color-0:#1b2733;--term-color-1:#ff7b72;--term-color-2:#a8e05f;--term-color-3:#fec503;--term-color-4:#4fa6d8;--term-color-5:#c9b0ff;--term-color-6:#7cc6d9;--term-color-7:#c3d0d8;--term-color-8:#5d7180;--term-color-9:#ff9e97;--term-color-10:#c6f27d;--term-color-11:#ffd84d;--term-color-12:#7fc4ec;--term-color-13:#ddccff;--term-color-14:#a5e0ee;--term-color-15:#e6edf2}:root[data-theme=daylight] .ap-player.asciinema-player-theme-df{--term-color-0:#24292f;--term-color-1:#cf222e;--term-color-2:#116329;--term-color-3:#9a6700;--term-color-4:#0969da;--term-color-5:#8250df;--term-color-6:#1b7c83;--term-color-7:#6e7781;--term-color-8:#57606a;--term-color-9:#a40e26;--term-color-10:#1a7f37;--term-color-11:#7d4e00;--term-color-12:#218bff;--term-color-13:#a475f9;--term-color-14:#3192aa;--term-color-15:#1f2328}.site-footer{margin-top:auto;border-top:1px solid var(--border);padding-block:2rem calc(2rem + env(safe-area-inset-bottom));font-size:.9rem;position:relative}.footer-inner{display:flex;flex-wrap:wrap;align-items:center;gap:1rem 2rem}.footer-id p{margin:0}.footer-handle{color:var(--text-strong);font-size:.95rem}.footer-links{list-style:none;display:flex;flex-wrap:wrap;gap:.4rem 1.1rem;margin:0 0 0 auto;padding:0}.footer-links a{color:var(--muted);text-decoration:none}.footer-links a:hover{color:var(--text-strong);text-decoration:underline}.vault-link{display:inline-flex;align-items:center;justify-content:center;width:2.2rem;height:2.2rem;border-radius:50%;color:var(--muted);border:1px solid var(--border);opacity:.55;transition:opacity .2s,color .2s,border-color .2s}.vault-link:hover,.vault-link:focus-visible{opacity:1;color:var(--accent-text);border-color:var(--accent)}.unlock-overlay{position:fixed;inset:0;z-index:200;display:grid;place-items:center;background:#060d14;color:#fec503;font:600 clamp(.9rem,.8rem + .6vw,1.2rem)/1.5 var(--font-mono);letter-spacing:.08em;animation:unlock-in .18s ease-out}.unlock-overlay pre{margin:0;white-space:pre-wrap;text-align:center;color:#63a4b5;opacity:.8}.unlock-overlay strong{display:block;margin-top:1rem;color:#fec503}@keyframes unlock-in{from{opacity:0}}.decode-vis{white-space:pre-wrap}.decode-vis .g{color:var(--accent-text);opacity:.75}:root.js [data-reveal]{opacity:0;transform:translateY(10px);transition:opacity .6s ease,transform .6s ease}:root.js [data-reveal].is-in{opacity:1;transform:none}:root.js .term-table tbody tr[data-row]{opacity:0;transition:opacity .25s ease}:root.js .term.is-in .term-table tbody tr[data-row].is-in{opacity:1}:root[data-theme=noir] .nav-desktop a:hover,:root[data-theme=noir] .card-title a:hover,:root[data-theme=noir] .post-title a:hover{animation:glitch .35s steps(2)1}@keyframes glitch{0%{text-shadow:2px 0 rgba(36,158,189,.75),-2px 0 rgba(254,197,3,.6)}50%{text-shadow:-1px 0 rgba(36,158,189,.75),1px 0 rgba(254,197,3,.6)}100%{text-shadow:none}}:root[data-theme=noir] .hero::after{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;background:repeating-linear-gradient(0,rgba(255,255,255,.018) 0 1px,transparent 1px 3px)}:root[data-theme=daylight] body{background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px)}:root[data-theme=daylight] .tl-logo{border-color:var(--border)}::view-transition-old(root),::view-transition-new(root){animation:none;mix-blend-mode:normal}::view-transition-new(root){animation:vt-reveal .55s ease-out}@keyframes vt-reveal{from{clip-path:circle(0 at var(--vt-x,50%) var(--vt-y,0))}to{clip-path:circle(var(--vt-r,150vmax) at var(--vt-x,50%) var(--vt-y,0))}}.not-found-trace{padding:1rem;border:1px dashed var(--border-strong);border-radius:var(--radius-sm);max-width:40rem;overflow-x:auto;font-size:.82rem}.pixel{position:absolute;width:1px;height:1px;opacity:0}@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}.caret{animation:none}:root.js [data-reveal],:root.js .term-table tbody tr[data-row]{opacity:1;transform:none}}@media print{:root{--bg:#fff;--surface:#fff;--surface-2:#fff;--text:#111;--text-strong:#000;--muted:#444;--border:#ccc;--border-strong:#999;--accent:#000;--accent-text:#000;--link:#000;--code-bg:#f5f5f5}body{background:#fff!important;font-size:10.5pt;line-height:1.45}.site-header,.site-footer,.hero-canvas,.hero-scroll,.cmdk,.print-btn,.lang-hint,.copy-btn,.vault-link,.tx,.post-nav,.toc{display:none!important}.page{padding:0}.card,.tl-item details[open]{box-shadow:none;border-color:#ddd;break-inside:avoid}.tl-item{break-inside:avoid}.prose a.is-ext::after,.tl-body a::after{content:" (" attr(href)")";font-size:.85em;color:#444}:root.js [data-reveal],:root.js .term-table tbody tr[data-row]{opacity:1!important;transform:none!important}h1{font-size:22pt}h2{font-size:14pt}}.chroma{color:var(--text);background:0 0}.chroma .err{color:var(--syn-err)}.chroma .lnt,.chroma .ln{color:var(--muted);margin-right:.8em;user-select:none}.chroma .hl{background:var(--accent-soft);display:block}.chroma .k,.chroma .kc,.chroma .kd,.chroma .kn,.chroma .kp,.chroma .kr,.chroma .nt,.chroma .ow{color:var(--syn-kw)}.chroma .kt{color:var(--syn-type)}.chroma .na,.chroma .nb,.chroma .bp,.chroma .no{color:var(--syn-type)}.chroma .nc,.chroma .nn,.chroma .ne{color:var(--syn-type);font-weight:600}.chroma .nf,.chroma .fm,.chroma .nd{color:var(--syn-fn)}.chroma .nv,.chroma .vc,.chroma .vg,.chroma .vi,.chroma .vm,.chroma .n{color:var(--syn-var)}.chroma .s,.chroma .sa,.chroma .sb,.chroma .sc,.chroma .dl,.chroma .sd,.chroma .s2,.chroma .se,.chroma .sh,.chroma .si,.chroma .sx,.chroma .sr,.chroma .s1,.chroma .ss{color:var(--syn-str)}.chroma .m,.chroma .mb,.chroma .mf,.chroma .mh,.chroma .mi,.chroma .il,.chroma .mo{color:var(--syn-num)}.chroma .o,.chroma .p{color:var(--syn-op)}.chroma .c,.chroma .ch,.chroma .cm,.chroma .c1,.chroma .cs,.chroma .cp,.chroma .cpf{color:var(--syn-com);font-style:italic}.chroma .gd{color:var(--danger)}.chroma .gi{color:var(--lime)}.chroma .gh,.chroma .gu{color:var(--syn-fn);font-weight:600}.chroma .gp{color:var(--accent-text);user-select:none}.chroma .go{color:var(--muted)}.chroma .ge{font-style:italic}.chroma .gs{font-weight:700}