@font-face{font-family:Fraunces;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/fraunces-600-latin.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+2000-206F,U+2122,U+2212}@font-face{font-family:Fraunces;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/fraunces-600-latin-ext.woff2)format("woff2");unicode-range:U+100-24F,U+1E??,U+2020}@font-face{font-family:Inter;font-style:normal;font-weight:400 600;font-display:swap;src:url(/fonts/inter-var-latin.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+2000-206F,U+2122,U+2212}@font-face{font-family:Inter;font-style:normal;font-weight:400 600;font-display:swap;src:url(/fonts/inter-var-latin-ext.woff2)format("woff2");unicode-range:U+100-24F,U+1E??,U+2020}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/ibm-plex-mono-400-latin.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+2000-206F,U+2122,U+2212}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/ibm-plex-mono-400-latin-ext.woff2)format("woff2");unicode-range:U+100-24F,U+1E??,U+2020}:root{--paper:#faf7f1;--surface:#fff;--ink:#22262a;--muted:#5c6470;--forest:#1e4d3b;--moss:#4a7a5e;--amber:#c08a3e;--hairline:#e4dfd5;--font-serif:"Fraunces", "Source Serif 4", Georgia, "Times New Roman", serif;--font-sans:"Inter", system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono:"IBM Plex Mono", ui-monospace, "SF Mono", Consolas, monospace;--text-2xs:12.5px;--text-xs:14px;--text-sm:16px;--text-md:18px;--text-lg:22px;--text-xl:28px;--text-2xl:clamp(2rem, 1.6rem + 1.6vw, 2.5rem);--text-3xl:clamp(2.2rem, 1.6rem + 3vw, 3.5rem);--leading-body:1.6;--leading-heading:1.15;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--space-7:48px;--space-8:64px;--space-9:96px;--radius:6px;--border-width:1px;--content-max-width:1140px;--shadow-raised:none;--focus-ring:2px solid var(--forest);--focus-ring-offset:2px}@media (prefers-color-scheme:dark){:root{--paper:#15191b;--surface:#1c2124;--ink:#e9e5dc;--muted:#9aa3a9;--forest:#7fb598;--moss:#9ccab0;--amber:#c99a55;--hairline:#2a3134;--shadow-raised:0 1px 3px #00000059}}:root[data-theme=light]{--paper:#faf7f1;--surface:#fff;--ink:#22262a;--muted:#5c6470;--forest:#1e4d3b;--moss:#4a7a5e;--amber:#c08a3e;--hairline:#e4dfd5;--shadow-raised:none}:root[data-theme=dark]{--paper:#15191b;--surface:#1c2124;--ink:#e9e5dc;--muted:#9aa3a9;--forest:#7fb598;--moss:#9ccab0;--amber:#c99a55;--hairline:#2a3134;--shadow-raised:0 1px 3px #00000059}@media (prefers-reduced-motion:reduce){:root{--transition-fast:0s}}@media (prefers-reduced-motion:no-preference){:root{--transition-fast:.15s ease}}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}body{background:var(--paper);color:var(--ink);font-family:var(--font-sans);font-size:var(--text-sm);line-height:var(--leading-body);-webkit-font-smoothing:antialiased;hyphens:auto;margin:0}.wrap{max-width:var(--content-max-width);margin:0 auto;padding:0 20px}@media (width>=720px){.wrap{padding:0 40px}}a{color:var(--forest);text-decoration:none}a:hover{color:var(--moss)}p a{text-decoration:underline}:focus-visible{outline:var(--focus-ring);outline-offset:var(--focus-ring-offset);border-radius:2px}.skip-link{background:var(--forest);color:var(--paper);padding:var(--space-3) var(--space-4);z-index:10;font-weight:600;position:absolute;top:0;left:-9999px}.skip-link:focus{top:8px;left:8px}.mono{font-family:var(--font-mono);font-size:var(--text-2xs);letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}header.site-header{border-bottom:var(--border-width) solid var(--hairline)}#theme-toggle{min-width:44px;min-height:44px;color:var(--forest);border:var(--border-width) solid var(--hairline);border-radius:var(--radius);font-size:var(--text-md);cursor:pointer;background:0 0;justify-content:center;align-items:center;line-height:1;display:inline-flex}#theme-toggle:hover{border-color:var(--forest);color:var(--moss)}.nav{justify-content:space-between;align-items:center;gap:var(--space-4);min-height:64px;padding-top:var(--space-2);padding-bottom:var(--space-2);flex-wrap:wrap;display:flex}.wordmark{font-family:var(--font-serif);font-weight:600;font-size:var(--text-md);color:var(--forest);letter-spacing:.01em}.main-nav ul{gap:var(--space-1);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.main-nav a{padding:var(--space-3) var(--space-3);min-height:44px;color:var(--ink);border-radius:var(--radius);display:inline-block}.main-nav a:hover{color:var(--forest)}.main-nav a[aria-current]{color:var(--forest);font-weight:600}.utils{align-items:center;gap:2px;display:flex}.utils button,.utils a{cursor:pointer;font-family:var(--font-mono);font-size:var(--text-2xs);color:var(--muted);padding:var(--space-3) var(--space-2);border-radius:var(--radius);background:0 0;border:none;justify-content:center;align-items:center;min-width:44px;min-height:44px;display:inline-flex}.utils button:hover,.utils a:hover{color:var(--forest)}.utils .active{color:var(--ink);text-underline-offset:4px;text-decoration:underline}.hero{padding:var(--space-8) 0 var(--space-7)}@media (width>=880px){.hero .wrap.hero-grid{gap:var(--space-8);grid-template-columns:1.5fr 1fr;align-items:center;display:grid}}.eyebrow{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-bottom:var(--space-5)}.eyebrow b{color:var(--forest);font-weight:500}h1{font-family:var(--font-serif);font-weight:600;font-size:var(--text-3xl);line-height:var(--leading-heading);letter-spacing:-.01em;margin:0 0 var(--space-5)}.lede{font-size:var(--text-md);color:var(--muted);max-width:34em;margin:0 0 var(--space-6)}.cta-row{gap:var(--space-5);flex-wrap:wrap;align-items:center;display:flex}.btn{background:var(--forest);color:var(--paper);border-radius:var(--radius);border:var(--border-width) solid var(--forest);transition:transform var(--transition-fast,.15s ease), background var(--transition-fast,.15s ease);min-height:44px;padding:13px 26px;font-weight:600;display:inline-block}.btn:hover{background:var(--moss);border-color:var(--moss);color:var(--paper);transform:translateY(-1px)}.btn:active{transform:translateY(0)}.btn-secondary{color:var(--forest);background:0 0}.btn-secondary:hover{color:var(--moss);background:0 0}.textlink{padding:var(--space-2) 0;border-bottom:1.5px solid #0000;font-weight:600}.textlink:hover{border-bottom-color:var(--moss)}.portrait-slot{aspect-ratio:4/5;max-width:300px;margin:var(--space-7) auto 0;border-radius:var(--radius);overflow:hidden}@media (width>=880px){.portrait-slot{margin:0}}.monogram-tile{background:var(--forest);justify-content:center;align-items:center;width:100%;height:100%;display:flex}.monogram-tile span{font-family:var(--font-serif);color:var(--paper);font-size:96px;font-weight:600}.portrait-slot img{object-fit:cover;width:100%;height:100%;display:block}.meta-strip{border-top:var(--border-width) solid var(--hairline);border-bottom:var(--border-width) solid var(--hairline);padding:var(--space-3) 0;margin-top:var(--space-8)}.meta-strip ul{gap:var(--space-2) var(--space-6);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.meta-strip li{font-family:var(--font-mono);font-size:var(--text-2xs);color:var(--muted)}.meta-strip li:before{content:"—";color:var(--forest);margin-right:var(--space-2)}section{padding:var(--space-8) 0}.kicker{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.1em;text-transform:uppercase;color:var(--forest);margin-bottom:var(--space-3)}h2{font-family:var(--font-serif);font-weight:600;font-size:var(--text-2xl);margin:0 0 var(--space-6)}.timeline{border-left:var(--border-width) solid var(--hairline);padding-left:var(--space-6);max-width:720px;margin:0;list-style:none}.timeline li{padding-bottom:var(--space-6);position:relative}.timeline li:last-child{padding-bottom:0}.timeline li:before{content:"";background:var(--paper);border:2px solid var(--forest);border-radius:50%;width:9px;height:9px;position:absolute;top:8px;left:-33px}.timeline li.current:before{background:var(--amber);border-color:var(--amber)}.timeline .role{font-family:var(--font-serif);font-size:var(--text-md);font-weight:600}.timeline .org{color:var(--muted)}.timeline .dates{font-family:var(--font-mono);font-size:var(--text-2xs);color:var(--muted);letter-spacing:.05em;margin:2px 0 var(--space-2);display:block}.timeline p{color:var(--muted);max-width:38em;margin:0}.empty-card{border:var(--border-width) solid var(--hairline);border-radius:var(--radius);background:var(--surface);padding:var(--space-7) var(--space-6);max-width:720px;transition:border-color var(--transition-fast,.15s ease)}.empty-card:hover{border-color:var(--forest)}.empty-card p{color:var(--muted);max-width:36em;margin:0 0 var(--space-5)}.empty-card .tags{gap:var(--space-3);flex-wrap:wrap;display:flex}.empty-card .tags span{font-family:var(--font-mono);font-size:var(--text-2xs);color:var(--forest);border:var(--border-width) solid var(--hairline);border-radius:var(--radius);padding:6px 12px}.blog-card{border:var(--border-width) solid var(--hairline);border-radius:var(--radius);padding:var(--space-5);transition:border-color var(--transition-fast,.15s ease);color:inherit;text-decoration:none;display:block}.blog-card:hover{border-color:var(--forest);color:inherit}.blog-card:hover h3{color:var(--forest)}.blog-card .date{font-family:var(--font-mono);font-size:var(--text-2xs);color:var(--muted);margin-bottom:var(--space-2);display:block}.blog-card h3{font-family:var(--font-serif);font-size:var(--text-md);margin:0 0 var(--space-2);transition:color var(--transition-fast,.15s ease);font-weight:600}.blog-card p{color:var(--muted);margin:0}.blog-list{gap:var(--space-4);max-width:720px;display:grid}footer.site-footer{border-top:var(--border-width) solid var(--hairline);padding:var(--space-7) 0 var(--space-6);font-size:14.5px}.handoff{max-width:520px;margin-bottom:var(--space-6)}.handoff .mono{margin-bottom:var(--space-2);display:block}.handoff a{font-weight:600}.foot-row{justify-content:space-between;gap:var(--space-4) var(--space-6);color:var(--muted);flex-wrap:wrap;display:flex}.foot-row ul{gap:var(--space-2) var(--space-5);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.foot-row a{color:var(--muted)}.foot-row a:hover{color:var(--forest)}.about-line{margin-top:var(--space-5);color:var(--muted);max-width:46em;font-size:13.5px}.cv-summary{max-width:60ch;color:var(--muted);font-size:var(--text-md);margin-bottom:var(--space-7)}.cv-actions{gap:var(--space-4);margin-bottom:var(--space-7);flex-wrap:wrap;display:flex}.earlier-disclosure{margin-top:var(--space-5)}.earlier-disclosure summary{cursor:pointer;font-family:var(--font-mono);font-size:var(--text-xs);color:var(--forest);padding:var(--space-2) 0;align-items:center;min-height:44px;display:flex}.earlier-disclosure ul{margin:var(--space-3) 0 0;padding:0;list-style:none}.earlier-disclosure li{padding:var(--space-2) 0;border-bottom:1px solid var(--hairline);font-size:var(--text-xs);color:var(--muted)}.cv-section{margin-top:var(--space-8)}.cv-section h2{font-size:var(--text-lg)}.skills-grid dt{font-family:var(--font-mono);font-size:var(--text-2xs);text-transform:uppercase;letter-spacing:.06em;color:var(--forest);margin-top:var(--space-4)}.skills-grid dd{margin:var(--space-1) 0 0;color:var(--muted)}.two-col{gap:var(--space-6);grid-template-columns:1fr;display:grid}@media (width>=720px){.two-col{grid-template-columns:1fr 1fr}}.lang-list{margin:0;padding:0;list-style:none}.lang-list li{max-width:280px;padding:var(--space-1) 0;justify-content:space-between;display:flex}@media print{header.site-header,footer.site-footer,.cta-row,.cv-actions,.skip-link,#blog-teaser,#projects,#contact-band{display:none!important}body{color:#000;background:#fff;font-size:11pt}a{color:#000;text-decoration:underline}a[href]:after{content:" (" attr(href) ")";color:#333;font-size:9pt}.timeline{border-left-color:#000}.timeline li:before{background:#fff;border-color:#000}h1,h2,.role{color:#000}section{break-inside:avoid;padding:12pt 0}.timeline li{break-inside:avoid}}.project-grid{gap:var(--space-5);grid-template-columns:1fr;max-width:960px;display:grid}@media (width>=720px){.project-grid{grid-template-columns:1fr 1fr}}.project-card{border:var(--border-width) solid var(--hairline);border-radius:var(--radius);padding:var(--space-5);color:inherit;transition:border-color var(--transition-fast,.15s ease);text-decoration:none;display:block}.project-card:hover{border-color:var(--forest);color:inherit}.project-card h3{font-family:var(--font-serif);font-size:var(--text-md);margin:0 0 var(--space-2)}.project-card p{color:var(--muted);margin:0 0 var(--space-3)}.status-chip{font-family:var(--font-mono);font-size:var(--text-2xs);border:1px solid var(--forest);color:var(--forest);border-radius:var(--radius);margin-bottom:var(--space-2);padding:2px 8px;display:inline-block}.tag-row{gap:var(--space-2);margin-top:var(--space-2);flex-wrap:wrap;display:flex}.tag-row span{font-family:var(--font-mono);font-size:var(--text-2xs);color:var(--muted)}.form-field{margin-bottom:var(--space-5);max-width:480px}.form-field label{margin-bottom:var(--space-2);font-weight:600;display:block}.form-field input,.form-field textarea{width:100%;font:inherit;padding:var(--space-3);border:var(--border-width) solid var(--hairline);border-radius:var(--radius);background:var(--surface);color:var(--ink);min-height:44px}.form-field textarea{resize:vertical;min-height:140px}.form-field input:focus-visible,.form-field textarea:focus-visible{outline:var(--focus-ring);outline-offset:var(--focus-ring-offset)}.form-field .field-error{color:#b3261e;font-size:var(--text-xs);margin-top:var(--space-2)}@media (prefers-color-scheme:dark){.form-field .field-error{color:#ff8a80}}.error-summary{border-radius:var(--radius);padding:var(--space-4) var(--space-5);margin-bottom:var(--space-5);border:2px solid #b3261e;max-width:480px}@media (prefers-color-scheme:dark){.error-summary{border-color:#ff8a80}}.error-summary h2{font-size:var(--text-sm);margin:0 0 var(--space-2)}.error-summary ul{margin:0;padding-left:1.2em}.honeypot-field{width:1px;height:1px;position:absolute;left:-9999px;overflow:hidden}.form-status{border:var(--border-width) solid var(--hairline);border-radius:var(--radius);padding:var(--space-4) var(--space-5);max-width:480px;color:var(--muted)}.draft-banner{background:var(--amber);color:#22262a;font-family:var(--font-mono);font-size:var(--text-xs);padding:var(--space-3) var(--space-4);border-radius:var(--radius);margin-bottom:var(--space-6);font-weight:600}.legal-body :is(h2,h3){font-family:var(--font-serif);margin-top:var(--space-6)}.legal-body p{max-width:70ch;color:var(--muted);margin:var(--space-3) 0}.legal-body strong{color:var(--ink)}.not-found{padding:var(--space-9) 0;text-align:center}.gateway{justify-content:center;align-items:center;gap:var(--space-6);text-align:center;flex-direction:column;min-height:100vh;display:flex}.gateway .wordmark{font-family:var(--font-serif);font-size:var(--text-xl);color:var(--forest);margin:0}.gateway-links{gap:var(--space-5);display:flex}.gateway-links a{font-family:var(--font-mono);font-size:var(--text-md);padding:var(--space-3) var(--space-6);border:1px solid var(--hairline);border-radius:var(--radius);align-items:center;min-height:44px;display:flex}.gateway-links a:hover{border-color:var(--forest);color:var(--forest)}@media (width<=480px){h1{font-size:clamp(1.8rem,1.5rem + 3vw,2.2rem)}}
