@charset "UTF-8";
:root{--bg:#f5f7fa;--surface:#fff;--surface-hover:#f0f5f6;--text:#162838;--muted:#536577;--subtle:#607083;--line:#d9e2e9;--accent:#087c67;--accent-soft:#e2f1ec;--accent-strong:#066553;--glow:rgba(41,153,130,.055);--shadow:0 12px 40px rgba(21,41,54,.035);color-scheme:light;--mono:"SFMono-Regular",Consolas,"Liberation Mono",monospace}
:root[data-theme="dark"]{--bg:#0c1728;--surface:#101f32;--surface-hover:#14273b;--text:#e4edf6;--muted:#9aaec4;--subtle:#91a5bb;--line:#24354a;--accent:#7be0c4;--accent-soft:#17372f;--accent-strong:#a0efd9;--glow:rgba(80,171,156,.065);--shadow:0 12px 40px rgba(0,0,0,.08);color-scheme:dark}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:48px}body{margin:0;background:var(--bg);color:var(--muted);font-family:Inter,"Segoe UI",Arial,sans-serif;font-size:16px;line-height:1.75;-webkit-font-smoothing:antialiased;background-image:radial-gradient(ellipse at 15% 10%,var(--glow),transparent 50%);transition:background-color .25s,color .25s}::selection{background:var(--accent);color:var(--bg)}a{color:inherit;text-decoration:none}button{font:inherit;cursor:pointer}button,a,summary{-webkit-tap-highlight-color:transparent}button:focus-visible,a:focus-visible,summary:focus-visible{outline:2px solid var(--accent);outline-offset:6px;border-radius:3px}h1,h2,h3,h4,p{margin:0}h1,h2,h3,h4,strong{color:var(--text)}p+p{margin-top:20px}svg{width:21px;height:21px;flex:none}button{color:inherit}main{min-width:0}main:focus{outline:none}.page-shell{max-width:1280px;margin:0 auto;padding:0 72px;display:grid;grid-template-columns:minmax(330px,.9fr) minmax(0,1.1fr);gap:90px}.intro{position:sticky;top:0;align-self:start;height:100svh;min-height:740px;max-height:1080px;padding:48px 0 40px;display:flex;flex-direction:column}.intro-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:65px}.wordmark{font-family:var(--mono);font-size:24px;font-weight:700;letter-spacing:-3px;color:var(--text);line-height:1}.mark-slash,.mark-dot{color:var(--accent)}.mark-slash{padding:0 3px}.preferences{display:flex;align-items:center;gap:16px}.language-switch{display:flex;align-items:center;gap:2px;font-family:var(--mono);font-size:13px;line-height:1}.language-switch button{background:none;border:0;padding:12px 7px;min-height:44px;color:var(--subtle);font-weight:500}.language-switch button[aria-pressed="true"]{color:var(--accent);font-weight:700}.language-switch>span{color:var(--line)}.control-divider{height:17px;width:1px;background:var(--line)}.theme-toggle{display:grid;place-items:center;width:44px;height:44px;border:1px solid var(--line);border-radius:50%;background:transparent;transition:background .2s,transform .2s}.theme-toggle:hover{background:var(--accent-soft);transform:rotate(10deg)}.sun-icon{display:none}[data-theme="dark"] .moon-icon{display:none}[data-theme="dark"] .sun-icon{display:block}.eyebrow{font-family:var(--mono);font-size:11px;letter-spacing:1.4px;color:var(--accent);font-weight:600;margin-bottom:21px}h1{font-size:clamp(48px,4.65vw,64px);letter-spacing:-3.3px;line-height:1.05;font-weight:720}h1>span{white-space:nowrap}.name-dot{color:var(--accent)}.role{color:var(--text);font-size:20px;line-height:1.5;margin-top:23px;font-weight:500;letter-spacing:-.3px}.intro-description{max-width:335px;font-size:16px;line-height:1.75;margin-top:18px}.availability{display:flex;gap:11px;align-items:flex-start;margin-top:28px;font-size:13px;line-height:1.6}.availability strong{color:var(--accent);font-weight:550}.availability>span:last-child{display:flex;flex-direction:column;gap:3px}.availability:hover strong{text-decoration:underline;text-underline-offset:4px}.status-dot{display:block;flex:none;width:6px;height:6px;margin-top:7px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 4px var(--accent-soft)}.section-nav{margin-top:38px;display:flex;flex-direction:column;gap:2px}.section-nav a{display:flex;align-items:center;gap:12px;width:fit-content;min-height:36px;font-size:12px;letter-spacing:1.4px;text-transform:uppercase;font-weight:600;color:var(--subtle);transition:color .2s}.nav-line{width:24px;height:1px;background:var(--line);transition:width .3s,background .3s}.nav-number{font:10px var(--mono);letter-spacing:0}.section-nav a.active,.section-nav a:hover{color:var(--text)}.section-nav a.active .nav-line,.section-nav a:hover .nav-line{width:52px;background:var(--accent)}.section-nav a.active .nav-number{color:var(--accent)}.intro-bottom{margin-top:auto;padding-top:35px}.social-links{display:flex;gap:23px;align-items:center}.social-links a{display:flex;gap:7px;align-items:center;font-size:13px;color:var(--subtle);transition:color .2s,transform .2s;min-height:44px}.social-links a:hover{color:var(--accent);transform:translateY(-2px)}.social-links svg{width:18px;height:18px}.cv-link{display:flex;align-items:center;gap:9px;margin-top:16px;font-size:13px;width:fit-content;color:var(--text);min-height:40px}.cv-link svg{width:16px;height:16px}.cv-link:hover{color:var(--accent)}.file-label{font:10px var(--mono);padding:3px 6px;border:1px solid var(--line);border-radius:3px;color:var(--subtle);margin-left:4px}main{padding-top:124px}.section{padding-bottom:96px;scroll-margin-top:36px}.section-heading{display:flex;gap:12px;align-items:center;margin-bottom:29px}.section-heading h2{font-size:13px;font-weight:600;letter-spacing:1.3px;text-transform:uppercase;line-height:1.5}.section-number{font:11px var(--mono);color:var(--accent);white-space:nowrap}.section-rule{flex:1;height:1px;background:var(--line);margin-left:7px;min-width:20px}.lead{font-size:35px;font-weight:500;line-height:1.25;letter-spacing:-1.2px;margin-bottom:25px;color:var(--subtle)}.lead .text-strong{color:var(--text)}.about-section p:not(.lead){font-size:16px;line-height:1.9}.about-section strong{font-weight:550}.about-note{display:flex;gap:13px;align-items:flex-start;border-left:1px solid var(--accent);padding:12px 0 12px 18px;margin-top:28px;font-size:13px;line-height:1.65}.small-cross{font-family:var(--mono);color:var(--accent);font-size:20px;line-height:1}.project-card{background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:27px;margin-bottom:22px;box-shadow:var(--shadow);transition:transform .25s,border-color .25s,background-color .25s}.project-card:hover{transform:translateY(-3px);border-color:var(--accent)}.project-topline{display:flex;align-items:center;gap:13px;margin-bottom:17px}.project-index{font:12px var(--mono);color:var(--accent)}.project-category{font:10px var(--mono);letter-spacing:1px;color:var(--subtle)}.project-card h3{font-size:28px;line-height:1.25;letter-spacing:-1px;font-weight:650}.project-subtitle{font-size:15px;color:var(--text);margin-top:10px;font-weight:500}.project-subtitle+p{font-size:14px;line-height:1.85;margin-top:13px}.architecture{display:flex;align-items:center;margin:26px 0 22px;padding:19px 12px;background:var(--bg);border:1px solid var(--line);border-radius:5px}.architecture>div{flex:1;text-align:center;min-width:0}.architecture-label{font:9px var(--mono);letter-spacing:.8px;color:var(--subtle);display:block;margin-bottom:7px}.architecture strong{font-size:12px;font-weight:550;white-space:nowrap}.connector{height:1px;width:21px;flex:none;background:var(--accent);position:relative;opacity:.65}.connector:after{content:"";position:absolute;right:0;top:-2px;width:5px;height:5px;background:var(--accent);border-radius:50%}.tags{padding:0;margin:15px 0 0;list-style:none;display:flex;flex-wrap:wrap;gap:6px}.tags li{font-size:11px;font-weight:500;color:var(--accent-strong);background:var(--accent-soft);border-radius:4px;padding:4px 9px;line-height:1.6}.project-details{border-top:1px solid var(--line);margin-top:23px}.project-details summary{list-style:none;cursor:pointer;font-size:13px;color:var(--text);display:flex;justify-content:space-between;align-items:center;padding:15px 0}.project-details summary::-webkit-details-marker{display:none}.details-plus{font:22px var(--mono);color:var(--accent);transition:transform .25s}.project-details[open] .details-plus{transform:rotate(45deg)}.details-content{padding-bottom:20px;font-size:13px;line-height:1.8}.details-content h4{font-size:14px;font-weight:550}.details-content ul{padding-left:17px;margin:10px 0 0}.details-content li+li{margin-top:9px}.details-content li::marker{color:var(--accent)}.project-links{border-top:1px solid var(--line);padding-top:16px;display:flex;justify-content:space-between;gap:14px;align-items:center}.project-links a{display:flex;align-items:center;gap:7px;font-size:12px;color:var(--text);min-height:28px}.project-links a:hover{color:var(--accent)}.code-icon{font:13px var(--mono);color:var(--accent)}.project-type{font-size:11px;color:var(--subtle)}.text-link{font-size:13px;color:var(--text);border-bottom:1px solid var(--accent);padding-bottom:4px;display:inline-block;margin-top:5px}.text-link:hover{color:var(--accent)}.timeline{border-left:1px solid var(--line);margin-left:4px}.timeline-item{padding-left:25px;position:relative;padding-bottom:38px}.timeline-item:last-child{padding-bottom:0}.timeline-item:before{content:"";width:7px;height:7px;position:absolute;left:-4px;top:6px;border-radius:50%;background:var(--bg);border:1px solid var(--accent)}.date{font:10px var(--mono);letter-spacing:.4px;color:var(--subtle);line-height:1.6}.timeline-item h3{font-size:17px;font-weight:550;line-height:1.5;margin-top:12px}.organization{font-size:14px;color:var(--accent);margin-top:3px}.organization+p{font-size:14px;line-height:1.85;margin-top:13px}.subsection-heading{text-transform:uppercase;font-size:11px;letter-spacing:1.5px;color:var(--subtle);font-weight:600;margin:38px 0 18px}.education-list article{padding:21px 0;border-top:1px solid var(--line)}.education-top{display:flex;align-items:center;justify-content:space-between;gap:12px}.education-top h4{font-size:16px;font-weight:550}.education-list article>p{font-size:14px;line-height:1.7;margin-top:7px;color:var(--text)}.education-list article>.education-detail{font-size:12px;color:var(--subtle);margin-top:4px}.muted{color:var(--subtle)}.section-intro{margin-top:-10px;margin-bottom:28px;font-size:15px}.skills-grid{display:grid;grid-template-columns:1fr 1fr;gap:27px 28px}.skill-symbol{font:18px var(--mono);color:var(--accent);display:block;height:32px}.skill-group h3{font-size:15px;font-weight:550;margin-bottom:9px}.skill-group p{font-size:13px;line-height:1.9}.quality-row{margin-top:30px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:22px 0}.quality-row h3{font-size:14px;font-weight:550}.quality-row p{font-size:12px;margin-top:9px}.credentials p{display:flex;flex-direction:column;font-size:13px;gap:2px}.credentials p+p{margin-top:15px}.credentials strong{font-weight:500}.credentials p span{font-size:12px;color:var(--subtle)}.spoken-languages{display:flex;flex-wrap:wrap;gap:17px;margin-top:29px;font-size:12px}.spoken-languages strong{font:10px var(--mono);margin-left:3px;color:var(--accent)}.contact-section{border-top:1px solid var(--line);padding-top:35px;padding-bottom:72px}.contact-title{font-size:48px;letter-spacing:-2px;line-height:1.12;color:var(--text);font-weight:600;margin:32px 0 24px}.contact-title span{color:var(--accent)}.contact-title+p{font-size:15px;line-height:1.9}.contact-button{display:inline-flex;align-items:center;justify-content:center;background:var(--accent);color:var(--bg);padding:13px 22px;border-radius:4px;font-size:14px;font-weight:650;margin-top:29px;transition:transform .2s,box-shadow .2s}.contact-button:hover{transform:translateY(-2px);box-shadow:0 5px 20px var(--glow)}.email-address{display:block;width:fit-content;margin-top:15px;font:12px var(--mono);overflow-wrap:anywhere}.email-address:hover{color:var(--accent)}footer{border-top:1px solid var(--line);padding:23px 0 34px;display:flex;justify-content:space-between;align-items:center;gap:15px;font-size:10px}footer p{display:flex;align-items:center;gap:11px}.footer-mark{font:14px var(--mono);letter-spacing:-1px;color:var(--accent)}footer a:hover{color:var(--accent)}.reading-progress{position:fixed;top:0;left:0;height:2px;width:100%;background:var(--accent);transform:scaleX(0);transform-origin:left;z-index:20}.skip-link{position:fixed;top:10px;left:10px;transform:translateY(-160%);padding:10px 18px;background:var(--text);color:var(--bg);z-index:100;border-radius:4px}.skip-link:focus{transform:translateY(0)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.intro-copy{animation:intro-in .7s ease-out both}.section.in-view{animation:section-in .55s ease-out both}@keyframes intro-in{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes section-in{from{opacity:.5;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
@media(min-width:1100px) and (max-height:850px){.intro{padding-top:30px;padding-bottom:25px;min-height:700px}.intro-top{margin-bottom:35px}.section-nav{margin-top:24px}.intro-description{margin-top:15px}.availability{margin-top:20px}.intro-bottom{padding-top:20px}.role{margin-top:20px}.cv-link{margin-top:8px}}
@media(min-width:1600px){.page-shell{gap:120px}.intro{padding-top:60px}.intro-top{margin-bottom:90px}}
@media(max-width:1099px){.page-shell{padding:0 45px;gap:50px;grid-template-columns:minmax(290px,.9fr) minmax(0,1.1fr)}h1{font-size:52px}.intro-top{margin-bottom:45px}.project-card{padding:22px}.project-category{font-size:9px}.lead{font-size:30px}.architecture{padding:16px 7px}.connector{width:12px}.architecture strong{font-size:11px}.architecture-label{font-size:8px}.social-links{gap:14px}.social-links a{font-size:12px}.contact-title{font-size:42px}.eyebrow{font-size:10px;letter-spacing:1px}}
@media(max-width:850px){html{scroll-padding-top:25px}.page-shell{display:block;max-width:720px;padding:0 35px}.intro{height:auto;min-height:0;max-height:none;position:relative;padding:26px 0 0}.intro-top{margin-bottom:55px}.intro-copy{max-width:560px}h1{font-size:68px;letter-spacing:-3px}.eyebrow{font-size:11px;letter-spacing:1.4px}.role{font-size:23px}.intro-description{max-width:440px}.availability{margin-top:24px;font-size:14px}.section-nav{flex-direction:row;flex-wrap:wrap;gap:10px 22px;margin-top:30px}.section-nav a{font-size:11px;min-height:36px;gap:7px}.section-nav .nav-line{display:none}.section-nav .nav-number{font-size:9px}.section-nav a.active{color:var(--accent)}.intro-bottom{padding-top:24px;display:flex;align-items:center;justify-content:space-between;gap:18px;flex-wrap:wrap}.social-links{gap:22px}.social-links a{font-size:13px}.cv-link{margin-top:0}.intro{padding-bottom:40px;border-bottom:1px solid var(--line)}main{padding-top:49px}.section{padding-bottom:65px;scroll-margin-top:25px}.lead{font-size:35px}.project-card{padding:27px}.project-category{font-size:10px}.architecture{padding:20px 15px}.architecture strong{font-size:13px}.architecture-label{font-size:10px}.connector{width:28px}.contact-title{font-size:48px}.contact-section{padding-top:30px}.section-heading{margin-bottom:25px}}
@media(max-width:480px){.page-shell{padding:0 23px}.intro-top{margin-bottom:44px}.preferences{gap:11px}h1{font-size:59px;letter-spacing:-2.8px}.eyebrow{font-size:9px;letter-spacing:1.1px}.role{font-size:20px}.intro-description{font-size:15px}.availability{font-size:12px}.intro-bottom{display:block}.social-links{gap:25px}.cv-link{margin-top:12px}.section-nav{gap:2px 19px}.section-nav a{font-size:10px;letter-spacing:.8px}.section-heading h2{font-size:11px;letter-spacing:.8px}.section-number{font-size:10px}.lead{font-size:29px}.about-section p:not(.lead){font-size:15px}.project-card{padding:21px 19px}.project-category{font-size:8px;letter-spacing:.65px}.project-card h3{font-size:27px}.project-subtitle{font-size:14px}.project-subtitle+p{font-size:13px}.architecture{padding:17px 6px}.architecture strong{font-size:11px}.architecture-label{font-size:8px;letter-spacing:.4px}.connector{width:13px}.tags li{font-size:10px}.project-links{gap:8px;flex-wrap:wrap}.project-links a{font-size:11px}.project-type{font-size:10px}.skills-grid{gap:25px 20px}.skill-group h3{font-size:14px}.skill-group p{font-size:12px}.contact-title{font-size:41px}.spoken-languages{gap:12px;font-size:11px}footer{font-size:9px}.footer-mark{display:none}}
/* Keep supporting information readable, including on small screens. */
.eyebrow,.project-category,.project-index,.section-number,.architecture-label,.date,.file-label,.nav-number,.project-type,.tags li,.subsection-heading,.spoken-languages,.spoken-languages strong,footer{font-size:12px}
.project-category{line-height:1.5;letter-spacing:.5px}.eyebrow{letter-spacing:.8px}.architecture-label{font-size:10px}.architecture strong{font-size:12px;white-space:normal;display:block;line-height:1.5}.project-subtitle+p,.organization+p,.skill-group p,.about-section p:not(.lead),.contact-title+p{font-size:16px}
.project-details summary,.details-content,.project-links a,.text-link,.cv-link,.social-links a,.education-list article>.education-detail,.quality-row p,.credentials p,.credentials p span,.email-address{font-size:14px}
.section-nav a{font-size:12px;letter-spacing:.8px}.section-nav .nav-number{font-size:10px}.intro-description{font-size:16px}.availability{font-size:14px}.skills-grid{column-gap:24px}footer{flex-wrap:wrap}.project-links{flex-wrap:wrap}.architecture{padding-inline:8px}.connector{width:12px}
@media(max-width:480px){.eyebrow{font-size:10px}.section-nav{column-gap:15px}.project-category{font-size:10px}.project-links a{font-size:13px}.spoken-languages{gap:12px}.skills-grid{grid-template-columns:1fr}.skill-group{display:grid;grid-template-columns:minmax(3.5rem,max-content) minmax(0,1fr);column-gap:12px;align-items:start}.skill-symbol{float:none;width:auto;height:auto;grid-column:1;grid-row:1 / span 2;white-space:nowrap;word-break:normal;overflow-wrap:normal;line-height:1.75}.skill-group h3{grid-column:2;font-size:16px}.skill-group p{grid-column:2;margin-left:0}.education-top{align-items:flex-start}.education-top .date{white-space:nowrap}.contact-title{font-size:40px}}
.social-links{flex-wrap:wrap;row-gap:0}
.phone-link{display:flex;align-items:center;gap:9px;width:fit-content;min-height:44px;font-size:14px;color:var(--text)}
.phone-link svg{width:16px;height:16px}.phone-link:hover{color:var(--accent)}
/* Reserve visible space for contact actions. Only the introduction scrolls if
   browser zoom, translation, or a short viewport makes the sidebar too tall. */
@media(min-width:851px){
  .intro{display:grid;grid-template-rows:auto minmax(0,1fr) auto;height:100svh;min-height:0;max-height:none;padding:24px 0}
  .intro-top{margin-bottom:24px}
  .intro-copy{min-height:0;overflow-y:auto;overflow-x:hidden;scrollbar-width:thin;scrollbar-color:var(--line) transparent;padding:6px 12px 12px 6px;margin-left:-6px}
  .intro-bottom{margin-top:0;padding-top:16px;border-top:1px solid var(--line)}
  .cv-link{margin-top:4px;max-width:100%;flex-wrap:wrap;row-gap:0}
  .eyebrow{margin-bottom:16px}
  .section-nav{margin-top:24px}
}
@media(min-width:851px) and (max-height:1000px){
  .intro{padding:16px 0}.intro-top{margin-bottom:14px}
  .intro h1{font-size:48px}.intro .role{font-size:18px;margin-top:16px}
  .intro-description{margin-top:12px}.availability{margin-top:16px}
  .section-nav{display:grid;grid-template-columns:1fr 1fr;gap:0 8px;margin-top:18px}
  .section-nav .nav-line{display:none}.section-nav a{font-size:11px;gap:7px}
  .intro-bottom{padding-top:8px}
}
@media(max-width:850px){.phone-link{flex-basis:100%}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.project-card:hover,.social-links a:hover,.contact-button:hover{transform:none}}
