:root{--bg: #0b1915;--bg-raised: #112620;--bg-elevated: #15302a;--text: #e7ede9;--text-dim: #a6b7af;--text-faint: #71847c;--accent: #58b2e6;--accent-dim: #3f8fc0;--accent-tint: rgba(88, 178, 230, .16);--accent-contrast: #06141f;--danger: #e0a090;--danger-tint: rgba(224, 160, 144, .14);--font-display: "Newsreader", "Iowan Old Style", serif;--font-body: "IBM Plex Sans", "Segoe UI", sans-serif;--font-mono: "IBM Plex Mono", "SFMono-Regular", monospace;--content-max: 760px;--page-max: 1120px;--gutter: clamp(1.5rem, 5vw, 4rem);--nav-height: 68px;--ease: cubic-bezier(.22, 1, .36, 1)}[data-theme=light]{--bg: #eef1f0;--bg-raised: #ffffff;--bg-elevated: #e3e8e6;--text: #13231d;--text-dim: #4c5c56;--text-faint: #7c8c86;--accent: #2c6a91;--accent-dim: #1f4f6d;--accent-tint: rgba(44, 106, 145, .12);--accent-contrast: #f3f8fb;--danger: #93402f;--danger-tint: rgba(147, 64, 47, .1)}html{color-scheme:dark}html[data-theme=light]{color-scheme:light}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--text);font-family:var(--font-body);font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased;overflow-x:hidden;transition:background .22s var(--ease),color .22s var(--ease)}h1,h2,h3,h4{font-family:var(--font-display);font-weight:500;line-height:1.15;margin:0;color:var(--text)}p{margin:0}a{color:inherit;text-decoration:none}ul{margin:0;padding:0;list-style:none}img{max-width:100%;display:block}button{font:inherit;color:inherit;background:none;border:none;cursor:pointer;padding:0}:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.eyebrow{font-family:var(--font-mono);font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--accent)}.section-heading{font-size:clamp(1.7rem,2.8vw,2.3rem);max-width:24ch}.external-link{display:inline-flex;align-items:center;gap:.35em;font-size:.9rem;color:var(--accent-dim);transition:color .18s var(--ease)}.external-link svg{transition:transform .2s var(--ease)}.external-link:hover{color:var(--accent)}.external-link:hover svg{transform:translate(2px,-2px)}.btn{display:inline-flex;align-items:center;gap:.5rem;font-family:var(--font-mono);font-size:.86rem;padding:.8rem 1.3rem;background:var(--bg-raised);color:var(--text);transition:background .18s var(--ease),color .18s var(--ease),transform .18s var(--ease)}.btn:hover{transform:translateY(-2px)}.btn-solid{background:var(--accent);color:var(--accent-contrast)}.btn-solid:hover{background:var(--accent-dim)}.btn-ghost:hover{background:var(--bg-elevated);color:var(--accent)}.navbar{position:fixed;top:0;left:0;right:0;height:var(--nav-height);z-index:40;display:flex;align-items:center;background:var(--bg)}.navbar-inner{width:100%;max-width:var(--page-max);margin:0 auto;padding:0 var(--gutter);display:flex;align-items:center;justify-content:space-between;gap:1rem;min-width:0}.navbar-logo{font-family:var(--font-mono);font-size:.9rem;color:var(--text);white-space:nowrap;display:inline}.navbar-logo .dot{color:var(--accent)}.navbar-links{flex:1;min-width:0;display:flex;align-items:center;justify-content:center;justify-content:safe center;gap:.8rem;overflow-x:auto;scrollbar-width:none}.navbar-links::-webkit-scrollbar{display:none}.navbar-link{font-family:var(--font-mono);font-size:.76rem;color:var(--text-dim);white-space:nowrap;padding:.3rem 0;transition:color .16s var(--ease)}.navbar-link:hover{color:var(--text)}.navbar-link.active{color:var(--accent)}.navbar-controls{display:flex;align-items:center;gap:.5rem;flex-shrink:0}.icon-toggle{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;color:var(--text-dim);transition:color .16s var(--ease),background .16s var(--ease)}.icon-toggle:hover{color:var(--accent);background:var(--bg-raised)}.lang-pill{font-family:var(--font-mono);font-size:.7rem;width:auto;padding:0 .6rem}.nav-menu-toggle{display:none}.scroll-progress{position:fixed;top:var(--nav-height);left:0;right:0;height:2px;background:var(--accent);transform-origin:left;z-index:39}.main{padding-top:var(--nav-height);min-width:0;position:relative;overflow:hidden}.section{padding:clamp(5rem,9vw,8.5rem) var(--gutter);max-width:var(--page-max);margin:0 auto;position:relative;scroll-margin-top:var(--nav-height)}.section--band:before{content:"";position:absolute;top:0;bottom:0;left:50%;width:100vw;transform:translate(-50%);background:var(--bg-raised);z-index:0}.section--band>*{position:relative;z-index:1}.section-head{display:flex;flex-direction:column-reverse;align-items:flex-start;gap:.8rem;margin-bottom:2.6rem}.section-index{font-family:var(--font-mono);font-size:.7rem;letter-spacing:.18em;color:var(--text-faint);white-space:nowrap}.hero{scroll-margin-top:var(--nav-height)}@media (max-width: 1024px){.nav-menu-toggle{display:inline-flex}.navbar-inner{gap:1rem}.navbar-controls{gap:.35rem}.lang-pill{padding:0 .45rem}.navbar-links{display:none;position:absolute;top:100%;left:0;right:0;flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:.2rem;max-height:calc(100vh - var(--nav-height));overflow-y:auto;padding:1rem var(--gutter) 1.6rem;background:var(--bg-raised)}.navbar-links.open{display:flex}.navbar-link{font-size:.9rem;padding:.65rem 0}}@media (max-width: 400px){.navbar-logo{font-size:.82rem}.icon-toggle{width:32px;height:32px}.lang-pill{font-size:.66rem}}.hero{min-height:calc(100vh - var(--nav-height));display:flex;flex-direction:column;justify-content:center;padding:clamp(2rem,8vw,4rem) var(--gutter);max-width:var(--page-max);margin:0 auto;position:relative;overflow:hidden}.hero-symbols{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:0}.hero-symbol{position:absolute;font-family:var(--font-display);font-style:italic;color:var(--accent);opacity:.14;animation:drift 14s ease-in-out infinite}@keyframes drift{0%,to{transform:translateY(0) rotate(0)}50%{transform:translateY(-22px) rotate(4deg)}}.hero-layout{position:relative;z-index:1;display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:clamp(2rem,5vw,4rem);align-items:center}.hero-content{position:relative;z-index:1}.hero-kicker{font-family:var(--font-mono);font-size:.86rem;color:var(--accent);display:flex;align-items:center;gap:.5rem}.hero-kicker .cursor{display:inline-block;width:8px;height:1.1em;background:var(--accent);animation:blink 1.1s steps(1) infinite}@keyframes blink{50%{opacity:0}}.hero-name{font-size:clamp(2.6rem,7vw,4.6rem);margin-top:1rem;max-width:16ch}.hero-role{font-family:var(--font-mono);font-size:clamp(1rem,2vw,1.25rem);color:var(--text-dim);margin-top:1.1rem;min-height:1.6em}.hero-role .typed-accent{color:var(--accent)}.hero-lede{font-family:var(--font-display);font-size:clamp(1.1rem,1.7vw,1.35rem);line-height:1.5;color:var(--text);margin-top:1.4rem;max-width:38ch}.hero-actions{display:flex;flex-wrap:wrap;gap:.9rem;margin-top:2.4rem}.hero-portrait{position:relative;margin:0;justify-self:end;width:min(100%,380px)}.hero-portrait:before{content:"";position:absolute;top:1.5rem;left:1.5rem;right:-1.5rem;bottom:-1.5rem;background:var(--accent)}.hero-portrait img{position:relative;z-index:1;width:100%;aspect-ratio:13 / 20;object-fit:cover;object-position:center top}.hero-scroll-cue{position:absolute;bottom:1.5rem;left:var(--gutter);display:flex;align-items:center;gap:.6rem;font-family:var(--font-mono);font-size:.74rem;color:var(--text-faint)}.profile-lede{font-family:var(--font-display);font-size:clamp(1.2rem,2vw,1.5rem);line-height:1.45;color:var(--text);margin:1.4rem 0 1.8rem;max-width:34ch}.profile-layout{display:grid;grid-template-columns:1.15fr .85fr;gap:clamp(2rem,4vw,3.5rem);align-items:start}.profile-body{display:flex;flex-direction:column;gap:1.1rem;color:var(--text-dim);max-width:var(--content-max)}.profile-languages{margin-top:2.4rem;display:flex;gap:.8rem;align-items:baseline;font-size:.88rem;color:var(--text-faint)}.profile-aside{display:flex;flex-direction:column}.quick-facts{background:var(--bg-raised);padding:.4rem 0}.quick-fact{display:flex;justify-content:space-between;gap:1rem;padding:1rem 1.2rem;font-size:.88rem}.quick-fact .k{font-family:var(--font-mono);color:var(--text-faint)}.quick-fact .v{color:var(--text);text-align:right;overflow-wrap:anywhere}.skills-block{margin-top:clamp(2.8rem,5vw,4.2rem)}.skills-block .eyebrow{display:block;margin-bottom:1.1rem}.skills-matrix{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.6rem}.skill-cell{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:baseline;gap:.7rem;min-width:0;padding:1rem 1.1rem;background:var(--bg-raised)}.skill-index{font-family:var(--font-mono);font-size:.66rem;letter-spacing:.08em;color:var(--text-faint)}.skill-name{font-size:.9rem;color:var(--text);overflow-wrap:anywhere}.skill-level{font-family:var(--font-mono);font-size:.76rem;color:var(--accent-dim);white-space:nowrap}.skill-level .unit{font-size:.68em;margin-left:1px;color:var(--text-faint)}.section-intro{color:var(--text-dim);max-width:54ch}.subsection-heading{font-size:clamp(1.3rem,2vw,1.6rem);margin-top:3.5rem}.subsection-intro{color:var(--text-dim);margin-top:.5rem;margin-bottom:2rem;max-width:52ch}.research-intro{max-width:68ch;margin-bottom:2.6rem}.research-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.research-card{display:flex;flex-direction:column;gap:.8rem;min-width:0;min-height:220px;padding:clamp(1.5rem,3vw,2rem);background:var(--bg-raised);transition:transform .22s var(--ease)}.research-card:hover{transform:translateY(-2px)}.research-index{font-family:var(--font-mono);font-size:.68rem;letter-spacing:.16em;color:var(--accent-dim)}.research-card h3{font-size:clamp(1.1rem,1.8vw,1.3rem);max-width:26ch}.research-card p{color:var(--text-dim);font-size:.95rem;max-width:50ch}.path-list{display:flex;flex-direction:column;gap:2.6rem}.path-entry{display:grid;grid-template-columns:minmax(0,12rem) 1fr;gap:clamp(1.5rem,4vw,3rem)}.path-meta{display:flex;flex-direction:column;gap:.4rem}.path-period{font-family:var(--font-mono);font-size:.8rem;color:var(--accent-dim)}.path-org{color:var(--text-faint);font-size:.92rem}.path-title{font-size:1.15rem;font-weight:600;font-family:var(--font-body)}.path-points{margin-top:.8rem;display:flex;flex-direction:column;gap:.5rem}.path-points li{color:var(--text-dim);padding-left:1rem;position:relative}.path-points li:before{content:"";position:absolute;left:0;top:.68em;width:4px;height:4px;background:var(--accent-dim)}.path-text{color:var(--text-dim);margin-top:.6rem;max-width:52ch}.project-featured{background:var(--bg-elevated);padding:clamp(1.8rem,4vw,2.8rem);margin-bottom:3rem}.project-featured .eyebrow{display:block;margin-bottom:.8rem}.project-featured h3{font-size:1.5rem;max-width:28ch}.project-featured .tag{font-family:var(--font-mono);font-size:.78rem;color:var(--accent-dim);display:inline-block;margin-top:.9rem}.project-featured p{color:var(--text-dim);margin-top:1rem;max-width:60ch}.project-list{display:flex;flex-direction:column;gap:2.2rem;counter-reset:project}.project-row{display:grid;grid-template-columns:minmax(0,17rem) 1fr;gap:1.5rem;transition:transform .22s var(--ease)}.project-row:hover{transform:translate(.4rem)}.project-row h3{font-size:1.05rem;font-weight:600;font-family:var(--font-body)}.project-row h3:before{counter-increment:project;content:counter(project,decimal-leading-zero);display:block;font-family:var(--font-mono);font-size:.72rem;letter-spacing:.12em;color:var(--accent-dim);margin-bottom:.45rem;font-weight:400}.project-row .tag{font-family:var(--font-mono);font-size:.74rem;color:var(--text-faint);display:block;margin-top:.3rem}.project-row p{color:var(--text-dim);max-width:52ch}.project-row .external-link{margin-top:.8rem}.cert-intro{color:var(--text-dim);max-width:56ch;margin-bottom:2.4rem}.cert-featured{display:grid;grid-template-columns:1.1fr .9fr;gap:clamp(1.5rem,3vw,2.5rem);align-items:start;background:var(--bg-raised);padding:clamp(1.5rem,3vw,2.2rem);margin-bottom:2.8rem}.cert-protected{position:relative;overflow:hidden;background:var(--bg-elevated);-webkit-user-select:none;user-select:none}.cert-protected img{width:100%;pointer-events:none}.cert-watermark{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;pointer-events:none}.cert-watermark span{font-family:var(--font-mono);font-size:.95rem;color:var(--text);opacity:.4;mix-blend-mode:difference;white-space:nowrap;transform:rotate(-24deg)}.cert-protected-notice{display:flex;align-items:center;gap:.4rem;font-family:var(--font-mono);font-size:.72rem;color:var(--text-faint);margin-top:.7rem}.cert-detail h3{font-size:1.15rem}.cert-detail .issuer{color:var(--text-faint);font-size:.92rem;margin-top:.3rem}.cert-detail .date{font-family:var(--font-mono);font-size:.78rem;color:var(--text-faint);margin-top:.6rem;display:block}.cert-detail .external-link{margin-top:1rem}.cert-featured-media{position:relative}.cert-featured-image img,.cert-badge-image img{-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.cert-badges{margin-bottom:2.8rem}.cert-badges-heading{color:var(--text-dim);font-family:var(--font-mono);font-size:.78rem;font-weight:500;letter-spacing:.08em;text-transform:uppercase;margin-bottom:1rem}.cert-badge-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1rem}.cert-badge{display:flex;flex-direction:column;min-width:0;background:var(--bg-raised)}.cert-badge-image{aspect-ratio:4 / 5;display:grid;place-items:center;overflow:hidden;background:#fff}.cert-badge-image img{width:100%;height:100%;object-fit:contain}.cert-badge-content{display:flex;flex-direction:column;align-items:flex-start;gap:.3rem;padding:1rem}.cert-badge-content h3{font-size:.94rem;line-height:1.25}.cert-badge-content .issuer{color:var(--text-faint);font-size:.8rem;line-height:1.35}.cert-badge-content .cert-date{font-family:var(--font-mono);font-size:.74rem;color:var(--accent-dim)}.cert-badge-content .external-link{margin-top:.45rem}.cert-list{display:flex;flex-direction:column;gap:1.8rem}.cert-row-main{min-width:0}.cert-row-link{flex-shrink:0}.cert-row{display:flex;justify-content:space-between;align-items:baseline;gap:1rem}.cert-row h3{font-size:1rem;font-weight:600;font-family:var(--font-body)}.cert-row .issuer{color:var(--text-faint);font-size:.86rem}.cert-date{color:var(--accent-dim)}.publication-entry{background:var(--bg-raised);padding:clamp(1.5rem,3vw,2rem)}.publication-entry .eyebrow{display:block;margin-bottom:.7rem}.publication-entry h3{font-size:1.15rem;max-width:44ch}.publication-entry p{color:var(--text-dim);margin-top:.8rem}.outside-layout{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:clamp(2rem,5vw,4rem);align-items:center}.outside-photo{justify-self:end;width:min(100%,460px);aspect-ratio:4 / 3;overflow:hidden;margin-top:-2.5rem}.outside-photo .parallax-media{height:100%}.outside-photo img{width:100%;height:100%;object-fit:cover;transform:scale(1.12)}.outside-text{color:var(--text-dim);max-width:50ch}.contact-layout{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:clamp(2.5rem,6vw,5rem);align-items:start}.contact-info{display:flex;flex-direction:column;gap:2.2rem}.contact-grid{display:flex;flex-direction:column;gap:.15rem}.contact-item{display:flex;align-items:center;gap:1rem;padding:.55rem 0;transition:transform .18s var(--ease)}.contact-item:hover{transform:translate(.3rem)}.contact-item .icon-box{width:2.4rem;height:2.4rem;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;background:var(--bg-raised);color:var(--accent)}.contact-item .label{font-family:var(--font-mono);font-size:.68rem;letter-spacing:.12em;text-transform:uppercase;color:var(--text-faint);display:block}.contact-item .value{font-size:.95rem;margin-top:.12rem;overflow-wrap:anywhere;transition:color .16s var(--ease)}.contact-item:hover .value{color:var(--accent)}.contact-context{display:flex;flex-wrap:wrap;gap:1.4rem 2.5rem}.contact-context-item .label{display:block;font-family:var(--font-mono);font-size:.68rem;letter-spacing:.12em;text-transform:uppercase;color:var(--text-faint)}.contact-context-item .value{display:block;margin-top:.25rem;font-size:.9rem;color:var(--text)}.contact-form-title{font-size:clamp(1.35rem,2vw,1.6rem);margin-bottom:1.5rem}.contact-form{display:flex;flex-direction:column;gap:1.1rem}.field-pair{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.2rem}.field{display:flex;flex-direction:column;gap:.45rem;font-family:var(--font-mono);font-size:.7rem;letter-spacing:.12em;text-transform:uppercase;color:var(--text-faint)}.field input,.field textarea{width:100%;font-family:var(--font-body);font-size:.95rem;letter-spacing:normal;text-transform:none;color:var(--text);background:var(--bg-raised);padding:.85rem 1rem;border:none;resize:vertical}.field input::placeholder,.field textarea::placeholder{color:var(--text-faint)}.field input:focus,.field textarea:focus{outline:1px solid var(--accent);outline-offset:0}.btn-submit{width:100%;justify-content:center}.btn-submit:disabled{opacity:.6;cursor:wait;transform:none}.form-status{font-size:.88rem;padding:.8rem 1rem;background:var(--accent-tint);color:var(--accent)}.form-status.error{background:var(--danger-tint);color:var(--danger)}@media (max-width: 1100px){.cert-badge-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width: 860px){.hero-layout{grid-template-columns:1fr}.hero-portrait{justify-self:start;width:min(100%,420px);margin-top:1rem}.profile-layout,.cert-featured,.outside-layout,.contact-layout{grid-template-columns:minmax(0,1fr)}.research-intro{margin-bottom:2.2rem}.skills-matrix,.cert-badge-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.outside-photo{justify-self:start;width:100%;margin-top:0}}@media (max-width: 760px){.project-row,.path-entry{grid-template-columns:1fr;gap:.5rem}.cert-row{flex-direction:column;gap:.2rem}.research-grid{grid-template-columns:1fr}.research-card{min-height:0}}@media (max-width: 560px){.section{padding-top:4rem;padding-bottom:4rem}.field-pair,.cert-badge-grid{grid-template-columns:1fr}.quick-fact{flex-direction:column;gap:.25rem}.quick-fact .v{text-align:left}.skills-matrix{grid-template-columns:1fr}}.site-footer{background:var(--bg-raised);padding:clamp(2.8rem,5vw,4rem) var(--gutter)}.footer-inner{max-width:var(--page-max);margin:0 auto;display:grid;grid-template-columns:minmax(0,1.2fr) auto;gap:2.5rem;align-items:start}.footer-brand{display:flex;flex-direction:column;gap:.6rem}.footer-logo{font-family:var(--font-mono);font-size:1rem;color:var(--text)}.footer-logo .dot{color:var(--accent)}.footer-tagline{font-size:.92rem;color:var(--text-dim);max-width:42ch}.footer-links{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:1.2rem 1.8rem;font-family:var(--font-mono);font-size:.8rem}.footer-links a{color:var(--text-dim);transition:color .16s var(--ease)}.footer-links a:hover{color:var(--accent)}.footer-top{display:inline-flex;align-items:center;gap:.4rem;font-family:var(--font-mono);font-size:.8rem;color:var(--text-dim);transition:color .16s var(--ease)}.footer-top:hover{color:var(--accent)}.footer-meta{grid-column:1 / -1;display:flex;flex-wrap:wrap;gap:.5rem 1.2rem;margin-top:1rem;font-family:var(--font-mono);font-size:.68rem;letter-spacing:.08em;text-transform:uppercase;color:var(--text-faint)}@media (max-width: 760px){.footer-inner{grid-template-columns:1fr;gap:1.8rem}.footer-links{justify-content:flex-start}}
