@font-face{font-family:Space Grotesk;font-style:normal;font-weight:300 700;font-display:swap;src:url(../media/32687112bd2dd8db-s.1gepa_7fcx9fm.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Space Grotesk;font-style:normal;font-weight:300 700;font-display:swap;src:url(../media/28868e710e86be81-s.2eksvhm1z0jwa.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Space Grotesk;font-style:normal;font-weight:300 700;font-display:swap;src:url(../media/0c89a48fa5027cee-s.p.2cyn07wtgehh0.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Space Grotesk Fallback;src:local(Arial);ascent-override:89.71%;descent-override:26.62%;line-gap-override:0.0%;size-adjust:109.69%}.space_grotesk_1c7a4ed8-module__91MOyG__className{font-family:Space Grotesk,Space Grotesk Fallback;font-style:normal}.space_grotesk_1c7a4ed8-module__91MOyG__variable{--font-space-grotesk:"Space Grotesk", "Space Grotesk Fallback"}
@font-face{font-family:Fraunces;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/1e219c03c996efbd-s.2qo5md4hn_gum.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fraunces;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/b35b0dbffda7f2c4-s.1d9rlgtqyj_-l.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/03bda585a99c6450-s.p.32sris142tqlb.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Fraunces Fallback;src:local(Times New Roman);ascent-override:84.71%;descent-override:22.09%;line-gap-override:0.0%;size-adjust:115.45%}.fraunces_533c7c4b-module__LDFqyW__className{font-family:Fraunces,Fraunces Fallback;font-style:normal}.fraunces_533c7c4b-module__LDFqyW__variable{--font-fraunces:"Fraunces", "Fraunces Fallback"}
:root{--canvas:#101114;--surface:#191b20;--ink:#f4f6f8;--muted:#a8adb5;--line:#f4f6f83b;--line-soft:#f4f6f81f;--accent:#f4f6f8;--accent-ink:#101114;--max:1280px;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}:root[data-theme=light]{--canvas:#f3f5f9;--surface:#fff;--ink:#111;--muted:#626871;--line:#1111112e;--line-soft:#1111111a;--accent:#111;--accent-ink:#f4f6f8;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}html{scroll-behavior:smooth;-moz-text-size-adjust:100%;text-size-adjust:100%}body{background-color:var(--canvas);background-image:radial-gradient(circle, color-mix(in srgb, var(--ink) 10%, transparent) 1px, transparent 1.25px);color:var(--ink);font-family:var(--font-space-grotesk), Arial, Helvetica, sans-serif;background-position:top;background-size:24px 24px;margin:0;line-height:1.25;transition:background-color .18s,color .18s;overflow-x:clip}html.intro-active,html.intro-active body{overflow:hidden}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.scroll-rise-ready .scroll-rise{opacity:.64;transition:opacity .76s cubic-bezier(.22,1,.36,1),transform .76s cubic-bezier(.22,1,.36,1);transition-delay:var(--rise-delay,0s);will-change:opacity, transform;transform:translateY(20px)}.scroll-rise-ready .scroll-rise.is-revealed{opacity:1;will-change:auto;transform:translateY(0)}.intro-loader{--intro-nav-x:max(24px, calc((100vw - var(--max)) / 2));--intro-nav-y:35px;z-index:1000;background:var(--canvas);color:var(--ink);place-items:center;animation:4.1s cubic-bezier(.76,0,.24,1) forwards intro-curtain;display:grid;position:fixed;inset:0;overflow:hidden}.intro-mark{font-family:var(--font-space-grotesk), Arial, Helvetica, sans-serif;letter-spacing:-.04em;opacity:0;white-space:nowrap;font-size:1.05rem;font-weight:700;line-height:1;animation:4.1s cubic-bezier(.76,0,.24,1) forwards intro-mark-move;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.intro-mark span{color:currentColor}.intro-word{font-family:var(--font-space-grotesk), Arial, Helvetica, sans-serif;letter-spacing:-.075em;opacity:0;justify-content:center;align-items:center;font-size:clamp(2.45rem,7vw,6.25rem);font-weight:400;line-height:.9;animation:4.1s cubic-bezier(.76,0,.24,1) forwards intro-word-in;display:flex}.intro-glyph{clip-path:polygon(50% 0,100% 50%,50% 100%,0 50%);background:currentColor;flex:0 0 .68em;width:.68em;height:.68em;margin:0 .08em 0 .14em;animation:1.05s step-end 1.28s infinite intro-glyph-morph}.intro-pointer{clip-path:polygon(0 0,86% 64%,53% 67%,68% 100%,53% 100%,39% 70%,15% 91%);opacity:0;background:currentColor;width:20px;height:26px;animation:4.1s forwards intro-pointer-in;position:absolute;bottom:clamp(34px,7vh,76px);left:50%;transform:translate(-50%)rotate(-14deg)}@keyframes intro-mark-move{0%{opacity:0;transform:translate(-50%,-36%)scale(.9)}6%{opacity:1;transform:translate(-50%,-50%)scale(1)}16%{opacity:1;transform:translate(-50%,-50%)scale(1)}31%,70%{top:var(--intro-nav-y);opacity:1;left:50%;transform:translate(-50%,-50%)scale(1)}90%,95%{top:var(--intro-nav-y);left:var(--intro-nav-x);opacity:1;transform:translateY(-50%)scale(1)}to{top:var(--intro-nav-y);left:var(--intro-nav-x);opacity:0;transform:translateY(-50%)scale(1)}}@keyframes intro-word-in{0%,24%{opacity:0;transform:translateY(18px)}34%,64%{opacity:1;transform:translateY(0)}72%,to{opacity:0;transform:translateY(-12px)}}@keyframes intro-glyph-morph{0%{clip-path:circle(48%);border-radius:50%;transform:rotate(0)scale(.72)}20%{clip-path:polygon(50% 0,100% 50%,50% 100%,0 50%);border-radius:0;transform:rotate(0)scale(.82)}40%{clip-path:polygon(50% 0,64% 35%,100% 50%,64% 65%,50% 100%,36% 65%,0 50%,36% 35%);border-radius:0;transform:rotate(22deg)scale(.9)}60%{clip-path:polygon(10% 8%,90% 8%,63% 50%,90% 92%,10% 92%,37% 50%);border-radius:0;transform:rotate(0)scale(.8)}80%{clip-path:polygon(50% 0,100% 100%,0 100%);border-radius:0;transform:rotate(15deg)scale(.86)}}@keyframes intro-pointer-in{0%,42%{opacity:0;transform:translate(-50%,10px)rotate(-14deg)}53%,64%{opacity:.18;transform:translate(-50%)rotate(-14deg)}72%,to{opacity:0;transform:translate(-50%,-7px)rotate(-14deg)}}@keyframes intro-curtain{0%,90%{opacity:1;visibility:visible}99%{opacity:0;visibility:visible}to{opacity:0;visibility:hidden}}a,a:hover{color:inherit}h1,h2,h3,p{margin:0}section>*{min-width:0}.site-header{z-index:10;border-bottom:1px solid var(--line-soft);background:color-mix(in srgb, var(--canvas) 90%, transparent);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);position:sticky;top:0}.nav,main{width:min(calc(100% - 48px), var(--max));margin:0 auto}.nav{justify-content:space-between;align-items:center;gap:20px;min-height:70px;display:flex;position:relative}.wordmark{letter-spacing:-.04em;font-size:1.05rem;font-weight:700;text-decoration:none}.wordmark span{color:var(--accent)}.nav-actions,.nav-links{align-items:center;display:flex}.nav-actions{gap:16px}.nav-links{gap:22px}.nav-links>a{color:var(--muted);font-family:var(--font-space-grotesk), Arial, Helvetica, sans-serif;background:0 0;border:1px solid #0000;border-radius:999px;padding:8px 11px;font-size:.9rem;text-decoration:none;transition:background-color .18s,border-color .18s,color .18s,transform .18s}.nav-links>a:hover,.nav-links>a:focus-visible{border-color:color-mix(in srgb, var(--ink) 14%, transparent);background:color-mix(in srgb, var(--surface) 58%, transparent);color:var(--ink);-webkit-backdrop-filter:blur(12px)saturate(145%);transform:translateY(-1px)}.nav-links>a:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.menu-toggle{border:1px solid var(--line);background:var(--surface);width:50px;height:50px;color:var(--ink);cursor:pointer;border-radius:50%;place-items:center;padding:0;display:none;position:relative}.menu-toggle>span{background:currentColor;width:18px;height:1px;transition:transform .18s;position:absolute}.menu-toggle>span:first-child{transform:translateY(-4px)}.menu-toggle>span:last-child{transform:translateY(4px)}.menu-toggle[aria-expanded=true]>span:first-child{transform:rotate(45deg)}.menu-toggle[aria-expanded=true]>span:last-child{transform:rotate(-45deg)}.menu-toggle:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.mobile-menu{display:none}.theme-toggle{border:1px solid var(--line);background:var(--surface);width:50px;height:50px;color:var(--ink);cursor:pointer;border-radius:14px;place-items:center;padding:0;transition:background-color .32s,border-color .32s,color .32s,transform .22s;display:inline-grid;position:relative}.theme-toggle:hover{border-color:color-mix(in srgb, var(--ink) 38%, transparent);transform:translateY(-2px)scale(1.03)}.theme-toggle.is-animating{cursor:wait;transform:scale(.94)}.theme-toggle:after{z-index:2;background:var(--ink);color:var(--canvas);content:attr(data-tooltip);font-family:var(--font-space-grotesk), Arial, Helvetica, sans-serif;letter-spacing:.01em;opacity:0;pointer-events:none;white-space:nowrap;border-radius:4px;padding:6px 8px;font-size:.65rem;transition:opacity .14s,transform .14s;position:absolute;top:calc(100% + 10px);right:-8px;transform:translateY(-3px)}.theme-toggle:hover:after,.theme-toggle:focus-visible:after{opacity:1;transform:translateY(0)}.theme-toggle:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.theme-disc{border-radius:inherit;width:100%;height:100%;position:relative;overflow:hidden}.theme-orbit{transition:transform .52s cubic-bezier(.22,1,.36,1);position:absolute;inset:0}.theme-sun,.theme-moon{border-radius:50%;transition:opacity .28s,transform .52s cubic-bezier(.22,1,.36,1);display:block;position:absolute;left:50%}.theme-sun{opacity:1;border:2px solid;width:14px;height:14px;top:50%;transform:translate(-50%,-50%)rotate(0)scale(1);box-shadow:0 -10px 0 -7px,0 10px 0 -7px,10px 0 0 -7px,-10px 0 0 -7px,7px 7px 0 -7px,-7px -7px 0 -7px,7px -7px 0 -7px,-7px 7px 0 -7px}.theme-moon{opacity:0;background:currentColor;width:19px;height:19px;top:150%;transform:translate(-50%,-50%)rotate(55deg)scale(.62)}.theme-moon:after{background:var(--surface);content:"";border-radius:50%;width:19px;height:19px;position:absolute;top:-4px;left:6px}:root[data-theme=dark] .theme-orbit{transform:translateY(-100%)}:root[data-theme=dark] .theme-sun{opacity:0;transform:translate(-50%,-50%)rotate(100deg)scale(.58)}:root[data-theme=dark] .theme-moon{opacity:1;transform:translate(-50%,-50%)rotate(-20deg)scale(1)}.hero{grid-template-columns:minmax(0,.9fr) minmax(430px,1.1fr);align-items:center;min-height:max(620px,76vh - 70px);padding:34px 0 42px;display:grid;position:relative;overflow:hidden}.hero-portrait{z-index:0;clip-path:inset(0 0 10%);pointer-events:none;-webkit-user-select:none;user-select:none;width:min(52vw,680px);height:auto;position:absolute;bottom:0;right:0;transform:translateY(10%)}em{font-family:var(--font-fraunces), Georgia, "Times New Roman", serif;font-optical-sizing:auto;font-weight:400}.education-school{font-family:var(--font-space-grotesk), Arial, Helvetica, sans-serif;font-style:normal;font-weight:600}.hero-bottom{z-index:1;justify-content:flex-start;align-items:center;gap:28px;display:flex;position:relative}.hero-bottom h1{max-width:560px;color:var(--ink);font-family:var(--font-fraunces), Georgia, "Times New Roman", serif;letter-spacing:-.02em;text-align:left;-webkit-user-select:none;user-select:none;font-size:clamp(3.6rem,6vw,6.4rem);font-weight:400;line-height:.94}.text-link{border-bottom:1px solid var(--ink);flex:none;padding-bottom:5px;font-size:.92rem;text-decoration:none}.text-link span,.project-live span{margin-left:8px;transition:transform .16s;display:inline-block}.text-link:hover span,.project-live:hover span{transform:translate(5px)}.work-section,.about-section,.notes-section,.stack-section,.contact-section{border-bottom:1px solid var(--line);padding:128px 0}#education,#projects,#experience,#skills,#other,#contact{scroll-margin-top:70px}.section-intro{margin-bottom:76px}.work-section .section-intro{margin-bottom:52px}.section-intro h2,.about-copy h2,.notes-section h2,.stack-section>h2,.contact-section h2{letter-spacing:-.07em;text-wrap:balance;font-size:4.8rem;font-weight:500;line-height:1.02}.project-list{border-top:1px solid var(--line)}.project-stack-stage{height:240vh;min-height:1500px;position:relative}.project-stack-sticky{place-items:center;height:calc(100vh - 70px);min-height:620px;display:grid;position:sticky;top:70px;overflow:clip}.project-stack-cards{width:100%;height:min(76vh,600px);position:relative}.project-stack-card-shell{transform-origin:50% 84%;will-change:transform;height:min(34vh,270px);transition:filter .22s;position:absolute;top:50%;left:50%}.project-stack-card{border:1px solid var(--line);background:color-mix(in srgb, var(--surface) 94%, var(--canvas));border-radius:22px;flex-direction:column;justify-content:space-between;width:100%;height:100%;padding:17px;transition:background-color .18s,transform .22s;display:flex;position:relative;overflow:hidden;transform:translate(-50%,-50%)}.project-stack-card>*{opacity:var(--project-card-content-opacity,1);will-change:opacity}.project-stack-card>.project-stack-cover-label{z-index:2;color:var(--ink);font-family:var(--font-space-grotesk), Arial, Helvetica, sans-serif;letter-spacing:-.075em;pointer-events:none;place-items:center;font-size:clamp(2.7rem,5.5vw,5.2rem);font-weight:500;line-height:1;display:grid;position:absolute;inset:0}.project-stack-cover-label span{color:var(--ink)}.project-stack-card-shell:hover .project-stack-card{border-color:color-mix(in srgb, var(--ink) 34%, transparent);transform:translate(-50%,calc(-50% - 6px))}.project-stack-card-shell:nth-child(2n) .project-stack-card{background:color-mix(in srgb, var(--surface) 88%, var(--canvas))}.project-stack-card-topline,.project-stack-card-footer,.project-stack-status{font-family:var(--font-space-grotesk), Arial, Helvetica, sans-serif;text-transform:uppercase;font-size:.62rem}.project-stack-card-topline{color:var(--muted);letter-spacing:.04em;justify-content:space-between;align-items:center;display:flex}.project-stack-card-index{background:var(--ink);min-width:30px;min-height:24px;color:var(--canvas);border-radius:999px;place-items:center;display:inline-grid}.project-stack-card h3{letter-spacing:-.055em;margin:15px 0 8px;font-size:clamp(1.22rem,1.55vw,1.62rem);font-weight:500;line-height:1}.project-stack-card p{color:var(--muted);-webkit-line-clamp:3;-webkit-box-orient:vertical;font-size:.78rem;line-height:1.48;display:-webkit-box;overflow:hidden}.project-stack-card-footer{justify-items:end;gap:12px;padding-top:12px;display:grid}.project-stack-card-footer a,.project-stack-status{width:fit-content;color:var(--ink);text-decoration:none}.project-stack-card-footer a{background:var(--ink);color:var(--canvas);letter-spacing:.02em;border-radius:999px;padding:8px 11px;transition:transform .16s}.project-stack-card-footer a span{margin-left:4px;transition:transform .16s;display:inline-block}.project-stack-card-footer a:hover span{transform:translate(4px)}.project-stack-card-footer a:hover{transform:translateY(-2px)}.project-stack-card>.project-stack-card-hitarea{z-index:4;border-radius:inherit;cursor:pointer;opacity:1;background:0 0;border:0;width:100%;height:100%;position:absolute;inset:0}.project-stack-card:has(.project-stack-card-hitarea:focus-visible){border-color:var(--ink);outline:2px solid var(--ink);outline-offset:4px}.project-detail-overlay{z-index:100;background:color-mix(in srgb, var(--canvas) 62%, transparent);-webkit-backdrop-filter:blur(12px);place-items:center;padding:24px;animation:.18s both project-detail-overlay-in;display:grid;position:fixed;inset:0}.project-detail-panel{border:1px solid var(--line);background:var(--surface);width:min(70vw,1000px);max-height:70vh;box-shadow:0 30px 90px color-mix(in srgb, var(--ink) 22%, transparent);border-radius:24px;outline:none;padding:clamp(24px,4vw,46px);animation:.22s cubic-bezier(.22,1,.36,1) both project-detail-panel-in;overflow:auto}.project-detail-header{border-bottom:1px solid var(--line-soft);justify-content:space-between;align-items:flex-start;gap:28px;padding-bottom:24px;display:flex}.project-detail-header p,.project-detail-label{color:var(--muted);font-family:var(--font-space-grotesk), Arial, Helvetica, sans-serif;letter-spacing:.07em;text-transform:uppercase;font-size:.68rem;font-weight:600}.project-detail-header h2{letter-spacing:-.075em;margin-top:10px;font-size:clamp(2.5rem,6vw,5.8rem);font-weight:500;line-height:.95}.project-detail-close{border:1px solid var(--line);background:var(--canvas);width:44px;height:44px;color:var(--ink);cursor:pointer;font:inherit;border-radius:50%;flex:0 0 44px;place-items:center;font-size:1.55rem;line-height:1;transition:transform .16s,background-color .16s;display:grid}.project-detail-close:hover,.project-detail-close:focus-visible{background:var(--ink);color:var(--canvas);transform:rotate(5deg)}.project-detail-close:focus-visible{outline:2px solid var(--ink);outline-offset:3px}.project-detail-body{grid-template-columns:minmax(0,1.45fr) minmax(220px,.55fr);gap:clamp(32px,5vw,70px);padding-top:clamp(26px,4vw,44px);display:grid}.project-detail-description{color:var(--muted);font-size:clamp(1rem,1.25vw,1.2rem);line-height:1.55}.project-detail-meta{align-content:start;gap:28px;display:grid}.project-detail-meta ul{flex-wrap:wrap;gap:7px;margin:12px 0 0;padding:0;list-style:none;display:flex}.project-detail-meta li{border:1px solid var(--line);color:var(--muted);font-family:var(--font-space-grotesk), Arial, Helvetica, sans-serif;text-transform:uppercase;border-radius:999px;padding:7px 9px;font-size:.66rem}.project-detail-links{gap:8px;margin-top:12px;display:grid}.project-detail-links a{border-bottom:1px solid var(--line-soft);color:var(--ink);font-family:var(--font-space-grotesk), Arial, Helvetica, sans-serif;text-transform:uppercase;justify-content:space-between;align-items:center;gap:16px;padding:9px 0;font-size:.72rem;text-decoration:none;display:flex}.project-detail-links a span{transition:transform .16s}.project-detail-links a:hover span,.project-detail-links a:focus-visible span{transform:translate(3px,-3px)}@keyframes project-detail-overlay-in{0%{opacity:0}}@keyframes project-detail-panel-in{0%{opacity:0;transform:translateY(18px)scale(.985)}}.project{border-bottom:1px solid var(--line);grid-template-columns:minmax(0,1fr);padding:36px 0 42px;display:grid}.project:last-child{border-bottom:0}.project-meta{color:var(--muted);font-family:var(--font-space-grotesk), Arial, Helvetica, sans-serif;flex-direction:column;justify-content:space-between;gap:36px;font-size:.86rem;display:flex}.project-meta span:first-child{color:var(--ink)}.project-body{grid-template-columns:minmax(0,1.1fr) minmax(220px,.75fr);gap:22px 44px;display:grid}.project-title{width:fit-content;color:var(--ink);grid-column:1/-1;align-items:baseline;text-decoration:none;display:inline-flex}.project-title h3{letter-spacing:-.075em;text-wrap:balance;font-size:4.7rem;font-weight:500;line-height:.96}.project-title>span{font-size:1.45rem}.project-body p{max-width:590px;color:var(--muted);font-size:1.08rem;line-height:1.38}.project-summary{max-width:620px}.project-body .project-note{color:var(--ink);margin-top:14px}.project-live{border-bottom:1px solid var(--ink);width:fit-content;color:var(--ink);font-family:var(--font-space-grotesk), Arial, Helvetica, sans-serif;align-self:start;padding-bottom:4px;font-size:.82rem;text-decoration:none}.project-body ul{border-top:1px solid var(--line-soft);flex-wrap:wrap;grid-column:1/-1;gap:10px 22px;margin:0;padding:16px 0 0;list-style:none;display:flex}.project-body li{color:var(--muted);font-family:var(--font-space-grotesk), Arial, Helvetica, sans-serif;align-items:center;font-size:.8rem;display:inline-flex}.project-body li:before{background:var(--accent);content:"";width:6px;height:6px;margin-right:8px}.about-section{display:block}.about-copy{grid-template-columns:minmax(0,1.15fr) minmax(230px,.55fr);gap:50px;display:grid}.about-copy h2{font-size:5.7rem}.education-section .about-copy h2{font-size:4.6rem}.education-details{color:var(--muted);align-self:end;gap:22px;display:grid}.education-institution{color:var(--ink);font-size:1.18rem;font-weight:600;line-height:1.35}.education-program{gap:7px;font-size:1.05rem;line-height:1.45;display:grid}.education-date{font-family:var(--font-space-grotesk), Arial, Helvetica, sans-serif;letter-spacing:.04em;text-transform:uppercase;font-size:.82rem}.notes-section{display:block}#experience.notes-section{padding:84px 0}.notes-section h2{margin-top:18px}.notes-list{border-top:1px solid var(--line)}#experience .notes-list{border-top:0}.other-section .notes-list{text-align:center;border-top:0;width:min(100%,760px);margin-inline:auto}.notes-list article{border-bottom:1px solid var(--line);grid-template-columns:minmax(0,1fr);padding:25px 0;display:grid}#experience .notes-list article{border-bottom:0;grid-template-columns:minmax(260px,.7fr) minmax(320px,1fr);align-items:start;gap:clamp(48px,8vw,128px)}#experience .experience-summary{max-width:620px;color:var(--ink);letter-spacing:-.025em;font-size:clamp(1.1rem,1.65vw,1.45rem);line-height:1.45}.other-section .notes-list article{border-bottom:0;justify-items:center}.notes-list p+p{margin-top:16px}.notes-list article>span{color:var(--muted);font-family:var(--font-space-grotesk), Arial, Helvetica, sans-serif;font-size:.82rem}.notes-list h3,.skills-grid h3{letter-spacing:-.035em;margin-bottom:14px;font-size:1.2rem;font-weight:500}.notes-list p,.skills-grid p{color:var(--muted);line-height:1.35}.stack-section>h2{max-width:640px;margin:18px 0 72px}.skills-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.skill-card{--spotlight-opacity:0;--spotlight-x:50%;--spotlight-y:50%;border:1px solid var(--line);background:var(--surface);border-radius:12px;flex-direction:column;justify-content:space-between;min-height:0;padding:20px;transition:border-color .18s,box-shadow .18s,transform .18s;display:flex;position:relative;overflow:hidden}.skill-card:before{background:radial-gradient(320px circle at var(--spotlight-x) var(--spotlight-y), color-mix(in srgb, var(--accent) 14%, transparent), transparent 68%);content:"";opacity:var(--spotlight-opacity);pointer-events:none;transition:opacity .18s;position:absolute;inset:0}.skill-card:hover{border-color:color-mix(in srgb, var(--accent) 48%, var(--line));box-shadow:0 12px 26px color-mix(in srgb, var(--ink) 8%, transparent);transform:translateY(-2px)}.skill-card-content{z-index:1;position:relative}.skill-tags{flex-wrap:wrap;gap:7px;margin:0;padding:0;list-style:none;display:flex}.skill-tags li{border:1px solid var(--line-soft);background:color-mix(in srgb, var(--canvas) 70%, transparent);color:var(--muted);font-family:var(--font-space-grotesk), Arial, Helvetica, sans-serif;border-radius:999px;padding:7px 9px;font-size:.7rem;line-height:1}.contact-section{border-bottom:0;padding-bottom:76px}.contact-section h2{max-width:1080px;margin:18px 0 72px;font-size:6.4rem}.contact-links{flex-wrap:wrap;gap:10px;display:flex}.contact-links a{border:1px solid var(--line);max-width:100%;color:var(--ink);overflow-wrap:anywhere;border-radius:999px;padding:12px 16px;font-size:.94rem;text-decoration:none}.contact-links a:hover{border-color:var(--accent);background:var(--accent);color:var(--accent-ink)}.contact-loop-stage{background:0 0;border-bottom:0;width:100vw;min-height:calc(100svh - 70px);margin-left:calc(50% - 50vw);position:relative;overflow:hidden}.contact-loop-panel{isolation:isolate;min-height:calc(100svh - 70px);position:relative}.contact-loop-content{z-index:2;width:min(calc(100% - 48px), var(--max));flex-direction:column;justify-content:space-between;min-height:calc(100svh - 70px);margin:0 auto;padding:clamp(34px,6vh,64px) 0 clamp(42px,8vh,84px);display:flex;position:relative}.contact-loop-copy{max-width:1180px}.contact-loop-email{max-width:1180px;color:var(--ink);letter-spacing:-.075em;overflow-wrap:anywhere;justify-content:space-between;align-items:center;gap:24px;padding-bottom:clamp(12px,2vh,22px);font-size:clamp(3rem,6.6vw,6.4rem);font-weight:500;line-height:.92;text-decoration:none;display:flex}.contact-loop-email>span:last-child{flex:none;font-size:.42em;transition:transform .18s}.contact-loop-email:hover>span:last-child,.contact-loop-email:focus-visible>span:last-child{transform:translate(5px,-5px)}.contact-loop-email:focus-visible{outline:2px solid var(--ink);outline-offset:6px}.contact-loop-links{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.contact-loop-links a{border:1px solid var(--line);min-height:48px;color:var(--ink);font-family:var(--font-space-grotesk), Arial, Helvetica, sans-serif;text-transform:uppercase;border-radius:999px;justify-content:space-between;align-items:center;gap:22px;padding:12px 18px;font-size:.78rem;text-decoration:none;transition:background-color .18s,color .18s,transform .18s;display:inline-flex}.contact-loop-links a:hover,.contact-loop-links a:focus-visible{background:var(--ink);color:var(--canvas);transform:translateY(-2px)}.contact-loop-links a:focus-visible,.contact-loop-footer a:focus-visible{outline:2px solid var(--ink);outline-offset:4px}.contact-loop-footer{color:var(--muted);font-family:var(--font-space-grotesk), Arial, Helvetica, sans-serif;letter-spacing:.04em;text-transform:uppercase;justify-content:space-between;align-items:center;gap:20px;font-size:.68rem;display:flex}.contact-loop-footer a{border-bottom:1px solid var(--line);color:var(--ink);padding-bottom:5px;text-decoration:none}.custom-cursor{display:none}@media (pointer:fine){html.has-custom-cursor,html.has-custom-cursor *{cursor:none!important}.custom-cursor{z-index:100;pointer-events:none;display:block;position:fixed;inset:0}.custom-cursor-pointer{opacity:0;pointer-events:none;will-change:transform;z-index:2;filter:drop-shadow(0 1px 1px #ffffff6b);background:url(/pointer.png) 0 0/contain no-repeat;width:28px;height:28px;transition:filter .18s,height .14s,opacity .1s,width .14s;position:fixed;top:0;left:0}.custom-cursor-pointer.is-compact{width:18px;height:18px}.custom-cursor-pointer.is-visible{opacity:1}:root[data-theme=dark] .custom-cursor-pointer{filter:invert()drop-shadow(0 1px 1px #000000b3)}}@media (max-width:960px){.nav-links{display:none}.menu-toggle{display:grid}.mobile-menu{z-index:9;border-top:1px solid var(--line-soft);background:color-mix(in srgb, var(--canvas) 96%, transparent);opacity:0;pointer-events:none;visibility:hidden;transition:opacity .18s,transform .22s cubic-bezier(.22,1,.36,1),visibility .18s;display:block;position:fixed;inset:70px 0 0;overflow-y:auto;transform:translateY(-12px)}.mobile-menu.is-open{opacity:1;pointer-events:auto;visibility:visible;transform:translateY(0)}.mobile-menu-inner{width:min(calc(100% - 48px), var(--max));margin:0 auto;padding:clamp(34px,7vh,76px) 0;display:grid}.mobile-menu-inner>a{border-bottom:1px solid var(--line-soft);color:var(--ink);letter-spacing:-.06em;text-transform:capitalize;grid-template-columns:44px minmax(0,1fr);align-items:baseline;padding:clamp(13px,2.4vh,22px) 0;font-size:clamp(2.2rem,8vw,4.7rem);font-weight:500;line-height:1;text-decoration:none;display:grid}.mobile-menu-inner>a:first-child{border-top:1px solid var(--line-soft)}.mobile-menu-inner>a>span{color:var(--muted);font-family:var(--font-space-grotesk), Arial, Helvetica, sans-serif;letter-spacing:.06em;font-size:.65rem;font-weight:500}.mobile-menu-inner>a:focus-visible{outline:2px solid var(--accent);outline-offset:5px}.hero{grid-template-columns:minmax(0,.85fr) minmax(360px,1.15fr)}.hero-portrait{width:min(62vw,610px);right:-5%}.hero-bottom h1{font-size:clamp(3.2rem,7.2vw,5.4rem)}.section-intro h2,.about-copy h2,.notes-section h2,.stack-section>h2,.contact-section h2{font-size:4rem}.project-title h3{font-size:3.75rem}.about-copy{grid-template-columns:1fr}.education-details{max-width:570px}}@media (max-width:700px){.intro-loader{--intro-nav-x:15px;--intro-nav-y:31px}.nav,main{width:min(calc(100% - 30px), var(--max))}.nav{min-height:62px}.nav-actions{gap:9px}.theme-toggle,.menu-toggle{width:44px;height:44px}.mobile-menu{top:62px}.mobile-menu-inner{width:min(calc(100% - 30px), var(--max))}#education,#projects,#experience,#skills,#other,#contact{scroll-margin-top:62px}.hero{grid-template-columns:1fr;align-items:start;min-height:calc(100svh - 62px);padding:clamp(64px,11vh,104px) 0 30px;display:grid}.hero-portrait{width:min(94vw,520px);max-width:none;right:-12%;transform:translateY(10%)}.hero-bottom h1{max-width:70%;font-size:clamp(2.8rem,13vw,4.6rem)}.hero-bottom,.section-intro,.project,.about-section{grid-template-columns:1fr}.hero-bottom{justify-content:flex-start;display:flex}.work-section,.about-section,.notes-section,.stack-section,.contact-section{padding:78px 0}#experience.notes-section{padding:62px 0}.section-intro{gap:20px;margin-bottom:48px;display:grid}.section-intro h2,.about-copy h2,.notes-section h2,.stack-section>h2,.contact-section h2{letter-spacing:-.065em;font-size:clamp(2.35rem,12vw,3.05rem)}.project{gap:22px;padding:25px 0 31px;display:grid}.project-stack-stage{height:270vh;min-height:1750px}.project-stack-sticky{height:calc(100svh - 62px);min-height:590px;top:62px}.project-stack-cards{height:500px}.project-stack-card-shell{height:148px}.project-stack-card{border-radius:10px;padding:11px}.project-stack-card>.project-stack-cover-label{font-size:clamp(2.15rem,12vw,3.25rem)}.project-stack-card-topline{padding-bottom:7px;font-size:.54rem}.project-stack-card h3{letter-spacing:-.05em;margin:8px 0;font-size:.94rem}.project-stack-card p{display:none}.project-stack-card-footer{gap:7px;padding-top:7px;font-size:.5rem}.project-detail-overlay{padding:15px}.project-detail-panel{border-radius:18px;width:100%;max-height:85vh;padding:22px}.project-detail-header{gap:18px;padding-bottom:20px}.project-detail-header h2{font-size:2.55rem}.project-detail-close{flex-basis:40px;width:40px;height:40px}.project-detail-body{grid-template-columns:1fr;gap:26px;padding-top:24px}.project-meta{flex-direction:row;gap:10px}.project-body{grid-template-columns:1fr;gap:18px}.project-title h3{font-size:3.2rem}.about-section{gap:20px;display:grid}.about-copy{gap:28px;display:grid}.education-details{gap:18px}#experience .notes-list article{grid-template-columns:1fr;gap:26px}.skills-grid{grid-template-columns:1fr}.skill-card{min-height:0;padding:18px}.contact-section{padding-bottom:52px}.contact-section h2{margin-bottom:44px}.contact-links{justify-items:start;display:grid}.contact-loop-stage{min-height:calc(100svh - 62px)}.contact-loop-panel{min-height:590px}.contact-loop-content{width:min(calc(100% - 30px), var(--max));min-height:max(590px,100svh - 62px);padding:28px 0 34px}.contact-loop-email{letter-spacing:-.075em;gap:14px;font-size:clamp(2.55rem,11vw,4.6rem);line-height:.95}.contact-loop-links{grid-template-columns:repeat(3,minmax(0,auto));justify-content:start;align-items:stretch;display:grid}.contact-loop-links a{gap:12px;min-height:44px;padding:10px 13px;font-size:.64rem}.contact-loop-footer{font-size:.56rem}}@media (prefers-reduced-motion:reduce),(pointer:coarse){.nav-links>a{transition:none}.nav-links>a:hover,.nav-links>a:focus-visible{transform:none}.skill-card{transition:none}.skill-card:before{display:none}.skill-card:hover{box-shadow:none;transform:none}}@media (prefers-reduced-motion:reduce){.theme-toggle,.theme-orbit,.theme-sun,.theme-moon{transition:none}.scroll-rise-ready .scroll-rise{opacity:1;transition:none;transform:none}.project-stack-stage{height:auto;min-height:0}.project-stack-sticky{height:auto;min-height:0;position:relative;top:auto;overflow:visible}.project-stack-cards{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;height:auto;display:grid}.project-stack-card-shell{height:350px;position:relative;inset:auto;opacity:1!important;width:auto!important;transform:none!important}.project-stack-card{transition:none;transform:none}.project-detail-overlay,.project-detail-panel{animation:none}}@media (prefers-reduced-motion:reduce) and (max-width:700px){.project-stack-cards{grid-template-columns:1fr}.project-stack-card-shell{height:180px}}@media (max-width:420px){.wordmark{font-size:.96rem}.nav-actions{gap:7px}.theme-toggle,.menu-toggle{width:40px;height:40px}.project-title h3{font-size:2.85rem}.contact-loop-email{font-size:clamp(2.25rem,10.5vw,3.4rem)}.contact-loop-links{grid-template-columns:repeat(2,minmax(0,auto))}}
