@font-face{font-family:Cabinet;src:url('assets/fonts/cabinet-700.woff2') format('woff2');font-weight:700;font-style:normal;font-display:swap}
@font-face{font-family:Geist;src:url('assets/fonts/geist-400.ttf') format('truetype');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:Geist;src:url('assets/fonts/geist-500.ttf') format('truetype');font-weight:500;font-style:normal;font-display:swap}
:root{color-scheme:light;--paper:#f9f9fb;--ink:#292938;--accent:#6254a4;--muted:#60616a;--line:#d8d9df;--gutter:clamp(1.3rem,5vw,5rem);--section-space:clamp(3rem,6vw,5rem);--motion:400ms cubic-bezier(.16,1,.3,1);font-family:Geist,Arial,sans-serif;font-size:clamp(1rem,.95rem + .2vw,1.125rem);line-height:1.65;color:var(--ink);background:var(--paper);-webkit-font-smoothing:antialiased}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:clamp(1.5rem,4vw,3rem)}
body{margin:0}
::selection{background:var(--accent);color:var(--paper)}
h1,h2,h3,p,figure,ul,dl,dd{margin:0}
h1,h2,h3{line-height:1.12;text-wrap:balance}
h1{font-family:Geist,Arial,sans-serif;font-weight:400;font-size:clamp(3.4rem,8.4vw,6.7rem);letter-spacing:-.065em;line-height:1.02}
h1 span{display:block}
h2,h3{font-family:Cabinet,Arial,sans-serif;font-weight:700;letter-spacing:-.035em}
h2{font-size:clamp(1.85rem,3.4vw,2.65rem);color:var(--accent)}
h3{font-size:clamp(1.25rem,2vw,1.65rem);line-height:1.2}
p,li,dd{font-size:clamp(1rem,.95rem + .2vw,1.08rem)}
a{color:inherit;text-decoration-thickness:.06em;text-underline-offset:.25em;touch-action:manipulation;-webkit-tap-highlight-color:transparent}
a:focus-visible{outline:.15rem solid var(--accent);outline-offset:.3rem}
.wrap{width:min(100%,81rem);margin-inline:auto;padding-inline:var(--gutter)}
.site-header{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:clamp(.5rem,2vw,1.5rem);padding-block:clamp(1rem,2.5vw,2rem);border-bottom:.0625rem solid var(--line)}
.cv-label{font-weight:500;font-size:clamp(.8rem,1vw,.9rem);letter-spacing:.08em;text-decoration:none;display:inline-flex;align-items:center;min-height:2.75rem}
nav{display:flex;align-items:center;gap:clamp(.7rem,2vw,2rem);flex-wrap:wrap}
nav a{font-size:clamp(.82rem,1vw,.92rem);display:inline-flex;align-items:center;gap:.7rem;min-height:2.75rem;text-decoration:none;position:relative}
nav a::after{content:'';position:absolute;inset:auto 0 .25rem;height:.0625rem;background:currentColor;transform:scaleX(0);transform-origin:left;transition:transform var(--motion)}
nav a:hover::after{transform:scaleX(1)}
.pdf-link{color:var(--accent);font-weight:500}
.intro{display:grid;grid-template-columns:minmax(0,1fr);grid-template-areas:"identity" "portrait" "profile";align-items:center;gap:clamp(2rem,6vw,5rem);padding-block:clamp(2.5rem,5vw,4.75rem) var(--section-space);border-bottom:.0625rem solid var(--line)}
.intro-copy{grid-area:identity;min-width:0}
.contact{font-style:normal;display:flex;flex-wrap:wrap;column-gap:clamp(1rem,2vw,2rem);row-gap:.35rem;margin-top:clamp(1.4rem,2.8vw,2.25rem)}
.contact a,.contact span{font-size:clamp(.93rem,1.2vw,1rem);display:inline-flex;align-items:center;min-height:2.75rem}
.contact a{text-decoration:none;position:relative}
.contact a:hover{color:var(--accent);text-decoration:underline}
.contact span{color:var(--muted)}
.profile{grid-area:profile;min-width:0;margin-top:0}
.profile h2{margin-bottom:clamp(.8rem,1.5vw,1.25rem)}
.profile p{max-width:57ch;font-size:clamp(1.05rem,1.3vw,1.2rem);line-height:1.7}
.portrait{grid-area:portrait;min-width:0;align-self:center}
.portrait img{display:block;width:100%;height:auto;aspect-ratio:767/732;object-fit:cover}
@media(min-width:54rem){
  .intro{grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);grid-template-areas:"identity portrait" "profile portrait";column-gap:clamp(2.5rem,6vw,5rem);row-gap:0}
  .profile{margin-top:clamp(1.75rem,3vw,2.5rem)}
}
.cv-layout{display:flex;flex-wrap:wrap;gap:clamp(3rem,7vw,6rem);padding-block:var(--section-space)}
.history{flex:2 1 35rem;min-width:0}
.facts{flex:1 1 17rem;min-width:0}
.cv-section+.cv-section{margin-top:var(--section-space)}
.cv-section>h2{margin-bottom:clamp(1.4rem,3vw,2rem)}
.entry{border-top:.0625rem solid var(--line);padding-block:clamp(1.4rem,2.5vw,2rem)}
.entry:last-child{padding-bottom:0}
.entry-heading{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:.4rem 1.25rem;margin-bottom:.4rem}
.entry-heading h3{flex:1 1 14rem}
.entry .date{flex:0 0 auto;font-size:clamp(.85rem,1.1vw,.95rem);color:var(--muted);white-space:nowrap}
.organization{color:var(--accent);font-size:clamp(.95rem,1.2vw,1rem);margin-bottom:.85rem}
.entry-heading+ p:not(.organization){margin-top:.8rem}
.plain-list{list-style:none;padding:0}
.plain-list li{padding-block:.65rem;border-top:.0625rem solid var(--line)}
.plain-list li:last-child{padding-bottom:0}
.text-link{color:var(--accent);display:inline-flex;gap:.8rem;align-items:center;min-height:2.75rem;max-width:100%;overflow-wrap:anywhere}
.languages>div{padding-block:.85rem;border-top:.0625rem solid var(--line)}
.languages>div:first-child{padding-top:.65rem}
.languages dt{font-weight:500;font-size:clamp(1rem,1.2vw,1.08rem)}
.languages dd{color:var(--muted);margin-top:.2rem;font-size:clamp(.95rem,1.1vw,1rem)}
footer{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:clamp(.6rem,2vw,1.5rem);border-top:.0625rem solid var(--line);padding-block:clamp(1.5rem,3vw,2.5rem)}
footer p,footer a{font-size:clamp(.82rem,1vw,.9rem)}
footer p:nth-child(2){color:var(--muted)}
.skip-link{position:fixed;z-index:10;left:1rem;top:1rem;padding:.7rem 1rem;background:var(--accent);color:var(--paper);transform:translateY(-200%);font-size:clamp(.9rem,1vw,1rem)}
.skip-link:focus{transform:translateY(0)}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{transition:none!important}}
@media print{@page{size:A4;margin:1.3cm}:root{font-size:clamp(9pt,9pt,9pt)}.site-header,.skip-link,footer>a{display:none}.wrap{padding:0}.intro{padding-block:0 1.5rem;gap:2rem}.intro-copy{flex-basis:60%}h1{font-size:clamp(3rem,3rem,3rem)}.portrait{flex-basis:20%;max-width:13rem}.contact{margin-top:.7rem}.profile{margin-top:.7rem}.cv-layout{gap:2rem;padding-block:1.5rem}.history{flex-basis:60%}.facts{flex-basis:25%}.entry{padding-block:.8rem;break-inside:avoid}.cv-section+.cv-section{margin-top:2rem}.cv-section>h2{margin-bottom:1rem}h2,h3{break-after:avoid}a{text-decoration:none}footer{padding-block:1rem}.plain-list li,.languages>div{padding-block:.35rem}}

