:root{--background:#171616;--surface:#1d1c1c;--surface-soft:#201f1f;--foreground:#f3f0e9;--muted:#aaa59c;--line:#f3f0e924;--line-strong:#f3f0e947;--emerald:#35c981;--emerald-deep:#176b49;--emerald-soft:#35c9811f;--page-padding:clamp(1.25rem, 4vw, 4.5rem);--content-width:1180px}*{box-sizing:border-box}html{background:var(--background);scroll-behavior:smooth}body{background:var(--background);color:var(--foreground);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;margin:0;font-family:Inter,SF Pro Display,SF Pro Text,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}body::selection{background:var(--emerald);color:#101412}a{color:inherit;text-decoration:none}button,a{-webkit-tap-highlight-color:transparent}a:focus-visible{outline:2px solid var(--emerald);outline-offset:5px}main{overflow:clip}.site-header{z-index:50;min-height:78px;padding:0 var(--page-padding);background:linear-gradient(#171616f5,#0000);justify-content:space-between;align-items:center;display:flex;position:fixed;inset:0 0 auto}.monogram{letter-spacing:-.06em;font-size:1.02rem;font-weight:750}.monogram__dot{color:var(--emerald)}.site-nav{align-items:center;gap:clamp(1rem,2.5vw,2.4rem);display:flex}.site-nav a{color:var(--muted);letter-spacing:.08em;text-transform:uppercase;font-size:.74rem;font-weight:650;transition:color .18s;position:relative}.site-nav a:after{background:var(--emerald);content:"";transform-origin:100%;height:1px;transition:transform .2s;position:absolute;bottom:-.5rem;left:0;right:0;transform:scaleX(0)}.site-nav a:hover,.site-nav a.is-active{color:var(--foreground)}.site-nav a.is-active:after{transform-origin:0;transform:scaleX(1)}.site-nav__github{place-items:center;width:1.25rem;height:1.25rem;display:grid}.site-nav__github:after{display:none}.site-nav__github svg{width:100%;height:100%;display:block}.hero{background:radial-gradient(circle at 76% 44%, #35c98114, transparent 24%), var(--background);height:155svh;min-height:900px;position:relative}.hero__sticky{width:min(100%, calc(var(--content-width) + var(--page-padding) * 2));height:100svh;min-height:680px;padding:6.4rem var(--page-padding) 3.5rem;grid-template:"intro portrait"1fr/minmax(0,1.08fr) minmax(300px,.74fr);align-items:center;gap:clamp(2.5rem,6vw,7rem);margin:0 auto;display:grid;position:sticky;top:0}.hero__content{z-index:2;width:100%;max-width:620px;opacity:calc(1 - var(--hero-progress) * 1.18);text-align:center;transform:translate3d(0, calc(var(--hero-progress) * -3.6rem), 0);will-change:opacity, transform;grid-area:intro;place-self:center;position:relative}.eyebrow,.section-kicker{color:var(--emerald);letter-spacing:.17em;text-transform:uppercase;margin:0;font-size:.75rem;font-weight:720}.hero__blurb{color:#ccc7be;letter-spacing:-.018em;max-width:540px;margin:0 auto;font-size:clamp(1.05rem,1.55vw,1.3rem);line-height:1.62}.hero__actions{justify-content:center;align-items:center;gap:1rem;margin-top:1.8rem;display:flex}.resume-link{border:1px solid var(--emerald-deep);background:var(--emerald-soft);color:#d8f9e8;letter-spacing:.03em;border-radius:999px;justify-content:center;align-items:center;gap:.65rem;min-height:48px;padding:0 1.2rem;font-size:.83rem;font-weight:700;transition:border-color .18s,background .18s,transform .18s;display:inline-flex}.resume-link:hover{border-color:var(--emerald);background:#35c9812e;transform:translateY(-2px)}.resume-link span{transition:transform .18s}.resume-link:hover span{transform:translate(2px,-2px)}.resume-meta{color:#77736d;letter-spacing:.08em;text-transform:uppercase;font-size:.72rem}.portrait-frame{width:min(100%,440px);opacity:calc(1 - var(--hero-progress) * 1.1);transform:translate3d(0, calc(var(--hero-progress) * 2.2rem), 0) scale(calc(1 - var(--hero-progress) * .035));will-change:opacity, transform;grid-area:portrait;place-self:center end;margin:0;position:relative}.portrait-frame__media{border:1px solid var(--emerald-deep);border-radius:28px;padding:12px}.portrait-frame picture{display:block}.portrait-frame img{aspect-ratio:8/5;object-fit:cover;object-position:top center;filter:saturate(.9)contrast(1.025);border-radius:24px;width:100%;height:auto;display:block}.portrait-frame figcaption{color:#817d76;letter-spacing:.1em;text-transform:uppercase;justify-content:space-between;align-items:baseline;gap:1rem;margin-top:.8rem;padding:0 12px;font-size:.68rem;display:flex}.portrait-frame figcaption span:last-child{text-align:right}.resume-page{z-index:3;border-top:1px solid var(--line);background:var(--background);position:relative;box-shadow:0 -30px 80px #00000038}.section{width:min(100%, calc(var(--content-width) + var(--page-padding) * 2));padding:clamp(6rem, 10vw, 10rem) var(--page-padding);margin:0 auto;scroll-margin-top:5rem}.section+.section{border-top:1px solid var(--line)}.section-heading{grid-template-columns:minmax(120px,.32fr) minmax(300px,1fr);align-items:start;gap:1rem clamp(2rem,6vw,6rem);margin-bottom:clamp(3.5rem,7vw,6.5rem);display:grid}.section-heading .section-kicker{padding-top:.55rem}.section-heading h2{letter-spacing:-.055em;max-width:780px;margin:0;font-size:clamp(2.4rem,5vw,5rem);font-weight:520;line-height:1}.section-heading>p:last-child{max-width:650px;color:var(--muted);grid-column:2;margin:1.2rem 0 0;font-size:1rem;line-height:1.75}[data-reveal]{opacity:0;transition:opacity .7s cubic-bezier(.2,.7,.2,1),transform .7s cubic-bezier(.2,.7,.2,1);transform:translateY(30px)}[data-reveal].is-visible{opacity:1;transform:translateY(0)}.project-grid{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:1.5rem;display:grid}.project-card{border:1px solid var(--line);isolation:isolate;background:linear-gradient(145deg,#1d1c1c 0%,#1a1d1b 100%);border-radius:30px;outline:none;width:100%;min-height:560px;padding:clamp(1.5rem,4vw,3rem);transition:border-color .48s,box-shadow .48s cubic-bezier(.16,1,.3,1),transform .48s cubic-bezier(.16,1,.3,1);position:relative;overflow:clip;box-shadow:0 18px 45px #00000024}.project-card:before{z-index:-1;content:"";opacity:.45;background:radial-gradient(circle,#35c9812e,#35c98100 68%);border-radius:50%;height:280px;transition:opacity .55s,transform .65s cubic-bezier(.16,1,.3,1);position:absolute;inset:auto -15% -65% 35%;transform:translate(12%,18%)scale(.9)}.project-card:after{z-index:-1;border-radius:inherit;content:"";opacity:0;background:linear-gradient(120deg,#35c98114,#0000 38%,#35c9810a);transition:opacity .48s;position:absolute;inset:0}.project-card:hover,.project-card:focus-visible,.project-card:focus-within{border-color:#35c9819e;transform:translateY(-10px)scale(1.012);box-shadow:0 30px 80px #00000052,0 0 0 1px #35c98114}.project-card:focus-visible{outline:2px solid var(--emerald);outline-offset:5px}.project-card:hover:before,.project-card:focus-visible:before,.project-card:focus-within:before{opacity:1;transform:translate(-8%,-16%)scale(1.35)}.project-card:hover:after,.project-card:focus-visible:after,.project-card:focus-within:after{opacity:1}.project-card__topline{color:var(--emerald);letter-spacing:.12em;text-transform:uppercase;justify-content:flex-start;align-items:center;gap:1rem;font-size:.67rem;font-weight:700;display:flex}.project-card__logo-link{background:#fff;border:1px solid #f3f0e933;border-radius:24px;place-items:center;width:92px;height:92px;margin:clamp(2rem,5vw,3.4rem) auto 0;transition:border-color .3s,box-shadow .38s,transform .42s cubic-bezier(.16,1,.3,1);display:grid;overflow:hidden;box-shadow:0 8px 20px #0000002e}.project-card__logo-link:hover,.project-card__logo-link:focus-visible{border-color:#35c981cc;transform:translateY(-3px)rotate(3deg)scale(1.06);box-shadow:0 12px 30px #35c98133}.project-card__logo-link img{object-fit:cover;width:100%;height:100%;display:block}.project-card__heading{margin-top:clamp(2rem,4vw,3rem)}.project-card__heading p{color:var(--muted);letter-spacing:.1em;text-transform:uppercase;margin:0 0 .65rem;font-size:.72rem;font-weight:650}.project-card__heading h3{letter-spacing:-.06em;margin:0;font-size:clamp(2rem,4.2vw,3.6rem);font-weight:540;line-height:.96}.project-card__skills{flex-wrap:wrap;gap:.55rem;margin:1.7rem 0 0;padding:0;list-style:none;display:flex}.project-card__skills li{color:#c9e8d8;letter-spacing:.025em;background:#35c9810f;border:1px solid #35c98142;border-radius:999px;padding:.48rem .72rem;font-size:.7rem;font-weight:620;transition:background .32s,border-color .32s,transform .42s cubic-bezier(.16,1,.3,1)}.project-card:hover .project-card__skills li,.project-card:focus-visible .project-card__skills li,.project-card:focus-within .project-card__skills li{background:#35c9811f;border-color:#35c9817a;transform:translateY(-2px)}.project-card__details{opacity:0;grid-template-rows:0fr;transition:grid-template-rows .58s cubic-bezier(.16,1,.3,1),margin .58s cubic-bezier(.16,1,.3,1),opacity .32s,transform .52s cubic-bezier(.16,1,.3,1);display:grid;transform:translateY(16px)}.project-card__details-inner{min-height:0;overflow:hidden}.project-card:hover .project-card__details,.project-card:focus-visible .project-card__details,.project-card:focus-within .project-card__details{opacity:1;grid-template-rows:1fr;margin-top:2.2rem;transform:translateY(0)}.project-card__meta{border-top:1px solid var(--line);color:var(--muted);flex-wrap:wrap;gap:.5rem 1rem;padding-top:1.25rem;font-size:.72rem;display:flex}.project-card__meta span:first-child{color:var(--emerald);font-weight:650}.project-card__summary{max-width:650px;color:var(--foreground);margin:1.4rem 0 1.15rem;font-size:1.02rem;line-height:1.55}.project-card__points{color:#bbb6ae;gap:.72rem;max-width:700px;margin:0;padding:0;list-style:none;display:grid}.project-card__points li{padding-left:1rem;font-size:.9rem;line-height:1.65;position:relative}.project-card__points li:before{background:var(--emerald);content:"";border-radius:50%;width:4px;height:4px;position:absolute;top:.65em;left:0}.project-card__github{color:#d8f9e8;font-weight:650;transition:color .18s}.project-card__github:hover{color:var(--emerald)}.timeline{border-top:1px solid var(--line-strong)}.role{border-bottom:1px solid var(--line);grid-template-columns:48px minmax(150px,.38fr) minmax(0,1fr);gap:1rem clamp(1.5rem,4vw,4.5rem);padding:2.8rem 0 3.2rem;display:grid}.role__index{color:var(--emerald);letter-spacing:.12em;padding-top:.18rem;font-size:.7rem}.role__date{color:var(--muted);letter-spacing:.02em;flex-direction:column;gap:.45rem;padding-top:.08rem;font-size:.78rem;line-height:1.4;display:flex}.role__date span:last-child{color:#77736d}.role__body h3{letter-spacing:-.035em;margin:0;font-size:clamp(1.3rem,2.2vw,2rem);font-weight:580;line-height:1.2}.role__organization{color:var(--emerald);margin:.55rem 0 1.5rem;font-size:.88rem;font-weight:600}.role__body ul{color:#bbb6ae;gap:.8rem;margin:0;padding:0;list-style:none;display:grid}.role__body li{max-width:760px;padding-left:1.15rem;font-size:.94rem;line-height:1.68;position:relative}.role__body li:before{background:var(--emerald);content:"";border-radius:50%;width:4px;height:4px;position:absolute;top:.68em;left:0}.education-card{border:1px solid var(--line);background:linear-gradient(145deg, var(--surface-soft), var(--surface));border-radius:24px;grid-template-columns:minmax(260px,.65fr) minmax(300px,1fr);gap:2rem clamp(3rem,8vw,8rem);padding:2.8rem;display:grid}.education-card p{color:var(--muted);margin:0;line-height:1.7}.education-card__degree{letter-spacing:-.025em;font-size:1.35rem;font-weight:620;color:var(--foreground)!important;margin-bottom:.5rem!important}.education-card__coursework{border-left:1px solid var(--line);padding-left:clamp(0rem,3vw,3rem)}.skill-list{border-top:1px solid var(--line-strong)}.skill-row{border-bottom:1px solid var(--line);grid-template-columns:minmax(180px,.36fr) minmax(0,1fr);gap:1.5rem 4rem;padding:1.5rem 0;transition:background .18s,padding .18s;display:grid}.skill-row:hover{background:var(--emerald-soft);padding-left:1rem;padding-right:1rem}.skill-row h3,.skill-row p{margin:0}.skill-row h3{color:var(--foreground);letter-spacing:.04em;font-size:.83rem;font-weight:700}.skill-row p{color:#aaa59c;font-size:.92rem;line-height:1.65}.contact-section{padding:clamp(3rem, 5vw, 4.5rem) var(--page-padding) 2rem;background:#121111;scroll-margin-top:4rem}.contact-section__inner{width:min(100%, var(--content-width));justify-content:space-between;align-items:center;gap:2rem;margin:0 auto;display:flex}.contact-section h2{letter-spacing:-.045em;margin:.75rem 0 0;font-size:clamp(1.7rem,3vw,2.7rem);font-weight:520;line-height:1}.contact-actions{flex-wrap:wrap;gap:.75rem 1.25rem;display:flex}.contact-link{border-bottom:1px solid var(--emerald-deep);color:#d8f9e8;padding:.8rem 0;font-size:.88rem;font-weight:620;transition:border-color .18s,color .18s}.contact-link:hover{border-color:var(--emerald);color:var(--emerald)}footer{width:min(100%, var(--content-width));border-top:1px solid var(--line);color:#77736d;letter-spacing:.1em;text-transform:uppercase;justify-content:space-between;margin:0 auto;padding-top:2rem;font-size:.68rem;display:flex}footer a{transition:color .18s}footer a:hover{color:var(--emerald)}@media (width<=900px){.hero{min-height:820px}.hero__sticky{grid-template-columns:minmax(0,1fr) minmax(250px,.7fr);gap:2.3rem}.project-grid{grid-template-columns:1fr}.project-card{width:min(100%,640px)}.role{grid-template-columns:40px minmax(120px,.34fr) minmax(0,1fr);gap:1rem 1.5rem}}@media (width<=720px){.site-header{min-height:64px}.site-nav a:nth-child(3){display:none}.hero{height:138svh;min-height:830px}.hero__sticky{grid-template:"intro""portrait"/1fr;align-content:center;gap:2rem;min-height:620px;padding-top:5.3rem;padding-bottom:3.4rem}.hero__blurb{font-size:.96rem;line-height:1.58}.hero__actions{margin-top:1.25rem}.portrait-frame{place-self:start center;width:100%;max-width:560px;margin:0}.portrait-frame img{aspect-ratio:16/9;object-position:center;height:auto}.portrait-frame figcaption{text-align:center;flex-direction:column;align-items:center;gap:.25rem;margin-top:.8rem}.portrait-frame figcaption span:last-child{text-align:center}.portrait-frame__media{border-radius:20px;padding:8px}.section-heading{grid-template-columns:1fr;margin-bottom:3rem}.section-heading>p:last-child{grid-column:1;margin-top:.3rem}.project-card{border-radius:24px;min-height:480px}.project-card__logo-link{border-radius:20px;width:78px;height:78px}.project-card__heading{margin-top:2.2rem}.project-card__meta{display:block}.role{grid-template-columns:34px minmax(0,1fr);padding:2.1rem 0 2.5rem}.role__date,.role__body{grid-column:2}.role__date{flex-direction:row;justify-content:space-between}.role__body{margin-top:.5rem}.education-card,.skill-row{grid-template-columns:1fr}.education-card{padding:1.6rem}.education-card__coursework{border-top:1px solid var(--line);border-left:0;padding-top:1.4rem;padding-left:0}.skill-row{gap:.55rem;padding:1.25rem 0}.skill-row:hover{padding-left:.65rem;padding-right:.65rem}.contact-section__inner{flex-direction:column;align-items:flex-start;gap:1rem}}@media (hover:none){.project-card__details{opacity:1;grid-template-rows:1fr;margin-top:2rem;transform:translateY(0)}}@media (width<=440px){.site-nav{gap:.85rem}.site-nav a{font-size:.62rem}.hero__actions{flex-direction:column;align-items:center;gap:.65rem}.resume-link{min-height:44px}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.hero{height:100svh}.hero__content,.portrait-frame,[data-reveal]{opacity:1;transform:none}.project-card:hover,.project-card:focus-visible,.project-card:focus-within{transform:none}}
