@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/_astro/ibm-plex-sans-cyrillic-ext-wght-normal.d45eAU9y.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/_astro/ibm-plex-sans-cyrillic-wght-normal.BAAhND-U.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/_astro/ibm-plex-sans-greek-wght-normal.CmyJS8uq.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/_astro/ibm-plex-sans-vietnamese-wght-normal.Dg1JeJN0.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/_astro/ibm-plex-sans-latin-ext-wght-normal.CIII54If.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:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/_astro/ibm-plex-sans-latin-wght-normal.IvpUvPa2.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:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/_astro/source-serif-4-cyrillic-ext-wght-normal.cHuGMAiY.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/_astro/source-serif-4-cyrillic-wght-normal.DwHjdM4S.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/_astro/source-serif-4-greek-wght-normal.ece1310W.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/_astro/source-serif-4-vietnamese-wght-normal.D-yuW59g.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/_astro/source-serif-4-latin-ext-wght-normal.CxNHBx-q.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:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/_astro/source-serif-4-latin-wght-normal.D9elroTD.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}:root{color-scheme:light;--paper:#f7f4ec;--surface:#fffdf8;--ink:#17201d;--muted:#5e6863;--line:#d8d5ca;--control-line:#737a75;--soft-line:#17201d17;--cobalt:#2f5bd3;--cobalt-ink:#2448ad;--cobalt-soft:#dfe7ff;--on-cobalt:#fff;--header:#f7f4ece6;--shadow:0 24px 70px #17201d14;--font-sans:"IBM Plex Sans Variable", "IBM Plex Sans", system-ui, sans-serif;--font-serif:"Source Serif 4 Variable", "Source Serif 4", Georgia, serif;--font-mono:ui-monospace, "SFMono-Regular", Consolas, monospace;--shell:78rem;--reading:72ch;--radius:.3rem;--space-section:clamp(5rem, 9vw, 9rem)}:root[data-theme=dark]{color-scheme:dark;--paper:#101411;--surface:#171c18;--ink:#edf0e9;--muted:#aeb6ae;--line:#303832;--control-line:#8a948b;--soft-line:#edf0e917;--cobalt:#91a8ff;--cobalt-ink:#b7c4ff;--cobalt-soft:#1c2b54;--on-cobalt:#101411;--header:#101411e6;--shadow:0 24px 70px #00000040}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){color-scheme:dark;--paper:#101411;--surface:#171c18;--ink:#edf0e9;--muted:#aeb6ae;--line:#303832;--control-line:#8a948b;--soft-line:#edf0e917;--cobalt:#91a8ff;--cobalt-ink:#b7c4ff;--cobalt-soft:#1c2b54;--on-cobalt:#101411;--header:#101411e6;--shadow:0 24px 70px #00000040}}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth;background:var(--paper)}body{background:linear-gradient(90deg, transparent 0, transparent calc(100% - 1px), var(--soft-line) 0) center / min(100% - 2rem, var(--shell)) 100% no-repeat, var(--paper);min-width:20rem;color:var(--ink);font-family:var(--font-sans);text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;margin:0;font-size:1rem;line-height:1.6}::selection{background:var(--cobalt);color:var(--paper)}img,svg{max-width:100%;display:block}button,input,textarea,select{font:inherit}button,summary{cursor:pointer}a{color:inherit;text-decoration-color:color-mix(in srgb, var(--cobalt) 55%, transparent);text-underline-offset:.18em;text-decoration-thickness:.08em}a:hover{color:var(--cobalt-ink);text-decoration-color:currentColor}:focus-visible{outline:.18rem solid var(--cobalt);outline-offset:.22rem}h1,h2,h3,p,ul,ol,figure,blockquote{margin-top:0}h1,h2,h3{color:var(--ink);font-family:var(--font-serif);letter-spacing:-.035em;text-wrap:balance;font-weight:520;line-height:1.03}h1{font-size:clamp(3.25rem,8.7vw,8rem)}h2{font-size:clamp(2.4rem,5vw,4.75rem)}h3{font-size:clamp(1.5rem,2.5vw,2rem)}.shell{width:min(calc(100% - 2rem), var(--shell));margin-inline:auto}.skip-link{z-index:1000;border-radius:var(--radius);background:var(--ink);color:var(--paper);padding:.65rem .9rem;font-weight:650;transition:transform .16s;position:fixed;top:.75rem;left:.75rem;transform:translateY(-180%)}.skip-link:focus{transform:translateY(0)}.site-header{z-index:100;border-bottom:1px solid var(--line);background:var(--header);backdrop-filter:blur(1rem);position:sticky;top:0}.header-inner{grid-template-columns:auto 1fr auto;align-items:center;gap:1.5rem;min-height:4.6rem;display:grid}.wordmark{align-items:center;gap:.75rem;text-decoration:none;display:inline-flex}.wordmark-mark{border:1px solid var(--cobalt);width:2.4rem;height:2.4rem;color:var(--cobalt-ink);font-family:var(--font-mono);letter-spacing:.08em;place-items:center;font-size:.65rem;font-weight:700;display:grid}.wordmark-name,.footer-name{letter-spacing:-.02em;font-weight:650}.desktop-nav{justify-self:end}.desktop-nav ul,.inline-links,.text-tags,.tag-list,.project-links,.mobile-nav ul{margin:0;padding:0;list-style:none;display:flex}.desktop-nav ul{align-items:center;gap:clamp(.7rem,1.7vw,1.5rem)}.desktop-nav a{color:var(--muted);padding-block:1rem;font-size:.9rem;font-weight:560;text-decoration:none;position:relative}.desktop-nav a:hover,.desktop-nav a[aria-current=page]{color:var(--ink)}.desktop-nav a[aria-current=page]:after{background:var(--cobalt);content:"";height:2px;position:absolute;bottom:.48rem;left:0;right:0}.search-link kbd{border:1px solid var(--line);background:var(--surface);font-family:var(--font-mono);border-radius:.2rem;margin-left:.25rem;padding:.12rem .3rem;font-size:.68rem}.header-actions{align-items:center;gap:.65rem;display:flex}.theme-control{border:1px solid var(--control-line);border-radius:var(--radius);background:var(--surface);padding:.18rem;display:flex}.theme-control button{min-width:2.5rem;min-height:2.5rem;color:var(--muted);background:0 0;border:0;border-radius:.18rem;place-items:center;padding:0;display:grid}.theme-control button[aria-pressed=true]{background:var(--cobalt-soft);color:var(--cobalt-ink);box-shadow:inset 0 0 0 1px var(--cobalt)}.theme-control svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.65px;width:1rem}.theme-control span{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.mobile-nav{display:none;position:relative}.mobile-nav summary{border:1px solid var(--control-line);border-radius:var(--radius);text-align:center;min-width:3.4rem;min-height:2.75rem;padding:.5rem .65rem;font-size:.84rem;font-weight:620;list-style:none}.mobile-nav summary::-webkit-details-marker{display:none}.mobile-nav nav{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);width:min(17rem,100vw - 2rem);box-shadow:var(--shadow);padding:.8rem;position:absolute;top:calc(100% + .65rem);right:0}.mobile-nav ul{flex-direction:column}.mobile-nav a{border-bottom:1px solid var(--soft-line);min-height:2.75rem;padding:.55rem .7rem;text-decoration:none;display:block}.hero{padding-block:clamp(4.5rem,11vw,9rem) 2rem}.hero-overline,.page-overline,.article-label{color:var(--cobalt-ink);font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;margin-bottom:1.5rem;font-size:.75rem;font-weight:680}.hero-grid{grid-template-columns:minmax(0,3.2fr) minmax(15rem,1fr);align-items:end;gap:clamp(2rem,7vw,7rem);display:grid}.hero h1{max-width:12ch;margin-bottom:2rem}.hero h1 em{color:var(--cobalt-ink);font-weight:inherit}.hero-intro{max-width:46rem;color:var(--muted);margin-bottom:2rem;font-size:clamp(1.1rem,2vw,1.35rem);line-height:1.55}.button-row{flex-wrap:wrap;gap:.75rem;display:flex}.button,.button-secondary{border:1px solid var(--cobalt);border-radius:var(--radius);background:var(--cobalt);min-height:2.8rem;color:var(--on-cobalt);justify-content:center;align-items:center;padding:.65rem 1rem;font-size:.9rem;font-weight:650;text-decoration:none;transition:transform .16s,background .16s;display:inline-flex}.button-secondary{border-color:var(--control-line);color:var(--ink);background:0 0}.button:hover,.button-secondary:hover{transform:translateY(-2px)}.button:hover{background:var(--cobalt-ink);color:var(--on-cobalt)}.hero-aside{border-top:1px solid var(--cobalt);padding-top:1.2rem}.hero-aside dl{gap:1rem;margin:0;display:grid}.hero-aside div{grid-template-columns:4.5rem 1fr;gap:.75rem;display:grid}.hero-aside dt{color:var(--muted);font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;font-size:.7rem}.hero-aside dd{margin:0;font-size:.92rem}.hero-foot{border-top:1px solid var(--line);color:var(--muted);font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;justify-content:space-between;align-items:center;margin-top:clamp(3rem,9vw,7rem);padding-top:1rem;font-size:.7rem;display:flex}.section{padding-block:var(--space-section);border-top:1px solid var(--line)}.section-heading{grid-template-columns:minmax(12rem,.8fr) minmax(0,2.2fr);gap:1.5rem clamp(2rem,7vw,7rem);margin-bottom:clamp(2.5rem,6vw,5rem);display:grid}.section-kicker{color:var(--muted);font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;gap:1rem;padding-top:.65rem;font-size:.72rem;display:flex}.section-kicker span:first-child{color:var(--cobalt-ink)}.section-heading h1,.section-heading h2{margin-bottom:0}.section-heading p{max-width:49rem;color:var(--muted);grid-column:2;margin-bottom:0;font-size:1.12rem}.projects-grid{border:1px solid var(--line);background:var(--line);grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;display:grid}.project-card{background:var(--surface);min-width:0}.project-visual{border-bottom:1px solid var(--line);background:var(--cobalt-soft);color:var(--cobalt);overflow:hidden}.project-visual svg{aspect-ratio:16/9.5;width:100%}.project-visual text{fill:currentColor;font-family:var(--font-mono);letter-spacing:.12em;font-size:22px;font-weight:700}.project-visual .visual-index{letter-spacing:.04em;font-size:12px;font-weight:520}.project-visual .signal{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:4px;vector-effect:non-scaling-stroke}.project-visual .signal-fill{fill:currentColor;stroke:none}.project-visual .faint{opacity:.28}.project-card-body{padding:clamp(1.25rem,3vw,2.25rem)}.project-card-meta{color:var(--muted);font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;justify-content:space-between;gap:1rem;margin-bottom:1.5rem;font-size:.7rem;display:flex}.project-card-meta span:first-child{color:var(--cobalt-ink)}.project-card h2,.project-card h3{margin-bottom:.8rem;font-size:clamp(1.5rem,2.5vw,2rem)}.project-card-body>p{min-height:4.8em;color:var(--muted);margin-bottom:1.4rem}.tag-list{flex-wrap:wrap;gap:.35rem}.tag-list li,.text-tags li{border:1px solid var(--line);color:var(--muted);font-family:var(--font-mono);border-radius:100vmax;padding:.22rem .5rem;font-size:.68rem}.project-links{gap:1.2rem;margin-top:1.75rem}.project-links a,.section-link,.back-link{color:var(--cobalt-ink);font-weight:650}.section-action{justify-content:flex-end;margin-top:2rem;display:flex}.post-list{border-top:1px solid var(--line);margin:0;padding:0;list-style:none}.post-list>li{border-bottom:1px solid var(--line)}.post-list article{grid-template-columns:minmax(10rem,.7fr) minmax(0,2.2fr) auto;gap:1.5rem clamp(1.5rem,5vw,5rem);padding-block:2rem;display:grid}.post-list-meta{color:var(--muted);font-family:var(--font-mono);text-transform:uppercase;flex-direction:column;font-size:.72rem;display:flex}.post-list h2,.post-list h3{margin-bottom:.6rem;font-size:clamp(1.45rem,3vw,2.2rem)}.post-list h2 a,.post-list h3 a{text-decoration:none}.post-list p{max-width:48rem;color:var(--muted);margin-bottom:1rem}.text-tags{flex-wrap:wrap;gap:.4rem}.text-tags a{text-decoration:none}.post-arrow{color:var(--cobalt-ink);font-size:1.35rem}.snapshot-grid,.about-grid,.resume-grid,.contact-grid{border:1px solid var(--line);background:var(--line);grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;display:grid}.snapshot-card,.about-panel,.resume-panel,.contact-panel{background:var(--surface);padding:clamp(1.5rem,4vw,3rem)}.snapshot-card>span,.about-panel>span,.resume-panel>span,.contact-panel>span{color:var(--cobalt-ink);font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;margin-bottom:2rem;font-size:.7rem;display:block}.snapshot-card h3,.resume-panel h2,.resume-panel h3,.about-panel h2,.about-panel h3,.contact-panel h2{margin-bottom:.6rem}.snapshot-card p,.about-panel p,.resume-panel p,.contact-panel p{color:var(--muted)}.contact-band{border:1px solid var(--cobalt);background:var(--cobalt-soft);grid-template-columns:1.6fr .8fr;align-items:end;gap:2rem;padding:clamp(2rem,6vw,5rem);display:grid}.contact-band h2{max-width:12ch;margin-bottom:1rem}.contact-band p{max-width:42rem;color:var(--muted);margin-bottom:0;font-size:1.08rem}.contact-band .button-row{justify-content:flex-end}.page-hero{padding-block:clamp(4rem,10vw,8rem) clamp(3rem,7vw,6rem)}.page-hero .section-heading{margin-bottom:0}.page-hero .section-heading h1{max-width:14ch}.year-group+.year-group{margin-top:5rem}.year-heading{color:var(--cobalt-ink);font-family:var(--font-mono);letter-spacing:.12em;margin-bottom:1.25rem;font-size:.8rem}.projects-all{padding-bottom:var(--space-section)}.projects-all .projects-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.bio-copy{max-width:var(--reading);font-family:var(--font-serif);font-size:clamp(1.25rem,2.3vw,1.6rem);line-height:1.55}.bio-copy p:first-child:first-letter{float:left;color:var(--cobalt-ink);font-family:var(--font-serif);margin:.08em .12em 0 0;font-size:4.2em;line-height:.75}.skills-grid{border:1px solid var(--line);background:var(--line);grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;display:grid}.skill-group{background:var(--surface);padding:clamp(1.4rem,3vw,2.5rem)}.skill-group h3{margin-bottom:1.25rem;font-size:1.4rem}.skill-group ul{flex-wrap:wrap;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.skill-group li{color:var(--muted);font-family:var(--font-mono);font-size:.78rem}.skill-group li:not(:last-child):after{color:var(--cobalt);content:"·";margin-left:.5rem}.timeline-list,.detail-list,.certification-list{margin:0;padding:0;list-style:none}.timeline-list>li{border-top:1px solid var(--line);grid-template-columns:minmax(10rem,.7fr) minmax(0,2fr);gap:2rem;padding-block:2rem;display:grid}.timeline-list>li:last-child{border-bottom:1px solid var(--line)}.timeline-date{color:var(--muted);font-family:var(--font-mono);text-transform:uppercase;font-size:.75rem}.timeline-list h2,.timeline-list h3{margin-bottom:.35rem;font-size:1.7rem}.timeline-organisation{color:var(--cobalt-ink);margin-bottom:.8rem;font-weight:620}.detail-list{color:var(--muted);padding-left:1.1rem;list-style:square}.detail-list li+li{margin-top:.35rem}.resume-toolbar{justify-content:flex-end;margin-bottom:1rem;display:flex}.resume-header{border:1px solid var(--line);background:var(--surface);grid-template-columns:1.7fr .8fr;gap:2rem;padding:clamp(2rem,5vw,4rem);display:grid}.resume-header h1,.resume-header h2{max-width:10ch;margin-bottom:1rem;font-size:clamp(3rem,7vw,6rem)}.resume-contact{flex-direction:column;justify-content:flex-end;align-items:flex-start;gap:.6rem;display:flex}.resume-section{border-bottom:1px solid var(--line);padding-block:clamp(3rem,7vw,5rem)}.resume-section>h2{font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;margin-bottom:2rem;font-size:.78rem}.contact-lede{max-width:18ch;font-family:var(--font-serif);letter-spacing:-.035em;margin-bottom:3rem;font-size:clamp(2rem,5vw,4.25rem);line-height:1.05}.contact-links{border-top:1px solid var(--line);margin:0;padding:0;list-style:none}.contact-links li{border-bottom:1px solid var(--line)}.contact-links a{justify-content:space-between;align-items:center;gap:1rem;min-height:4.4rem;text-decoration:none;display:flex}.contact-links a span:last-child{color:var(--cobalt-ink)}.search-shell{min-height:55vh;padding-bottom:var(--space-section)}.search-help{color:var(--muted);margin-bottom:1.5rem;font-size:.9rem}#search{min-height:12rem}.search-loading{border:1px solid var(--line);color:var(--muted);padding:1rem}.pagefind-ui{--pagefind-ui-scale:1;--pagefind-ui-primary:var(--cobalt-ink);--pagefind-ui-text:var(--ink);--pagefind-ui-background:var(--surface);--pagefind-ui-border:var(--control-line);--pagefind-ui-tag:var(--cobalt-soft);--pagefind-ui-border-width:1px;--pagefind-ui-border-radius:var(--radius);--pagefind-ui-image-border-radius:var(--radius);--pagefind-ui-font:var(--font-sans)}.pagefind-ui__search-input{min-height:3.5rem!important;font-weight:550!important}.pagefind-ui__result-title{font-family:var(--font-serif);font-size:1.45rem!important}.article-shell{padding-block:clamp(3rem,8vw,7rem)}.article-header{max-width:66rem;margin:0 auto clamp(4rem,9vw,7rem)}.article-header .back-link{margin-bottom:4rem;display:inline-block}.article-header h1{margin-bottom:1.5rem;font-size:clamp(3rem,7.4vw,6.8rem)}.article-deck{max-width:50rem;color:var(--muted);font-family:var(--font-serif);font-size:clamp(1.2rem,2.2vw,1.5rem);line-height:1.5}.article-byline{color:var(--muted);font-family:var(--font-mono);text-transform:uppercase;flex-wrap:wrap;gap:.55rem 1.2rem;margin-block:2rem 1rem;font-size:.74rem;display:flex}.article-byline>*+:before{color:var(--cobalt);content:"·";margin-right:1.2rem}.article-grid{grid-template-columns:minmax(10rem, 14rem) minmax(0, var(--reading));justify-content:center;align-items:start;gap:clamp(2rem,7vw,6rem);display:grid}.article-toc{border-top:1px solid var(--cobalt);padding-top:.8rem;position:sticky;top:7rem}.article-toc>p{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;margin-bottom:.8rem;font-size:.7rem}.article-toc ol{margin:0;padding:0;list-style:none}.article-toc li+li{margin-top:.55rem}.article-toc li.nested{padding-left:.75rem}.article-toc a{color:var(--muted);font-size:.8rem;line-height:1.35;text-decoration:none}.prose{min-width:0;font-family:var(--font-serif);font-size:clamp(1.08rem,1.7vw,1.2rem);line-height:1.78}.prose>:first-child{margin-top:0}.prose h2,.prose h3{scroll-margin-top:7rem}.prose h2{margin:3.2rem 0 1.1rem;font-size:clamp(2rem,4vw,3rem)}.prose h3{margin:2.5rem 0 .8rem;font-size:1.6rem}.prose p,.prose ul,.prose ol{margin-bottom:1.4rem}.prose li+li{margin-top:.45rem}.prose strong{color:var(--ink);font-weight:680}.prose blockquote{border-left:.2rem solid var(--cobalt);color:var(--muted);margin:2rem 0;padding:.4rem 0 .4rem 1.4rem;font-size:1.15em}.prose code{border:1px solid var(--line);background:var(--surface);font-family:var(--font-mono);border-radius:.2rem;padding:.12rem .32rem;font-size:.82em}.prose pre{border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);margin:2rem 0;padding:1.15rem;font-size:.85rem;overflow-x:auto}.prose pre code{background:0 0;border:0;padding:0}.prose img{border:1px solid var(--line);margin-block:2rem}.article-pagination{max-width:calc(var(--reading) + 20rem);border-top:1px solid var(--line);grid-template-columns:repeat(2,minmax(0,1fr));gap:2rem;margin:clamp(4rem,10vw,8rem) auto 0;padding-top:1.5rem;display:grid}.article-pagination div:last-child{text-align:right}.article-pagination span{color:var(--muted);font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;margin-bottom:.45rem;font-size:.68rem;display:block}.article-pagination a{font-family:var(--font-serif);font-size:1.25rem;font-weight:600}.empty-state{border:1px solid var(--line);background:var(--surface);color:var(--muted);padding:3rem}.not-found{text-align:center;place-items:center;min-height:65vh;display:grid}.not-found p:first-child{color:var(--cobalt-ink);font-family:var(--font-mono);letter-spacing:.1em;font-size:.75rem}.not-found h1{margin-bottom:1rem}.not-found div>p:not(:first-child){max-width:34rem;color:var(--muted);margin-inline:auto}.site-footer{border-top:1px solid var(--line)}.footer-grid{grid-template-columns:1fr auto;align-items:end;gap:2rem;padding-block:2.5rem;display:grid}.footer-grid p{color:var(--muted);margin:.25rem 0 0;font-size:.83rem}.footer-name{text-decoration:none}.inline-links{flex-wrap:wrap;justify-content:flex-end;gap:1rem}.inline-links a{font-size:.88rem}.footer-meta{border-top:1px solid var(--soft-line);font-family:var(--font-mono);grid-column:1/-1;padding-top:1rem}@media (width<=68rem){.wordmark-name,.desktop-nav{display:none}.header-inner{grid-template-columns:auto 1fr}.header-actions{justify-self:end}.mobile-nav{display:block}.article-grid{grid-template-columns:minmax(0, var(--reading))}.article-toc{position:static;top:auto}.article-toc ol{columns:2}}@media (width<=48rem){body{background:var(--paper)}.hero-grid,.section-heading,.contact-band,.resume-header{grid-template-columns:1fr}.hero-aside{margin-top:1rem}.section-heading p{grid-column:1}.projects-grid,.projects-all .projects-grid,.snapshot-grid,.about-grid,.resume-grid,.contact-grid,.skills-grid{grid-template-columns:1fr}.project-card-body>p{min-height:0}.post-list article,.timeline-list>li{grid-template-columns:1fr;gap:1rem}.post-arrow{display:none}.contact-band .button-row{justify-content:flex-start}.article-byline{flex-direction:column}.article-byline>*+:before{display:none}.article-toc ol{columns:1}.article-pagination{grid-template-columns:1fr}.article-pagination div:last-child{text-align:left}.footer-grid{grid-template-columns:1fr;align-items:start}.inline-links{justify-content:flex-start}}@media (width<=27rem){.mobile-nav summary{min-width:auto}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@media print{:root,:root[data-theme=dark]{color-scheme:light;--paper:#fff;--surface:#fff;--ink:#111;--muted:#444;--line:#bbb;--control-line:#555;--cobalt:#222;--cobalt-ink:#111;--cobalt-soft:#fff}body{background:#fff;font-size:10pt}.site-header,.site-footer,.resume-toolbar,.skip-link{display:none!important}.shell{width:100%}.resume-page .page-hero{display:none}.resume-header{border:0;border-bottom:1px solid #999;padding:0 0 1.2rem}.resume-header h1,.resume-header h2{font-size:34pt}.resume-section{padding-block:1.2rem}.timeline-list>li{break-inside:avoid;padding-block:1rem}@page{margin:1.4cm}a{text-decoration:none}}
