@charset "UTF-8";:root{color-scheme:light dark;--bg: #faf9f7;--bg-soft: #f2f0ec;--surface: #ffffff;--line: rgba(28, 27, 34, .1);--line-strong: rgba(28, 27, 34, .24);--text: #1c1b22;--text-muted: #5d5b66;--text-faint: #8e8c97;--accent: #5b2d9e;--accent-rgb: 91, 45, 158;--accent-soft: rgba(91, 45, 158, .1);--btn-solid-bg: #1c1b22;--btn-solid-fg: #faf9f7;--nav-glass: rgba(250, 249, 247, .72);--font-display: "Fraunces", Georgia, serif;--font-body: "Inter", -apple-system, sans-serif;--ease-out: cubic-bezier(.22, 1, .36, 1);--section-pad: clamp(6rem, 12vw, 11rem);--gutter: clamp(1.25rem, 5vw, 4rem)}@media(prefers-color-scheme:dark){:root{--bg: #0e0d12;--bg-soft: #15131b;--surface: #1a1822;--line: rgba(236, 234, 242, .1);--line-strong: rgba(236, 234, 242, .22);--text: #eceaf2;--text-muted: #9b97a8;--text-faint: #6c6878;--accent: #a37ef0;--accent-rgb: 163, 126, 240;--accent-soft: rgba(163, 126, 240, .14);--btn-solid-bg: #eceaf2;--btn-solid-fg: #0e0d12;--nav-glass: rgba(14, 13, 18, .72)}}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{background:var(--bg);color:var(--text);font-family:var(--font-body);font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-x:hidden}::selection{background:var(--accent);color:#fff}img{display:block;max-width:100%}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;background:none;border:none;cursor:pointer}input,textarea{font:inherit;color:inherit}h1,h2,h3{font-weight:400;line-height:1.05}.container{width:min(1200px,100% - var(--gutter) * 2);margin-inline:auto}.eyebrow{display:flex;align-items:center;gap:.75rem;font-size:.72rem;font-weight:600;letter-spacing:.28em;text-transform:uppercase;color:var(--text-muted)}.eyebrow:before{content:"";width:2.25rem;height:1px;background:var(--accent)}.section-title{font-family:var(--font-display);font-size:clamp(2.4rem,5.5vw,4.2rem);letter-spacing:-.02em;margin-top:1.4rem}.section-title em{font-style:italic;color:var(--accent)}.mask-line{display:inline-block;overflow:hidden;vertical-align:bottom}.mask-line>span{display:inline-block;will-change:transform}.btn{display:inline-flex;align-items:center;gap:.7rem;padding:1rem 1.8rem;border-radius:999px;font-size:.85rem;font-weight:600;letter-spacing:.04em;transition:transform .45s var(--ease-out),background .3s,color .3s,border-color .3s}.btn:active{transform:scale(.97)}.btn--solid{background:var(--btn-solid-bg);color:var(--btn-solid-fg)}.btn--solid:hover{background:var(--accent);color:#fff;transform:translateY(-2px)}.btn--ghost{border:1px solid var(--line-strong);color:var(--text)}.btn--ghost:hover{border-color:var(--accent);color:var(--accent);transform:translateY(-2px)}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}.print-resume{display:none}@media print{@page{size:letter;margin:0}body{background:#fff;color:#1a1a1a;overflow:visible}#site-root{display:none!important}.print-resume{display:block;font-family:var(--font-body);color:#1d1d1f;padding:.65in .7in;font-size:9.5pt;line-height:1.5}.print-resume a{color:#1d1d1f}.print-resume .pr-head{display:flex;justify-content:space-between;align-items:flex-end;border-bottom:2px solid #1d1d1f;padding-bottom:10pt;margin-bottom:14pt}.print-resume .pr-head h1{font-family:var(--font-display);font-size:24pt;letter-spacing:-.01em}.print-resume .pr-head .pr-role{font-size:10.5pt;color:#5b2d9e;font-weight:600;margin-top:2pt}.print-resume .pr-head .pr-links{text-align:right;font-size:8.5pt;color:#555;line-height:1.7}.print-resume h2{font-size:8.5pt;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:#5b2d9e;margin:13pt 0 6pt}.print-resume .pr-job{margin-bottom:9pt;break-inside:avoid}.print-resume .pr-job-head{display:flex;justify-content:space-between;font-weight:600;font-size:10pt}.print-resume .pr-job-head span:last-child{font-weight:400;color:#666;font-size:8.5pt}.print-resume .pr-job-org{color:#555;font-size:9pt;margin-bottom:2pt}.print-resume ul{padding-left:12pt}.print-resume li{margin-bottom:1.5pt}.print-resume .pr-cols{display:flex;gap:24pt}.print-resume .pr-cols>div{flex:1}.print-resume .pr-skill{margin-bottom:3pt}.print-resume .pr-skill b{font-weight:600}}.nav{position:fixed;inset:0 0 auto;z-index:100;display:flex;align-items:center;justify-content:space-between;padding:1.1rem var(--gutter);transition:background .4s,backdrop-filter .4s,border-color .4s,padding .4s;border-bottom:1px solid transparent}.nav--scrolled{padding-block:.75rem;background:var(--nav-glass);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-bottom-color:var(--line)}.nav__logo{font-family:var(--font-display);font-size:1.35rem;letter-spacing:-.02em}.nav__logo span{color:var(--accent)}.nav__links{display:flex;gap:2.2rem}.nav__links a{position:relative;font-size:.82rem;font-weight:500;letter-spacing:.05em;color:var(--text-muted);transition:color .25s}.nav__links a:after{content:"";position:absolute;left:0;bottom:-5px;width:100%;height:1px;background:var(--accent);transform:scaleX(0);transform-origin:right;transition:transform .4s var(--ease-out)}.nav__links a:hover{color:var(--text)}.nav__links a:hover:after{transform:scaleX(1);transform-origin:left}@media(max-width:720px){.nav__links{display:none}}.nav__cta{font-size:.8rem;font-weight:600;padding:.55rem 1.2rem;border-radius:999px;border:1px solid var(--line-strong);transition:border-color .3s,color .3s,background .3s}.nav__cta:hover{border-color:var(--accent);color:var(--accent)}.hero{position:relative;min-height:100svh;display:flex;align-items:center;overflow:hidden}.hero__orb{position:absolute;top:8%;right:-12%;width:clamp(420px,50vw,760px);aspect-ratio:1;border-radius:50%;background:radial-gradient(circle at 35% 35%,rgba(var(--accent-rgb),.3),rgba(var(--accent-rgb),.06) 45%,transparent 70%);filter:blur(60px);pointer-events:none}.hero__grid{position:absolute;inset:0;background-image:linear-gradient(var(--line) 1px,transparent 1px),linear-gradient(90deg,var(--line) 1px,transparent 1px);background-size:90px 90px;-webkit-mask-image:radial-gradient(ellipse 80% 60% at 50% 40%,black 10%,transparent 70%);mask-image:radial-gradient(ellipse 80% 60% at 50% 40%,black 10%,transparent 70%);opacity:.35;pointer-events:none}.hero__inner{position:relative;z-index:1}.hero__meta{display:flex;align-items:center;gap:.6rem;font-size:.8rem;letter-spacing:.08em;color:var(--text-muted);margin-bottom:2.2rem}.hero__dot{width:7px;height:7px;border-radius:50%;background:#3ddc84;box-shadow:0 0 12px #3ddc84cc;animation:pulse 2.4s ease-in-out infinite;margin-left:.6rem}.hero__title{display:flex;flex-direction:column}.hero__line{display:block;font-family:var(--font-display);font-size:clamp(3rem,9.5vw,8rem);letter-spacing:-.03em;line-height:1.02}.hero__line--accent{font-style:italic;color:var(--accent)}.hero__line--small{font-family:var(--font-body);font-weight:300;font-size:clamp(1.05rem,2.2vw,1.6rem);letter-spacing:.01em;color:var(--text-muted);margin-top:1.6rem}.hero__actions{display:flex;flex-wrap:wrap;gap:1rem;margin-top:3rem}.hero__scrollhint{position:absolute;bottom:2rem;left:50%;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;gap:.6rem;font-size:.65rem;letter-spacing:.34em;text-transform:uppercase;color:var(--text-faint)}.hero__scrollhint i{width:1px;height:52px;background:linear-gradient(var(--text-faint),transparent);overflow:hidden;position:relative}.hero__scrollhint i:after{content:"";position:absolute;inset:0;background:var(--accent);animation:scrolldrip 2s var(--ease-out) infinite}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(.8)}}@keyframes scrolldrip{0%{transform:translateY(-100%)}60%,to{transform:translateY(100%)}}.marquee{border-block:1px solid var(--line);padding-block:1.1rem;overflow:hidden;background:var(--bg-soft)}.marquee__track{display:flex;width:max-content;animation:marquee 36s linear infinite}.marquee:hover .marquee__track{animation-play-state:paused}.marquee__item{display:flex;align-items:center;gap:1.5rem;padding-right:1.5rem;white-space:nowrap;font-family:var(--font-display);font-size:1.1rem;letter-spacing:.02em;color:var(--text-muted)}.marquee__item em{color:var(--accent);font-style:normal;font-size:.7rem}@keyframes marquee{to{transform:translate(-50%)}}.about{padding-block:var(--section-pad)}.about__grid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(260px,1fr);gap:clamp(2.5rem,6vw,6rem);align-items:center;margin-top:1rem}@media(max-width:880px){.about__grid{grid-template-columns:1fr}}.about__blurb{margin-top:1.8rem;max-width:56ch;font-size:clamp(1rem,1.4vw,1.15rem);line-height:1.85;color:var(--text-muted)}.about__photo{position:relative;perspective:900px;transform-style:preserve-3d}.about__photo-glow{position:absolute;inset:-12%;background:radial-gradient(circle at 50% 45%,rgba(var(--accent-rgb),.35),transparent 65%);filter:blur(48px);animation:photo-breathe 6s ease-in-out infinite;pointer-events:none}.about__photo-frame{position:absolute;inset:0;border:1.5px solid rgba(var(--accent-rgb),.55);border-radius:24px;pointer-events:none}.about__photo-wrap{position:relative;border-radius:24px;overflow:hidden;aspect-ratio:4/5;background:var(--surface);will-change:clip-path,transform;transform:translateZ(30px)}.about__photo-wrap img{width:100%;height:112%;object-fit:cover;object-position:50% 18%;will-change:filter,transform}@keyframes photo-breathe{0%,to{opacity:.55;transform:scale(1)}50%{opacity:1;transform:scale(1.06)}}.about__stats{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line);border:1px solid var(--line);border-radius:18px;overflow:hidden;margin-top:clamp(4rem,8vw,7rem)}@media(max-width:720px){.about__stats{grid-template-columns:repeat(2,1fr)}}.about__stat{background:var(--bg);padding:clamp(1.5rem,3vw,2.5rem);display:flex;flex-direction:column;gap:.5rem;transition:background .35s}.about__stat:hover{background:var(--bg-soft)}.about__stat-value{font-family:var(--font-display);font-size:clamp(2.2rem,4vw,3.4rem);color:var(--accent);line-height:1}.about__stat-label{font-size:.82rem;color:var(--text-muted);letter-spacing:.03em}.xp{padding-block:var(--section-pad);background:var(--bg-soft);border-block:1px solid var(--line)}.xp__list{position:relative;margin-top:clamp(3rem,6vw,5rem);padding-left:clamp(1.8rem,4vw,3rem)}.xp__spine{position:absolute;left:5px;top:6px;bottom:6px;width:1px;background:var(--line-strong)}.xp__spine-fill{display:block;width:100%;height:100%;background:var(--accent);box-shadow:0 0 14px rgba(var(--accent-rgb),.6)}.xp__item{position:relative;padding-bottom:clamp(3rem,6vw,4.5rem);max-width:820px}.xp__item:last-child{padding-bottom:0}.xp__dot{position:absolute;left:calc(-1*clamp(1.8rem,4vw,3rem) - .5px);top:.55em;width:11px;height:11px;border-radius:50%;background:var(--accent);transform:translate(-50%);box-shadow:0 0 0 5px var(--bg-soft)}.xp__head{display:flex;justify-content:space-between;align-items:baseline;gap:1.5rem;flex-wrap:wrap}.xp__org{font-family:var(--font-display);font-size:clamp(1.5rem,3vw,2.2rem);letter-spacing:-.01em}.xp__role{color:var(--accent);font-size:.92rem;font-weight:600;letter-spacing:.04em;margin-top:.35rem}.xp__when{display:flex;flex-direction:column;align-items:flex-end;font-size:.82rem;color:var(--text-muted);letter-spacing:.04em;white-space:nowrap}.xp__loc{color:var(--text-faint)}.xp__bullets{margin-top:1.2rem;list-style:none}.xp__bullets li{position:relative;padding-left:1.4rem;margin-bottom:.55rem;color:var(--text-muted);font-size:.95rem;line-height:1.7}.xp__bullets li:before{content:"—";position:absolute;left:0;color:var(--accent)}.skills{padding-block:var(--section-pad)}.skills__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1.2rem;margin-top:clamp(3rem,6vw,5rem)}.skills__card{position:relative;border:1px solid var(--line);border-radius:20px;padding:1.8rem;background:var(--bg-soft);transition:border-color .35s,transform .5s var(--ease-out)}.skills__card:hover{border-color:rgba(var(--accent-rgb),.45);transform:translateY(-4px)}.skills__card h3{font-family:var(--font-display);font-size:1.3rem;margin:.4rem 0 1.1rem}.skills__num{font-size:.72rem;letter-spacing:.2em;color:var(--accent)}.skills__tags{display:flex;flex-wrap:wrap;gap:.5rem}.skills__tag{font-size:.78rem;color:var(--text-muted);border:1px solid var(--line);border-radius:999px;padding:.32rem .8rem;transition:color .25s,border-color .25s}.skills__tag:hover{color:var(--text);border-color:var(--line-strong)}.contact{padding-block:var(--section-pad);background:var(--bg-soft);border-top:1px solid var(--line)}.contact__grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(320px,480px);gap:clamp(3rem,7vw,7rem);align-items:start}@media(max-width:880px){.contact__grid{grid-template-columns:1fr}}.contact__sub{margin-top:1.6rem;max-width:42ch;color:var(--text-muted);line-height:1.85}.contact__note{margin-top:2.2rem;font-size:.85rem;color:var(--text-faint);max-width:38ch}.contact__form{display:flex;flex-direction:column;gap:2.2rem;border:1px solid var(--line);border-radius:24px;padding:clamp(1.8rem,3.5vw,2.8rem);background:var(--bg)}.contact__submit{justify-content:center;margin-top:.4rem}.contact__error{font-size:.85rem;color:#d2543f}.contact__error a{text-decoration:underline}.cfield{position:relative}.cfield input,.cfield textarea{width:100%;background:transparent;border:none;border-bottom:1px solid var(--line-strong);padding:.6rem 0;font-size:1rem;color:var(--text);outline:none;resize:none}.cfield label{position:absolute;left:0;top:.6rem;font-size:1rem;color:var(--text-faint);pointer-events:none;transition:transform .3s var(--ease-out),font-size .3s,color .3s;transform-origin:left top}.cfield__bar{position:absolute;left:0;bottom:0;width:100%;height:1px;background:var(--accent);transform:scaleX(0);transform-origin:left;transition:transform .45s var(--ease-out)}.cfield:focus-within label,.cfield--filled label{transform:translateY(-1.5rem);font-size:.72rem;letter-spacing:.08em;color:var(--accent)}.cfield:focus-within .cfield__bar{transform:scaleX(1)}.footer{border-top:1px solid var(--line);padding-block:2.2rem}.footer__inner{display:flex;align-items:center;justify-content:space-between;gap:1.5rem;flex-wrap:wrap;font-size:.82rem;color:var(--text-faint)}.footer__made{color:var(--text-faint)}.footer__links{display:flex;gap:1.6rem}.footer__links a,.footer__links button{font-size:.82rem;color:var(--text-muted);transition:color .25s}.footer__links a:hover,.footer__links button:hover{color:var(--accent)}