/* Native disclosure controls: the complete row supports mouse, touch and keyboard. */
.cv-section:has(.section-hint)>h2{margin-bottom:.65rem}
.section-hint{font-size:clamp(.9rem,1.1vw,.98rem);color:var(--muted);margin-bottom:clamp(1.1rem,2vw,1.5rem)}
details.entry{padding:0}
details.entry>summary{list-style:none;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:clamp(.65rem,2vw,1.5rem);align-items:center;padding-block:clamp(1.1rem,2vw,1.5rem);cursor:pointer;touch-action:manipulation}
details.entry>summary::-webkit-details-marker{display:none}
details.entry>summary::marker{content:''}
details.entry>summary:focus-visible{outline:.15rem solid var(--accent);outline-offset:.3rem}
.summary-main{min-width:0}
.entry-title{font-family:Cabinet,Arial,sans-serif;font-weight:700;letter-spacing:-.035em;font-size:clamp(1.2rem,1.9vw,1.6rem);line-height:1.22;text-wrap:balance}
details.entry .entry-heading{margin:0;align-items:baseline;gap:.3rem 1rem}
details.entry .entry-title{flex:1 1 13rem}
details.entry .organization{display:block;margin:.4rem 0 0}
.disclosure{display:inline-flex;align-items:center;justify-content:center;width:2.75rem;min-height:2.75rem;color:var(--accent)}
.disclosure-symbol{position:relative;width:1.05rem;height:1.05rem;flex:0 0 auto;transition:transform var(--motion)}
.disclosure-symbol::before,.disclosure-symbol::after{content:'';position:absolute;inset:calc(50% - .05rem) 0 auto;height:.1rem;background:currentColor}
.disclosure-symbol::after{transform:rotate(90deg);transition:transform var(--motion)}
details[open] .disclosure-symbol::after{transform:rotate(0)}
.when-open,details[open] .when-closed{display:none}
details[open] .when-open{display:inline}
details.entry>summary:hover .disclosure-symbol{transform:scale(1.08)}
.entry-body{padding:0 0 clamp(1.3rem,2.5vw,1.8rem)}
.entry-body p{max-width:65ch}
@media print{.section-hint,.disclosure{display:none!important}details.entry>summary{display:block;padding-block:.6rem}details.entry::details-content{display:block!important;content-visibility:visible!important}.entry-body{display:block!important;padding-bottom:.7rem}details.entry .entry-title{font-size:clamp(1.2rem,1.2rem,1.2rem)}}

/* Accessible labels remain available without adding visible button chrome. */
.sr-only{position:absolute;width:.0625rem;height:.0625rem;padding:0;margin:-.0625rem;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
/* Let the content expand in place using the same restrained curve as the portfolio. */
@supports (interpolate-size:allow-keywords){
  details.entry{interpolate-size:allow-keywords}
  details.entry::details-content{block-size:0;overflow:clip;opacity:0;transition:block-size var(--motion),opacity 250ms cubic-bezier(.16,1,.3,1),content-visibility 400ms allow-discrete}
  details.entry[open]::details-content{block-size:auto;opacity:1}
}
@media(prefers-reduced-motion:reduce){details.entry::details-content,.disclosure-symbol{transition:none!important}}
@media print{details.entry::details-content{block-size:auto!important;opacity:1!important;overflow:visible!important}}

@media print{.intro{grid-template-columns:minmax(0,3fr) minmax(0,1fr);grid-template-areas:"identity portrait" "profile portrait";column-gap:2rem;row-gap:0}}
