@font-face{font-family:Fraunces;font-style:normal;font-display:swap;font-weight:100 900;src:url(/fonts/fraunces-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Fraunces;font-style:normal;font-display:swap;font-weight:100 900;src:url(/fonts/fraunces-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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:Inter;font-style:normal;font-display:swap;font-weight:100 900;src:url(/fonts/inter-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:100 900;src:url(/fonts/inter-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,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.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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}:root{color-scheme:light;--paper: #fbfaf7;--surface: #ffffff;--ink: #14213d;--ink-soft: #4a5570;--muted: #8a91a3;--line: #e3e2dc;--navy: #14213d;--navy-deep: #0e1830;--blue: #2b5bd7;--blue-ink: #1e44ac;--marker: #f5c518;--marker-soft: #fbf3d2;--panel-blue: #edf1fa;--panel-yellow: #fbf3d2;--on-navy: #f4f5f8;--on-navy-muted: #9aa5c0;--shadow-card: 0 10px 28px rgb(20 33 61 / 10%);--font-display: "Fraunces", "Iowan Old Style", Georgia, "Times New Roman", serif;--font-body: Inter, "Helvetica Neue", Helvetica, Arial, system-ui, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace;--wrap: 72rem;--gutter: 1.5rem}@media(prefers-color-scheme:dark){:root{color-scheme:dark;--paper: #0d1322;--surface: #131b30;--ink: #eef0f5;--ink-soft: #b9c1d4;--muted: #7c86a0;--line: #26304a;--navy: #182342;--navy-deep: #0a0f1d;--blue: #8fb0ff;--blue-ink: #a9c2ff;--marker: #f5c518;--marker-soft: #3a3110;--panel-blue: #182342;--panel-yellow: #2e2812;--on-navy: #f4f5f8;--on-navy-muted: #8c97b5;--shadow-card: 0 10px 28px rgb(0 0 0 / 45%)}}:root[data-theme=dark]{color-scheme:dark;--paper: #0d1322;--surface: #131b30;--ink: #eef0f5;--ink-soft: #b9c1d4;--muted: #7c86a0;--line: #26304a;--navy: #182342;--navy-deep: #0a0f1d;--blue: #8fb0ff;--blue-ink: #a9c2ff;--marker: #f5c518;--marker-soft: #3a3110;--panel-blue: #182342;--panel-yellow: #2e2812;--on-navy: #f4f5f8;--on-navy-muted: #8c97b5;--shadow-card: 0 10px 28px rgb(0 0 0 / 45%)}:root[data-theme=light]{color-scheme:light;--paper: #fbfaf7;--surface: #ffffff;--ink: #14213d;--ink-soft: #4a5570;--muted: #8a91a3;--line: #e3e2dc;--navy: #14213d;--navy-deep: #0e1830;--blue: #2b5bd7;--blue-ink: #1e44ac;--marker: #f5c518;--marker-soft: #fbf3d2;--panel-blue: #edf1fa;--panel-yellow: #fbf3d2;--on-navy: #f4f5f8;--on-navy-muted: #9aa5c0;--shadow-card: 0 10px 28px rgb(20 33 61 / 10%)}*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--font-body);font-size:1rem;line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{color:var(--blue-ink);text-decoration:none}a:hover{text-decoration:underline;text-underline-offset:3px}a:focus-visible,button:focus-visible,summary:focus-visible{outline:2px solid var(--blue);outline-offset:3px;border-radius:2px}img,svg{max-width:100%}::selection{background:var(--marker);color:#14213d}.wrap{max-width:var(--wrap);margin:0 auto;padding:0 var(--gutter)}.kicker{font-size:.9rem;font-weight:600;color:var(--ink-soft);margin:0 0 1rem}.hl{background:linear-gradient(transparent 76%,var(--marker) 76%,var(--marker) 97%,transparent 97%);padding:0 .06em}.code{font-family:var(--font-mono);font-size:.66rem;font-weight:600;letter-spacing:.22em;color:var(--ink-soft);margin:0;text-transform:uppercase}.btn{display:inline-block;font-weight:600;font-size:.95rem;line-height:1.4;padding:.7rem 1.4rem;border-radius:999px;border:1.5px solid var(--ink);cursor:pointer;font-family:inherit}.btn.primary{background:var(--ink);color:var(--paper)}.btn.primary:hover{background:var(--blue-ink);border-color:var(--blue-ink);color:var(--paper);text-decoration:none}.btn.ghost{background:transparent;color:var(--ink)}.btn.ghost:hover{border-color:var(--blue-ink);color:var(--blue-ink);text-decoration:none}.sechead{display:flex;align-items:baseline;gap:1.2rem;flex-wrap:wrap;margin:4.5rem 0 2rem}.sechead h2{font-family:var(--font-display);font-weight:600;font-size:1.9rem;margin:0;letter-spacing:-.01em}.sechead .count{font-size:.92rem;color:var(--ink-soft)}#projects,#background,#contact{scroll-margin-top:5rem}@media(max-width:620px){#projects,#background,#contact{scroll-margin-top:8rem}}.skip-link{position:absolute;left:-9999px;top:0;z-index:100;padding:.7rem 1.2rem;background:var(--ink);color:var(--paper);font-weight:600;border-radius:0 0 8px}.skip-link:focus{left:0}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}@media print{.nav,.ticker,.theme-toggle,.lang{display:none!important}body{background:#fff;color:#000}a[href^=http]:after{content:" (" attr(href) ")";font-size:.8em;word-break:break-all}}.nav[data-astro-cid-3ef6ksr2]{border-bottom:1px solid var(--line);background:var(--paper);position:sticky;top:0;z-index:20}.nav-in[data-astro-cid-3ef6ksr2]{display:flex;align-items:center;gap:1.25rem;padding-top:1rem;padding-bottom:1rem;font-size:.9rem}.brand[data-astro-cid-3ef6ksr2]{font-family:var(--font-display);font-size:1.15rem;font-weight:600;letter-spacing:-.01em;color:var(--ink)}.brand[data-astro-cid-3ef6ksr2]:hover{text-decoration:none;color:var(--blue-ink)}.nav-links[data-astro-cid-3ef6ksr2]{display:flex;gap:1.6rem;margin-left:auto}.nav-links[data-astro-cid-3ef6ksr2] a[data-astro-cid-3ef6ksr2]{color:var(--ink-soft);font-weight:500}.nav-links[data-astro-cid-3ef6ksr2] a[data-astro-cid-3ef6ksr2]:hover{color:var(--blue-ink)}.nav-tools[data-astro-cid-3ef6ksr2]{display:flex;align-items:center;gap:.6rem}.lang[data-astro-cid-3ef6ksr2]{display:inline-flex;border:1px solid var(--line);border-radius:999px;overflow:hidden;font-family:var(--font-mono);font-size:.7rem;font-weight:600}.lang[data-astro-cid-3ef6ksr2] b[data-astro-cid-3ef6ksr2]{background:var(--ink);color:var(--paper);padding:.3rem .7rem}.lang[data-astro-cid-3ef6ksr2] a[data-astro-cid-3ef6ksr2]{color:var(--ink-soft);padding:.3rem .7rem}.lang[data-astro-cid-3ef6ksr2] a[data-astro-cid-3ef6ksr2]:hover{color:var(--ink);text-decoration:none;background:var(--marker-soft)}.theme-toggle[data-astro-cid-3ef6ksr2]{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;padding:0;border:1px solid var(--line);border-radius:999px;background:transparent;color:var(--ink-soft);cursor:pointer}.theme-toggle[data-astro-cid-3ef6ksr2]:hover{color:var(--blue-ink);border-color:var(--blue-ink)}.theme-toggle[data-astro-cid-3ef6ksr2] .moon[data-astro-cid-3ef6ksr2],.theme-toggle[data-astro-cid-3ef6ksr2][aria-pressed=false] .sun[data-astro-cid-3ef6ksr2],.theme-toggle[data-astro-cid-3ef6ksr2][aria-pressed=false] .rays[data-astro-cid-3ef6ksr2]{display:none}.theme-toggle[data-astro-cid-3ef6ksr2][aria-pressed=false] .moon[data-astro-cid-3ef6ksr2]{display:block}@media(max-width:620px){.nav-links[data-astro-cid-3ef6ksr2]{order:3;width:100%;margin-left:0;justify-content:space-between;gap:1.1rem;font-size:.85rem}.nav-in[data-astro-cid-3ef6ksr2]{gap:.9rem;flex-wrap:wrap}.brand[data-astro-cid-3ef6ksr2]{font-size:1.05rem}.nav-tools[data-astro-cid-3ef6ksr2]{margin-left:auto}}.foot[data-astro-cid-sz7xmlte]{padding:4.5rem 0 5rem;border-top:1px solid var(--line)}.foot[data-astro-cid-sz7xmlte] h2[data-astro-cid-sz7xmlte]{font-family:var(--font-display);font-weight:600;letter-spacing:-.01em;font-size:clamp(1.4rem,3.6vw,2.4rem);margin:0 0 1.6rem;overflow-wrap:anywhere}.foot[data-astro-cid-sz7xmlte] h2[data-astro-cid-sz7xmlte] a[data-astro-cid-sz7xmlte]{color:var(--ink)}.foot[data-astro-cid-sz7xmlte] h2[data-astro-cid-sz7xmlte] a[data-astro-cid-sz7xmlte]:hover{color:var(--blue-ink);text-decoration:none}.foot-links[data-astro-cid-sz7xmlte]{display:flex;flex-wrap:wrap;gap:.9rem}.foot[data-astro-cid-sz7xmlte] small[data-astro-cid-sz7xmlte]{display:block;margin-top:2.5rem;color:var(--ink-soft);font-size:.85rem}
