@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/inter-latin-400-normal.C38fXH4l.woff2)format("woff2"),url(/_astro/inter-latin-400-normal.CyCys3Eg.woff)format("woff")}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/inter-latin-500-normal.Cerq10X2.woff2)format("woff2"),url(/_astro/inter-latin-500-normal.BL9OpVg8.woff)format("woff")}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/inter-latin-600-normal.LgqL8muc.woff2)format("woff2"),url(/_astro/inter-latin-600-normal.CiBQ2DWP.woff)format("woff")}@font-face{font-family:Newsreader;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/newsreader-latin-400-normal.BFBkh4jY.woff2)format("woff2"),url(/_astro/newsreader-latin-400-normal.gRTjlS2D.woff)format("woff")}@font-face{font-family:Newsreader;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/newsreader-latin-600-normal.30OJ_TG_.woff2)format("woff2"),url(/_astro/newsreader-latin-600-normal.DUnT2r2g.woff)format("woff")}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/jetbrains-mono-latin-400-normal.V6pRDFza.woff2)format("woff2"),url(/_astro/jetbrains-mono-latin-400-normal.6-qcROiO.woff)format("woff")}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/jetbrains-mono-latin-500-normal.BWZEU5yA.woff2)format("woff2"),url(/_astro/jetbrains-mono-latin-500-normal.CJOVTJB7.woff)format("woff")}:root{--font-ui:"Inter",ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;--font-read:"Newsreader",ui-serif,Georgia,serif;--font-mono:"JetBrains Mono",ui-monospace,Menlo,monospace;--text-xs:12px;--lh-xs:16px;--text-sm:13px;--lh-sm:20px;--text-base:14px;--lh-base:22px;--text-read:18px;--lh-read:30px;--text-lg:16px;--lh-lg:24px;--text-xl:22px;--lh-xl:28px;--text-2xl:30px;--lh-2xl:36px;--text-display:44px;--lh-display:48px;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--text-dek:19px;--lh-dek:28px;--text-2xl-s:26px;--lh-2xl-s:32px;--text-read-s:17px;--lh-read-s:28px;--row-dense:36px;--row:44px;--header:48px;--rail:200px;--rail-collapsed:56px;--rail-review:220px;--read-max:720px;--control-sm:26px;--control:32px;--control-touch:44px;--radius-sm:4px;--radius:6px;--radius-lg:10px;--cover-bg:#0e0f11;--cover-ink:#edeef0;--cover-accent:#ff6a3d;--cover-mute:#8a8f98;--ease:cubic-bezier(.2,0,0,1);--t-fast:.15s;--t-panel:.2s;--t-mode:.25s;--bg:#fff;--surface-1:#fafafa;--surface-2:#f4f4f5;--hairline:#ebebeb;--hairline-strong:#d4d4d8;--input-border:#85858e;--ink-1:#171717;--ink-2:#3f3f46;--ink-3:#6b6b73;--ink-4:#a1a1aa;--accent:#c2410c;--on-accent:#fff;--accent-soft:#c2410c1a;--success:#137a45;--warning:#9a5b06;--danger:#be123c;--info:#0b65c2;--success-soft:#137a451a;--warning-soft:#9a5b061a;--danger-soft:#be123c14;--info-soft:#0b65c21a;--shadow-pop:0 8px 24px #00000014;--overlay:#17171752;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#0e0f11;--surface-1:#16181b;--surface-2:#1d1f23;--hairline:#26282d;--hairline-strong:#34363c;--input-border:#6e727a;--ink-1:#edeef0;--ink-2:#c9ccd2;--ink-3:#8a8f98;--ink-4:#62666d;--accent:#ff6a3d;--on-accent:#160b06;--accent-soft:#ff6a3d26;--success:#59d499;--warning:#ffc533;--danger:#ff6b8a;--info:#57c1ff;--success-soft:#59d49926;--warning-soft:#ffc53326;--danger-soft:#ff6b8a26;--info-soft:#57c1ff26;--shadow-pop:0 8px 24px #0000003d;--overlay:#0009;color-scheme:dark}}:root[data-theme=dark]{--bg:#0e0f11;--surface-1:#16181b;--surface-2:#1d1f23;--hairline:#26282d;--hairline-strong:#34363c;--input-border:#6e727a;--ink-1:#edeef0;--ink-2:#c9ccd2;--ink-3:#8a8f98;--ink-4:#62666d;--accent:#ff6a3d;--on-accent:#160b06;--accent-soft:#ff6a3d26;--success:#59d499;--warning:#ffc533;--danger:#ff6b8a;--info:#57c1ff;--success-soft:#59d49926;--warning-soft:#ffc53326;--danger-soft:#ff6b8a26;--info-soft:#57c1ff26;--shadow-pop:0 8px 24px #0000003d;--overlay:#0009;color-scheme:dark}@media (prefers-reduced-motion:reduce){:root{--t-fast:0s;--t-panel:0s;--t-mode:0s}}:root{--page-max:960px}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--ink-2);font-family:var(--font-ui);font-size:var(--text-base);line-height:var(--lh-base);font-feature-settings:"cv11", "ss01";margin:0}a{color:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.wrap{max-width:var(--page-max);padding:0 var(--space-5);margin:0 auto}svg.i{fill:none;stroke:currentColor;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;flex:none}svg.brand{fill:currentColor;flex:none}.hdr{min-height:calc(var(--space-6) * 2);border-bottom:1px solid var(--hairline);justify-content:space-between;align-items:center;display:flex}.wordmark{align-items:center;gap:var(--space-2);min-height:var(--control-touch);color:var(--ink-1);font-family:var(--font-mono);font-size:var(--text-sm);transition:color var(--t-fast) var(--ease);text-decoration:none;display:inline-flex}.wordmark:hover{color:var(--accent)}.wordmark i{width:var(--space-2);height:var(--space-2);background:var(--accent);border-radius:2px}.nav{align-items:center;gap:var(--space-1);display:flex}.nav a,.icon-btn{justify-content:center;align-items:center;gap:calc(var(--space-2) * .75);min-height:var(--control-touch);padding:0 var(--space-3);color:var(--ink-2);font:500 var(--text-base)/1 var(--font-ui);border-radius:var(--radius);cursor:pointer;transition:background var(--t-fast) var(--ease), color var(--t-fast) var(--ease);text-decoration:none;display:inline-flex}.nav a:hover,.icon-btn:hover{background:var(--surface-2);color:var(--ink-1)}.nav a[aria-current=page]{color:var(--ink-1);box-shadow:inset 0 -2px 0 var(--accent);border-radius:0}.icon-btn{min-width:var(--control-touch);background:0 0;border:0;padding:0}.theme-sun,:root[data-theme=dark] .theme-moon{display:none}:root[data-theme=dark] .theme-sun{display:block}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .theme-moon{display:none}:root:not([data-theme=light]) .theme-sun{display:block}}.actions{gap:var(--space-2);margin-top:var(--space-5);flex-wrap:wrap;display:flex}.btn{align-items:center;gap:var(--space-2);min-height:var(--control-touch);padding:0 var(--space-4);border-radius:var(--radius);font:500 var(--text-base)/1 var(--font-ui);cursor:pointer;transition:background var(--t-fast) var(--ease), border-color var(--t-fast) var(--ease), color var(--t-fast) var(--ease);border:1px solid #0000;text-decoration:none;display:inline-flex}.btn-primary{background:var(--accent);color:var(--on-accent)}.btn-primary:hover{filter:brightness(1.08)}.btn-secondary{background:var(--surface-2);color:var(--ink-1);border-color:var(--hairline-strong)}.btn-secondary:hover{border-color:var(--input-border)}.chip{align-items:center;gap:var(--space-1);height:var(--space-5);padding:0 var(--space-2);background:var(--surface-2);color:var(--ink-3);font-size:var(--text-xs);line-height:var(--lh-xs);white-space:nowrap;border-radius:999px;font-weight:500;display:inline-flex}.chip-success{background:var(--success-soft);color:var(--success)}.tags{gap:var(--space-2);flex-wrap:wrap;display:flex}.tag{min-height:calc(var(--space-6) + var(--space-1));padding:0 var(--space-3);border:1px solid var(--hairline-strong);color:var(--ink-2);font-family:var(--font-mono);font-size:var(--text-xs);transition:border-color var(--t-fast) var(--ease), color var(--t-fast) var(--ease);border-radius:999px;align-items:center;text-decoration:none;display:inline-flex}.tag:hover{border-color:var(--accent);color:var(--ink-1)}.tag b{margin-left:var(--space-2);color:var(--ink-3);font-weight:400}.ftr{justify-content:space-between;gap:var(--space-2) var(--space-5);padding:var(--space-5) 0 var(--space-6);border-top:1px solid var(--hairline);color:var(--ink-3);font-size:var(--text-xs);line-height:var(--lh-xs);flex-wrap:wrap;display:flex}.nowrap{white-space:nowrap}.empty{padding:var(--space-6) 0}.empty-title{color:var(--ink-1);font-size:var(--text-xl);line-height:var(--lh-xl);letter-spacing:-.01em;margin:0;font-weight:600}.empty-text{margin:var(--space-2) 0 0;color:var(--ink-3);font-family:var(--font-read);font-size:var(--text-dek);line-height:var(--lh-dek)}@media (width<=900px){.tag{min-height:var(--control-touch)}}@media (width<=600px){.wrap{padding:0 var(--space-4)}.hdr{min-height:calc(var(--space-5) + var(--space-6))}.nav a{padding:0 var(--space-2)}.actions .btn{flex:auto;justify-content:center}}.page-title{margin:var(--space-6) 0 var(--space-4);color:var(--ink-1);font-size:var(--text-2xl);line-height:var(--lh-2xl);letter-spacing:-.02em;font-weight:600}.posts{margin:0 0 var(--space-5);padding:0;list-style:none}.post{border-bottom:1px solid var(--hairline)}.post a{gap:var(--space-1) var(--space-6);padding:var(--space-4) 0;color:inherit;grid-template-columns:1fr auto;text-decoration:none;display:grid}.pt{color:var(--ink-1);font-size:var(--text-lg);line-height:var(--lh-lg);transition:color var(--t-fast) var(--ease);grid-column:1;margin:0;font-weight:600}.post a:hover .pt{color:var(--accent)}.pd{color:var(--ink-3);grid-column:1;margin:0}.pmeta{align-items:center;gap:var(--space-2);margin-top:var(--space-1);font-family:var(--font-mono);font-size:var(--text-xs);color:var(--ink-3);flex-wrap:wrap;grid-column:1;display:flex}.pdate{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--ink-3);white-space:nowrap;grid-area:1/2;padding-top:2px}.pdate-inline{display:none}.read{max-width:var(--read-max);padding-bottom:var(--space-6);margin:0 auto}.post-title{margin:var(--space-6) 0 var(--space-2);color:var(--ink-1);font-size:var(--text-2xl);line-height:var(--lh-2xl);letter-spacing:-.02em;font-weight:600}.dek{color:var(--ink-2);font-family:var(--font-read);font-size:var(--text-dek);line-height:var(--lh-dek);margin:0}.metaline{gap:var(--space-3);margin:var(--space-3) 0 var(--space-2);color:var(--ink-3);font:500 var(--text-xs)/1 var(--font-mono);letter-spacing:.04em;text-transform:uppercase;flex-wrap:wrap;display:flex}.origin{margin:0 0 var(--space-5);color:var(--ink-3);font-size:var(--text-sm)}.origin a{color:var(--accent)}.body{margin-top:var(--space-5)}.body p,.body ul,.body ol{color:var(--ink-1);font-family:var(--font-read);font-size:var(--text-read);line-height:var(--lh-read);margin:0 0 1.1em}.body h2{color:var(--ink-1);font-size:var(--text-xl);line-height:var(--lh-xl);letter-spacing:-.01em;margin:1.6em 0 .6em;font-weight:600}.body a{color:var(--accent)}.body code{font-family:var(--font-mono);font-size:.9em}.body pre{padding:var(--space-3) var(--space-4);border:1px solid var(--hairline);border-radius:var(--radius);background:var(--surface-1);font-size:var(--text-sm);line-height:var(--lh-base);margin:0 0 1.1em;overflow-x:auto}.body blockquote{padding-left:var(--space-4);border-left:2px solid var(--hairline-strong);margin:0 0 1.1em}.ai{gap:var(--space-3);margin:var(--space-6) 0 var(--space-4);padding:var(--space-3) var(--space-4);border:1px solid var(--hairline);border-radius:var(--radius);background:var(--surface-1);color:var(--ink-2);font-size:var(--text-sm);align-items:flex-start;display:flex}.ai a{color:var(--accent)}.sources h2{margin:0 0 var(--space-3);color:var(--ink-3);font:500 var(--text-xs)/1 var(--font-mono);letter-spacing:.06em;text-transform:uppercase}.sources ol{counter-reset:s;gap:2px;margin:0;padding:0;list-style:none;display:grid}.sources li{counter-increment:s;grid-template-columns:calc(var(--space-5) + var(--space-1)) 1fr;align-items:baseline;gap:var(--space-1);padding:var(--space-3) 0;border-top:1px solid var(--hairline);display:grid}.sources li:before{content:counter(s);color:var(--ink-3);font:500 var(--text-xs)/1.6 var(--font-mono)}.sources a{min-height:var(--control-touch);color:var(--ink-1);align-items:center;font-weight:500;text-decoration:none;display:inline-flex}.sources a:hover{text-decoration:underline}.sources small{color:var(--ink-3);font:var(--text-xs)/1.6 var(--font-mono);display:block}.post-tags{margin:var(--space-5) 0}.more{padding:var(--space-5) 0;border-top:1px solid var(--hairline)}.more h2{margin:0 0 var(--space-2);color:var(--ink-1);font-size:var(--text-lg);line-height:var(--lh-lg);font-weight:600}.more a{padding:var(--space-3) 0;border-bottom:1px solid var(--hairline);color:var(--ink-1);font-weight:500;text-decoration:none;display:block}.more a:hover{color:var(--accent)}.more a span{color:var(--ink-3);font:400 var(--text-xs)/1.6 var(--font-mono);display:block}@media (width<=900px){.origin a{min-height:var(--control-touch);align-items:center;display:inline-flex}}@media (width<=600px){.post a{grid-template-columns:1fr}.pdate{display:none}.pdate-inline{display:inline}.post-title,.page-title{font-size:var(--text-2xl-s);line-height:var(--lh-2xl-s)}.body p,.body ul,.body ol,.dek{font-size:var(--text-read-s);line-height:var(--lh-read-s)}}.hero{padding:calc(var(--space-6) * 2) 0 calc(var(--space-6) + var(--space-4))}.eyebrow{margin:0 0 var(--space-4);font-family:var(--font-mono);font-size:var(--text-xs);line-height:var(--lh-xs);letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3)}.hero h1{max-width:calc(var(--page-max) * .85);color:var(--ink-1);font-size:var(--text-display);line-height:var(--lh-display);letter-spacing:-.025em;text-wrap:balance;margin:0;font-weight:600}.hero .dek{margin:var(--space-4) 0 0;max-width:var(--read-max)}.sec{padding:var(--space-6) 0;border-top:1px solid var(--hairline)}.sec-head{justify-content:space-between;align-items:baseline;gap:var(--space-4);margin-bottom:var(--space-2);display:flex}.sec-head h2{color:var(--ink-1);font-size:var(--text-xl);line-height:var(--lh-xl);letter-spacing:-.01em;margin:0;font-weight:600}.sec-head .more{align-items:center;gap:var(--space-1);min-height:var(--control-touch);color:var(--accent);border:0;padding:0;font-weight:500;text-decoration:none;display:inline-flex}.sec-head .more:hover{text-underline-offset:calc(var(--space-1) * .75);text-decoration:underline}.sec .posts{margin-bottom:0}.sec .posts+.tags{margin-top:var(--space-4)}.projects{gap:var(--space-4);margin-top:var(--space-4);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.proj{border:1px solid var(--hairline);border-radius:var(--radius-lg);background:var(--surface-1);color:inherit;transition:border-color var(--t-fast) var(--ease);flex-direction:column;text-decoration:none;display:flex;overflow:hidden}.proj:hover{border-color:var(--hairline-strong)}.proj img{aspect-ratio:16/10;object-fit:cover;object-position:top;border-bottom:1px solid var(--hairline);width:100%;height:auto;display:block}.proj-body{gap:var(--space-2);padding:var(--space-4);flex-direction:column;flex:1;display:flex}.proj-top{justify-content:space-between;align-items:center;gap:var(--space-2);display:flex}.proj h3{color:var(--ink-1);font-size:var(--text-lg);line-height:var(--lh-lg);margin:0;font-weight:600}.proj p{color:var(--ink-2);margin:0}.proj .url{align-items:center;gap:var(--space-1);padding-top:var(--space-2);font-family:var(--font-mono);font-size:var(--text-xs);color:var(--ink-3);transition:color var(--t-fast) var(--ease);margin-top:auto;display:inline-flex}.proj:hover .url{color:var(--accent)}.about{gap:var(--space-6);grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);display:grid}.about .read,.km .read{font-family:var(--font-read);font-size:var(--text-read);line-height:var(--lh-read);color:var(--ink-2);margin:0;padding:0}.links{margin:0;padding:0;list-style:none}.links li{border-bottom:1px solid var(--hairline)}.links li:first-child{border-top:1px solid var(--hairline)}.links a{align-items:center;gap:var(--space-3);min-height:var(--control-touch);color:var(--ink-1);transition:color var(--t-fast) var(--ease);font-weight:500;text-decoration:none;display:flex}.links a:hover{color:var(--accent)}.links a span{color:var(--ink-3);font-family:var(--font-mono);font-size:var(--text-xs);margin-left:auto;font-weight:400}.km{padding:calc(var(--space-6) + var(--space-4)) 0 var(--space-6)}.km h1{color:var(--ink-1);font-size:var(--text-2xl);line-height:var(--lh-2xl);letter-spacing:-.02em;margin:0;font-weight:600}.role{margin:var(--space-2) 0 var(--space-5);color:var(--ink-2);font-size:var(--text-lg);line-height:var(--lh-lg);font-weight:500}.km .read{max-width:calc(var(--read-max) - var(--space-4) * 2.5)}.two{gap:var(--space-6);grid-template-columns:minmax(0,1fr) minmax(0,1fr);display:grid}.group+.group{margin-top:var(--space-5)}.group h3{margin:0 0 var(--space-2);font-family:var(--font-mono);font-size:var(--text-xs);line-height:var(--lh-xs);letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3);font-weight:500}.skills{gap:var(--space-2);flex-wrap:wrap;display:flex}.skills .chip{height:var(--control-sm);color:var(--ink-2)}.prow{grid-template-columns:calc(var(--space-6) * 3) minmax(0, 1fr);gap:var(--space-3);padding:var(--space-3) 0;border-bottom:1px solid var(--hairline);color:inherit;align-items:center;text-decoration:none;display:grid}.prow:first-of-type{border-top:1px solid var(--hairline)}.prow img{width:calc(var(--space-6) * 3);aspect-ratio:16/10;object-fit:cover;object-position:top;border:1px solid var(--hairline);border-radius:var(--radius-sm);height:auto}.prow b{color:var(--ink-1);transition:color var(--t-fast) var(--ease);font-weight:600}.prow:hover b{color:var(--accent)}.prow p{margin:2px 0 var(--space-1);color:var(--ink-3)}.how{margin:0;padding:0;list-style:none}.how li{grid-template-columns:calc(var(--space-6) * 2 + var(--space-5)) 1fr;gap:var(--space-3);padding:var(--space-3) 0;border-bottom:1px solid var(--hairline);display:grid}.how li:first-child{border-top:1px solid var(--hairline)}.how code{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.06em;color:var(--ink-3);padding-top:2px}@media (width<=900px){.projects,.about,.two{grid-template-columns:1fr}}@media (width<=600px){.hero{padding:var(--space-6) 0}.hero h1{font-size:var(--text-2xl);line-height:var(--lh-2xl);letter-spacing:-.02em}.hero .dek,.about .read,.km .read{font-size:var(--text-read-s);line-height:var(--lh-read-s)}.km{padding:var(--space-6) 0}.km h1{font-size:var(--text-2xl-s);line-height:var(--lh-2xl-s)}}
