:root{--bg:#fff;--surface:#f8fafc;--ink:#111827;--muted:#4b5563;--accent:#2563eb;--line:#dbe1e9;--card:#fff;--soft:#eff6ff;color-scheme:light}html[data-theme=dark]{--bg:#111827;--surface:#1f2937;--ink:#f9fafb;--muted:#c0c9d6;--accent:#60a5fa;--line:#374151;--card:#182231;--soft:#1e3a5f;color-scheme:dark}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:100px}body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.65 Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif}a{color:inherit;text-underline-offset:5px}a:hover{color:var(--accent)}button,select,input,textarea{font:inherit;color:inherit}button,a{touch-action:manipulation}button{cursor:pointer}button:focus-visible,a:focus-visible,select:focus-visible,input:focus-visible,textarea:focus-visible,summary:focus-visible{outline:3px solid var(--accent);outline-offset:5px}button{border:1px solid var(--line);background:var(--card);border-radius:6px;padding:10px 15px}img{max-width:100%;display:block}p{color:var(--muted)}h1,h2,h3,h4{line-height:1.14;letter-spacing:-.045em;margin-top:0}h1{font-size:clamp(3.2rem,5vw,4.8rem);font-weight:650;line-height:1.02;margin-bottom:27px}h2{font-size:clamp(2.4rem,4.4vw,4rem);font-weight:600;margin-bottom:24px}h3{font-size:1.65rem;font-weight:600}h4{font-size:1.15rem}small,.eyebrow,.meta{font-family:ui-monospace,SFMono-Regular,Consolas,monospace}.wrap{width:min(1184px,calc(100% - 80px));margin:auto}.skip{position:fixed;top:-90px;left:20px;z-index:100;background:var(--bg);padding:12px}.skip:focus{top:10px}.topbar{position:sticky;top:0;z-index:20;background:var(--bg);border-bottom:1px solid var(--line)}.nav{display:flex;align-items:center;gap:30px;min-height:86px}.brand{font-size:21px;font-weight:750;text-decoration:none;letter-spacing:-1px;white-space:nowrap}.brand span{color:var(--accent)}.navlinks{display:flex;gap:25px;margin-left:auto;align-items:center}.navlinks a{font-size:14px;text-decoration:none}.controls{display:flex;gap:7px;align-items:center}.language{padding:6px 4px;font-size:12px;font-weight:700;text-decoration:none}.theme{padding:6px;width:40px;height:40px;display:grid;place-items:center}.theme svg{width:19px;height:19px}.mobile-menu{display:none}.hero{padding:84px 0 58px;background:var(--bg)}html[data-theme=dark] .hero{background:var(--surface)}.hero-grid{display:grid;grid-template-columns:1.35fr .8fr;gap:85px;align-items:center}.eyebrow{font-size:11px;font-weight:550;letter-spacing:1.6px;text-transform:uppercase;color:var(--accent);margin-bottom:24px}.eyebrow::before{content:'';display:inline-block;background:var(--accent);width:24px;height:2px;vertical-align:middle;margin-right:12px}.hero h1 span{color:var(--accent)}.hero .intro{max-width:570px;font-size:18px;line-height:1.75;margin:0 0 29px}.actions{display:flex;gap:12px;flex-wrap:wrap;align-items:center}.button{display:inline-flex;align-items:center;gap:25px;text-decoration:none;padding:12px 19px;border:1px solid var(--line);border-radius:5px;background:var(--card);font-size:14px;font-weight:600}.primary{background:#2563eb;color:#fff;border-color:#2563eb}.primary:hover{background:#1d4ed8;color:#fff}.portrait{position:relative;padding:0 20px 22px 0}.portrait img{width:100%;height:auto;aspect-ratio:4/4.8;object-fit:cover;object-position:center 25%;border-radius:110px 8px 8px 8px;position:relative;z-index:1;filter:saturate(.85)}.portrait::before{content:'';position:absolute;inset:26px 0 0 25px;border:1px solid var(--accent);border-radius:100px 8px 8px 8px}.portrait .caption{position:absolute;right:-20px;bottom:42px;z-index:2;background:var(--card);border:1px solid var(--line);padding:13px 19px;font-size:12px;box-shadow:0 8px 25px #0000000a}.caption strong{display:block;font-size:14px}.hero-bottom{display:flex;justify-content:space-between;gap:25px;margin-top:65px;padding-top:22px;border-top:1px solid var(--line);font-size:12px;color:var(--muted)}.hero-bottom a{text-decoration:none}.section{padding:95px 0}.section-head{display:flex;justify-content:space-between;gap:40px;align-items:end;margin-bottom:35px}.section-head p{max-width:380px;font-size:15px}.section-head h2{margin-bottom:0}.filters{display:flex;gap:9px;flex-wrap:wrap;margin-bottom:30px}.filters button{border-radius:30px;padding:8px 18px;font-size:13px}.filters button[aria-pressed=true]{background:var(--ink);color:var(--bg);border-color:var(--ink)}.project-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}.project{min-width:0}.project[hidden]{display:none}.project-media{aspect-ratio:1.48;background:var(--surface);border:1px solid var(--line);overflow:hidden;border-radius:8px;margin-bottom:22px;display:flex;align-items:center;justify-content:center;position:relative}.project-media img{width:100%;height:100%;object-fit:contain;padding:13px}.project .meta{font-size:10px;letter-spacing:1px;color:var(--accent);margin-bottom:12px}.project h3{font-size:24px;margin-bottom:12px}.project h3 a{text-decoration:none}.project>p{font-size:14px;line-height:1.75;margin-bottom:17px}.tags{display:flex;flex-wrap:wrap;gap:7px;list-style:none;padding:0;margin:0 0 18px}.tags li{font-size:11px;border:1px solid var(--line);padding:3px 9px;border-radius:4px;color:var(--muted)}.text-link{font-size:13px;font-weight:650}.project-grid>.project:nth-child(n+4){margin-top:15px}.diagram{width:85%;font-size:12px}.diagram .node{border:1px solid var(--line);background:var(--card);padding:11px 15px;border-radius:6px;display:flex;justify-content:space-between}.diagram .arrow{color:var(--accent);text-align:center;font-size:19px;line-height:1.6}.diagram .node:last-child{border-color:var(--accent)}.schema{display:grid;grid-template-columns:1fr 1fr;gap:9px;width:80%;transform:rotate(-4deg)}.schema span{border:1px solid var(--line);padding:17px 12px;background:var(--card);font-family:monospace;font-size:12px;border-radius:5px}.schema span:last-child{grid-column:span 2;border-color:var(--accent);text-align:center;color:var(--accent)}.research-art{font-size:46px;letter-spacing:-3px;color:var(--accent);font-weight:600}.research-art span{display:block;font:11px monospace;letter-spacing:2px;text-align:center;margin-top:9px}.quiet{background:var(--surface)}.experience-grid{display:grid;grid-template-columns:.72fr 1.45fr;gap:100px}.experience-grid .lead{font-size:16px}.timeline{border-top:1px solid var(--line)}.timeline article{display:grid;grid-template-columns:125px 1fr;gap:25px;padding:27px 0;border-bottom:1px solid var(--line)}.timeline time{font:11px/1.7 monospace;color:var(--muted)}.timeline h3{font-size:20px;margin-bottom:7px;letter-spacing:-.025em}.timeline .role{color:var(--accent);font-size:13px;margin:0 0 10px}.timeline p{font-size:14px;margin:0}.education{border-top:1px solid var(--line);padding-top:24px;margin-top:35px}.education h3{font-size:22px;margin:0 0 10px}.education p{font-size:14px}.school-date{font:11px monospace;color:var(--accent)}.skills{margin-top:30px}.skills ul{padding-left:18px;color:var(--muted);font-size:14px}.cert-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:30px;margin-top:37px}.cert{border-top:2px solid var(--accent);padding-top:24px}.cert h3{font-size:20px;margin:10px 0}.cert p{font-size:14px}.cert small{font-size:11px;color:var(--muted)}.research-band{display:grid;grid-template-columns:1fr 1fr;gap:80px;border-bottom:1px solid var(--line);padding-bottom:48px;margin-bottom:50px}.research-band h3{font-size:28px}.contact-grid{display:grid;grid-template-columns:1.15fr 1fr;gap:80px}.contact h2{max-width:590px}.email{font-size:clamp(1.1rem,2.5vw,1.8rem);letter-spacing:-.025em}.contact-right{padding-top:52px}.contact-right p{margin-top:0}.social{display:flex;gap:22px;margin:25px 0}.social a{font-size:14px}.footer{display:flex;justify-content:space-between;gap:20px;border-top:1px solid var(--line);padding:25px 0;font-size:11px;color:var(--muted)}.detail{max-width:820px;padding:70px 0}.detail h1{font-size:clamp(2.6rem,5vw,4.5rem);margin-top:25px}.detail h2{font-size:26px;letter-spacing:-.025em;margin-top:40px}.detail .project-media{margin:30px 0;aspect-ratio:1.8}.detail .project-media img{object-fit:contain}.note{font-size:13px;padding:18px;border-left:3px solid var(--accent);background:var(--surface)}.admin{max-width:850px;margin:50px auto;padding:20px}.admin label{display:block;margin:12px 0}.admin textarea,.admin input{display:block;width:100%;padding:10px;background:var(--card);border:1px solid var(--line)}.admin article{padding:24px;border:1px solid var(--line);margin:20px 0}.status{font-size:13px;color:var(--muted);min-height:23px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}
@media(min-width:1500px){.hero{padding-top:100px;padding-bottom:65px}}@media(max-width:1000px){.wrap{width:calc(100% - 48px)}.nav{gap:18px}.navlinks{gap:17px}.hero-grid{gap:40px}.hero h1{font-size:4.2rem}.portrait .caption{right:0}.experience-grid{gap:45px}.project-grid{grid-template-columns:repeat(2,1fr)}.project-grid>.project:nth-child(n+3){margin-top:15px}}@media(max-width:700px){.wrap{width:calc(100% - 38px)}.nav{min-height:72px;flex-wrap:wrap;gap:10px}.brand{font-size:20px}.controls{margin-left:auto}.mobile-menu{display:block;padding:6px 9px}.navlinks{display:none;order:3;flex-basis:100%;padding:8px 0 20px;flex-wrap:wrap;margin-left:0;gap:18px}.navlinks.open{display:flex}.hero{padding:45px 0 30px}.hero-grid{grid-template-columns:1fr;gap:40px}.hero h1{font-size:3.6rem}.hero .intro{font-size:16px}.portrait{width:min(320px,90%);margin:0 auto}.hero-bottom{margin-top:32px;flex-wrap:wrap;font-size:11px}.section{padding:65px 0}.section-head{display:block}.section-head p{max-width:none}.project-grid,.experience-grid,.cert-grid,.research-band,.contact-grid{grid-template-columns:1fr;gap:30px}.project-grid{gap:36px}.project-grid>.project:nth-child(n){margin-top:0}.project-media{aspect-ratio:1.6}.timeline article{grid-template-columns:88px 1fr;gap:15px}.timeline time{font-size:10px}.contact-right{padding-top:0}.footer{flex-wrap:wrap}.detail{padding-top:40px}.filters{gap:7px}.filters button{padding:7px 13px;font-size:12px}.research-band{gap:20px}.cert-grid{gap:20px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}}
.dashboard{max-width:1360px;margin:0 auto;padding:35px;display:grid;grid-template-columns:225px 1fr;gap:35px}.dashboard-header{grid-column:1/-1;display:flex;justify-content:space-between;gap:20px;border-bottom:1px solid var(--line);padding-bottom:20px}.dashboard-header h1{font-size:2.5rem;margin:12px 0 0}.dashboard-header a{font-size:13px}.dashboard-nav{align-self:start;position:sticky;top:20px}.dashboard-nav button{display:block;width:100%;text-align:left;margin-bottom:6px;background:transparent;border-color:transparent}.dashboard-nav button[aria-current=page]{background:var(--soft);color:var(--accent);border-color:var(--line)}.dashboard-body{min-width:0}.dashboard-body .admin{margin:0;padding:0}.dashboard-body h2{font-size:2rem}.dashboard-body h3{font-size:1.3rem}.dashboard-body label{display:block;font-size:13px;font-weight:600;margin:17px 0}.dashboard-body input:not([type=checkbox]),.dashboard-body textarea,.dashboard-body select{display:block;width:100%;padding:10px 12px;border:1px solid var(--line);border-radius:5px;background:var(--card);font-weight:400;margin-top:6px;min-width:0}.dashboard-body textarea{min-height:100px;resize:vertical}.dashboard-body input[type=checkbox]{margin-right:8px}.dashboard-body fieldset{border:1px solid var(--line);border-radius:6px;padding:20px;min-width:0}.dashboard-body legend{font-size:13px;color:var(--accent);font-weight:700}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.entry-row{border:1px solid var(--line);padding:18px;margin:12px 0;border-radius:7px;display:flex;align-items:center;justify-content:space-between;gap:20px}.entry-row strong{display:block}.entry-row small{font-size:11px;color:var(--muted)}.entry-actions{display:flex;gap:6px;flex-wrap:wrap}.entry-actions button{padding:7px 10px;font-size:12px}.editor-card{margin-top:24px;padding:25px;background:var(--surface);border:1px solid var(--line);border-radius:8px}.dashboard button:disabled{opacity:.5;cursor:not-allowed}.upload-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.upload-card{border:1px solid var(--line);border-radius:8px;padding:20px}.upload-card img{max-height:160px;object-fit:contain;margin-bottom:15px}.order-note{font-size:13px}.danger{color:#b91c1c}.dashboard .note{font-size:12px}.dashboard #save-status{font-size:12px}.dashboard .actions{margin:20px 0}.dashboard .primary{background:#2563eb;color:white}.unsaved{color:var(--accent)}
@media(max-width:850px){.dashboard{grid-template-columns:1fr;padding:20px;gap:24px}.dashboard-nav{position:static}.dashboard-nav #dashboard-tabs{display:flex;flex-wrap:wrap;gap:6px}.dashboard-nav button{width:auto}.upload-grid{grid-template-columns:1fr}.form-grid{grid-template-columns:1fr}.dashboard-header h1{font-size:2rem}.entry-row{align-items:start;flex-direction:column}.dashboard #connection-note{margin:10px 0}}

.case-findings{margin:44px 0;padding:30px;border:1px solid var(--line);border-radius:12px;background:var(--surface)}.detail .case-findings h2{margin:12px 0 28px}.case-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;margin:0}.case-metrics dt{font-size:.8rem;line-height:1.5}.case-metrics dd{margin:10px 0 0;font-size:clamp(1.3rem,2.4vw,1.8rem);font-weight:650;letter-spacing:-.04em;line-height:1.25}.detail .method-note{font-size:.85rem;line-height:1.7;margin:26px 0 0}.evidence-list{list-style:none;counter-reset:evidence;padding:0;margin:24px 0 48px}.evidence-list li{counter-increment:evidence;border-top:1px solid var(--line);padding:20px 0 20px 42px;position:relative}.evidence-list li:before{content:'0' counter(evidence);position:absolute;left:0;top:23px;font-size:.75rem}.evidence-list a{font-weight:650;text-underline-offset:5px}.detail .evidence-list p{font-size:.9rem;margin:10px 0 0;line-height:1.65}.editor-card [data-detail]{margin:16px 0;padding:20px;min-width:0}.case-metrics div{min-width:0;overflow-wrap:anywhere}@media(max-width:640px){.case-findings{padding:22px}.case-metrics{grid-template-columns:1fr;gap:22px}.case-metrics dd{margin-top:5px}.case-metrics div+div{padding-top:18px;border-top:1px solid var(--line)}}

.completion-certificates{margin-top:28px;padding-top:20px;border-top:1px solid var(--line)}.completion-certificates h3{font-size:1.15rem;letter-spacing:-.02em}.completion-certificates ul{padding-left:20px}.completion-certificates li+li{margin-top:10px}.certificate-editor{margin:26px 0;border-top:1px solid var(--line);padding-top:24px}.certificate-editor fieldset{margin:16px 0}.certificate-editor [hidden]{display:none}

.conservation-art{width:100%;padding:36px;display:flex;flex-direction:column;justify-content:center;gap:12px;background:var(--soft);color:var(--ink);height:100%;min-height:250px}.conservation-place{font-family:ui-monospace,monospace;letter-spacing:.1em;font-size:.65rem;color:var(--accent)}.conservation-art strong{font-size:clamp(1.7rem,3vw,2.8rem);line-height:1.1;letter-spacing:-.04em}.conservation-sub{font-size:.85rem;color:var(--muted)}.conservation-steps{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:24px;border-top:1px solid var(--line);padding-top:20px}.conservation-steps span{display:flex;flex-direction:column;font-size:.75rem;gap:8px}.conservation-steps small{color:var(--accent)}@media(max-width:480px){.conservation-art{padding:24px}.conservation-steps{gap:8px}.conservation-steps span{font-size:.65rem}}

.detail .image-credit{font-size:.75rem;line-height:1.6;margin:-16px 0 28px}.case-metrics{grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}

.experience-brands{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:0 0 16px}.brand-tile{display:flex;align-items:center;justify-content:center;min-width:100px;height:56px;padding:8px 12px;border:1px solid #e2e8f0;border-radius:6px;background:#fff}.brand-tile img{width:108px;height:40px;object-fit:contain}.extern-tile{min-width:84px}.extern-tile img{width:68px;height:16px}.via-label{font:11px ui-monospace,monospace;color:var(--muted)}.project-more{text-align:center;margin-top:28px}.editor-card [hidden]{display:none!important}.project-more button[hidden]{display:none}
.project-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.brand-tile:first-child{min-width:148px}.brand-tile:first-child img{width:124px}@media(max-width:640px){.project-grid{grid-template-columns:1fr}}

.brand-tile{overflow:hidden}.brand-tile img[src$="pfizer.png"],.brand-tile img[src$="breaking-games.png"]{transform:scale(1.8)}

.branded-cover{width:100%;height:100%;position:relative;overflow:hidden}.branded-cover>.cover-art{width:100%;height:100%;object-fit:cover}.cover-brand{position:absolute;left:18px;bottom:18px;display:grid;place-items:center;width:86px;height:86px;border-radius:50%;background:#fff;box-shadow:0 4px 18px #0002;overflow:hidden}.project-media .cover-brand img{width:100%;height:100%;object-fit:contain;transform:scale(1.25)}.paper-preview{width:100%;height:100%;position:relative;overflow:hidden;background:#e6edf7}.project-media .paper-preview>.cover-art{position:absolute;top:20px;left:18%;width:70%;height:auto;max-width:none;transform:rotate(-5deg);object-fit:contain;box-shadow:0 8px 28px #11182726}.paper-preview-label{position:absolute;bottom:0;left:0;right:0;padding:65px 24px 22px;background:linear-gradient(transparent,#111827f5);color:#fff}.paper-preview-label strong{display:block;font-size:1.5rem;letter-spacing:-.03em}.paper-preview-label span{display:block;font:11px ui-monospace,monospace;margin-top:6px;color:#e2e8f0}@media(max-width:480px){.cover-brand{width:68px;height:68px;left:12px;bottom:12px}}

.credential-row-head{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-top:40px}.credential-controls{display:flex;gap:8px}.credential-controls button{min-width:44px;min-height:44px;border:1px solid var(--line);border-radius:50%;background:var(--bg);color:var(--ink);cursor:pointer}.credential-track{display:flex;gap:24px;overflow-x:auto;scroll-snap-type:x mandatory;padding:8px 4px 24px;scroll-padding:4px;overscroll-behavior-x:contain}.credential-track .cert{flex:0 0 min(350px,85vw);scroll-snap-align:start;padding:0;border:1px solid var(--line);border-radius:12px;overflow:hidden;background:var(--bg)}.credential-preview{display:flex;height:235px;background:#ebe9e3;padding:16px;align-items:center;justify-content:center}.credential-preview img{width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 3px 5px #0002);transition:transform .2s}.credential-preview:hover img{transform:scale(1.025)}.credential-body{padding:24px}.credential-body h4{font-size:1.18rem;margin:12px 0}.credential-body .text-link{display:block;margin-top:14px}.credential-hint{font-size:.9rem}.credential-track:focus-visible{outline:2px solid currentColor;outline-offset:4px}@media(prefers-reduced-motion:reduce){.credential-preview img{transition:none}}

.credential-track{align-items:flex-start}.credential-track .cert{flex-basis:min(390px,85vw)}.credential-preview{height:180px;padding:12px}.credential-body{padding:18px 20px}.credential-body h4{margin:8px 0;font-size:1.12rem}.credential-body p{font-size:.93rem;line-height:1.5;margin:10px 0}.credential-body .text-link{font-size:.88rem;margin-top:10px}.credential-track .distinction-card{flex-basis:min(570px,85vw);display:flex;align-items:stretch}.distinction-card>.credential-preview{flex:0 0 40%;height:220px;padding:0;overflow:hidden}.distinction-card>.credential-body{flex:1;min-width:0}.credential-preview .paper-preview>.cover-art{position:absolute;top:15px;left:12%;width:82%;height:auto;max-width:none;transform:rotate(-5deg);object-fit:contain;box-shadow:0 8px 28px #11182726}.credential-preview .paper-preview-label{padding:45px 14px 15px}.credential-preview .paper-preview-label strong{font-size:1.2rem}.credential-preview .paper-preview-label span{font-size:10px}@media(max-width:560px){.credential-track .distinction-card{flex-basis:85vw}.distinction-card>.credential-preview{flex-basis:34%;height:auto;min-height:210px}.credential-body{padding:16px}.credential-preview .paper-preview-label{padding:35px 10px 12px}.credential-preview .paper-preview-label strong{font-size:1rem}}

#credentials-distinction{align-items:stretch}#credentials-distinction .distinction-card{min-height:246px}#credentials-distinction .distinction-card>.credential-preview{height:auto;min-height:220px}.entry-position{display:flex!important;align-items:center;gap:8px;margin:0!important}.entry-position select{width:auto!important;margin:0!important;padding:6px 10px!important;min-height:40px}
.credential-track{align-items:stretch}

.credential-track .grouped-distinction{flex-basis:min(620px,85vw)}.grouped-distinction>.credential-body{padding:23px 26px;width:100%}.grouped-distinction .credential-body>h4{font-size:1.35rem;margin:0 0 18px}.distinction-item+.distinction-item{border-top:1px solid var(--line);padding-top:15px;margin-top:15px}.distinction-item-heading{display:flex;align-items:baseline;justify-content:space-between;gap:16px}.distinction-item h5{font-size:1rem;line-height:1.35;letter-spacing:-.02em;margin:0;font-weight:650}.distinction-date{font:11px ui-monospace,monospace;white-space:nowrap;color:var(--accent);background:var(--soft);border-radius:4px;padding:4px 7px}.distinction-item p{font-size:.88rem;line-height:1.5;margin:7px 0 0;max-width:58ch}.grouped-distinction .distinction-items{border-left:2px solid var(--accent);padding-left:15px}#credential-items fieldset{margin:15px 0}@media(max-width:560px){.grouped-distinction>.credential-body{padding:20px}.distinction-item-heading{display:block}.distinction-date{display:inline-block;margin-top:7px}.distinction-item p{font-size:.87rem}}

#credentials-distinction .cert{flex-basis:min(620px,85vw)}
.brand-tile:has(img[src$="market-theatre.png"]){width:78px;height:78px;padding:6px;background:#050909}.brand-tile img[src$="market-theatre.png"]{width:64px;height:64px;object-fit:contain}
/* Skills and experience details share the portfolio's existing theme tokens. */
.skill-groups{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px;margin-top:36px}.skill-group{padding:26px;border:1px solid var(--line);border-radius:12px;background:var(--card)}.skill-group h3{font-size:1.35rem;margin-bottom:18px}.skill-chips{display:flex;flex-wrap:wrap;gap:8px;list-style:none;padding:0;margin:0}.skill-chips li{font-size:.84rem;line-height:1.5;padding:6px 10px;border:1px solid var(--line);background:var(--surface);border-radius:6px}.skill-group details{margin-top:20px;font-size:.87rem}.skill-group summary{cursor:pointer;color:var(--accent)}.skill-group details ul{padding-left:20px}.skill-group details li{margin:6px 0}.experience-more{display:inline-block;margin-top:6px;font-size:.84rem;font-weight:600;text-decoration:none;border-bottom:1px solid var(--line);color:var(--muted);padding:3px 0}.experience-more:hover{border-color:var(--accent);color:var(--accent)}.experience-detail-head{margin-top:32px}.experience-detail-head h1{font-size:clamp(2.3rem,5vw,3.7rem);margin:20px 0}.experience-facts{display:flex;flex-wrap:wrap;gap:10px 18px;margin:22px 0;font-size:.84rem;color:var(--accent)}.experience-facts span{border-left:2px solid var(--accent);padding-left:10px}.experience-detail-head>p:last-child{font-size:1.12rem;line-height:1.75}.experience-chapter{margin-top:38px}.experience-chapter h2{font-size:1.6rem;margin-bottom:16px}.experience-chapter p,.experience-chapter li{line-height:1.8;color:var(--muted)}.experience-projects{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:25px}.experience-projects article:only-child{grid-column:1/-1}.experience-projects .project-media{height:260px}.experience-projects h3{font-size:1.5rem;margin:20px 0 10px}.experience-cover{margin:30px 0}.experience-cover img{width:100%;height:auto;max-height:500px;object-fit:contain;border-radius:12px}.reference-note{padding:22px 25px;margin-top:45px;background:var(--surface);border-left:3px solid var(--accent);border-radius:0 8px 8px 0}.reference-note h2{font-size:1rem;margin:0 0 8px}.reference-note p{font-size:.9rem;margin:0}.text-editor{margin:17px 0}.text-editor>label{margin:0!important}.format-toolbar{display:flex;flex-wrap:wrap;gap:5px;margin:8px 0}.format-toolbar button{min-width:38px;min-height:36px;padding:5px 10px;font-size:.9rem;background:var(--card)}.format-toolbar [data-format=bold]{font-weight:800}.format-toolbar [data-format=italic]{font-style:italic}.format-preview{font-size:.85rem;margin-top:8px;color:var(--muted)}.format-preview summary{cursor:pointer}.format-preview>div{padding:12px 16px;border:1px solid var(--line);border-radius:6px;margin-top:10px}.format-preview p{margin:8px 0}.learned-skills-editor{margin:24px 0;padding:18px;border:1px solid var(--line);border-radius:8px}.learned-skills-editor fieldset{margin:16px 0}code{font: .88em ui-monospace,monospace;background:var(--soft);padding:2px 5px;border-radius:4px}@media(max-width:640px){.skill-groups,.experience-projects{grid-template-columns:1fr}.skill-group{padding:22px}.experience-detail-head h1{font-size:2.3rem}.experience-projects .project-media{height:220px}.experience-facts{display:grid}}
/* Academic home and semester abroad: one journey, distinct levels of study. */
#experience .experience-grid{grid-template-columns:minmax(320px,.92fr) minmax(0,1.35fr);gap:64px}.experience-intro{min-width:0;align-self:start}.experience-intro>h2{font-size:clamp(2.5rem,3.5vw,3.4rem);line-height:1.04;max-width:12ch}.experience-intro>.lead{max-width:38ch}.academic-journey{margin-top:38px;padding:25px 26px 28px;background:var(--card);border:1px solid var(--line);border-radius:3px 32px 3px 3px;position:relative;overflow:hidden}.academic-journey::before{content:'';position:absolute;left:0;top:0;width:58px;height:3px;background:var(--accent)}.academic-label{font:10px ui-monospace,monospace;letter-spacing:1.8px;color:var(--muted);margin-bottom:25px}.academic-stops{position:relative;padding-left:18px;border-left:1px solid var(--line)}.academic-stop{position:relative}.academic-stop::before{content:'';position:absolute;width:8px;height:8px;border-radius:50%;left:-23px;top:5px;background:var(--accent);box-shadow:0 0 0 4px var(--card)}.academic-stop-meta{display:flex;justify-content:space-between;align-items:start;gap:14px;font:9px/1.6 ui-monospace,monospace;color:var(--accent);letter-spacing:.65px;margin-bottom:17px}.academic-period{text-align:right;white-space:nowrap;letter-spacing:0;color:var(--muted)}.academic-period small{display:block;font-size:8px;line-height:1.5;letter-spacing:0}.academic-degree .academic-institution{font-size:clamp(1.9rem,2.6vw,2.45rem);line-height:1.06;letter-spacing:-.05em;margin:0 0 13px;max-width:9ch}.academic-program{font-size:1rem;line-height:1.4;letter-spacing:-.02em;margin:0 0 14px;font-weight:550}.academic-description{font-size:.85rem;line-height:1.7}.academic-description p{margin:0}.academic-exchange,.academic-course{border-top:1px solid var(--line);margin-top:27px;padding-top:24px}.academic-exchange::before,.academic-course::before{top:30px;background:var(--card);border:1px solid var(--accent);width:7px;height:7px}.academic-exchange .academic-institution,.academic-course .academic-institution{font-size:1.08rem;line-height:1.3;margin:0 0 8px;letter-spacing:-.025em}.academic-exchange .academic-program,.academic-course .academic-program{font-size:.86rem;color:var(--accent);margin-bottom:10px}.academic-exchange .academic-description,.academic-course .academic-description{font-size:.8rem}.academic-toolkit{margin-top:18px;display:flex;align-items:center;justify-content:space-between;gap:16px;text-decoration:none;padding:16px 4px;border-bottom:1px solid var(--line)}.academic-toolkit small{display:block;color:var(--muted);font-size:10px;margin-bottom:4px}.academic-toolkit strong{font-size:.85rem;font-weight:550}.toolkit-arrow{width:34px;height:34px;border:1px solid var(--line);border-radius:50%;display:grid;place-items:center;color:var(--accent)}@media(max-width:1000px){#experience .experience-grid{gap:35px;grid-template-columns:minmax(300px,.95fr) minmax(0,1.1fr)}#experience .timeline article{grid-template-columns:85px minmax(0,1fr);gap:16px}.academic-journey{padding:24px 21px}}@media(max-width:780px){#experience .experience-grid{grid-template-columns:1fr;gap:42px}.experience-intro>h2{max-width:16ch}.experience-intro>.lead{max-width:60ch}.academic-journey{max-width:620px}.academic-toolkit{max-width:620px}.academic-degree .academic-institution{max-width:none}.academic-stop-meta{font-size:10px}.academic-period small{font-size:9px}}@media(max-width:420px){.academic-stop-meta{flex-wrap:wrap;gap:8px}.academic-period{text-align:left}.academic-period small{display:inline;margin-right:6px}.academic-journey{padding:22px 19px}.academic-degree .academic-institution{font-size:2rem}}
.experience-story{container-type:inline-size;padding:24px 23px 25px;border:1px solid var(--line);border-top:2px solid var(--accent);border-radius:4px 18px 4px 4px;background:var(--card)}.experience-story h2{font-size:clamp(1.25rem,8.2cqi,2.1rem);line-height:1.25;letter-spacing:-.035em;margin:0 0 18px;max-width:none;white-space:nowrap;text-align:justify;text-align-last:justify}.experience-story h2 span{color:var(--accent)}.experience-story .lead{max-width:none}.experience-story .lead p{margin:0;font-size:.94rem;line-height:1.85;text-align:justify;text-align-last:justify;hyphens:auto;overflow-wrap:break-word;text-wrap:pretty}.experience-story+.academic-journey{margin-top:24px}@media(max-width:420px){.experience-story{padding:21px 19px}.experience-story .lead p{font-size:.9rem;line-height:1.85}}

.experience-story h2:lang(en){font-size:clamp(1.25rem,9.2cqi,2.35rem)}
/* A compact opening spread, then a balanced experience grid. */
#experience .experience-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:32px;align-items:start}#experience .experience-intro{display:flex;flex-direction:column;align-self:stretch;gap:0}#experience .academic-journey{margin:0;height:100%}#experience .academic-toolkit{margin:22px 0 0;display:grid;grid-template-columns:minmax(0,1fr) 48px;gap:20px;align-items:center;padding:23px 25px;background:var(--soft);border:1px solid var(--accent);border-radius:10px;text-decoration:none;max-width:none}#experience .academic-toolkit:hover{box-shadow:0 4px 16px #00000009}#experience .academic-toolkit small{font-size:10px;color:var(--muted);margin-bottom:7px}#experience .academic-toolkit strong{font-size:1.22rem;line-height:1.25;letter-spacing:-.025em;color:var(--ink)}.toolkit-detail{display:block;margin-top:10px;font-size:.85rem;line-height:1.65;color:var(--muted)}.toolkit-tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:15px}.toolkit-tags>span{font:10px ui-monospace,monospace;padding:5px 8px;border:1px solid var(--line);background:var(--card);border-radius:4px;color:var(--muted)}#experience .toolkit-arrow{width:46px;height:46px;border:0;background:#2563eb;color:#fff;font-size:1.4rem}#experience .timeline{grid-column:1/-1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px;border:0;margin-top:16px}#experience .timeline article{display:flex;flex-direction:column;gap:17px;padding:26px 28px;border:1px solid var(--line);background:var(--card);border-radius:10px;min-width:0}#experience .timeline article>div{display:flex;flex-direction:column;align-items:flex-start;flex:1;min-width:0}#experience .timeline article time{font-size:10px;line-height:1.5;color:var(--muted);letter-spacing:.3px}#experience .timeline .experience-brands{margin-bottom:17px}#experience .timeline article h3{font-size:1.25rem;line-height:1.3;margin-bottom:9px}#experience .timeline .role{font-size:.82rem;line-height:1.6;margin:0 0 15px;text-align:start}#experience .timeline article>div>p:not(.role){font-size:.88rem;line-height:1.85;width:100%}#experience .timeline .experience-more{margin-top:auto;padding-top:18px}#experience .lead p,#experience .academic-description p,#experience .timeline article>div>p:not(.role),#experience .toolkit-detail{text-align:justify;text-align-last:start;hyphens:auto;overflow-wrap:break-word;text-wrap:pretty}#experience .experience-story h2{text-align:start;text-align-last:start;white-space:normal;text-wrap:balance}#experience .experience-story .lead p{line-height:1.85}@media(max-width:780px){#experience .experience-grid{grid-template-columns:1fr;gap:26px}#experience .academic-journey{max-width:none;height:auto}#experience .timeline{margin-top:8px}.academic-stops{padding-left:20px}}@media(max-width:640px){#experience .timeline{grid-template-columns:1fr;gap:18px}#experience .timeline article{padding:24px}#experience .academic-toolkit{padding:21px;grid-template-columns:minmax(0,1fr) 40px;gap:14px}#experience .toolkit-arrow{width:40px;height:40px}}
#experience .academic-toolkit{flex:1;min-height:168px}
/* Shared grid rows keep the academic card aligned with the experience list. */
#experience .experience-grid{grid-template-columns:minmax(300px,.85fr) minmax(0,1.35fr);column-gap:40px;row-gap:24px;align-items:stretch}#experience .experience-intro{grid-column:1/-1;grid-row:1;display:block;align-self:start;margin-bottom:8px}#experience .experience-story{display:grid;grid-template-columns:.85fr 1.35fr;gap:38px;align-items:center}#experience .experience-story h2{margin:0}#experience .timeline{display:contents}#experience .timeline>article{grid-column:2;grid-row:var(--experience-row);margin:0}#experience .academic-journey{--academic-inset:26px;grid-column:1;grid-row:2/span var(--academic-count);display:grid;grid-template-rows:subgrid;row-gap:inherit;height:auto;margin:0;min-width:0}#experience .academic-stops{display:contents}#experience .academic-label{position:absolute;left:var(--academic-inset);top:25px;margin:0}#experience .academic-journey::after{content:'';position:absolute;left:var(--academic-inset);top:70px;bottom:28px;width:1px;background:var(--line);z-index:0}#experience .academic-stop{margin-left:18px;z-index:1;align-self:stretch}#experience .academic-degree{padding-top:40px}#experience .academic-degree::before{top:45px}#experience .academic-exchange,#experience .academic-course{margin-top:0;padding-top:24px}#experience .academic-toolkit{grid-column:1;grid-row:var(--toolkit-row)/span var(--toolkit-span);position:sticky;top:110px;align-self:start;flex:none;margin:0;min-height:168px}@media(max-width:1000px){#experience .experience-grid{column-gap:30px;grid-template-columns:minmax(300px,.95fr) minmax(0,1.1fr)}#experience .academic-journey{--academic-inset:21px}#experience .experience-story{gap:25px}}@media(max-width:780px){#experience .experience-grid{display:flex;flex-direction:column;gap:24px}#experience .experience-intro{width:100%;margin:0}#experience .experience-story{display:block}#experience .experience-story h2{margin-bottom:18px}#experience .academic-journey{display:block;width:100%;height:auto}#experience .academic-label{position:static;margin-bottom:25px}#experience .academic-stops{display:block;padding-left:18px;border-left:1px solid var(--line)}#experience .academic-stop{margin-left:0}#experience .academic-degree{padding-top:0}#experience .academic-degree::before{top:5px}#experience .academic-exchange,#experience .academic-course{margin-top:27px}#experience .academic-journey::after{display:none}#experience .academic-toolkit{position:static;width:100%}#experience .timeline{display:grid;grid-template-columns:1fr;width:100%;margin:0;gap:18px}#experience .timeline>article{grid-column:auto;grid-row:auto}}
/* Subtle, one-time motion and useful reading/navigation feedback. */
#navlinks a[aria-current="location"]{color:var(--accent);text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:8px}.reading-progress{position:absolute;left:0;right:0;bottom:-1px;height:2px;pointer-events:none;overflow:hidden}.reading-progress>span{display:block;width:100%;height:100%;background:var(--accent);transform:scaleX(0);transform-origin:left}.project a.project-media,.experience-projects a.project-media{transition:box-shadow 180ms ease;box-shadow:0 0 0 1px transparent}.project a.project-media .cover-art,.experience-projects a.project-media .cover-art{transition:transform 220ms ease}.project a.project-media:is(:hover,:focus-visible),.experience-projects a.project-media:is(:hover,:focus-visible){box-shadow:0 0 0 2px var(--accent)}.project a.project-media:is(:hover,:focus-visible) .cover-art,.experience-projects a.project-media:is(:hover,:focus-visible) .cover-art{transform:scale(1.025)}.project a.project-media:is(:hover,:focus-visible) .paper-preview>.cover-art,.experience-projects a.project-media:is(:hover,:focus-visible) .paper-preview>.cover-art{transform:rotate(-5deg) scale(1.025)}#experience .academic-journey.academic-path-drawn::after{transform-origin:top;animation:academic-path-draw 900ms cubic-bezier(.22,.61,.36,1) both}@keyframes academic-path-draw{from{transform:scaleY(0)}to{transform:scaleY(1)}}@media(max-width:780px){#experience .academic-journey::after{display:block}#experience .academic-stops{border-left-color:transparent}}@media(prefers-reduced-motion:reduce){.project a.project-media,.experience-projects a.project-media,.project a.project-media .cover-art,.experience-projects a.project-media .cover-art{transition:none!important}.project a.project-media:is(:hover,:focus-visible) .cover-art,.experience-projects a.project-media:is(:hover,:focus-visible) .cover-art{transform:none}.project a.project-media:is(:hover,:focus-visible) .paper-preview>.cover-art,.experience-projects a.project-media:is(:hover,:focus-visible) .paper-preview>.cover-art{transform:rotate(-5deg)}#experience .academic-journey.academic-path-drawn::after{animation:none;transform:none}}

/* A quiet continuous thread connects the experience cards without changing the education grid. */
#experience .timeline>article{position:relative;overflow:visible}
#experience .timeline>article::before{content:'';position:absolute;left:-16px;top:-25px;bottom:-1px;width:1px;background:var(--line);pointer-events:none}
#experience .timeline>article::after{content:'';position:absolute;left:-20px;top:30px;width:9px;height:9px;border-radius:50%;border:2px solid var(--accent);background:var(--surface);box-shadow:0 0 0 4px var(--surface);pointer-events:none}
#experience .timeline>article:first-of-type::before{top:34px}
#experience .timeline>article:last-child::before{bottom:calc(100% - 34px)}
#experience .timeline>article:first-of-type::after{background:var(--accent)}
@media(max-width:780px){#experience .timeline{padding-left:25px;gap:24px}#experience .timeline>article::before{left:-20px}#experience .timeline>article::after{left:-24px}}

/* Research and community: two complementary editorial cards. */
#about .about-grid{grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:24px;border:0;padding:0;margin:0;align-items:stretch}
.about-research,.about-community{min-width:0;border:1px solid var(--line);border-radius:14px;padding:32px;background:var(--card)}
.about-research{border-top:3px solid var(--accent)}
.about-kicker{display:flex;align-items:center;gap:12px;font:10px/1.6 ui-monospace,monospace;letter-spacing:1px;color:var(--muted);margin-bottom:30px}
.about-symbol{display:grid;place-items:center;width:32px;height:32px;flex-shrink:0;border:1px solid var(--line);border-radius:50%;color:var(--accent);font:20px/1 system-ui}
#about .about-research h2{font-size:clamp(2rem,3.1vw,3.1rem);line-height:1.08;max-width:17ch;margin-bottom:24px;text-wrap:balance}
.about-research-copy p,.about-community p{font-size:15px;line-height:1.85;margin:0 0 20px;text-wrap:pretty}
.about-paper{display:grid;grid-template-columns:100px minmax(0,1fr) 24px;gap:20px;align-items:center;text-decoration:none;margin-top:30px;padding:16px;background:var(--surface);border:1px solid var(--line);border-radius:8px}
.about-paper-image{height:112px;overflow:hidden;border:1px solid var(--line);border-radius:3px;background:var(--bg)}
.about-paper-image .paper-preview{height:100%;width:100%;padding:0;background:var(--soft)}
.about-paper-image .paper-preview .cover-art{height:100%;width:100%;object-fit:cover;object-position:top;transform:none;padding:0}
.about-paper-image .paper-preview-label{display:none}
.about-paper-copy{display:flex;flex-direction:column;gap:7px;min-width:0}
.about-paper-copy small{font-size:9px;letter-spacing:.7px;color:var(--muted)}
.about-paper-copy strong{font-size:20px;letter-spacing:-.025em;color:var(--ink)}
.about-paper-copy>span{font-size:12px;line-height:1.6;color:var(--accent);text-decoration:underline;text-underline-offset:4px}
.about-paper-arrow{font-size:23px;color:var(--accent)}
.about-paper:hover{border-color:var(--accent)}
.about-community{display:flex;flex-direction:column;background:var(--soft);border-radius:14px 40px 14px 14px}
.about-community-body{margin:auto 0}
#about .about-community h3{font-size:clamp(1.7rem,2.4vw,2.25rem);line-height:1.15;max-width:14ch;text-wrap:balance;margin-bottom:24px}
.about-places{display:flex;flex-wrap:wrap;gap:14px;align-items:center;margin-top:32px;padding-top:20px;border-top:1px solid var(--line);font:11px/1.6 ui-monospace,monospace;color:var(--muted)}
.about-places>span:nth-child(2){color:var(--accent)}
@media(max-width:860px){#about .about-grid{grid-template-columns:1fr}.about-community-body{margin:0}.about-community h3{max-width:none}}
@media(max-width:480px){.about-research,.about-community{padding:24px}.about-kicker{font-size:9px;margin-bottom:24px}.about-paper{grid-template-columns:70px minmax(0,1fr);gap:14px;padding:12px}.about-paper-image{height:90px}.about-paper-arrow{display:none}.about-paper-copy strong{font-size:18px}}

/* Contact: a clear invitation and compact, accessible social marks. */
#contact .contact-grid{grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:0;border:1px solid var(--line);border-radius:14px 40px 14px 14px;overflow:hidden;background:var(--card)}
.contact-invitation{padding:38px;background:var(--soft);position:relative}
.contact-mark{display:grid;place-items:center;width:42px;height:42px;border:1px solid var(--line);border-radius:50%;font-size:26px;color:var(--accent);margin-bottom:27px}
#contact h2{font-size:clamp(2.2rem,3.7vw,3.5rem);line-height:1.07;max-width:16ch;margin-bottom:34px;text-wrap:balance}
.contact-email{display:flex;align-items:center;justify-content:space-between;gap:20px;text-decoration:none;padding-top:22px;border-top:1px solid var(--line)}
.contact-email small{display:block;font:9px/1.6 ui-monospace,monospace;letter-spacing:1px;color:var(--muted);margin-bottom:8px}
.contact-email strong{font-size:clamp(1rem,1.6vw,1.3rem);letter-spacing:-.025em;font-weight:550;overflow-wrap:anywhere}
.contact-email>span:last-child{font-size:25px;color:var(--accent)}
#contact .contact-right{padding:38px;display:flex;flex-direction:column;justify-content:space-between;gap:30px;min-width:0}
.contact-message p{font-size:15px;line-height:1.85;text-wrap:pretty;margin:0 0 16px}.contact-message p:last-child{font-size:13px;margin:0}
.contact-actions{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;flex-wrap:wrap;border-top:1px solid var(--line);padding-top:25px}
#contact .social{gap:10px;margin:0;flex-wrap:wrap}
#contact .social-icon{display:grid;place-items:center;min-width:46px;min-height:46px;border:1px solid var(--line);border-radius:50%;background:var(--surface);color:var(--ink);text-decoration:none}
.social-icon svg{width:21px;height:21px;fill:currentColor}
#contact .social-icon:hover{color:var(--accent);border-color:var(--accent)}
.social-icon>span{padding:8px;font-size:12px}
.contact-cv{max-width:190px}.contact-cv .button{font-size:12px;gap:12px;padding:10px 14px}.contact-cv p{line-height:1.5;margin:10px 0 0}.contact-cv small{font-size:10px}
@media(max-width:860px){#contact .contact-grid{grid-template-columns:1fr}.contact-invitation,#contact .contact-right{padding:30px}.contact-actions{justify-content:flex-start;gap:30px}#contact h2{max-width:20ch}.contact-invitation{border-bottom:1px solid var(--line)}}
@media(max-width:420px){.contact-invitation,#contact .contact-right{padding:24px}.contact-email{gap:12px}}

/* Case studies: a calm reading column, chapter landmarks and a compact index. */
.detail.case-study{max-width:1184px;padding-top:42px;padding-bottom:70px}
.case-back{font-size:13px;color:var(--muted)}
.case-head{max-width:900px;margin:42px 0 32px}.case-head .eyebrow{margin-bottom:20px}
.detail .case-head h1{font-size:clamp(2.5rem,5vw,4.3rem);line-height:1.05;margin:0 0 24px;max-width:21ch;text-wrap:balance}
.case-deck{max-width:740px}.case-deck p{font-size:clamp(1rem,1.6vw,1.15rem);line-height:1.8;margin:0 0 24px;text-wrap:pretty}
.case-program{display:inline-block;font:11px/1.7 ui-monospace,monospace;color:var(--muted);margin-top:4px;text-decoration:none}.case-program:hover{color:var(--accent)}
.case-cover{margin:0 0 54px}.detail .case-cover .project-media{height:clamp(240px,35vw,420px);aspect-ratio:auto;margin:0;background:var(--surface)}
.case-cover .image-credit{font-size:11px;color:var(--muted);margin-top:12px;max-width:850px}
.case-layout{display:grid;grid-template-columns:220px minmax(0,720px);gap:64px;justify-content:space-between;align-items:start}
.case-index{position:sticky;top:118px;border-top:2px solid var(--accent);padding-top:20px;min-width:0}
.case-index nav>p{font:10px/1.6 ui-monospace,monospace;letter-spacing:1px;margin:0 0 18px}.case-index ol{list-style:none;padding:0;margin:0}
.case-index li+li{margin-top:15px}.case-index li a{display:grid;grid-template-columns:22px minmax(0,1fr);gap:10px;text-decoration:none;font-size:12px;line-height:1.5;color:var(--muted)}
.case-index li a>span{font:10px/1.8 ui-monospace,monospace;color:var(--accent)}.case-index li a:hover{color:var(--accent)}
.case-index-back{display:block;border-top:1px solid var(--line);margin-top:28px;padding-top:18px;font-size:12px;text-decoration:none}
.case-reading{min-width:0}.case-chapter{position:relative;padding:32px 0;border-top:1px solid var(--line);scroll-margin-top:110px}
.case-section-number{font:10px/1.6 ui-monospace,monospace;letter-spacing:1px;color:var(--accent);margin-bottom:12px}
.detail .case-chapter h2{font-size:clamp(1.5rem,2.5vw,1.85rem);letter-spacing:-.03em;margin:0 0 20px;line-height:1.2}
.case-reading p,.case-reading li{font-size:15px;line-height:1.9;text-wrap:pretty}.case-reading p{margin:0 0 18px}.case-reading p:last-child{margin-bottom:0}
.case-reading ul{padding-left:20px;margin:0}.case-reading ul>li{padding-left:5px;margin-bottom:20px}.case-reading li:last-child{margin-bottom:0}.case-reading strong{color:var(--ink);font-weight:600}
.case-contribution{background:var(--soft);border:1px solid var(--line);border-left:3px solid var(--accent);border-radius:0 12px 12px 0;padding:28px;margin-bottom:30px}
.case-evidence{scroll-margin-top:110px;border-top:1px solid var(--line);padding-top:10px}.case-evidence .evidence-list{margin-bottom:24px}
.detail .case-evidence h2{font-size:1.65rem;margin:24px 0}.case-chart-text{padding:18px;border:1px solid var(--line);border-radius:6px;margin:0 0 32px}.case-chart-text summary{cursor:pointer;font-size:13px;color:var(--accent)}.case-chart-text p{margin-top:16px}
.case-end{display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;border-top:1px solid var(--line);margin-top:40px;padding-top:24px}.case-end>span{font-size:12px;color:var(--muted)}
@media(max-width:900px){.case-layout{grid-template-columns:175px minmax(0,1fr);gap:35px}}
@media(max-width:700px){.case-layout{grid-template-columns:1fr;gap:28px}.case-index{position:static;padding:18px;border:1px solid var(--line);border-radius:8px;background:var(--surface)}.case-index ol{display:flex;flex-wrap:wrap;gap:12px 20px}.case-index li+li{margin:0}.case-index li a{display:flex;gap:7px}.case-index-back{display:none}.case-head{margin-top:30px}.case-cover{margin-bottom:28px}.case-contribution{padding:22px}.case-reading p,.case-reading li{font-size:14px;line-height:1.85}}

/* Three explicit, language-matched CV choices. */
.cv-tools{display:flex;flex-direction:column;gap:7px;max-width:100%;min-width:0}.cv-label{font:9px/1.5 ui-monospace,monospace;letter-spacing:1px;color:var(--muted)}
.cv-actions{display:flex;flex-wrap:wrap;gap:0;border:1px solid var(--line);background:var(--card);border-radius:6px;overflow:hidden}
.cv-actions a,.cv-actions button{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 12px;border:0;border-radius:0;background:transparent;font-size:12px;line-height:1.6;font-weight:550;text-decoration:none;color:var(--ink)}
.cv-actions a+a,.cv-actions button{border-left:1px solid var(--line)}.cv-actions a:hover,.cv-actions button:hover{background:var(--soft);color:var(--accent)}
.cv-actions a:focus-visible,.cv-actions button:focus-visible{outline-offset:-3px}.cv-copy-fallback{width:100%;padding:10px;border:1px solid var(--accent);background:var(--bg);font-size:12px;border-radius:4px;color:var(--ink)}.cv-copy-fallback[hidden]{display:none}
#contact .contact-cv{max-width:100%}#contact .contact-actions{gap:24px}#contact .contact-cv p{max-width:280px}
.cv-copy-status{font-size:11px;line-height:1.5;color:var(--accent)}.cv-copy-status:empty{display:none}

/* Three complete rows of skill chips, with an inline disclosure only when needed. */
.skill-chips li[hidden],.skill-toggle[hidden]{display:none}
.skill-chips li{max-width:100%;overflow-wrap:anywhere}
.skill-toggle{display:inline-flex;align-items:center;gap:8px;border:0;border-bottom:1px solid var(--line);border-radius:0;background:transparent;padding:5px 0;margin-top:13px;font-size:12px;line-height:1.6;color:var(--accent)}
.skill-toggle:hover{border-color:var(--accent)}.skill-toggle-chevron{font-size:16px;line-height:1;transition:transform 160ms ease}.skill-toggle[aria-expanded=true] .skill-toggle-chevron{transform:rotate(180deg)}

/* One shared experience card. Its grid-spanning surface preserves the aligned
   education rows and the skills link's existing sticky boundary. */
#experience .experience-grid{isolation:isolate}
#experience .timeline::before{content:'';grid-column:2;grid-row:2/span var(--experience-count);background:var(--card);border:1px solid var(--line);border-radius:12px;z-index:0;pointer-events:none}
#experience .timeline>article{z-index:1;background:transparent;border:0;border-bottom:1px solid var(--line);border-radius:0;margin:0 26px;padding:28px 4px 28px 26px;min-width:0}
#experience .timeline>article:last-child{border-bottom:0}
#experience .timeline>article::before{left:0;top:-25px;bottom:-1px}
#experience .timeline>article::after{left:-4px;top:30px;background:var(--card);box-shadow:0 0 0 5px var(--card)}
#experience .timeline>article:first-of-type::before{top:34px}
#experience .timeline>article:last-child::before{bottom:calc(100% - 34px)}
#experience .timeline>article:first-of-type::after{background:var(--accent)}
@media(max-width:780px){#experience .timeline{display:grid;gap:24px;padding:0 22px;background:var(--card);border:1px solid var(--line);border-radius:12px}#experience .timeline::before{display:none}#experience .timeline>article{margin:0;padding:26px 0 26px 24px}#experience .timeline>article::before{left:0}#experience .timeline>article::after{left:-4px}}

.copy-toast{position:fixed;z-index:1000;left:50%;bottom:max(24px,env(safe-area-inset-bottom));transform:translate(-50%,12px);display:flex;align-items:center;gap:12px;max-width:calc(100% - 36px);padding:14px 22px;background:#2563eb;color:#fff;border:1px solid #60a5fa;border-radius:10px;box-shadow:0 8px 28px #11182730;font-size:14px;font-weight:550;line-height:1.5;opacity:0;visibility:hidden;pointer-events:none;transition:opacity 180ms ease,transform 180ms ease,visibility 180ms}
.copy-toast.is-visible{opacity:1;visibility:visible;transform:translate(-50%,0)}
.copy-toast-icon{display:grid;place-items:center;flex-shrink:0;width:23px;height:23px;border:1px solid #ffffff80;border-radius:50%;font-size:14px}
@media(prefers-reduced-motion:reduce){.copy-toast{transition:none;transform:translate(-50%,0)}}

#experience .experience-collection-title{grid-column:2;grid-row:2;align-self:start;z-index:2;margin:24px 30px 0;font:10px/1.7 ui-monospace,monospace;letter-spacing:1.4px;text-transform:uppercase;color:var(--muted);pointer-events:none}
#experience .timeline>article:first-of-type{padding-top:66px}
#experience .timeline>article:first-of-type::before{top:72px}
#experience .timeline>article:first-of-type::after{top:68px}
.experience-meta{display:flex;flex-wrap:wrap;gap:8px 18px;margin:0 0 18px;color:var(--muted)}
.experience-meta>div{min-width:0;max-width:100%}.experience-meta dt{font:8px/1.6 ui-monospace,monospace;text-transform:uppercase;letter-spacing:.6px;color:var(--muted);margin-bottom:3px}.experience-meta dd{margin:0;font-size:11px;line-height:1.6;overflow-wrap:anywhere}
.experience-detail-head .experience-meta{margin:24px 0}.experience-detail-head .experience-meta dd{font-size:13px}
@media(max-width:780px){#experience .experience-collection-title{grid-column:auto;grid-row:auto;margin:24px 0 0;padding-bottom:14px;border-bottom:1px solid var(--line)}#experience .timeline>article:first-of-type{padding-top:4px}#experience .timeline>article:first-of-type::before{top:10px}#experience .timeline>article:first-of-type::after{top:6px}}

/* Reading position is distinct from keyboard focus: no focus or URL changes. */
.case-index li a{padding:7px 10px;border-left:2px solid transparent;border-radius:0 5px 5px 0}
.case-index li+li{margin-top:5px}
.case-index li a[aria-current="location"]{background:var(--soft);color:var(--accent);border-left-color:var(--accent);font-weight:650}
.case-index li a[aria-current="location"]>span{font-weight:700}
@media(max-width:700px){.case-index li+li{margin-top:0}.case-index li a{padding:6px 8px}}
.case-chapter,.case-evidence{scroll-margin-top:20px}

/* Moderately slimmer credential rails; retain native touch and keyboard scrolling. */
.credential-track{scrollbar-width:thin;scrollbar-color:var(--muted) var(--line)}
@supports selector(::-webkit-scrollbar){
 .credential-track{scrollbar-width:auto;scrollbar-color:auto}
 .credential-track::-webkit-scrollbar{height:10px}
 .credential-track::-webkit-scrollbar-track{background:var(--line);border-radius:999px}
 .credential-track::-webkit-scrollbar-thumb{background:var(--muted);border:1px solid var(--line);border-radius:999px;min-width:44px}
 .credential-track::-webkit-scrollbar-thumb:hover{background:var(--accent)}
}
@media(forced-colors:active){.credential-track{scrollbar-color:auto}.credential-track::-webkit-scrollbar-thumb{background:ButtonText}.credential-track::-webkit-scrollbar-track{background:Canvas}}

/* Align the controls themselves, independently of CV labels and descriptions. */
.hero .actions{align-items:flex-end}
#contact .contact-right{container-type:inline-size;container-name:contact-panel}
#contact .contact-actions{display:grid;grid-template-columns:max-content minmax(0,1fr);grid-template-rows:auto auto auto auto auto;column-gap:24px;row-gap:7px;align-items:start}
#contact .contact-actions .social{grid-column:1;grid-row:2;align-self:end}
#contact .contact-cv{display:contents}
#contact .contact-cv .cv-tools{display:grid;grid-template-rows:subgrid;grid-column:2;grid-row:1/span 5;gap:7px}
#contact .cv-label{grid-row:1}#contact .cv-actions{grid-row:2}
#contact .cv-copy-status{grid-row:4}#contact .cv-copy-fallback{grid-row:5}
#contact .contact-cv>p{grid-column:2;grid-row:3;margin:0;max-width:none}
#contact .cv-actions a,#contact .cv-actions button{padding-left:11px;padding-right:11px}
@container contact-panel (max-width:480px){
 #contact .contact-actions{grid-template-columns:minmax(0,1fr);grid-template-rows:auto auto auto auto auto auto;row-gap:7px}
 #contact .contact-actions .social{grid-column:1;grid-row:1;margin-bottom:17px}
 #contact .contact-cv .cv-tools{grid-column:1;grid-row:2/span 5;justify-self:start;max-width:100%}
 #contact .contact-cv>p{grid-column:1;grid-row:4}
}

/* Highlight a skill group without shifting it or implying a card-wide link. */
.skill-group{transition:border-color 180ms ease,box-shadow 180ms ease}
@media(hover:hover){.skill-group:hover{border-color:var(--accent);box-shadow:0 5px 18px #2563eb16}}
.skill-group:focus-within{border-color:var(--accent);box-shadow:0 5px 18px #2563eb16}
html[data-theme=dark] .skill-group:focus-within{box-shadow:0 5px 18px #60a5fa20}
@media(hover:hover){html[data-theme=dark] .skill-group:hover{box-shadow:0 5px 18px #60a5fa20}}
@media(prefers-reduced-motion:reduce){.skill-group{transition:none}}

.cv-history{margin-top:38px;border-top:1px solid var(--line);padding-top:28px}.cv-history>p{font-size:13px;max-width:80ch}.cv-history-columns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px;margin-top:24px}.cv-history-columns>section{border:1px solid var(--line);border-radius:10px;padding:20px;min-width:0;background:var(--card)}.cv-history ol{list-style:none;padding:0;margin:0}.cv-history li{border-top:1px solid var(--line);padding:18px 0}.cv-history li:first-child{border-top:0}.cv-history small{display:block;font-size:11px;color:var(--muted);margin-top:6px}.cv-current{display:inline-block;font-size:10px;color:var(--accent);background:var(--soft);padding:2px 7px;border-radius:4px;margin-left:8px}.cv-history-actions{display:flex;align-items:center;flex-wrap:wrap;gap:12px;margin-top:14px;font-size:12px}.cv-history-actions button{padding:5px 10px;font-size:12px}.cv-history [data-history-more]{font-size:12px}.cv-history [hidden]{display:none}@media(max-width:760px){.cv-history-columns{grid-template-columns:1fr}}

/* Private GitHub review: explicit labels and accessible state colors. */
.admin .review-state{--review-fg:#92400e;--review-bg:#fffbeb;--review-border:#d97706;display:inline-flex;align-items:center;gap:.5rem;padding:.25rem .7rem;border:1px solid var(--review-border);border-radius:999px;background:var(--review-bg);color:var(--review-fg);font-size:.82rem;font-weight:650;line-height:1.5}
.admin .review-state::before{content:'';width:.45rem;height:.45rem;border-radius:50%;background:currentColor;flex:none}
.admin .review-state[data-review-state=approved]{--review-fg:#1e40af;--review-bg:#eff6ff;--review-border:#2563eb}
.admin .review-state[data-review-state=rejected],.admin .review-state[data-review-state=error]{--review-fg:#991b1b;--review-bg:#fef2f2;--review-border:#dc2626}
.admin .review-state[data-review-state=excluded]{--review-fg:#374151;--review-bg:#f3f4f6;--review-border:#6b7280}
.admin .review-feedback{border-radius:8px;padding:.65rem .9rem;margin:1rem 0}
.admin #approve{background:#2563eb;border-color:#2563eb;color:#fff;font-weight:650}
.admin #reject{background:#fef2f2;border-color:#dc2626;color:#991b1b}
.admin button:disabled{opacity:.5;cursor:not-allowed}
@media(hover:hover){.admin #approve:not(:disabled):hover{background:#1d4ed8}.admin #reject:not(:disabled):hover{background:#fee2e2}}
html[data-theme=dark] .admin .review-state{--review-fg:#fde68a;--review-bg:#302515;--review-border:#b7791f}
html[data-theme=dark] .admin .review-state[data-review-state=approved]{--review-fg:#bfdbfe;--review-bg:#172b4d;--review-border:#60a5fa}
html[data-theme=dark] .admin .review-state[data-review-state=rejected],html[data-theme=dark] .admin .review-state[data-review-state=error]{--review-fg:#fecaca;--review-bg:#3b2028;--review-border:#f87171}
html[data-theme=dark] .admin .review-state[data-review-state=excluded]{--review-fg:#e5e7eb;--review-bg:#263244;--review-border:#9ca3af}
html[data-theme=dark] .admin #reject{color:#fecaca;background:#3b2028;border-color:#f87171}
@media(hover:hover){html[data-theme=dark] .admin #reject:not(:disabled):hover{background:#512633}}
/* Owner-only audience reports: compact summaries and readable aggregate tables. */
.analytics-controls{display:flex;gap:1rem;align-items:end;flex-wrap:wrap;margin:1.5rem 0}
.analytics-controls label{display:grid;gap:.35rem;font-weight:600}
.analytics-controls select{padding:.55rem .8rem;border:1px solid var(--line);border-radius:6px;background:var(--card)}
.analytics-summary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;margin:1.5rem 0}
.analytics-summary article{border:1px solid var(--line);border-top:3px solid var(--accent);border-radius:10px;padding:1.4rem;background:var(--card)}
.analytics-summary span{display:block;color:var(--muted);font-size:.9rem}
.analytics-summary strong{display:block;font-size:clamp(2rem,4vw,3rem);line-height:1.2;color:var(--ink);margin-top:.5rem;font-variant-numeric:tabular-nums}
.analytics-tables{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}
.analytics-table{min-width:0;padding:1.2rem;border:1px solid var(--line);border-radius:10px;background:var(--card)}
.analytics-table h3{font-size:1.1rem;letter-spacing:-.02em;margin-bottom:1rem}
.analytics-table table{width:100%;border-collapse:collapse;font-size:.85rem}
.analytics-table th,.analytics-table td{padding:.65rem .3rem;border-bottom:1px solid var(--line);text-align:left;vertical-align:top;overflow-wrap:anywhere}
.analytics-table tbody th{font-weight:400;color:var(--muted)}
.analytics-table td,.analytics-table thead th:last-child{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.analytics-table thead th{color:var(--ink);font-weight:650}
.analytics-range{font-size:.85rem}
.privacy-measurement{margin:2rem 0}
@media(max-width:600px){.analytics-tables{grid-template-columns:1fr}.analytics-summary{gap:.6rem}.analytics-summary article{padding:1rem}}

/* Give the selected-work introduction equal room on wide desktop screens. */
@media(min-width:1100px){
 #work>.section-head{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(2rem,4vw,4rem);align-items:end}
 #work>.section-head>div{min-width:0}
 #work>.section-head>p{max-width:none;min-width:0;margin:0}
}

/* Direct contact: readable numbers and independent call / WhatsApp actions. */
.contact-phones{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:16px}
.contact-phone{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap;padding:12px;border:1px solid var(--line);border-radius:10px;background:var(--card);min-width:0}
.contact-phone-number{font-size:14px;font-weight:550;white-space:nowrap;font-variant-numeric:tabular-nums;letter-spacing:.01em}
.contact-phone-actions{display:flex;gap:4px}
.contact-phone-actions a{display:grid;place-items:center;width:44px;height:44px;border-radius:8px;color:var(--accent);text-decoration:none}
.contact-phone-actions a:hover,.contact-phone-actions a:focus-visible{background:var(--soft)}
.contact-phone-actions svg{width:19px;height:19px}
@media(max-width:600px){.contact-phones{grid-template-columns:1fr}.contact-phone{flex-wrap:nowrap}}
