:root{--paper:#FBF7F2;--paper-raised:#FFFFFF;--ink:#1B1B2F;--ink-70:#1B1B2Fb3;--ink-45:#1B1B2F73;--ink-15:#1B1B2F26;--ink-08:#1B1B2F14;--pink:#FF3D6E;--pink-dark:#D81B5C;--green:#0F9D6B;--green-soft:#DEF7EC;--amber:#FFB020;--amber-soft:#FFF1D6;--blue:#3D6BFF;--blue-soft:#E3EAFF;--display: "Fraunces", serif;--body: "IBM Plex Sans", sans-serif;--mono: "IBM Plex Mono", monospace;--maxw: 1080px}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:radial-gradient(circle at 8% 8%,#FF3D6E66 0%,transparent 45%),radial-gradient(circle at 92% 4%,#3D6BFF5c 0%,transparent 48%),radial-gradient(circle at 88% 58%,#FFB02070 0%,transparent 50%),radial-gradient(circle at 6% 55%,#0F9D6B57 0%,transparent 48%),radial-gradient(circle at 45% 30%,#FF3D6E33 0%,transparent 55%),radial-gradient(circle at 50% 98%,#3D6BFF40 0%,transparent 50%),var(--paper);background-attachment:fixed;color:var(--ink);font-family:var(--body);font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased}img{max-width:100%;display:block}a{color:inherit}h1,h2,h3{font-family:var(--display);font-weight:600;margin:0;letter-spacing:-.01em}p{margin:0}::selection{background:var(--pink);color:#fff}:focus-visible{outline:2.5px solid var(--pink);outline-offset:3px;border-radius:2px}.wrap{max-width:var(--maxw);margin:0 auto;padding:0 28px}.grid-bg{background-image:radial-gradient(var(--ink-08) 1px,transparent 1px);background-size:26px 26px}header.site{position:sticky;top:0;z-index:50;background:#fbf7f2c7;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--ink-15)}.nav{display:flex;align-items:center;justify-content:space-between;padding:16px 28px;max-width:var(--maxw);margin:0 auto}.brand{font-family:var(--mono);font-weight:600;font-size:.95rem;letter-spacing:.03em;display:flex;align-items:center;gap:8px;text-decoration:none}.brand .dot{width:9px;height:9px;border-radius:50%;background:var(--pink);box-shadow:0 0 0 3px var(--pink-dark) 22}nav.links{display:flex;gap:28px}nav.links a{font-family:var(--mono);font-size:.8rem;text-transform:uppercase;letter-spacing:.06em;text-decoration:none;color:var(--ink-70);padding-bottom:2px;border-bottom:1px solid transparent;transition:border-color .2s,color .2s}nav.links a:hover{color:var(--ink);border-color:var(--pink)}.nav-toggle{display:none;background:none;border:1.5px solid var(--ink-15);border-radius:6px;padding:8px 10px;cursor:pointer}.nav-toggle span{display:block;width:18px;height:2px;background:var(--ink);margin:3px 0}.tag{display:inline-flex;align-items:center;gap:7px;padding:6px 12px 6px 8px;font-family:var(--mono);font-size:.72rem;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-70);background:var(--paper-raised);border:1.4px dashed var(--ink-15);border-radius:3px;white-space:nowrap}.tag:before{content:"";flex:none;width:7px;height:7px;border-radius:50%;border:1.4px solid var(--ink-45);background:var(--paper)}.tag.pink{border-color:var(--pink-dark)55;color:var(--pink-dark)}.tag.pink:before{border-color:var(--pink-dark);background:var(--pink)}.tag.green{border-color:var(--green)55;color:var(--green)}.tag.green:before{border-color:var(--green);background:var(--green)}.tag.amber{border-color:var(--amber)70;color:#8a5c11}.tag.amber:before{border-color:var(--amber);background:var(--amber)}.tag.blue{border-color:var(--blue)55;color:var(--blue)}.tag.blue:before{border-color:var(--blue);background:var(--blue)}.tag.learning{border-style:dashed;border-color:var(--amber);color:#8a5c11;background:var(--amber-soft)}.tag.learning:after{content:"building";font-size:.62rem;opacity:.8;margin-left:2px}.hero{position:relative;padding:96px 0 80px;overflow:hidden}.hero:before{content:"";position:absolute;inset:-10%;z-index:0;background:radial-gradient(circle at 15% 20%,#FF3D6E80 0%,transparent 40%),radial-gradient(circle at 82% 12%,#3D6BFF70 0%,transparent 42%),radial-gradient(circle at 90% 75%,#FFB02090 0%,transparent 45%),radial-gradient(circle at 20% 85%,#0F9D6B70 0%,transparent 42%);filter:blur(6px);opacity:.9;pointer-events:none;-webkit-mask-image:linear-gradient(180deg,black 0%,black 65%,transparent 96%);mask-image:linear-gradient(180deg,black 0%,black 65%,transparent 96%)}.hero>.wrap{position:relative;z-index:1}.hero .eyebrow{font-family:var(--mono);font-size:.78rem;text-transform:uppercase;letter-spacing:.09em;color:var(--pink-dark);margin-bottom:18px;display:flex;align-items:center;gap:10px}.hero .eyebrow:before{content:"";width:22px;height:1.5px;background:var(--pink-dark)}.hero h1{font-size:clamp(2.4rem,5.4vw,4.1rem);line-height:1.05;max-width:16ch;margin-bottom:26px}.hero h1 em{font-style:italic;font-weight:500;position:relative;white-space:nowrap}.hero h1 .underline-word{position:relative;display:inline-block}.hero h1 .underline-word svg{position:absolute;left:-2%;bottom:-.14em;width:104%;height:.5em;overflow:visible}.hero h1 .underline-word path{fill:none;stroke:var(--pink);stroke-width:6;stroke-linecap:round;stroke-dasharray:340;stroke-dashoffset:340;animation:draw 1.1s .5s cubic-bezier(.4,0,.2,1) forwards}@media(prefers-reduced-motion:reduce){.hero h1 .underline-word path{animation:none;stroke-dashoffset:0}}@keyframes draw{to{stroke-dashoffset:0}}.hero p.lede{font-size:1.14rem;color:var(--ink-70);max-width:52ch;margin-bottom:34px}.hero .tags-row{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:38px}.btn{display:inline-flex;align-items:center;gap:8px;font-family:var(--mono);font-size:.82rem;letter-spacing:.03em;text-transform:uppercase;text-decoration:none;padding:13px 22px;border-radius:4px;background:var(--ink);color:var(--paper);transition:transform .18s ease,background .18s ease}.btn:hover{background:var(--pink-dark);transform:translateY(-2px)}.btn.ghost{background:transparent;color:var(--ink);border:1.5px solid var(--ink-15)}.btn.ghost:hover{border-color:var(--ink);background:transparent;transform:translateY(-2px)}section{padding:76px 0}section#about{background:linear-gradient(180deg,transparent,#0F9D6B22 40%,#0F9D6B22 60%,transparent)}section#work{background:linear-gradient(180deg,transparent,#FF3D6E22 30%,#FF3D6E22 70%,transparent)}section#publications{background:linear-gradient(180deg,transparent,#FFB02033 40%,#FFB02033 60%,transparent)}section#skills{background:linear-gradient(180deg,transparent,#3D6BFF2b 40%,#3D6BFF2b 60%,transparent)}.section-head{margin-bottom:44px;max-width:60ch}.section-head .eyebrow{font-family:var(--mono);font-size:.76rem;text-transform:uppercase;letter-spacing:.09em;color:var(--pink-dark);margin-bottom:12px;display:block}.section-head h2{font-size:clamp(1.7rem,3.2vw,2.3rem);margin-bottom:14px}.section-head p{color:var(--ink-70);font-size:1.02rem}.divider{border:none;height:1px;background-image:repeating-linear-gradient(90deg,var(--ink-15) 0 6px,transparent 6px 12px)}.reveal{opacity:0;transform:translateY(18px);transition:opacity .6s ease,transform .6s ease}.reveal.in-view{opacity:1;transform:translateY(0)}@media(prefers-reduced-motion:reduce){.reveal{opacity:1;transform:none;transition:none}}.about-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:52px;align-items:start}.about-grid p+p{margin-top:16px}.about-grid .lede-name{font-family:var(--display);font-size:1.3rem;margin-bottom:14px}.trait-list{display:flex;flex-direction:column;gap:22px}.trait{background:var(--paper-raised);border:1px solid var(--ink-15);border-radius:8px;padding:20px 22px}.trait h3{font-size:1rem;font-family:var(--mono);text-transform:uppercase;letter-spacing:.03em;margin-bottom:8px;color:var(--pink-dark)}.trait p{font-size:.94rem;color:var(--ink-70)}.work-card{background:var(--paper-raised);border:1px solid var(--ink-15);border-radius:10px;padding:34px;margin-bottom:26px}.work-card .kicker{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;flex-wrap:wrap;margin-bottom:14px}.work-card .kicker .cat{font-family:var(--mono);font-size:.74rem;text-transform:uppercase;letter-spacing:.06em;color:var(--green)}.work-card h3{font-size:1.4rem;margin:8px 0 4px}.work-card .meta{font-family:var(--mono);font-size:.82rem;color:var(--ink-45)}.work-card .desc{color:var(--ink-70);margin:16px 0 22px;max-width:68ch}.breakdown{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;border-top:1px dashed var(--ink-15);padding-top:20px}.breakdown .bd-item .label{font-family:var(--mono);font-size:.66rem;text-transform:uppercase;letter-spacing:.05em;color:var(--pink-dark);margin-bottom:6px;display:block}.breakdown .bd-item .val{font-size:.86rem;color:var(--ink-70);line-height:1.5}.status-pill{font-family:var(--mono);font-size:.7rem;text-transform:uppercase;letter-spacing:.04em;padding:4px 10px;border-radius:20px;white-space:nowrap}.status-pill.pending{background:var(--amber-soft);color:#8a5c11;border:1px solid var(--amber)}.status-pill.done{background:var(--green-soft);color:var(--green);border:1px solid var(--green)}.pub-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}.pub-card{background:var(--paper-raised);border:1px solid var(--ink-15);border-radius:10px;padding:26px;display:flex;flex-direction:column;gap:12px;position:relative}.pub-card .badge{font-size:1.4rem}.pub-card h3{font-size:1.12rem;line-height:1.35}.pub-card .venue{font-family:var(--mono);font-size:.78rem;color:var(--ink-45)}.pub-card p.desc{font-size:.9rem;color:var(--ink-70)}.pub-card a.read{font-family:var(--mono);font-size:.78rem;text-transform:uppercase;color:var(--pink-dark);text-decoration:none;margin-top:auto;padding-top:8px}.pub-card a.read:hover{text-decoration:underline}.skills-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:34px;margin-bottom:34px}.skill-block h3{font-family:var(--mono);font-size:.9rem;text-transform:uppercase;letter-spacing:.04em;color:var(--ink);margin-bottom:16px;padding-bottom:10px;border-bottom:1px solid var(--ink-15)}.skill-tags{display:flex;flex-wrap:wrap;gap:9px}.toolkit-note{font-size:.86rem;color:var(--ink-45);margin-top:12px;font-style:italic}.contact-box{background:var(--ink);color:var(--paper);border-radius:14px;padding:56px 44px;display:flex;justify-content:space-between;align-items:center;gap:32px;flex-wrap:wrap}.contact-box h2{color:var(--paper);font-size:clamp(1.6rem,3vw,2.1rem);max-width:20ch}.contact-box p{color:#f2f6f4b0;margin-top:10px;max-width:44ch}.contact-links{display:flex;flex-direction:column;gap:12px}.contact-links a{font-family:var(--mono);font-size:.92rem;text-decoration:none;display:flex;align-items:center;gap:10px;color:var(--paper);padding-bottom:3px;border-bottom:1px solid transparent}.contact-links a:hover{border-color:var(--pink);color:var(--pink)}.contact-links a .arrow{color:var(--pink)}footer{padding:30px 0 50px;text-align:center}footer p{font-family:var(--mono);font-size:.76rem;color:var(--ink-45)}@media(max-width:860px){.about-grid{grid-template-columns:1fr;gap:34px}.skills-grid,.pub-grid{grid-template-columns:1fr}.breakdown{grid-template-columns:1fr 1fr}.contact-box{flex-direction:column;align-items:flex-start}}@media(max-width:640px){nav.links{display:none}nav.links.open{display:flex;position:absolute;top:100%;left:0;right:0;flex-direction:column;gap:0;background:var(--paper-raised);border-bottom:1px solid var(--ink-15);padding:8px 28px 16px}nav.links.open a{padding:10px 0;border-bottom:1px solid var(--ink-08)}.nav-toggle{display:block}.breakdown{grid-template-columns:1fr}.hero{padding:64px 0 56px}section{padding:56px 0}}
