:root{--bg:#F4F3F2;--surface:#FFFFFF;--ink:#1A1A1C;--ink-2:#5A5A60;--ink-3:#9696A0;--line:rgba(26,26,28,.11);--line-2:rgba(26,26,28,.06);--p-pink:#F4C3D2;--p-mint:#B6E3D2;--p-lilac:#CACCF1;--acc-rose:#C98AA3;--acc-mint:#5BAE94;--acc-lilac:#8A8ED9;--shadow:0 16px 40px -24px rgba(26,26,28,.32)}*{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--bg);background-image:radial-gradient(circle at 10% 6%,rgba(182,227,210,.2),transparent 38%),radial-gradient(circle at 90% 14%,rgba(244,195,210,.2),transparent 38%);background-attachment:fixed;color:var(--ink);font-family:Hanken Grotesk,sans-serif;font-size:16.5px;line-height:1.62;-webkit-font-smoothing:antialiased;overflow-x:hidden}.note{font-style:italic;color:var(--ink-3)}a{color:inherit;text-decoration:none}.wrap{max-width:1000px;margin:0 auto;padding:0 28px}nav{position:fixed;top:0;left:0;right:0;z-index:100;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#f4f3f2d1;border-bottom:1px solid var(--line)}nav .wrap{display:flex;align-items:center;justify-content:space-between;height:64px}nav .brand{font-family:Playfair Display,serif;font-weight:600;font-size:19px;letter-spacing:.01em}nav .brand span{color:var(--acc-rose)}nav ul{display:flex;gap:28px;list-style:none}nav ul a{font-size:13px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-2);transition:color .25s}nav ul a:hover{color:var(--ink)}@media (max-width:680px){nav ul{display:none}}header.hero{padding:148px 0 78px;text-align:center}.eyebrow{display:inline-block;font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-2);background:var(--surface);border:1px solid var(--line);padding:8px 18px;border-radius:100px;margin-bottom:30px;box-shadow:var(--shadow)}h1{font-family:Playfair Display,serif;font-weight:600;font-size:clamp(54px,11vw,116px);line-height:.98;letter-spacing:-.01em;margin-bottom:24px;color:var(--ink)}h1 .dot{color:var(--acc-rose)}.lede{font-size:clamp(17px,2.2vw,20px);max-width:560px;margin:0 auto;color:var(--ink-2);line-height:1.55}.lede b{color:var(--ink);font-weight:600}.cta-row{display:flex;gap:14px;margin-top:36px;justify-content:center;flex-wrap:wrap}.btn{font-size:13px;letter-spacing:.05em;text-transform:uppercase;padding:14px 26px;border-radius:100px;transition:.25s;cursor:pointer}.btn-fill{background:var(--ink);color:#fff}.btn-fill:hover{background:#000;transform:translateY(-2px);box-shadow:var(--shadow)}.btn-line{border:1px solid var(--ink);color:var(--ink)}.btn-line:hover{background:var(--ink);color:#fff}section{padding:58px 0}.sec-head{margin-bottom:34px}.sec-title{font-family:Playfair Display,serif;font-weight:600;font-size:clamp(28px,4.5vw,42px);letter-spacing:-.01em;position:relative;display:inline-block}.sec-title:after{content:"";position:absolute;left:0;bottom:-8px;width:42px;height:2px;background:var(--acc-rose);border-radius:2px}.about{display:grid;grid-template-columns:1.6fr 1fr;gap:40px;align-items:center}.about p{font-size:18px;color:var(--ink);line-height:1.6}.glance{background:var(--surface);border:1px solid var(--line);border-radius:20px;padding:26px;box-shadow:var(--shadow)}.glance .row{display:flex;justify-content:space-between;align-items:center;padding:10px 0;border-bottom:1px solid var(--line-2);font-size:14px}.glance .row:last-child{border:0}.glance .row b{font-weight:600;color:var(--acc-lilac);font-size:13.5px}@media (max-width:680px){.about{grid-template-columns:1fr;gap:26px}}.stats{display:flex;flex-wrap:wrap;gap:14px;margin-top:32px}.stat{flex:1;min-width:140px;border:1px solid var(--line);border-radius:18px;padding:20px}.stat:nth-child(1){background:linear-gradient(140deg,var(--surface),#FCEEF2)}.stat:nth-child(2){background:linear-gradient(140deg,var(--surface),#EAF6F1)}.stat:nth-child(3){background:linear-gradient(140deg,var(--surface),#EFEFFB)}.stat .n{font-family:Playfair Display,serif;font-weight:700;font-size:34px;color:var(--ink);line-height:1}.stat .l{font-size:13px;color:var(--ink-2);margin-top:9px}.skill-group{margin-bottom:24px}.skill-group h4{font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);margin-bottom:13px}.chips{display:flex;flex-wrap:wrap;gap:10px}.chip{font-size:14px;background:var(--surface);border:1px solid var(--line);padding:8px 16px;border-radius:100px;transition:.22s}.chip:hover{transform:translateY(-2px);border-color:transparent;background:var(--p-mint);color:var(--ink)}.job{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;padding:20px 0;border-bottom:1px solid var(--line-2)}.job:last-child{border:0}.job h3{font-family:Playfair Display,serif;font-weight:600;font-size:21px}.job .org{font-size:13px;color:var(--acc-rose);margin:4px 0 8px;letter-spacing:.02em}.job p{font-size:14.5px;color:var(--ink-2);max-width:560px}.job .when{font-size:12.5px;letter-spacing:.04em;color:var(--ink-3);white-space:nowrap;padding-top:6px}.job .when .now{color:var(--acc-mint);font-style:italic}@media (max-width:600px){.job{flex-direction:column;gap:4px}}.proj-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.proj{background:var(--surface);border:1px solid var(--line);border-radius:20px;padding:28px;box-shadow:var(--shadow);transition:.3s;position:relative;overflow:hidden}.proj:hover{transform:translateY(-6px)}.proj.feat{grid-column:1 / -1;background:linear-gradient(135deg,#fbeef2,#eaf6f1 55%,#efeffb)}.proj .ptag{font-size:11.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--acc-rose);margin-bottom:14px}.proj h3{font-family:Playfair Display,serif;font-weight:600;font-size:25px;margin-bottom:9px}.proj p{font-size:14.5px;color:var(--ink-2);margin-bottom:18px}.proj .built{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:18px}.proj .built span{font-size:12px;background:#ffffffa6;border:1px solid var(--line);padding:5px 12px;border-radius:100px}.proj a.link{font-size:13px;letter-spacing:.03em;color:var(--ink);border-bottom:1.5px solid var(--acc-rose);padding-bottom:2px;transition:.25s}.proj a.link:hover{color:var(--ink-2)}@media (max-width:680px){.proj-grid{grid-template-columns:1fr}}.edu{display:flex;flex-wrap:wrap;gap:14px}.ecard{flex:1;min-width:200px;background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:22px}.ecard .yr{font-size:11.5px;letter-spacing:.06em;color:var(--acc-lilac);margin-bottom:9px}.ecard h4{font-family:Playfair Display,serif;font-weight:600;font-size:18px;margin-bottom:7px}.ecard p{font-size:13.5px;color:var(--ink-2)}.ecard .elink{display:inline-block;margin-top:11px;font-size:12.5px;letter-spacing:.03em;color:var(--ink);border-bottom:1.5px solid var(--acc-rose);padding-bottom:2px;transition:.25s}.ecard .elink:hover{color:var(--ink-2)}.contact{text-align:center;padding:84px 0 54px}.contact h2{font-family:Playfair Display,serif;font-weight:600;font-size:clamp(34px,6vw,60px);line-height:1.06;margin-bottom:16px;color:var(--ink);letter-spacing:-.01em}.contact h2 em{font-style:italic;color:var(--acc-rose)}.contact p{color:var(--ink-2);max-width:400px;margin:0 auto 32px}.contact .links{display:flex;justify-content:center;gap:12px;flex-wrap:wrap}footer{border-top:1px solid var(--line);padding:28px 0}footer .wrap{display:flex;justify-content:space-between;font-size:12px;letter-spacing:.03em;color:var(--ink-3);flex-wrap:wrap;gap:10px}.reveal{opacity:0;transform:translateY(22px);transition:.7s cubic-bezier(.2,.8,.2,1)}.reveal.in{opacity:1;transform:none}
