@font-face{font-family:Atkinson Hyperlegible Next;src:url(/assets/atkinson-next-BcXVPD7q.woff2)format("woff2");font-weight:200 800;font-style:normal;font-display:swap}@font-face{font-family:Atkinson Hyperlegible Mono;src:url(/assets/atkinson-mono-CoA7y8X5.woff2)format("woff2");font-weight:200 800;font-style:normal;font-display:swap}@font-face{font-family:IBM Plex Sans Condensed;src:url(/assets/plex-condensed-500-BqaLkUoX.woff2)format("woff2");font-weight:500;font-style:normal;font-display:swap}:root{--font-sans:"Atkinson Hyperlegible Next", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono:"Atkinson Hyperlegible Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace;--font-tag:"IBM Plex Sans Condensed", "Arial Narrow", ui-sans-serif, sans-serif;--bg:#111214;--surface:#17181b;--surface-hover:#1c1e21;--text:#e9e7e4;--text-muted:#9c9a96;--text-faint:#6b6965;--border:#26272b;--border-strong:#3a3b40;--accent:#f0954a;--accent-hover:#f6b17d;--accent-contrast:#1c1006;--radius:8px;--content-width:1040px;--gutter:16px;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}:root[data-theme=light]{--bg:#f7f6f4;--surface:#fff;--surface-hover:#fbfaf9;--text:#1b1a18;--text-muted:#625f5a;--text-faint:#8e8a84;--border:#e5e2dd;--border-strong:#cfcac3;--accent:#b4520c;--accent-hover:#8f400a;--accent-contrast:#fff;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (width>=640px){:root{--gutter:32px}}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-padding-top:80px}body{background:var(--bg);color:var(--text);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;flex-direction:column;min-height:100vh;margin:0;font-size:1rem;line-height:1.6;display:flex}main{flex:1}h1,h2,h3{text-wrap:balance;margin:0;line-height:1.2}p{margin:0}a{color:var(--accent);text-underline-offset:.2em;text-decoration-thickness:1px}a:hover{color:var(--accent-hover)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}img{max-width:100%;height:auto;display:block}[hidden]{display:none!important}.icon{flex-shrink:0;width:1em;height:1em}.container{width:100%;max-width:calc(var(--content-width) + 2 * var(--gutter));padding-inline:var(--gutter);margin-inline:auto}.container--narrow{max-width:calc(44rem + 2 * var(--gutter))}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.skip-link{left:var(--gutter);z-index:100;background:var(--accent);color:var(--accent-contrast);border-radius:var(--radius);padding:8px 12px;position:absolute;top:-100px}.skip-link:focus{top:8px}.site-header{z-index:10;background:color-mix(in srgb, var(--bg) 88%, transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--border);position:sticky;top:0}.site-header__inner{justify-content:space-between;align-items:center;gap:16px;height:56px;display:flex}.brand{color:var(--text);white-space:nowrap;align-items:center;gap:10px;font-weight:600;text-decoration:none;display:flex}.brand:hover{color:var(--text)}.brand__mark{width:24px;height:24px;fill:var(--accent)}.site-nav{align-items:center;gap:2px;display:flex}.site-nav a{color:var(--text-muted);border-radius:6px;padding:6px 10px;font-size:.9375rem;text-decoration:none}.site-nav a:hover{color:var(--text)}.site-nav a[aria-current=page]{color:var(--text);background:var(--surface)}@media (width<=479px){.brand__name{display:none}}.theme-toggle{border:1px solid var(--border);width:34px;height:34px;color:var(--text-muted);cursor:pointer;background:0 0;border-radius:6px;justify-content:center;align-items:center;margin-left:6px;font-size:.9375rem;display:inline-flex}.theme-toggle:hover{color:var(--text);border-color:var(--border-strong)}.theme-toggle__light,:root[data-theme=light] .theme-toggle__dark{display:none}:root[data-theme=light] .theme-toggle__light{display:inline-flex}.site-footer{border-top:1px solid var(--border);color:var(--text-faint);margin-top:96px;font-size:.8125rem}.site-footer__inner{flex-wrap:wrap;justify-content:space-between;gap:12px 24px;padding-block:24px;display:flex}.site-footer__links{flex-wrap:wrap;gap:20px;margin:0;padding:0;list-style:none;display:flex}.site-footer a{color:var(--text-muted);text-decoration:none}.site-footer a:hover{color:var(--text)}.button{border:1px solid var(--border-strong);color:var(--text);background:0 0;border-radius:6px;align-items:center;gap:8px;max-width:100%;padding:8px 14px;font-size:.9375rem;font-weight:500;line-height:1.4;text-decoration:none;transition:background-color .12s,border-color .12s,color .12s;display:inline-flex}.button span{text-overflow:ellipsis;overflow:hidden}.button:hover{color:var(--text);border-color:var(--text-muted);background:var(--surface)}.button--primary{background:var(--accent);border-color:var(--accent);color:var(--accent-contrast)}.button--primary:hover{background:var(--accent-hover);border-color:var(--accent-hover);color:var(--accent-contrast)}.button-row{flex-wrap:wrap;gap:10px;display:flex}.text-link{align-items:center;gap:6px;font-weight:500;text-decoration:none;display:inline-flex}.text-link .icon{transition:transform .15s}.text-link--back:hover .icon{transform:translate(-3px)}.tags{font-family:var(--font-tag);letter-spacing:.01em;color:var(--text-faint);flex-wrap:wrap;gap:2px 0;margin:0;padding:0;font-size:.8125rem;font-weight:500;list-style:none;display:flex}.tags>li{white-space:nowrap}.tags>li:not(:last-child):after{content:"·";margin-inline:8px}.tag{color:inherit;white-space:nowrap;text-decoration:none}a.tag{color:var(--text-muted)}a.tag:hover{color:var(--accent)}.badge{border:1px solid var(--border-strong);font-family:var(--font-mono);color:var(--text-muted);white-space:nowrap;letter-spacing:0;border-radius:999px;align-items:center;padding:1px 8px;font-size:.6875rem;font-weight:500;line-height:1.6;display:inline-flex}.home{padding-top:clamp(56px,10vw,120px)}.home__intro{max-width:40rem}.home__name{letter-spacing:-.03em;font-size:clamp(2rem,5vw,2.75rem);font-weight:600}.home__title{font-family:var(--font-mono);color:var(--text-muted);margin-top:6px;font-size:.875rem}.home__text{color:var(--text-muted);text-wrap:pretty;margin-top:24px;font-size:1.125rem;line-height:1.65}.paths{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-top:clamp(40px,7vw,72px);display:grid}.paths--single{grid-template-columns:minmax(0,1fr);max-width:32rem}@media (width<=679px){.paths{grid-template-columns:minmax(0,1fr)}}.path{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text);flex-direction:column;gap:8px;padding:24px;text-decoration:none;transition:border-color .15s,background-color .15s;display:flex}.path:hover{color:var(--text);border-color:var(--border-strong);background:var(--surface-hover)}.path__url{font-family:var(--font-mono);color:var(--text-faint);font-size:.75rem}.path__title{letter-spacing:-.015em;font-size:1.375rem;font-weight:600}.path__text{color:var(--text-muted);text-wrap:pretty}.path__action{color:var(--accent);align-items:center;gap:6px;margin-top:auto;padding-top:12px;font-size:.9375rem;font-weight:500;display:inline-flex}.path__action .icon{transition:transform .15s}.path:hover .path__action .icon{transform:translate(3px)}.home__links{flex-wrap:wrap;gap:8px 24px;margin:32px 0 0;padding:0;font-size:.875rem;list-style:none;display:flex}.home__links a{color:var(--text-muted);align-items:center;gap:8px;text-decoration:none;display:inline-flex}.home__links a:hover{color:var(--text)}.page-header{padding-top:clamp(48px,8vw,80px);padding-bottom:32px}.page-header__title{letter-spacing:-.025em;font-size:clamp(1.75rem,4vw,2.25rem);font-weight:600}.page-header__lead{max-width:40rem;color:var(--text-muted);text-wrap:pretty;margin-top:12px;font-size:1.0625rem}.page-header .button-row{margin-top:28px}.section{padding-top:56px}.section--tight{padding-top:24px}.media img{width:100%;height:auto;display:block}.media--code pre{background:var(--surface);font-family:var(--font-mono);margin:0;padding:16px 18px;font-size:.8125rem;line-height:1.6;overflow-x:auto}.media--placeholder{aspect-ratio:16/9;background:repeating-linear-gradient(-45deg, transparent 0 10px, color-mix(in srgb, var(--border) 45%, transparent) 10px 11px);color:var(--text-faint);text-align:center;text-wrap:balance;flex-direction:column;justify-content:center;gap:6px;padding:20px;display:flex;border-style:dashed!important}.media__label{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em;font-size:.6875rem}.media__hint{color:var(--text-muted);font-size:.875rem}.card__media{border-bottom:1px solid var(--border);border-radius:var(--radius) var(--radius) 0 0;margin:-20px -20px 8px;overflow:hidden}.card__media.media--placeholder{border:1px solid var(--border-strong);aspect-ratio:16/10;border-radius:4px;margin:-12px -12px 8px}.card__media.media--code{max-height:168px;position:relative}.card__media.media--code pre{background:var(--bg);font-size:.75rem;overflow:hidden}.card__media.media--code:after{content:"";background:linear-gradient(transparent, var(--bg));height:40px;position:absolute;inset:auto 0 0}.card-grid{--card-gap:12px;gap:var(--card-gap);grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));align-items:start;display:grid}.card-grid.is-packed{grid-auto-rows:1px;row-gap:0}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;gap:8px;padding:20px;transition:border-color .15s,background-color .15s;display:flex;position:relative}.card:hover{border-color:var(--border-strong);background:var(--surface-hover)}.card__title{letter-spacing:-.01em;font-size:1.125rem;font-weight:600}.card__title .badge{vertical-align:middle;margin-left:10px}.card__title a{color:var(--text);text-decoration:none}.card__title a:after{content:"";border-radius:var(--radius);position:absolute;inset:0}.card__tagline{color:var(--text-muted);text-wrap:pretty;font-size:.9375rem}.card__tagline a{z-index:1;position:relative}.card__footer{justify-content:space-between;align-items:flex-end;gap:12px;padding-top:4px;display:flex}.card__arrow{color:var(--text-faint);transition:transform .15s,color .15s;display:inline-flex}.card:hover .card__arrow{color:var(--accent);transform:translate(3px)}.filters{flex-direction:column;gap:12px;display:flex}.search{align-items:center;max-width:420px;display:flex;position:relative}.search .icon{color:var(--text-faint);pointer-events:none;position:absolute;left:12px}.search input{border:1px solid var(--border-strong);background:var(--surface);width:100%;color:var(--text);font:inherit;border-radius:6px;padding:9px 12px 9px 36px;font-size:.9375rem}.search input::placeholder{color:var(--text-faint)}.search input:focus{outline:2px solid var(--accent);outline-offset:-1px;border-color:#0000}.chip-row{flex-wrap:wrap;gap:6px;display:flex}.chip{border:1px solid var(--border);color:var(--text-muted);font-family:var(--font-tag);letter-spacing:.01em;cursor:pointer;background:0 0;border-radius:999px;align-items:center;gap:6px;padding:3px 10px;font-size:.8125rem;font-weight:500;display:inline-flex}.chip:hover{border-color:var(--border-strong);color:var(--text)}.chip[aria-pressed=true]{border-color:var(--accent);color:var(--accent)}.empty-state{color:var(--text-muted);text-align:center;padding-block:48px}.downloads{flex-direction:column;display:flex}.download:first-child{border-top:1px solid var(--border)}.download{border-bottom:1px solid var(--border);grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"about get""links get";align-items:start;gap:14px 48px;padding-block:28px;display:grid}.download__about{grid-area:about}.download__get{grid-area:get}.download__links{grid-area:links}@media (width<=719px){.download{grid-template-columns:minmax(0,1fr);grid-template-areas:"about""get""links"}}.download__name{letter-spacing:-.015em;font-size:1.25rem;font-weight:600}.download__summary{max-width:36rem;color:var(--text-muted);margin-top:6px}.download__links{flex-wrap:wrap;gap:6px 20px;margin:0;padding:0;font-size:.875rem;list-style:none;display:flex}.download__links a{text-decoration:none}.download__links a:hover{text-decoration:underline}.download__get{flex-direction:column;align-items:flex-end;gap:10px;display:flex}@media (width<=719px){.download__get{align-items:flex-start}}.download__version{font-family:var(--font-mono);color:var(--text-faint);font-size:.75rem}.about{flex-direction:column;gap:48px;display:flex}.about__heading{font-family:var(--font-mono);color:var(--text-muted);margin-bottom:14px;font-size:.8125rem;font-weight:500}.skills{border-top:1px solid var(--border);margin:0}.skills__group{border-bottom:1px solid var(--border);grid-template-columns:10rem minmax(0,1fr);gap:4px 24px;padding-block:12px;display:grid}.skills dt{color:var(--text-muted)}.skills dd{margin:0}@media (width<=559px){.skills__group{grid-template-columns:minmax(0,1fr)}}.timeline{margin:0;padding:0;list-style:none}.timeline__item{border-top:1px solid var(--border);grid-template-columns:8rem minmax(0,1fr);gap:8px 24px;padding-block:20px;display:grid}.timeline__dates{font-family:var(--font-mono);color:var(--text-faint);padding-top:2px;font-size:.8125rem}.timeline__body{flex-direction:column;gap:6px;display:flex}.timeline__title{font-size:1.0625rem;font-weight:600}.timeline__company,.timeline__location{color:var(--text-muted);font-weight:400}.timeline__location{font-size:.875rem}@media (width<=559px){.timeline__item{grid-template-columns:minmax(0,1fr)}}.bullets{margin:0;padding-left:1.2em}.about__links{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.about__links a{color:var(--text);align-items:center;gap:10px;text-decoration:none;display:inline-flex}.about__links a:hover{color:var(--accent)}.project__header{padding-top:40px}.project__title{letter-spacing:-.03em;flex-wrap:wrap;align-items:center;gap:12px;margin-top:28px;font-size:clamp(1.875rem,5vw,2.5rem);font-weight:600;display:flex}.project__tagline{color:var(--text-muted);text-wrap:pretty;margin-top:12px;font-size:1.125rem}.project__header .tags{margin-top:16px}.project__header .button-row{margin-top:24px}.project__header:after{content:"";background:var(--border);height:1px;margin-block:32px;display:block}.project__image{border-radius:var(--radius);border:1px solid var(--border);margin:0 0 32px;overflow:hidden}.project__image.media--placeholder{border-color:var(--border-strong)}.pager{justify-content:space-between;gap:16px;margin-top:72px;display:flex}.pager__link{border:1px solid var(--border);border-radius:var(--radius);color:var(--text);align-items:center;gap:12px;min-width:0;padding:12px 16px;font-weight:500;text-decoration:none;display:flex}.pager__link:hover{border-color:var(--border-strong);background:var(--surface);color:var(--text)}.pager__link small{font-family:var(--font-mono);color:var(--text-faint);font-size:.6875rem;font-weight:400;display:block}.pager__link--next{text-align:right;margin-left:auto}.prose{font-size:1.0625rem;line-height:1.7}.prose>*+*{margin-top:1em}.prose h2{letter-spacing:-.01em;margin-top:2em;font-size:1.25rem;font-weight:600}.prose h3{margin-top:1.6em;font-size:1.0625rem;font-weight:600}.prose ul,.prose ol{padding-left:1.3em}.prose li+li{margin-top:.4em}.prose li::marker{color:var(--text-faint)}.prose code{font-family:var(--font-mono);background:var(--surface);border:1px solid var(--border);border-radius:4px;padding:.1em .35em;font-size:.85em}.prose pre{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);padding:16px 18px;font-size:.8125rem;line-height:1.6;overflow-x:auto}.prose pre code{font-size:inherit;background:0 0;border:0;padding:0}.prose blockquote{border-left:2px solid var(--border-strong);color:var(--text-muted);margin-inline:0;padding-left:16px}.prose img{border-radius:var(--radius);border:1px solid var(--border)}.shiki,.shiki span{color:var(--shiki-dark)}.shiki{tab-size:4}:root[data-theme=light] .shiki,:root[data-theme=light] .shiki span{color:var(--shiki-light)}.shiki:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important}}@media print{:root{--bg:#fff;--surface:#fff;--text:#000;--text-muted:#333;--text-faint:#555;--border:#ccc;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}.site-header,.skip-link,.filters,.pager,.card__arrow,.text-link--back{display:none!important}.site-footer{margin-top:32px}.shiki,.shiki span{color:var(--shiki-light)!important}.media--placeholder{display:none!important}.card,.timeline__item,.download{break-inside:avoid}.prose a[href^=http]:after{content:" (" attr(href) ")";color:var(--text-muted);font-size:.85em}}
