:root{--bg: oklch(.18 .004 65);--bg-2: oklch(.215 .005 65);--bg-3: oklch(.25 .006 65);--rule: oklch(.32 .006 65);--rule-soft: oklch(.26 .006 65);--fg: oklch(.94 .005 80);--fg-2: oklch(.78 .006 75);--muted: oklch(.58 .008 75);--faint: oklch(.44 .008 75);--accent: oklch(.78 .11 75);--accent-2: oklch(.72 .11 75);--link: oklch(.86 .09 80);--code-bg: oklch(.235 .006 65);--selection: oklch(.5 .1 75 / .45);--serif: "IBM Plex Serif", "Source Serif 4", Georgia, serif;--sans: "IBM Plex Sans", system-ui, -apple-system, sans-serif;--mono: "IBM Plex Mono", ui-monospace, Menlo, monospace;--read: 42rem;--gutter: clamp(1.25rem, 4vw, 2.5rem)}html[data-theme=light]{--bg: oklch(.985 .003 85);--bg-2: oklch(.965 .004 85);--bg-3: oklch(.945 .006 85);--rule: oklch(.86 .006 85);--rule-soft: oklch(.92 .005 85);--fg: oklch(.22 .006 75);--fg-2: oklch(.36 .008 75);--muted: oklch(.5 .01 75);--faint: oklch(.62 .008 75);--accent: oklch(.55 .13 60);--accent-2: oklch(.5 .14 55);--link: oklch(.42 .14 55);--code-bg: oklch(.94 .006 85);--selection: oklch(.7 .12 70 / .4)}*,*:before,*:after{box-sizing:border-box}*{margin:0}html{-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--fg);font-family:var(--serif);font-size:17px;line-height:1.65;font-feature-settings:"kern","liga","calt";-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;transition:background-color .25s ease,color .25s ease}::selection{background:var(--selection)}a{color:var(--link);text-decoration:none;border-bottom:1px solid color-mix(in oklab,var(--link) 35%,transparent);transition:border-color .15s,color .15s}a:hover{border-bottom-color:var(--link)}.wrap{width:100%;max-width:64rem;margin:0 auto;padding:0 var(--gutter)}.read{max-width:var(--read)}.col{width:100%;max-width:var(--read);margin-left:0}.nav{position:sticky;top:0;z-index:50;background:color-mix(in oklab,var(--bg) 88%,transparent);backdrop-filter:saturate(140%) blur(8px);-webkit-backdrop-filter:saturate(140%) blur(8px);border-bottom:1px solid var(--rule-soft)}.nav-inner{display:flex;align-items:center;justify-content:space-between;height:56px;font-family:var(--sans);font-size:14px}.nav .brand{font-family:var(--sans);font-weight:600;letter-spacing:-.005em;color:var(--fg);border:0}.nav .brand:hover{color:var(--fg)}.nav .brand .dot{color:var(--accent)}.nav ul{list-style:none;padding:0;margin:0;display:flex;gap:1.5rem;align-items:center}.nav ul a{position:relative;display:inline-flex;align-items:center;height:56px;color:var(--fg-2);border:0;padding:0}.nav ul a:hover,.nav ul a[aria-current=page]{color:var(--fg)}.nav ul a[aria-current=page]:after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;background:var(--accent);border-radius:1px}.theme-toggle{appearance:none;background:transparent;color:var(--fg-2);border:1px solid var(--rule);border-radius:999px;font:500 11px/1 var(--mono);letter-spacing:.08em;text-transform:uppercase;padding:6px 10px;cursor:pointer;display:inline-flex;align-items:center;gap:6px;transition:color .15s,border-color .15s,background-color .15s}.theme-toggle:hover{color:var(--fg);border-color:color-mix(in oklab,var(--fg) 30%,var(--rule))}.theme-toggle .glyph{width:8px;height:8px;border-radius:50%;background:var(--accent);display:inline-block}html[data-theme=light] .theme-toggle .glyph{background:var(--fg)}h1,h2,h3,h4{font-family:var(--sans);color:var(--fg);line-height:1.2;letter-spacing:-.015em;margin:0 0 .5rem;text-wrap:balance}h1{font-size:clamp(2rem,3.8vw,2.75rem);font-weight:600;letter-spacing:-.025em}h2{font-size:1.5rem;font-weight:600;margin-top:3rem}h3{font-size:1.125rem;font-weight:600;margin-top:2rem}p{margin:0 0 1.1em;text-wrap:pretty}small,.small{font-size:13.5px}.meta{font-family:var(--mono);font-size:12px;letter-spacing:.04em;color:var(--muted);text-transform:uppercase}.meta .sep{color:var(--faint);margin:0 .55em}.meta a{color:var(--fg-2);border-bottom-color:transparent}.meta a:hover{color:var(--accent)}.tag{display:inline-block;font-family:var(--mono);font-size:11px;letter-spacing:.06em;color:var(--fg-2);padding:2px 7px;border:1px solid var(--rule);border-radius:3px;text-transform:uppercase;line-height:1.5}.tag--accent{color:var(--accent);border-color:color-mix(in oklab,var(--accent) 45%,var(--rule))}hr.rule{border:0;border-top:1px solid var(--rule-soft);margin:2.5rem 0}.home-hero{padding-top:6rem;padding-bottom:2rem}.home-hero .name{font-family:var(--sans);font-size:14px;font-weight:500;color:var(--muted);letter-spacing:.06em;text-transform:uppercase;margin:0 0 1.25rem}.home-hero .lede{font-family:var(--serif);font-size:clamp(1.5rem,3vw,2rem);line-height:1.3;color:var(--fg);font-weight:400;max-width:38rem;margin:0 0 1.5rem;letter-spacing:-.01em}.home-hero .lede em{color:var(--accent);font-style:italic;font-family:var(--serif)}.home-hero .blurb{color:var(--fg-2);max-width:var(--read);font-size:17px}.sec{margin-top:5rem}.sec__label{font:500 11px/1 var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--muted);padding-bottom:.75rem;border-bottom:1px solid var(--rule);margin-bottom:1.5rem;display:flex;justify-content:space-between;align-items:baseline}.sec__label .more{color:var(--fg-2);border:0;font-weight:500}.sec__label .more:hover{color:var(--accent)}.posts{list-style:none;padding:0;margin:0}.posts li{display:grid;grid-template-columns:8.5rem 1fr;gap:1.25rem;padding:1.1rem 0;border-bottom:1px solid var(--rule-soft)}.posts li:last-child{border-bottom:0}.posts .date{font:400 12px/1.6 var(--mono);color:var(--muted);text-transform:uppercase;letter-spacing:.04em;padding-top:3px}.posts .title{font-family:var(--sans);font-weight:500;font-size:1.0625rem;color:var(--fg);border:0;letter-spacing:-.005em}.posts .title:hover{color:var(--accent)}.posts .desc{color:var(--fg-2);font-size:15.5px;margin-top:.2rem}.posts .row-meta{margin-top:.35rem;display:flex;gap:.5rem;flex-wrap:wrap}.proj-grid{display:grid;gap:1.25rem;grid-template-columns:repeat(auto-fit,minmax(16rem,1fr))}.proj-card{border:1px solid var(--rule);border-radius:4px;padding:1.25rem 1.25rem 1.1rem;background:var(--bg-2);display:flex;flex-direction:column;transition:border-color .15s,background-color .15s}.proj-card:hover{border-color:color-mix(in oklab,var(--accent) 50%,var(--rule))}.proj-card__head{display:flex;align-items:baseline;justify-content:space-between;gap:.5rem;margin-bottom:.5rem}.proj-card__name{font-family:var(--sans);font-weight:600;font-size:15px;color:var(--fg);letter-spacing:-.005em}.proj-card__desc{color:var(--fg-2);font-size:15px;margin:0;flex:1}.proj-card__foot{margin-top:1rem;font:400 11px/1.5 var(--mono);color:var(--muted);letter-spacing:.04em;text-transform:uppercase}.now-link{display:flex;align-items:baseline;gap:1rem;border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);padding:1.5rem 0;margin-top:5rem}.now-link__label{font:500 11px/1 var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--muted);flex:none;padding-top:2px}.now-link__body{color:var(--fg-2);flex:1}.now-link__body a{font-family:var(--sans);font-weight:500;color:var(--fg)}.now-link__body a:hover{color:var(--accent)}.post header.post-head{padding-top:4rem}.post .post-title{font-size:clamp(1.8rem,3.2vw,2.5rem);margin-top:.5rem;max-width:36rem}.post .lede{font-family:var(--serif);font-size:1.25rem;line-height:1.55;color:var(--fg-2);margin:1.5rem 0 2.5rem;max-width:var(--read);font-weight:400}.post .body{max-width:var(--read)}.post .body p,.post .body ul,.post .body ol{font-size:17px;color:var(--fg)}.post .body ul,.post .body ol{padding-left:1.25rem;margin:0 0 1.25rem}.post .body li{margin-bottom:.35rem}.post .body li::marker{color:var(--muted)}.post .body blockquote{margin:1.75rem 0;padding:.35rem 0 .35rem 1.25rem;border-left:2px solid var(--accent);color:var(--fg-2);font-style:italic;font-family:var(--serif)}.post .body blockquote cite{display:block;margin-top:.5rem;font-style:normal;font-family:var(--mono);font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}code,.post .body :not(pre)>code{font-family:var(--mono);font-size:.9em;background:var(--code-bg);padding:1px 5px;border-radius:3px;border:1px solid var(--rule-soft)}pre{font-family:var(--mono);font-size:13.5px;line-height:1.6;background:var(--bg-2)!important;border:1px solid var(--rule-soft);border-radius:4px;padding:1rem 1.1rem;overflow-x:auto;margin:1.5rem 0 1.75rem;color:var(--fg-2)}pre code{background:transparent;border:0;padding:0;font-size:inherit;color:inherit}.figure{margin:2rem 0 2.25rem;border:1px solid var(--rule-soft);border-radius:4px;background:var(--bg-2);padding:1.25rem}.figure svg{display:block;width:100%;height:auto}.figure figcaption{font:400 12.5px/1.5 var(--mono);color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin-top:.75rem;padding-top:.75rem;border-top:1px solid var(--rule-soft)}.post .footnote{margin-top:4rem;padding-top:1.5rem;border-top:1px solid var(--rule-soft);font-size:14.5px;color:var(--muted);max-width:var(--read)}.now-page{padding-top:4rem}.now-page .updated{font:400 12px/1 var(--mono);color:var(--muted);letter-spacing:.06em;text-transform:uppercase;margin-bottom:1rem}.now-page .lede{font-size:1.125rem;color:var(--fg-2);margin:0 0 3rem;max-width:var(--read)}.now-section{display:grid;grid-template-columns:10rem 1fr;gap:1.5rem;padding:1.75rem 0;border-top:1px solid var(--rule-soft);max-width:56rem}.now-section:first-of-type{border-top:1px solid var(--rule)}.now-section:last-of-type{border-bottom:1px solid var(--rule)}.now-section h3{font:500 12px/1.5 var(--mono);color:var(--muted);text-transform:uppercase;letter-spacing:.1em;margin:0;padding-top:4px}.now-section .body ul{list-style:none;padding:0;margin:0}.now-section .body li{padding:.5rem 0;color:var(--fg);border-bottom:1px dashed var(--rule-soft)}.now-section .body li:last-child{border-bottom:0}.now-section .body li .tag{margin-right:.5rem}.now-section .body li .note{color:var(--muted);display:block;font-size:14.5px;margin-top:2px}.projects-page{padding-top:4rem}.flagship{border:1px solid var(--rule);border-radius:4px;padding:2rem 2rem 1.75rem;background:linear-gradient(180deg,color-mix(in oklab,var(--accent) 6%,var(--bg-2)) 0%,var(--bg-2) 100%);margin-top:1.5rem;max-width:56rem}.flagship__label{font:500 11px/1 var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--accent);margin-bottom:.75rem}.flagship h2{margin:0 0 .5rem;font-size:1.875rem;font-weight:600;letter-spacing:-.02em}.flagship p{color:var(--fg-2);font-size:16.5px;max-width:42rem}.flagship__rows{margin-top:1.5rem;display:grid;grid-template-columns:7rem 1fr;gap:.35rem 1.25rem;border-top:1px solid var(--rule-soft);padding-top:1rem;font-size:14.5px}.flagship__rows dt{font:500 11px/1.7 var(--mono);color:var(--muted);text-transform:uppercase;letter-spacing:.08em}.flagship__rows dd{margin:0;color:var(--fg);font-family:var(--sans)}.flagship__rows dd .dim{color:var(--muted)}.status{display:inline-flex;align-items:center;gap:.5rem;font-family:var(--mono);font-size:12px;color:var(--fg-2);letter-spacing:.04em;text-transform:uppercase}.status .dot{width:7px;height:7px;border-radius:50%;background:#76c479;box-shadow:0 0 0 3px color-mix(in oklab,oklch(.75 .13 145) 20%,transparent)}.status.muted .dot{background:var(--muted);box-shadow:none}.exp-grid{margin-top:2.5rem;display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(17rem,1fr));max-width:56rem}.exp{border:1px solid var(--rule);border-radius:4px;padding:1.25rem;display:flex;flex-direction:column;background:var(--bg)}.exp h4{margin:0;font-size:15px;font-weight:600;font-family:var(--sans)}.exp p{color:var(--fg-2);font-size:14.5px;flex:1;margin:.35rem 0 1rem}.exp .foot{display:flex;align-items:center;justify-content:space-between;font:400 11px/1 var(--mono);color:var(--muted);text-transform:uppercase;letter-spacing:.05em}footer.site{margin-top:6rem;padding:2.5rem 0 4rem;border-top:1px solid var(--rule-soft);color:var(--muted);font-family:var(--sans);font-size:14px}footer.site .row{display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap}footer.site a{color:var(--fg-2);border:0}footer.site a:hover{color:var(--accent)}@media(max-width:640px){body{font-size:16px}.nav ul{gap:1rem}.nav ul li.hide-sm{display:none}.posts li{grid-template-columns:1fr;gap:.25rem}.posts .date{padding-top:0}.now-section{grid-template-columns:1fr;gap:.5rem;padding:1.25rem 0}.now-section h3{padding-top:0}.flagship{padding:1.5rem}.flagship__rows{grid-template-columns:6rem 1fr}.home-hero{padding-top:3rem}}
