*,:before,:after{box-sizing:border-box}*{margin:0;padding:0}html{-webkit-text-size-adjust:100%}img{max-width:100%;height:auto;display:block}body{font-family:var(--font-body);color:var(--color-text);background:var(--color-bg);font-size:1.0625rem;line-height:1.55}h1,h2,h3,h4{font-family:var(--font-heading);font-weight:700;line-height:1.25}a{color:var(--color-accent);text-decoration:underline;-webkit-text-decoration-color:var(--color-rule);text-decoration-color:var(--color-rule);text-underline-offset:.15em}a:hover{text-decoration-color:currentColor}code,pre{font-family:var(--font-mono);font-size:.9em}pre{padding:calc(var(--space-unit) * .75);background:var(--color-accent-bg);overflow-x:auto}hr{border:0;border-block-start:1px solid var(--color-rule);margin-block:calc(var(--space-unit) * 2)}.page{max-width:var(--measure);padding-inline:calc(var(--space-unit) * 1.25);margin-inline:auto;padding-block-end:calc(var(--space-unit) * 3)}.site-header{align-items:baseline;gap:calc(var(--space-unit) * .5) var(--space-unit);padding-block:var(--space-unit) calc(var(--space-unit) * .75);border-block-end:1px solid var(--color-rule);flex-wrap:wrap;margin-block-end:calc(var(--space-unit) * 2);display:flex}.site-header .site-name{color:var(--color-text);margin-inline-end:auto;font-weight:700;text-decoration:none}.site-header .site-name:hover{text-decoration:underline}.site-header nav{gap:var(--space-unit);font-size:.95rem;display:flex}.site-header nav [aria-current=page]{color:var(--color-muted)}.site-footer{border-block-start:1px solid var(--color-rule);color:var(--color-muted);margin-block-start:calc(var(--space-unit) * 3);padding-block-start:var(--space-unit);font-size:.85rem}.site-footer .footer-note{margin-block-start:calc(var(--space-unit) * .5)}.lang-switcher{column-gap:calc(var(--space-unit) * .75);row-gap:calc(var(--space-unit) * .25);flex-wrap:wrap;display:flex}.lang-switcher [aria-current=page]{color:var(--color-text);font-weight:700}.identity h1{font-size:1.7rem}.identity .headline{color:var(--color-muted);margin-block-start:calc(var(--space-unit) * .25);font-size:1.05rem}.identity .contact-line{color:var(--color-muted);margin-block-start:calc(var(--space-unit) * .5);font-size:.9rem}.identity .bio{margin-block-start:var(--space-unit)}.section{margin-block-start:calc(var(--space-unit) * 2.5)}.section>h2{border-block-end:1px solid var(--color-rule);margin-block-end:var(--space-unit);padding-block-end:calc(var(--space-unit) * .35);font-size:1.2rem}.job{column-gap:calc(var(--space-unit) * 1.25);grid-template-columns:9.5rem 1fr;margin-block-end:calc(var(--space-unit) * 1.5);display:grid}.job .job-dates{color:var(--color-muted);padding-block-start:.2em;font-size:.85rem}.job .job-org{font-weight:700}.job .job-meta{color:var(--color-muted);font-size:.85rem}.job .job-summary{margin-block-start:calc(var(--space-unit) * .35)}.job .highlights{margin-block-start:calc(var(--space-unit) * .35);padding-inline-start:1.2em}.job .highlights li{margin-block-start:calc(var(--space-unit) * .15)}.job .related-line{color:var(--color-muted);margin-block-start:calc(var(--space-unit) * .4);font-size:.85rem}@media (max-width:40rem){.job{grid-template-columns:1fr}.job .job-dates{margin-block-end:calc(var(--space-unit) * .15);padding-block-start:0}}.skills-block .skill-row{margin-block-end:calc(var(--space-unit) * .5)}.skills-block .skill-category{font-weight:700}.skills-block .skill-items{color:var(--color-muted)}.plain-list{list-style:none}.plain-list li{margin-block-end:calc(var(--space-unit) * .35)}.plain-list .muted{color:var(--color-muted);font-size:.9rem}details{margin-block-end:calc(var(--space-unit) * .5)}details summary{cursor:pointer;font-weight:700}details summary:hover{color:var(--color-accent)}details>.details-body{border-inline-start:2px solid var(--color-rule);margin-block-start:calc(var(--space-unit) * .4);padding-inline-start:var(--space-unit)}.timeline{list-style:none}.timeline .year-marker{font-family:var(--font-mono);color:var(--color-muted);margin-block:calc(var(--space-unit) * 1.5) calc(var(--space-unit) * .5);border-block-end:1px solid var(--color-rule);padding-block-end:calc(var(--space-unit) * .2);font-size:.85rem}.timeline .tl-entry{border-inline-start:2px solid var(--color-rule);margin-block-end:var(--space-unit);padding-inline-start:var(--space-unit)}.timeline .tl-entry.featured{border-inline-start:3px solid var(--color-accent);background:var(--color-accent-bg);padding-block:calc(var(--space-unit) * .5);padding-inline-end:calc(var(--space-unit) * .5)}.tl-entry .tl-name{font-weight:700}.tl-entry .tl-dates{color:var(--color-muted);font-size:.85rem}.tl-entry .tl-tagline{margin-block-start:calc(var(--space-unit) * .15)}.tl-entry .tl-meta{font-size:.8rem;font-family:var(--font-mono);color:var(--color-muted);margin-block-start:calc(var(--space-unit) * .2)}.project-head .tagline{color:var(--color-muted);margin-block-start:calc(var(--space-unit) * .25);font-size:1.05rem}.project-head .project-meta{color:var(--color-muted);margin-block-start:calc(var(--space-unit) * .5);font-size:.9rem}.project-head .project-meta p{margin-block-start:calc(var(--space-unit) * .15)}.project-head .tech-list{font-family:var(--font-mono);font-size:.8rem}.prev-next{justify-content:space-between;gap:var(--space-unit);border-block-start:1px solid var(--color-rule);margin-block-start:calc(var(--space-unit) * 2.5);padding-block-start:var(--space-unit);font-size:.95rem;display:flex}.prev-next .next{text-align:end;margin-inline-start:auto}.back-link{margin-block-start:var(--space-unit);font-size:.9rem;display:block}.prose>*+*{margin-block-start:calc(var(--space-unit) * .75)}.prose h2{margin-block-start:calc(var(--space-unit) * 1.5);font-size:1.1rem}.prose h3{margin-block-start:var(--space-unit);font-size:1rem}.prose ul,.prose ol{padding-inline-start:1.2em}.prose blockquote{border-inline-start:2px solid var(--color-rule);color:var(--color-muted);padding-inline-start:var(--space-unit)}
:root{--font-body:georgia, "Times New Roman", "Noto Serif", serif;--font-heading:georgia, "Times New Roman", "Noto Serif", serif;--font-mono:ui-monospace, "SF Mono", Menlo, Consolas, monospace;--color-bg:#fff;--color-text:#1a1a1a;--color-muted:#6b6b6b;--color-accent:#00d;--color-rule:#e2e2e2;--color-accent-bg:#f5f5f0;--measure:46rem;--space-unit:1rem}@media (prefers-color-scheme:dark){:root{--color-bg:#16160f;--color-text:#ddddd3;--color-muted:#8f8f85;--color-accent:#8db4ff;--color-rule:#34342c;--color-accent-bg:#201f18}}

