:root{color-scheme:light;--paper:#f8f7f4;--ink:#292925;--muted:#6b6b63;--line:#dddcd5;--accent:#933c31;--selection:#e8d4ca;font-family:Arial,Helvetica,sans-serif;font-size:16px}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:30px}body{margin:0;background:var(--paper);color:var(--ink);line-height:1.65;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration-thickness:1px;text-underline-offset:4px}a:hover{color:var(--accent)}button,a,summary{-webkit-tap-highlight-color:transparent}a:focus-visible,button:focus-visible,summary:focus-visible{outline:2px solid var(--accent);outline-offset:5px}::selection{background:var(--selection)}.page{max-width:1060px;padding:0 48px;margin:auto}.header{display:flex;justify-content:space-between;align-items:center;gap:24px;padding:32px 0;border-bottom:1px solid var(--line)}.wordmark{font-size:16px;font-weight:600;text-decoration:none;letter-spacing:-.4px}.wordmark span,.accent{color:var(--accent)}nav{display:flex;gap:25px}nav a{font-size:13px;text-decoration:underline;color:var(--muted)}.intro{padding:88px 0 80px}.eyebrow{margin:0 0 25px;font-size:12px;letter-spacing:1.2px;color:var(--muted);text-transform:uppercase}h1{font-size:clamp(42px,5.5vw,66px);line-height:1.08;letter-spacing:-3px;font-weight:500;margin:0 0 35px}.intro-copy{max-width:670px;font-size:18px;line-height:1.75;letter-spacing:-.15px}.intro-copy p{margin:0 0 16px}.intro-copy a{color:var(--accent)}.intro-copy .personal{font-size:15px;color:var(--muted);margin-top:24px}.social-links{display:flex;gap:25px;flex-wrap:wrap;margin-top:28px;font-size:13px}.social-links a{text-decoration:underline}.social-links span{color:var(--muted);margin-left:3px}.section{display:grid;grid-template-columns:200px minmax(0,1fr);gap:26px;padding:45px 0 50px;border-top:1px solid var(--line)}.section-label h2{font-size:14px;font-weight:600;margin:0}.section-label{padding-top:3px}.label-note{display:block;font-size:11px;color:var(--muted);margin-top:6px}.count{font-size:12px;color:var(--muted);display:block;margin-top:4px;font-variant-numeric:tabular-nums}.section-hint{font-size:12px;color:var(--muted);margin:0 0 17px}.job{border-bottom:1px solid var(--line)}.job:last-child{border:0}.job summary{cursor:pointer;list-style:none;position:relative;padding:20px 32px 22px 0}.job summary::-webkit-details-marker{display:none}.job-heading{display:flex;justify-content:space-between;gap:16px;align-items:baseline}.company{font-weight:600;font-size:16px;letter-spacing:-.25px}.job-date{font-size:11px;color:var(--muted);white-space:nowrap}.job-role{display:block;font-size:13px;margin-top:3px}.job-description{display:block;font-size:13px;color:var(--muted);margin-top:7px;line-height:1.6}.toggle{position:absolute;right:1px;top:27px;width:10px;height:10px}.toggle:before,.toggle:after{content:'';position:absolute;background:var(--muted)}.toggle:before{width:10px;height:1px;top:5px}.toggle:after{height:10px;width:1px;left:5px}.job[open] .toggle:after{display:none}.job[open] .company{color:var(--accent)}.job-detail{font-size:14px;padding:0 28px 22px 0;line-height:1.75}.job-detail p{margin:0 0 12px}.job-detail p:last-child{margin-bottom:0}.job-detail ul{padding-left:18px;margin:0 0 15px}.job-detail li{padding-left:4px;margin-bottom:8px}.job-detail a{font-size:12px}.topic-filter{border-top:1px solid var(--line);padding:30px 0 34px;margin-top:12px}.filter-heading{display:flex;align-items:baseline;gap:18px;font-size:13px}.filter-note{font-size:11px;color:var(--muted)}.filter-buttons{display:flex;gap:25px;flex-wrap:wrap;margin:19px 0 12px}.filter-buttons button{font:inherit;font-size:13px;border:0;border-bottom:1px solid transparent;color:var(--muted);padding:5px 0;background:none;cursor:pointer}.filter-buttons button[aria-pressed=true]{color:var(--accent);border-color:var(--accent)}.filter-buttons button:hover{color:var(--ink)}.topic-key{font-size:10px;color:var(--muted);line-height:1.8;margin:12px 0 0}.entries{list-style:none;padding:0;margin:0}.entry{padding:0 0 22px;margin:0 0 22px;border-bottom:1px solid var(--line)}.entry:last-child{border:0;padding-bottom:0;margin-bottom:0}.entry-top{display:flex;align-items:baseline;justify-content:space-between;gap:22px}.entry-title{font-size:16px;font-weight:500;text-decoration:underline;line-height:1.5;letter-spacing:-.15px}.outbound{font-size:12px;color:var(--muted);display:inline-block;margin-left:7px}.year{font-size:11px;color:var(--muted);white-space:nowrap;font-variant-numeric:tabular-nums}.entry-meta{display:flex;flex-wrap:wrap;gap:6px 13px;font-size:11px;color:var(--muted);margin-top:7px;line-height:1.6}.entry-meta a{text-decoration:underline;color:var(--accent)}.topics{font-size:10px;letter-spacing:.25px}.entry-description{font-size:13px;color:var(--muted);margin:7px 0 0;line-height:1.7}h3{font-size:15px;font-weight:500;line-height:1.5;margin:0}.secondary-section h3{font-size:12px;color:var(--muted);margin-bottom:20px}.secondary-section .compact+h3{margin-top:35px}.compact .entry-title{font-size:14px}.subheading{font-size:12px;color:var(--muted);margin:30px 0 16px}.award{font-size:13px;color:var(--muted);line-height:1.8}.award strong{font-weight:500;color:var(--ink)}.contact p{font-size:14px;margin:0 0 10px}.email{font-size:clamp(13px,2vw,19px);text-decoration:underline;color:var(--accent);overflow-wrap:anywhere}.contact .social-links{margin-top:22px}footer{padding:25px 0 35px;border-top:1px solid var(--line);display:flex;justify-content:space-between;font-size:11px;color:var(--muted)}footer a{text-decoration:underline}.empty{font-size:14px;color:var(--muted);margin:0}[hidden]{display:none!important}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.skip-link{position:absolute;top:10px;left:10px;padding:10px;background:var(--paper);z-index:5;transform:translateY(-200%)}.skip-link:focus{transform:translateY(0)}@media(min-width:900px){.section-label{position:sticky;top:30px;align-self:start}}@media(max-width:700px){.page{padding:0 24px}.header{padding:23px 0;align-items:flex-start;gap:18px;flex-direction:column}nav{gap:23px}nav a{font-size:12px}.intro{padding:55px 0}.eyebrow{font-size:10px;letter-spacing:.8px}h1{letter-spacing:-2px}.intro-copy{font-size:16px}.intro-copy .personal{font-size:14px}.section{grid-template-columns:1fr;gap:24px;padding:30px 0 36px}.section-label{display:flex;align-items:baseline;gap:12px}.label-note,.count{margin-top:0}.section-label h2{font-size:13px}.job-heading{flex-direction:column;gap:2px}.job summary{padding-top:17px}.job-date{font-size:10px}.job-role{font-size:12px}.job-description{font-size:12px}.filter-buttons{gap:23px}.filter-heading{gap:13px}.entry-title{font-size:15px}.entry-top{gap:13px}.social-links{gap:20px}.topic-key{font-size:10px}footer{font-size:10px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}

/* Portrait and topic headings keep the page text-led. */
.intro-heading{display:flex;justify-content:space-between;align-items:center;gap:36px;margin-bottom:35px}
.intro-heading h1{margin-bottom:0}
.portrait{width:190px;height:190px;object-fit:cover;flex-shrink:0}
.work-topic{margin-top:22px}
.work-topic h3{font-size:12px;font-weight:600;color:var(--accent);margin:0 0 9px}
.job-detail a{font-size:inherit}
.entry-languages{font-size:11px;color:var(--muted);margin:8px 0 0}
@media(max-width:700px){.intro-heading{gap:22px;align-items:flex-start;flex-direction:column}.portrait{width:150px;height:150px}}

.collection .topic-filter{border-top:0;margin:0 0 26px;padding:0 0 22px;border-bottom:1px solid var(--line)}
.collection .filter-buttons{margin:10px 0 0}
.language-filter{display:flex;align-items:center;flex-wrap:wrap;gap:14px;margin-top:20px;font-size:12px;color:var(--muted)}
.language-filter select{font:inherit;color:var(--ink);background:var(--paper);border:1px solid var(--line);padding:7px 28px 7px 9px;border-radius:0;max-width:100%}
.language-filter select:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
span.entry-title{text-decoration:none}

nav{flex-wrap:wrap}
.collection-heading{margin:0 0 18px}
.subsection{margin-top:38px;padding-top:28px;border-top:1px solid var(--line)}
.subsection>h3{font-size:15px;font-weight:600;margin:0 0 22px}
.subsection h4{font-size:14px;font-weight:500;margin:0}
.degree-thesis{font-size:13px;margin:12px 0 0}

.page{min-height:100vh;display:flex;flex-direction:column}main{flex:1}nav a[aria-current="page"]{color:var(--ink);font-weight:600}main>.section:first-child{border-top:0;padding-top:55px}

.social-icons{gap:12px;margin-top:24px;margin-left:-10px}
.social-icons a{display:grid;place-items:center;width:44px;height:44px;color:var(--muted);text-decoration:none}
.social-icons a:hover,.social-icons a:focus-visible{color:var(--accent)}
.social-icons svg{display:block;width:20px;height:20px}

/* Filtered lists end at the last visible entry, not the last DOM child. */
.filter-entries > .entry:not([hidden]):not(:has(~ .entry:not([hidden]))){border-bottom:0;padding-bottom:0;margin-bottom:0}

.social-icons .cv-link{display:flex;align-items:center;justify-content:center;gap:7px;width:auto;min-width:44px;padding:0 10px}
.social-icons .cv-link span{margin:0;color:inherit;font-size:12px;text-decoration:underline;text-underline-offset:4px}

.language-list{margin:0;font-size:14px}.language-list>div{display:flex;gap:24px;margin-bottom:12px}.language-list dt{min-width:100px}.language-list dd{margin:0;color:var(--muted)}

/* Warm charcoal palette keeps the typography and understated accent. */
:root[data-theme="dark"]{color-scheme:dark;--paper:#1c1d1b;--ink:#e9e8e2;--muted:#abaea3;--line:#3d4038;--accent:#eda496;--selection:#63483f}
@media(prefers-color-scheme:dark){:root:not([data-theme]){color-scheme:dark;--paper:#1c1d1b;--ink:#e9e8e2;--muted:#abaea3;--line:#3d4038;--accent:#eda496;--selection:#63483f}}
.header-controls{display:flex;align-items:center;gap:20px}
.theme-toggle{display:flex;align-items:center;justify-content:center;gap:7px;flex-shrink:0;min-height:44px;padding:0 8px;border:0;background:none;color:var(--muted);font:inherit;font-size:12px;cursor:pointer}
.theme-toggle:hover,:root[data-theme="dark"] .theme-toggle{color:var(--accent)}
.theme-toggle svg{width:18px;height:18px}
@media(max-width:1000px){.header-controls{gap:12px}nav{gap:16px}.theme-toggle span{display:none}.theme-toggle{width:44px}}
@media(max-width:700px){.header-controls{width:100%;justify-content:space-between}nav{gap:14px}}
