@font-face{font-family:Outfit;src:url(/fonts/Outfit-300.ttf) format("truetype");font-weight:300;font-style:normal;font-display:swap}@font-face{font-family:Outfit;src:url(/fonts/Outfit-400.ttf) format("truetype");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Outfit;src:url(/fonts/Outfit-500.ttf) format("truetype");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:Outfit;src:url(/fonts/Outfit-600.ttf) format("truetype");font-weight:600;font-style:normal;font-display:swap}@font-face{font-family:Outfit;src:url(/fonts/Outfit-700.ttf) format("truetype");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:Space Grotesk;src:url(/fonts/SpaceGrotesk-500.ttf) format("truetype");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:Space Grotesk;src:url(/fonts/SpaceGrotesk-700.ttf) format("truetype");font-weight:700;font-style:normal;font-display:swap}:root{color-scheme:light dark;--bg: #f6f2ff;--panel: rgba(255, 255, 255, .8);--text: #221833;--muted: #4f3e67;--line: rgba(92, 73, 128, .28);--accent: #8b5cf6;--accent-soft: #a78bfa;--shadow: 0 18px 36px -22px rgba(62, 37, 110, .32);--ghost-bg: rgba(255, 255, 255, .65);--card-bg: rgba(255, 255, 255, .72);--photo-border: rgba(255, 255, 255, .75);--reading-measure: 68ch;--lead-measure: 62ch}@media(prefers-color-scheme:dark){:root{--bg: #150f22;--panel: rgba(32, 24, 48, .78);--text: #f3ebff;--muted: #d8c9ea;--line: rgba(214, 189, 250, .36);--accent: #b08cff;--accent-soft: #b794f6;--shadow: 0 20px 40px -24px rgba(5, 2, 12, .9);--ghost-bg: rgba(39, 29, 60, .65);--card-bg: rgba(39, 29, 60, .62);--photo-border: rgba(233, 222, 255, .45)}}:root[data-theme=dark]{--bg: #150f22;--panel: rgba(32, 24, 48, .78);--text: #f3ebff;--muted: #d8c9ea;--line: rgba(214, 189, 250, .36);--accent: #b08cff;--accent-soft: #b794f6;--shadow: 0 20px 40px -24px rgba(5, 2, 12, .9);--ghost-bg: rgba(39, 29, 60, .65);--card-bg: rgba(39, 29, 60, .62);--photo-border: rgba(233, 222, 255, .45)}:root[data-theme=light]{--bg: #f6f2ff;--panel: rgba(255, 255, 255, .8);--text: #221833;--muted: #4f3e67;--line: rgba(92, 73, 128, .28);--accent: #8b5cf6;--accent-soft: #a78bfa;--shadow: 0 18px 36px -22px rgba(62, 37, 110, .32);--ghost-bg: rgba(255, 255, 255, .65);--card-bg: rgba(255, 255, 255, .72);--photo-border: rgba(255, 255, 255, .75)}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0}html:focus-within{scroll-behavior:smooth}body{min-height:100vh;font-family:Outfit,sans-serif;color:var(--text);background:var(--bg);line-height:1.7;overflow-x:hidden}body:before{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(circle at 20% 20%,rgba(196,181,253,.45),transparent 40%),radial-gradient(circle at 80% 30%,rgba(167,139,250,.32),transparent 34%),var(--bg);background-size:140% 140%;animation:backgroundDrift 36s ease-in-out infinite alternate}.skip-link{position:absolute;top:-100%;left:.8rem;z-index:30;background:var(--accent);color:#fbf8ff;text-decoration:none;border-radius:.5rem;padding:.55rem .8rem;font-weight:600}.skip-link:focus-visible{top:.8rem}.container{width:min(960px,92vw);margin:0 auto;padding:2rem 0 1.5rem;position:relative;z-index:2}.container>:last-child{margin-bottom:0}.site-footer{width:min(960px,92vw);margin:0 auto;padding:0 0 1rem;text-align:center;font-size:.86rem;color:var(--muted)}.site-footer a{color:inherit;text-decoration-color:color-mix(in srgb,var(--muted) 60%,transparent)}.site-footer span{color:color-mix(in srgb,var(--muted) 62%,transparent);margin:0 .35rem}.container-coming-soon{min-height:100svh;display:grid;place-items:center;padding:1.25rem 0}.theme-toggle{display:inline-flex;gap:.3rem;border-radius:999px;border:1px solid var(--line);background:var(--panel);backdrop-filter:blur(6px);padding:.25rem;box-shadow:var(--shadow)}.theme-dock{position:fixed;right:1rem;bottom:1rem;z-index:35;display:flex;flex-direction:row;align-items:flex-end;gap:.45rem}.theme-fab{width:3rem;height:3rem;border:1px solid var(--line);border-radius:999px;background:var(--panel);color:var(--text);box-shadow:var(--shadow);backdrop-filter:blur(6px);cursor:pointer;display:grid;place-items:center;transition:background-color .18s ease,color .18s ease,border-color .18s ease}.theme-fab:hover{background:var(--ghost-bg)}.theme-fab-icon{color:var(--accent)}.theme-toggle{display:inline-flex;white-space:nowrap;transform-origin:right center;opacity:0;transform:translate(8px) scale(.96);pointer-events:none;transition:transform .18s ease,opacity .18s ease}.theme-dock.is-open .theme-toggle{opacity:1;transform:translate(0) scale(1);pointer-events:auto}.theme-option{border:0;border-radius:999px;background:transparent;color:var(--muted);padding:.4rem .72rem;font:inherit;font-size:.82rem;line-height:1.2;min-height:2.4rem;font-weight:600;cursor:pointer;transition:background-color .18s ease,color .18s ease,transform .18s ease}.theme-option:hover{transform:translateY(-1px)}.theme-option[aria-pressed=true]{color:#221833;background:var(--accent-soft)}.section{background:var(--panel);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:1.25rem;padding:clamp(1.25rem,2.8vw,2rem);backdrop-filter:blur(6px);margin-bottom:1rem}.hero{min-height:52vh;display:grid;grid-template-columns:1.2fr .8fr;grid-template-areas:"intro photo" "details photo";gap:1.25rem;align-items:center}.coming-soon{width:min(760px,100%);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.75rem;text-align:center;margin-bottom:0}.coming-soon .lead{margin-bottom:0}#about p{max-width:none}.cv-grid{display:grid;grid-template-columns:1fr;gap:.9rem;margin-bottom:1rem;padding:.7rem;border-radius:1.1rem;border:1px solid color-mix(in srgb,var(--line) 85%,transparent);background:color-mix(in srgb,var(--panel) 82%,transparent)}.cv-group{margin-bottom:0;transition:none;position:relative;overflow:clip}.cv-group:hover{transform:none;border-color:var(--line)}.cv-summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:.5rem}.cv-summary::-webkit-details-marker{display:none}.cv-summary h2{margin:0}.cv-summary:after{content:"";width:.55rem;height:.55rem;border-right:2px solid var(--accent);border-bottom:2px solid var(--accent);transform:rotate(45deg);transition:transform .16s ease;margin-right:.2rem}.cv-group[open] .cv-summary:after{transform:rotate(225deg)}.cv-content{overflow:hidden;max-height:0;opacity:0;transition:max-height .28s ease,opacity .22s ease}.cv-group[open] .cv-content{opacity:1}.cv-list{list-style:none;margin:0;padding:0;display:grid;gap:.95rem;padding-top:.9rem}.cv-item{display:grid;gap:.2rem;padding-bottom:.75rem;border-bottom:1px solid var(--line)}.cv-item:last-child{border-bottom:0;padding-bottom:0}.cv-topline{display:flex;align-items:baseline;justify-content:space-between;gap:.8rem}.cv-topline strong{color:var(--text);font-weight:600}.cv-topline time{color:var(--muted);font-size:.86rem;font-weight:500;white-space:nowrap}.cv-meta{max-width:none;color:var(--accent);opacity:.95;font-size:.9rem;font-weight:500}.cv-desc{max-width:none;color:var(--muted);font-size:.92rem;line-height:1.62}.hero-intro{grid-area:intro}.hero-details{grid-area:details;display:flex;flex-direction:column;gap:.5rem}.profile-photo{grid-area:photo;--photo-frame-size: .35rem;margin:0;width:clamp(180px,24vw,260px);aspect-ratio:1;position:relative;justify-self:center;border-radius:999px;box-shadow:0 14px 30px -18px #5b2da8a6}.profile-photo:before{content:"";position:absolute;inset:0;border-radius:inherit;background:linear-gradient(150deg,#8b5cf694,#c4b5fda6)}.profile-photo-image{position:absolute;inset:var(--photo-frame-size);width:calc(100% - (var(--photo-frame-size) * 2));height:calc(100% - (var(--photo-frame-size) * 2));display:block;object-fit:cover;object-position:center 20%;border-radius:999px;border:1px solid var(--photo-border)}.eyebrow{margin:0;color:var(--accent);font-weight:600;letter-spacing:.04em;text-transform:uppercase;font-size:.8rem}h1,h2,h3{font-family:Space Grotesk,sans-serif;margin:0;line-height:1.1}h1{font-size:clamp(2rem,8vw,4.5rem)}h2{font-size:clamp(1.4rem,4vw,2rem);margin-bottom:.8rem}h3{font-size:1.2rem;margin-bottom:.25rem}p{margin:0;color:var(--muted);max-width:var(--reading-measure);line-height:1.72}.lead{max-width:var(--lead-measure);color:var(--text);font-size:clamp(1rem,2.2vw,1.2rem);margin:.5rem 0 1rem}.cta-group{display:flex;gap:.65rem;flex-wrap:wrap;justify-content:center}.button{display:inline-flex;align-items:center;justify-content:center;border-radius:999px;padding:.62rem 1rem;min-height:2.75rem;text-decoration:none;font-weight:600;transition:transform .18s ease,box-shadow .18s ease,background-color .18s ease}.button:hover{transform:translateY(-2px)}a:focus-visible,button:focus-visible{outline:3px solid var(--accent);outline-offset:3px}.button.primary{background:linear-gradient(90deg,var(--accent),var(--accent-soft));color:#fbf8ff;box-shadow:0 10px 24px -12px #5b2da8ad}.button.ghost{color:var(--text);border:1px solid var(--line);background:var(--ghost-bg)}.card-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.8rem}.card{border-radius:1rem;border:1px solid var(--line);padding:1rem;background:var(--card-bg);transition:transform .22s ease,border-color .22s ease}.card p{max-width:none}#publications .card{display:grid;grid-template-rows:4.35em auto 9.2em auto;align-content:start;gap:.35rem}#publications .card h3{margin:0}.pub-meta{color:var(--accent);font-size:.88rem;font-weight:500;margin:0}.pub-summary{margin:0;line-height:1.55;overflow:hidden}.pub-links{margin-top:.15rem;font-size:.9rem;display:flex;flex-wrap:wrap;gap:.35rem;align-items:center;align-self:start}.pub-links span{color:color-mix(in srgb,var(--muted) 72%,transparent)}.coaster-intro{max-width:none;margin-bottom:.55rem}.coaster-title{margin-bottom:.35rem}.coaster-emph{color:var(--accent);font-family:Space Grotesk,sans-serif;font-weight:700;letter-spacing:.01em}.coaster-section{position:relative;overflow:hidden}.coaster-section:after{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(circle at 85% 10%,rgba(167,139,250,.14),transparent 34%);opacity:.28}.coaster-grid{display:grid;grid-template-columns:minmax(0,.95fr) minmax(0,1.05fr);gap:.8rem}.coaster-card h3{margin-bottom:.55rem}.coaster-list{list-style:none;margin:0;padding:0;display:grid;gap:.35rem}.coaster-list li{display:flex;align-items:baseline;justify-content:space-between;gap:.65rem;padding:.2rem 0;border-bottom:1px solid color-mix(in srgb,var(--line) 80%,transparent)}.coaster-list li:last-child{border-bottom:0}.coaster-list span{color:var(--muted)}.coaster-card--design{overflow:hidden}.design-chart{list-style:none;margin:0;padding:0;display:grid;gap:.42rem}.design-row{display:grid;grid-template-columns:minmax(90px,1fr) 1.6fr auto;gap:.55rem;align-items:center}.design-label{color:var(--muted);font-size:.9rem}.design-bar-track{height:.58rem;border-radius:999px;background:transparent;overflow:hidden}.design-bar-fill{width:0%;height:100%;border-radius:inherit;background:linear-gradient(90deg,color-mix(in srgb,var(--accent-soft) 92%,transparent),color-mix(in srgb,var(--accent) 92%,transparent))}.count-number{color:var(--accent);font-family:Space Grotesk,sans-serif;font-size:1.05rem;font-weight:700;letter-spacing:.02em;min-width:2.6ch;text-align:right}.coaster-card--overview .coaster-list{margin-bottom:0}.card:hover{transform:translateY(-5px);border-color:#8b5cf680}#resume .card:hover{transform:none;border-color:var(--line)}a{color:var(--accent);text-decoration-line:underline;text-decoration-thickness:.09em;text-underline-offset:.14em}.bg-orb{position:fixed;width:min(34vw,280px);aspect-ratio:1;border-radius:50%;filter:blur(42px);z-index:1;pointer-events:none;opacity:.48;will-change:transform,opacity,filter;animation:drift 14s ease-in-out infinite alternate,biolumPulse 9.5s ease-in-out infinite}.orb-one{left:-4%;top:10%;background:#c4b5fd99}.orb-two{right:-4%;bottom:12%;background:#a78bfa7a;animation-delay:1.8s,2.6s}.reveal{opacity:0;transform:translateY(14px);animation:reveal .6s ease forwards}.section:nth-of-type(2){animation-delay:.12s}.section:nth-of-type(3){animation-delay:.2s}.section:nth-of-type(4){animation-delay:.28s}@keyframes reveal{to{opacity:1;transform:translateY(0)}}@keyframes drift{0%{transform:translateY(0) scale(1)}to{transform:translateY(-22px) scale(1.06)}}@keyframes backgroundDrift{0%{background-position:0% 0%}to{background-position:100% 100%}}@keyframes biolumPulse{0%{opacity:.36;filter:blur(42px) brightness(.88) saturate(.95) drop-shadow(0 0 0 rgba(115,240,255,0))}50%{opacity:.56;filter:blur(43px) brightness(1.08) saturate(1.08) drop-shadow(0 0 12px rgba(115,240,255,.14))}to{opacity:.4;filter:blur(42px) brightness(.92) saturate(1) drop-shadow(0 0 0 rgba(115,240,255,0))}}@media(max-width:900px){.theme-dock{right:max(.7rem,env(safe-area-inset-right));bottom:calc(max(.7rem,env(safe-area-inset-bottom)) + 2.6rem);gap:.35rem}.theme-fab{width:2.7rem;height:2.7rem;background:color-mix(in srgb,var(--panel) 88%,transparent);border-color:color-mix(in srgb,var(--line) 78%,transparent)}.theme-fab-icon{transform:scale(.94)}.theme-option{min-height:2.2rem;padding:.34rem .62rem;font-size:.78rem}.theme-toggle{background:color-mix(in srgb,var(--panel) 92%,transparent)}.hero{grid-template-columns:1fr;grid-template-areas:"intro" "photo" "details";justify-items:center;gap:1rem;text-align:center}.hero-details{align-items:center}.profile-photo{width:clamp(164px,34vw,220px);justify-self:center}.lead{max-width:46ch}.card-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.cv-grid{grid-template-columns:1fr}.cv-topline{flex-direction:column;align-items:flex-start;gap:.1rem}.coaster-grid{grid-template-columns:1fr}.design-row{grid-template-columns:minmax(86px,1fr) 1.45fr auto}}@media(max-width:640px){.container{width:min(560px,93vw);padding-top:1.2rem;padding-bottom:1.5rem}.section{border-radius:1rem}.hero{min-height:48vh}.profile-photo{width:clamp(150px,48vw,204px)}.cta-group{justify-content:center}.cta-group .button{min-width:10.5rem}.profile-photo-image{object-position:center 14%}.card-grid{grid-template-columns:1fr}#publications .card{grid-template-rows:auto;gap:.28rem}.pub-links{margin-top:.15rem}}@media(prefers-reduced-motion:reduce){html:focus-within{scroll-behavior:auto}*,*:before,*:after{animation-duration:1ms!important;animation-iteration-count:1!important;transition-duration:1ms!important;scroll-behavior:auto!important}.reveal{opacity:1;transform:none;animation:none}.bg-orb,body:before,.button:hover,.card:hover,.theme-option:hover{transform:none;animation:none}}
