:root{--bg:#080e14;--surface:#101923;--surface-2:#14212c;--text:#eff3f5;--muted:#a9b6bf;--accent:#dfbd7b;--accent-ink:#18130b;--cyan:#74c8d9;--line:#293641;--field:#0b141d;--header:rgba(8,14,20,.9);--shadow:0 24px 70px #0004;--side:clamp(1.25rem,5.5vw,6.8rem);color-scheme:dark}
:root[data-theme=light]{--bg:#f4f7f9;--surface:#fff;--surface-2:#eaf0f4;--text:#12232e;--muted:#506575;--accent:#896019;--accent-ink:#fff;--cyan:#08798f;--line:#cdd9e0;--field:#f7fafc;--header:rgba(244,247,249,.94);--shadow:0 24px 65px #213d5012;color-scheme:light}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:6rem}body{margin:0;background:var(--bg);color:var(--text);font:1rem/1.7 Arial,Helvetica,sans-serif;-webkit-font-smoothing:antialiased;transition:background-color .35s,color .35s}::selection{background:var(--accent);color:var(--accent-ink)}h1,h2,h3,h4,h5,p,figure{margin:0}h1,h2,h3,h4,h5{font-weight:500;line-height:1.16}a{color:inherit;text-decoration:none}a:hover{color:var(--accent)}button,input,textarea,select{font:inherit}button{cursor:pointer}button,a,summary{-webkit-tap-highlight-color:transparent}a:focus-visible,button:focus-visible,summary:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:2px solid var(--accent);outline-offset:5px}button:disabled{cursor:wait;opacity:.65}em{font-family:Georgia,'Times New Roman',serif;font-weight:400}.gold{color:var(--accent)}.muted{color:var(--muted)}.section-shell{padding-inline:var(--side);max-width:1800px;margin-inline:auto}.eyebrow,.small-label,.section-number{font-size:.75rem;letter-spacing:.13em;font-weight:500}.section-number{color:var(--accent)}.small-label{color:var(--muted)}.skip{position:fixed;top:-100px;left:1rem;z-index:300;background:var(--accent);color:var(--accent-ink);padding:.8rem}.skip:focus{top:1rem}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.site-header{position:sticky;top:0;z-index:100;display:grid;grid-template-columns:auto 1fr auto;gap:1.8rem;align-items:center;padding:1.1rem var(--side);border-bottom:1px solid var(--line);background:var(--header);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px)}.wordmark{font-size:1rem;letter-spacing:.12em;font-weight:700;white-space:nowrap}.site-header nav{order:2;display:flex;align-items:center;justify-content:flex-end;gap:clamp(.8rem,1.6vw,1.65rem);font-size:.875rem}.site-header nav a{position:relative}.site-header nav a[aria-current=true]:after{content:"";position:absolute;bottom:-.45rem;left:0;right:0;height:1px;background:var(--accent)}.nav-cv{border:1px solid var(--line);padding:.4rem .9rem}.header-controls{order:3;display:flex;gap:.6rem;align-items:center}.theme-toggle,.menu-button{min-height:40px;display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.4rem .65rem;background:transparent;border:1px solid var(--line);color:var(--text);font-size:.875rem;border-radius:4px}.theme-toggle:hover,.menu-button:hover{border-color:var(--accent)}.theme-icon{width:1.15rem;font-size:1.1rem;line-height:1}.theme-label{white-space:nowrap}.menu-button{display:none}.reading-progress{position:absolute;bottom:-1px;left:0;width:100%;height:2px;transform-origin:left;transform:scaleX(var(--read-progress,0));background:linear-gradient(90deg,var(--accent),var(--cyan));pointer-events:none}
.hero{position:relative;isolation:isolate;overflow:hidden;padding-top:2rem}.hero-atmosphere{position:absolute;inset:0;z-index:-1;overflow:hidden;pointer-events:none}.hero-field{position:absolute;inset:-3%;background:url('/assets/cinematic-field.png') center/cover no-repeat;opacity:.64;animation:field-drift 20s ease-in-out infinite alternate}.hero-atmosphere:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(8,14,20,.22),rgba(8,14,20,0) 70%),linear-gradient(0deg,var(--bg),transparent 32%)}.hero-light{position:absolute;width:55%;height:1px;top:48%;right:-15%;background:linear-gradient(90deg,transparent,#90e4f8,transparent);box-shadow:0 0 38px 9px #75c6d525;transform:rotate(-30deg);animation:light-breathe 9s ease-in-out infinite}.hero-top{display:flex;justify-content:space-between;gap:1rem;color:var(--muted);position:relative}.hero-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(245px,28%);align-items:center;gap:clamp(2rem,4vw,5rem);padding-block:4.5rem 4rem;position:relative}.intro{font-size:clamp(1.7rem,3.8vw,3.8rem);line-height:1.12;letter-spacing:-.025em;font-weight:600}.hero h1{font-family:Georgia,'Times New Roman',serif;font-style:italic;font-size:clamp(3.3rem,7.8vw,8.2rem);letter-spacing:-.065em;line-height:1.2;margin-left:-.04em}.hero-description{font-size:1.125rem;color:var(--muted);line-height:1.8;margin-top:1.4rem;max-width:38rem}.hero-actions{display:flex;gap:.8rem;margin-top:2rem;flex-wrap:wrap}.button{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:.8rem 1.4rem;border:1px solid var(--line);border-radius:4px;font-size:.875rem;transition:background .2s,color .2s,box-shadow .2s,transform .2s}.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}.primary:hover{color:var(--accent-ink);box-shadow:0 0 35px color-mix(in srgb,var(--accent) 24%,transparent);transform:translateY(-2px)}.secondary{background:color-mix(in srgb,var(--bg) 65%,transparent);color:var(--text)}.secondary:hover{border-color:var(--accent);background:var(--surface)}.hero-chapter{display:flex;align-items:stretch;gap:1.1rem;margin-top:2.4rem}.chapter-line{width:2px;background:linear-gradient(var(--accent),transparent)}.hero-chapter .small-label{font-size:.75rem;color:var(--accent)}.hero-chapter p{font-size:.875rem;color:var(--muted);margin-top:.5rem}.hero-chapter strong{font-weight:500;color:var(--text)}.portrait{position:relative;width:100%;max-width:340px;justify-self:center;perspective:900px}.portrait-frame{position:relative;padding:9px;border:1px solid color-mix(in srgb,var(--accent) 45%,transparent);border-radius:44% 44% 12px 12px;background:var(--surface);box-shadow:0 0 70px #6aaabb12,var(--shadow);overflow:hidden;transform:rotate(2deg);transition:transform .7s cubic-bezier(.2,.7,.2,1)}.portrait:hover .portrait-frame{transform:rotate(0)}.portrait-frame img{width:100%;height:auto;display:block;aspect-ratio:1/1.12;object-fit:cover;object-position:52% 25%;border-radius:44% 44% 6px 6px}.portrait-edge{position:absolute;inset:0;border-radius:inherit;box-shadow:inset 0 0 35px #d6bc7410;pointer-events:none}.portrait figcaption{display:flex;flex-direction:column;gap:.2rem;text-align:center;margin-top:1.6rem;font-size:.75rem;letter-spacing:.1em}.portrait figcaption span:last-child{font-size:.875rem;letter-spacing:0;color:var(--muted)}.hero-bottom{border-top:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;gap:1rem;padding-block:1.4rem 1.8rem;font-size:.875rem;color:var(--muted)}.hero-bottom-actions{display:flex;align-items:center;gap:2rem}.hero-bottom a{color:var(--text)}.credential-strip{display:grid;grid-template-columns:repeat(4,1fr);gap:2rem;padding-block:2.1rem;border-block:1px solid var(--line);background:var(--surface)}.credential-strip div{display:flex;flex-direction:column;gap:.4rem}.credential-strip strong{font-family:Georgia,serif;font-size:2.9rem;font-weight:400;line-height:1.2;color:var(--accent)}.credential-strip .text-stat{font-family:Arial,Helvetica,sans-serif;font-size:2.1rem;line-height:1.65;letter-spacing:-.04em}.credential-strip span{font-size:.875rem;color:var(--muted)}
section:not(.hero){padding-block:6rem;scroll-margin-top:1rem}.section-heading{display:grid;grid-template-columns:1fr 2.2fr 1.15fr;gap:2rem;align-items:start;margin-bottom:4rem}.section-number{padding-top:.5rem}.section-heading h2{font-size:clamp(2.2rem,3.6vw,3.8rem);letter-spacing:-.04em;line-height:1.16}.section-heading h2 em{color:var(--accent)}.section-heading>p{color:var(--muted);max-width:24rem;padding-top:.3rem}.light-section{background:var(--surface)}.subheading{display:flex;justify-content:space-between;align-items:center;gap:2rem;padding-bottom:1.5rem;border-bottom:1px solid var(--line)}.subheading h3{font-size:1.5rem}.profile-inline{display:flex;gap:1.5rem;font-size:.875rem}.profile-inline a{border-bottom:1px solid var(--accent)}.paper{display:grid;grid-template-columns:4rem minmax(0,1fr);gap:1rem;padding:2.5rem 0;border-bottom:1px solid var(--line);transition:background-color .35s}.paper-number{color:var(--accent);font-size:.875rem}.paper-meta{display:flex;justify-content:space-between;gap:1rem;font-size:.75rem;letter-spacing:.07em;color:var(--muted)}.paper h5{font-size:clamp(1.3rem,2.1vw,1.9rem);line-height:1.4;letter-spacing:-.02em;max-width:58rem;margin:1rem 0}.authors{font-size:.875rem;color:var(--muted)}.authors strong{font-weight:500;color:var(--text)}.paper-footer{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-top:1.5rem;font-size:.875rem}.tag{border:1px solid var(--line);padding:.25rem .7rem;font-size:.75rem;color:var(--muted);border-radius:3px}.paper-footer a,.card-bottom a,.experience-footer>a,.recognition a{border-bottom:1px solid var(--accent);text-underline-offset:5px}.ip-heading{display:flex;justify-content:space-between;align-items:flex-end;gap:2rem;margin:4.5rem 0 2rem}.ip-heading h3{font-size:1.6rem;margin-top:.8rem}.filters{display:flex;flex-wrap:wrap;gap:.2rem;padding:.3rem;border:1px solid var(--line);border-radius:5px}.filters button{background:transparent;border:0;font-size:.875rem;padding:.6rem .8rem;color:var(--muted);border-radius:3px}.filters button[aria-pressed=true]{background:var(--text);color:var(--bg)}.ip-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.1rem}.ip-card{display:flex;flex-direction:column;min-height:21rem;padding:2rem;border:1px solid var(--line);background:var(--bg);border-radius:6px;transition:border-color .3s,box-shadow .3s}.ip-card:hover{border-color:var(--accent);box-shadow:var(--shadow)}.card-meta{display:flex;justify-content:space-between;align-items:center;gap:1rem;font-size:.75rem;letter-spacing:.04em}.status{letter-spacing:0;padding:.25rem .6rem;background:var(--surface-2);white-space:nowrap;font-size:.875rem;border-radius:3px;color:var(--accent)}.ip-card h4{font-size:1.25rem;line-height:1.4;margin:1.5rem 0 1rem;max-width:32rem}.ip-card>p{font-size:.875rem;color:var(--muted);padding-bottom:1.8rem}.card-bottom{border-top:1px solid var(--line);padding-top:1.1rem;margin-top:auto;display:flex;align-items:flex-end;justify-content:space-between;gap:1rem;font-size:.875rem}.card-bottom>span{color:var(--muted)}.card-bottom a{white-space:nowrap}article[hidden]{display:none!important}
.experience{position:relative}.experience-timeline{position:relative;--timeline-progress:0}.experience-timeline:before,.experience-timeline:after{content:"";position:absolute;left:23%;width:1px;top:0;bottom:0;background:var(--line)}.experience-timeline:after{background:linear-gradient(var(--accent),var(--cyan));transform-origin:top;transform:scaleY(var(--timeline-progress));box-shadow:0 0 16px color-mix(in srgb,var(--cyan) 35%,transparent)}.experience-row{display:grid;grid-template-columns:23% minmax(0,1fr);gap:0;position:relative;padding:0 0 3rem}.experience-row:last-child{padding-bottom:0}.experience-date{position:relative;color:var(--accent);font-size:.875rem;letter-spacing:.05em;padding:2rem 2.5rem 2rem 0}.experience-date>span:not(.timeline-node){display:block;margin-top:.7rem;font-size:.75rem;letter-spacing:.1em;color:var(--muted);max-width:10rem}.timeline-node{position:absolute;z-index:2;right:-6px;top:2.5rem;width:13px;height:13px;border:2px solid var(--accent);background:var(--bg);border-radius:50%;box-shadow:0 0 20px color-mix(in srgb,var(--accent) 15%,transparent)}.experience-row>div:last-child{margin-left:3rem;padding:2.2rem;border:1px solid var(--line);border-radius:6px;background:linear-gradient(135deg,var(--surface),var(--bg));box-shadow:var(--shadow)}.experience-row h3{font-size:1.7rem;letter-spacing:-.02em;margin-bottom:.7rem}.organisation{font-size:1rem;margin-bottom:1.4rem}.organisation span{display:block;color:var(--accent);font-size:.875rem;margin-top:.4rem}.experience-row p:not(.organisation){color:var(--muted);margin-top:.8rem;max-width:57rem}.experience-footer{display:flex;justify-content:space-between;align-items:center;gap:1.2rem;margin-top:1.6rem;font-size:.875rem}.tags{display:flex;flex-wrap:wrap;gap:.45rem}.tags span{padding:.3rem .65rem;border:1px solid var(--line);font-size:.75rem;color:var(--muted);border-radius:3px}.experience-footer>a{white-space:nowrap}
.projects{background:var(--surface);border-block:1px solid var(--line)}.projects .section-heading{grid-template-columns:1fr 3.35fr}.project-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.5rem;align-items:stretch;perspective:1300px}.project-card{display:flex;flex-direction:column;min-width:0;border:1px solid var(--line);border-radius:9px;background:var(--bg);overflow:hidden;box-shadow:var(--shadow);transition:transform .25s ease-out,border-color .3s;transform-style:preserve-3d}.project-card:hover{border-color:var(--accent)}.project-body{display:flex;flex-direction:column;padding:2rem;flex:1}.project-index{color:var(--accent);font-size:.75rem;letter-spacing:.12em}.project-main{padding:1.5rem 0 1.8rem}.project-main h3{font-family:Georgia,serif;font-size:clamp(2rem,3vw,3rem);letter-spacing:-.035em;line-height:1.15}.project-main>p{color:var(--muted);font-size:.875rem;margin-top:1rem;max-width:27rem}.project-description{border-top:1px solid var(--line);padding-top:1.5rem;margin-top:auto}.project-description p{color:var(--muted);margin-bottom:1.6rem}.project-visual{position:relative;aspect-ratio:600/325;overflow:hidden;background:radial-gradient(ellipse at 50% 50%,#284b4c45,transparent 68%),#080f17;color:#dab879;border-bottom:1px solid var(--line);padding-top:30px}.project-visual.water{color:#73cedf;background:radial-gradient(ellipse at 50% 50%,#1c58654a,transparent 65%),#080f17}.project-visual svg{display:block;width:100%;height:100%}.visual-label{position:absolute;top:1.1rem;left:1.4rem;font-size:.75rem;letter-spacing:.13em;color:#b8c6d0}.diagram-paths{stroke-width:1.3;opacity:.6}.diagram-boxes rect{fill:#12202b;stroke:currentColor;stroke-opacity:.65;stroke-width:1.25}.diagram-text{font-family:Arial,Helvetica,sans-serif;font-size:14px;fill:#e2eaf0;letter-spacing:.4px}.signal-flow{stroke-dasharray:10 150;animation:signal-flow 5s linear infinite;animation-play-state:paused}.node-pulse{animation:node-pulse 3s ease-in-out infinite;animation-play-state:paused}.in-view .signal-flow,.in-view .node-pulse{animation-play-state:running}
.toolkit{position:relative;overflow:hidden;background:radial-gradient(ellipse at 95% 60%,color-mix(in srgb,var(--cyan) 6%,transparent),transparent 60%),var(--bg)}.tool-group+.tool-group{margin-top:2.6rem}.tool-group>h3{font-size:.875rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-bottom:1.2rem}.tool-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1.1rem;perspective:1200px}.tool-card{position:relative;isolation:isolate;min-width:0;overflow:hidden;border:1px solid var(--line);border-radius:7px;background:var(--surface);padding:1.5rem;transition:transform .25s,border-color .3s,box-shadow .3s}.tool-card:hover{border-color:var(--accent);box-shadow:var(--shadow)}.tool-logo{display:flex;align-items:center;justify-content:center;width:100%;max-width:148px;height:78px;background:#fff;border-radius:6px;padding:12px;margin-bottom:1.5rem;border:1px solid #d6dfe5}.tool-logo img{object-fit:contain;max-width:100%;width:auto;height:auto;max-height:100%;display:block}.tool-card h4{font-size:1.1rem;line-height:1.3;position:relative}.tool-card p{font-size:.875rem;color:var(--muted);margin-top:.6rem}.tool-light{position:absolute;inset:0;z-index:-1;background:linear-gradient(110deg,transparent 35%,color-mix(in srgb,var(--accent) 9%,transparent) 50%,transparent 65%);transform:translateX(-100%);pointer-events:none}.in-view .tool-light{animation:tile-light 9s ease-in-out infinite;animation-delay:var(--stagger,0ms)}
.about-grid{display:grid;grid-template-columns:1.15fr 1fr;gap:5rem;padding-left:calc((100% - 4rem)/4.35 + 2rem)}.education h3{font-size:1.5rem;padding-bottom:1.5rem;border-bottom:1px solid var(--line)}.education article{padding-block:1.8rem;border-bottom:1px solid var(--line)}.education h4{font-size:1.2rem;line-height:1.35;margin:.7rem 0 .5rem}.education .institution{color:var(--muted);margin:.8rem 0}.grade{font-size:.875rem;color:var(--accent)}.education summary{padding:1.1rem 0;cursor:pointer;font-size:.875rem}.education details article{padding-top:.7rem}.education details a{color:var(--accent)}.about-note>.small-label{color:var(--accent)}.about-statement{font-size:clamp(2rem,2.9vw,3rem);line-height:1.2;letter-spacing:-.03em;margin:1.5rem 0}.about-statement+p{color:var(--muted);max-width:28rem}.recognition{margin-top:2rem;padding:2rem;border:1px solid color-mix(in srgb,var(--accent) 55%,var(--line));border-radius:5px;background:linear-gradient(140deg,color-mix(in srgb,var(--accent) 7%,var(--bg)),var(--bg));position:relative}.recognition:before{content:"";position:absolute;left:-1px;top:2rem;width:3px;height:35%;background:var(--accent)}.recognition .small-label{color:var(--accent);letter-spacing:.06em}.recognition h4{font-family:Georgia,serif;font-size:1.9rem;line-height:1.2;margin:1.2rem 0}.recognition p{font-size:.875rem;color:var(--muted);margin-bottom:1.2rem}.recognition a{font-size:.875rem}
.contact{position:relative;overflow:hidden}.contact-top{display:flex;justify-content:space-between;align-items:center;gap:1rem}.contact h2{font-size:clamp(3rem,7.6vw,7rem);letter-spacing:-.05em;line-height:1.05;margin-top:3rem}.contact h2 em{color:var(--accent)}.contact-intro{color:var(--muted);margin-top:1.5rem}.contact-layout{display:grid;grid-template-columns:1fr 1.2fr;gap:clamp(2rem,6vw,6rem);margin-top:3.5rem;align-items:start}.contact-details{min-width:0;padding-top:1.5rem;border-top:1px solid var(--line)}.contact-direct{display:flex;align-items:flex-start;flex-direction:column;min-width:0}.email-link{font-size:clamp(1rem,1.5vw,1.3rem);overflow-wrap:anywhere;margin-top:.7rem}.copy-email{border:0;border-bottom:1px solid var(--line);background:none;color:var(--muted);font-size:.875rem;padding:.2rem 0;margin-top:.7rem}.copy-email:hover{color:var(--accent)}#copy-status{font-size:.875rem;color:var(--accent);min-height:1.3rem;margin-top:.2rem}.phone-label{margin-top:1.4rem}.phone{font-size:1.1rem;margin-top:.5rem}.contact-profiles{margin-top:2rem}.contact-profiles a{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:1rem 0;border-bottom:1px solid var(--line)}.contact-profiles a span{font-size:.75rem;color:var(--muted)}.contact-form{padding:2.2rem;background:var(--surface);border:1px solid var(--line);border-radius:8px;box-shadow:var(--shadow);position:relative}.contact-form:before{content:"";position:absolute;top:-1px;left:2rem;right:2rem;height:1px;background:linear-gradient(90deg,transparent,var(--accent),var(--cyan),transparent)}.contact-form h3{font-family:Georgia,serif;font-size:2.1rem;letter-spacing:-.03em;margin-bottom:1.7rem}.contact-form label{display:block;color:var(--muted);font-size:.875rem;line-height:1.5;margin-bottom:1.3rem}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.contact-form input,.contact-form textarea,.contact-form select{display:block;width:100%;border:1px solid var(--line);border-radius:4px;background:var(--field);color:var(--text);padding:.85rem;margin-top:.55rem;font-size:1rem;line-height:1.5;transition:border-color .2s,box-shadow .2s}.contact-form input:focus,.contact-form textarea:focus,.contact-form select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 12%,transparent)}.contact-form textarea{resize:vertical;min-height:150px}.contact-form input::placeholder{font-size:.875rem;color:var(--muted);opacity:.8}.form-note{font-size:.75rem;color:var(--muted);margin-bottom:1.3rem}.form-trap{position:absolute!important;left:-10000px!important;width:1px;height:1px;overflow:hidden}#form-status{font-size:.875rem;margin-top:1rem;min-height:1.5rem;color:var(--accent)}#form-status.error{color:#ef8e83}:root[data-theme=light] #form-status.error{color:#a32419}.contact-form noscript p{font-size:.875rem;margin-top:1rem}footer{display:flex;justify-content:space-between;align-items:center;gap:2rem;padding-block:2rem;border-top:1px solid var(--line)}footer p,footer>a:last-child{font-size:.75rem;color:var(--muted)}
:root[data-theme=light] .hero-field{opacity:.18;mix-blend-mode:multiply}:root[data-theme=light] .hero-atmosphere:after{background:linear-gradient(90deg,#f4f7f9ed 5%,#f4f7f963 65%),linear-gradient(0deg,var(--bg),transparent 45%)}:root[data-theme=light] .hero-light{opacity:.3}:root[data-theme=light] .portrait-frame{box-shadow:0 18px 45px #10283b26}:root[data-theme=light] .project-visual{box-shadow:inset 0 0 60px #0001}
@keyframes field-drift{from{transform:scale(1.02) translate(0,0)}to{transform:scale(1.1) translate(-1.5%,-1%)}}@keyframes light-breathe{0%,100%{opacity:.2;transform:rotate(-30deg) translateX(0)}50%{opacity:.65;transform:rotate(-30deg) translateX(-8%)}}@keyframes signal-flow{to{stroke-dashoffset:-320}}@keyframes node-pulse{0%,100%{opacity:.4}50%{opacity:1}}@keyframes tile-light{0%,55%{transform:translateX(-120%)}85%,100%{transform:translateX(120%)}}

@media(min-width:1600px){.hero-layout{padding-block:6rem}.hero h1{font-size:8rem}.site-header{padding-inline:max(var(--side),calc((100vw - 1600px)/2))}}
@media(max-width:1200px){.site-header{gap:1rem}.theme-label{display:none}.theme-toggle{width:40px}.section-heading{grid-template-columns:1fr 2.9fr}.section-heading>p{grid-column:2;max-width:38rem}.about-grid{padding-left:0;gap:3rem}.ip-heading{align-items:flex-start;flex-direction:column}.experience-footer{align-items:flex-start;flex-direction:column}.card-bottom{flex-wrap:wrap}.tool-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:1000px){.site-header{grid-template-columns:1fr auto}.header-controls{order:2}.site-header nav{display:none;order:3;grid-column:1/-1;align-items:stretch;justify-content:initial;flex-direction:column;gap:0}.site-header nav.open{display:flex}.site-header nav a{padding:.8rem 0;border-top:1px solid var(--line)}.site-header nav a[aria-current=true]:after{display:none}.site-header nav .nav-cv{border:0;border-top:1px solid var(--line);color:var(--accent)}.menu-button{display:inline-flex}.theme-label{display:inline}.theme-toggle{width:auto}.hero-layout{grid-template-columns:minmax(0,1fr) 240px;gap:2rem;padding-block:3.5rem}.hero h1{font-size:clamp(3rem,7.8vw,6rem)}.hero-description{font-size:1rem}.portrait figcaption span:first-child{font-size:.75rem;letter-spacing:.04em}.contact-layout{grid-template-columns:1fr 1.15fr;gap:2rem}.contact-form{padding:1.6rem}.form-row{grid-template-columns:1fr;gap:0}.contact-profiles a{align-items:flex-start;flex-direction:column;gap:.2rem}.experience-row>div:last-child{margin-left:2rem;padding:1.8rem}}
@media(max-width:750px){.hero-layout{grid-template-columns:1fr;padding-block:3rem 2.5rem;gap:2.5rem}.hero h1{font-size:clamp(3.1rem,12.8vw,5.8rem)}.intro{font-size:clamp(1.8rem,6.5vw,2.8rem)}.hero-field{opacity:.43;background-position:65% center}.hero-atmosphere:after{background:linear-gradient(0deg,var(--bg),transparent 45%)}.hero-top .eyebrow{font-size:.75rem;letter-spacing:.07em}.portrait{max-width:275px}.portrait-frame img{aspect-ratio:1/1.05}.hero-chapter{margin-top:1.8rem}.hero-bottom-actions{gap:1rem;flex-direction:column;align-items:flex-end}.hero-bottom p{font-size:.75rem}.hero-bottom a{font-size:.75rem}.credential-strip{grid-template-columns:repeat(2,1fr);gap:1.6rem 1rem;padding-block:1.8rem}.credential-strip span{font-size:.75rem}.section-heading,.projects .section-heading{display:block;margin-bottom:2.8rem}.section-heading h2{font-size:clamp(2.15rem,6.2vw,3rem);margin-top:1.1rem}.section-heading>p{margin-top:1.3rem;max-width:36rem}.section-number{display:block}section:not(.hero){padding-block:4rem}.paper{grid-template-columns:1.6rem minmax(0,1fr);padding-block:2rem;gap:.7rem}.paper-meta{flex-direction:column;gap:.4rem}.paper h5{font-size:1.25rem}.ip-grid{grid-template-columns:1fr}.ip-card{padding:1.4rem;min-height:18rem}.ip-heading{margin-top:3rem}.card-bottom{margin-top:auto}.experience-timeline:before,.experience-timeline:after{left:5px}.experience-row{display:block;padding-left:1.6rem;padding-bottom:2.5rem}.experience-date{padding:0 0 1.2rem}.experience-date>span:not(.timeline-node){margin-top:.4rem;max-width:none}.timeline-node{left:calc(-1.6rem - 1px);right:auto;top:.35rem}.experience-row>div:last-child{margin-left:0;padding:1.4rem}.experience-row h3{font-size:1.45rem}.project-grid{grid-template-columns:1fr;gap:1.5rem}.project-main h3{font-size:2.5rem}.project-body{padding:1.5rem}.project-visual{aspect-ratio:600/325}.tool-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.85rem}.tool-card{padding:1.15rem}.tool-card h4{font-size:1rem}.tool-logo{height:70px;max-width:135px;margin-bottom:1.2rem;padding:10px}.tool-card p{font-size:.75rem;line-height:1.5}.about-grid{grid-template-columns:1fr;gap:2.6rem}.about-note{max-width:none}.recognition{padding:1.5rem}.contact-top{align-items:flex-start;flex-direction:column;gap:.5rem}.contact h2{font-size:clamp(3rem,10.5vw,5rem);margin-top:2.3rem}.contact-layout{grid-template-columns:1fr;margin-top:2.5rem;gap:2.5rem}.contact-form{padding:1.5rem}.contact-form h3{font-size:2rem}.form-row{grid-template-columns:1fr 1fr;gap:1rem}.contact-profiles a{flex-direction:row;align-items:center}.contact-details{padding-top:1.2rem}.email-link{font-size:1.1rem}footer{flex-wrap:wrap;gap:1rem}footer .wordmark{width:100%}footer p{margin-right:auto}:root[data-theme=light] .hero-atmosphere:after{background:linear-gradient(90deg,#f4f7f9a1,transparent),linear-gradient(0deg,var(--bg),transparent 60%)}}
@media(max-width:430px){.wordmark{font-size:.875rem;letter-spacing:.08em}.theme-label{display:none}.theme-toggle{width:40px}.header-controls{gap:.5rem}.hero-top{flex-direction:column;gap:.4rem}.hero h1{font-size:clamp(2.7rem,12.2vw,3.4rem)}.hero-top{gap:.5rem}.subheading{align-items:flex-start;flex-direction:column;gap:1rem}.paper-footer{align-items:flex-start;flex-direction:column}.filters button{font-size:.75rem;padding:.6rem .65rem}.card-meta{align-items:flex-start;flex-wrap:wrap}.form-row{grid-template-columns:1fr;gap:0}.contact-profiles a{align-items:flex-start;flex-direction:column;gap:.2rem}.tool-card{padding:1rem}.tool-logo{height:60px}.hero-actions .button{flex:1}.credential-strip strong{font-size:2.5rem}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.portrait-frame,[data-tilt]{transform:none!important}}
@media print{body{background:white;color:black}section{break-inside:avoid}.section-shell{padding:1rem}.portrait{max-width:160px}.hero-layout{display:flex}}

/* Refined portrait, year groups, award and cinematic geometry. */
.hero-top{justify-content:flex-end}
.hero-layout{grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:1.5rem;padding-bottom:2.2rem}
.hero-copy{z-index:2}
#cinematic-field{position:absolute;inset:0;width:100%;height:100%;opacity:.9}
.hero-atmosphere:after{background:linear-gradient(90deg,var(--bg),transparent 68%),linear-gradient(0deg,var(--bg),transparent 25%)}
.hero-field{opacity:.55}
.hero-light{height:2px;top:67%;width:80%;right:-25%;box-shadow:0 0 42px 14px #75c6d51a}
.portrait.portrait-blend{max-width:560px;width:115%;align-self:end;perspective:none;pointer-events:none;transform-origin:bottom center}
.portrait-blend>img{display:block;width:100%;height:auto;object-fit:contain;mask-image:linear-gradient(to bottom,#000 65%,#000a 80%,transparent 98%);-webkit-mask-image:linear-gradient(to bottom,#000 65%,#000a 80%,transparent 98%);filter:drop-shadow(0 0 22px #74c8d920)}
.portrait-blend figcaption{margin:0}
.hero-bottom{position:relative;z-index:2}
.publication-year{display:grid;grid-template-columns:7rem minmax(0,1fr);column-gap:2rem;border-bottom:1px solid var(--line);padding-block:2.4rem}
.year-label{color:var(--accent);font:italic 2.8rem/1.15 Georgia,serif;letter-spacing:-.03em}
.publication-year .paper{display:block;border:0;padding:0;min-width:0}
.paper-meta{line-height:1.6}
.paper h5{font-size:clamp(1.3rem,2.1vw,1.9rem);line-height:1.4;letter-spacing:-.02em;max-width:58rem;margin:1rem 0}
.about-grid{grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);padding-left:0;gap:clamp(2rem,6vw,6rem)}
.recognition{padding:2rem;text-align:center;overflow:hidden;border-color:color-mix(in srgb,var(--accent) 30%,var(--line));background:radial-gradient(ellipse at 50% 48%,#bfa25f12,transparent 70%),#090e14;color:#f3efe5;box-shadow:0 22px 70px #0002}
.recognition:before{display:none}
.recognition .small-label{display:block;color:#d9bd81;font-size:.75rem;letter-spacing:.13em}
.award-visual{position:relative;max-width:480px;aspect-ratio:1;margin:1.1rem auto}
.award-visual img{position:absolute;inset:0;display:block;width:100%;height:100%;object-fit:contain}
.award-visual h4{position:absolute;inset:auto 19%;top:50%;transform:translateY(-50%);display:block;font:400 clamp(1.25rem,2.2vw,2.3rem)/1.25 Georgia,serif;margin:0;text-wrap:balance;letter-spacing:-.03em}
.recognition p{color:#b8b9b8;max-width:24rem;margin:0 auto 1.3rem;line-height:1.7}
.recognition a{border-color:#d9bd81;font-size:1rem}
.recognition a:hover{color:#e8c983}
.recognition.in-view .award-visual img{animation:award-reveal 1.4s cubic-bezier(.16,1,.3,1) both}
.form-fields{display:block}
.contact-form select{min-height:54px;cursor:pointer;padding-right:2rem}
.field-help{display:block;font-size:.75rem;margin-top:.45rem}
.contact-form .form-note{font-size:.875rem}
.tool-card:after{content:'';position:absolute;bottom:0;left:0;height:2px;width:100%;background:linear-gradient(90deg,transparent,var(--cyan),var(--accent),transparent);transform:scaleX(0);transform-origin:left;transition:transform .7s}
.tool-card.in-view:after{transform:scaleX(1)}
.in-view .tool-light{animation-duration:5.5s}
.tool-card .tool-logo{transition:transform .6s cubic-bezier(.2,.8,.2,1)}
.tool-card:hover .tool-logo{transform:translateY(-5px) scale(1.03)}
@keyframes award-reveal{from{opacity:.25;transform:scale(.86) rotate(-5deg)}to{opacity:1;transform:scale(1) rotate(0)}}
@media(max-width:1000px){.hero-layout{grid-template-columns:minmax(0,1.25fr) minmax(0,.85fr)}.portrait.portrait-blend{width:120%}.award-visual h4{font-size:clamp(1.25rem,2.8vw,2rem)}}
@media(max-width:750px){.hero-layout{grid-template-columns:1fr;gap:1.8rem;padding-bottom:0}.portrait.portrait-blend{max-width:450px;width:min(110%,450px);margin-top:.2rem}.hero-copy{position:relative}.hero-atmosphere:after{background:linear-gradient(0deg,var(--bg),transparent 30%,transparent 55%,var(--bg) 92%)}.hero-field{opacity:.65;background-position:68% bottom}.hero-bottom{margin-top:-1.8rem}.publication-year{grid-template-columns:1fr;gap:1.1rem;padding-block:2rem}.year-label{font-size:2.4rem}.about-grid{grid-template-columns:1fr}.award-visual h4{font-size:clamp(1.4rem,4.8vw,2.2rem)}.recognition{padding:1.5rem}.hero-bottom-actions{gap:.7rem}.hero-description{max-width:38rem}}
@media(max-width:430px){.hero-top{align-items:flex-start}.portrait.portrait-blend{width:110%}.hero-bottom{gap:.5rem}.award-visual h4{font-size:clamp(1.1rem,4.8vw,1.5rem)}.recognition{padding:1.2rem}.card-meta{gap:.6rem}.status{font-size:.8rem}}
:root[data-theme=light] .hero-atmosphere:after{background:linear-gradient(90deg,#f4f7f9ed 0%,#f4f7f900 80%),linear-gradient(0deg,var(--bg),transparent 40%)}
:root[data-theme=light] #cinematic-field{opacity:.85}
@media(max-width:750px){:root[data-theme=light] .hero-atmosphere:after{background:linear-gradient(0deg,var(--bg),transparent 30%,transparent 55%,var(--bg) 92%)}}
@media(prefers-reduced-motion:reduce){.recognition.in-view .award-visual img{animation:none}.tool-card:hover .tool-logo{transform:none}}
.in-view .timeline-node{animation:node-pulse 2.4s ease-in-out infinite}

/* Compact monochrome theme control and finite ambient motion. */
.hero-field{animation:field-drift 4.8s ease-out 1 both}
.hero-light{animation:light-breathe 4.5s ease-out 1 both}
.signal-flow,.node-pulse,.in-view .timeline-node{animation-iteration-count:1}
.in-view .tool-light{animation-duration:4s;animation-iteration-count:1}

@media print{.site-header,.hero-atmosphere,.contact-form,footer{display:none}}

.contact-verification{margin:0 0 1.5rem;min-width:0}.contact-verification .field-help{font-size:.875rem;line-height:1.6;margin:0 0 .75rem}#contact-captcha{max-width:100%;min-height:65px}#contact-captcha>div{max-width:100%}#captcha-status a{text-decoration:underline;text-underline-offset:3px}.contact-form [disabled]{cursor:wait}.contact-form button[disabled]{cursor:not-allowed;opacity:.55}
