@import url(https://fonts.googleapis.com/css2?family=Inter:wght@200;300;400;500;600;700;800&display=swap);body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;margin:0}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}:root{--accent-200:#ddc39a;--accent-400:#c09a62;--accent-600:#8f6b3a;--radius-s:6px;--radius-m:14px;--shadow-1:0 10px 30px #0003;--shadow-2:0 24px 60px #00000052;--ease-smoke:cubic-bezier(0.4,0,0.2,1);--bg:#0d0d0d;--bg-rgb:13,13,13;--text:#e8e6e1;--text-rgb:232,230,225;--accent:#e8e6e1;--accent-rgb:232,230,225;--accent-strong:#fff;--a-muted:0.62;--a-faint:0.42;--a-hair:0.16;--smoothing:antialiased;--weight-body:300;--text-muted:rgba(var(--text-rgb),var(--a-muted));--text-faint:rgba(var(--text-rgb),var(--a-faint));--border:rgba(var(--text-rgb),var(--a-hair));--border-strong:rgba(var(--text-rgb),calc(var(--a-hair) + 0.14));--card-text:var(--text);--smoke-blend:screen;--fs-nano:0.65rem;--fs-micro:0.7rem;--fs-xs:0.75rem;--fs-sm:0.85rem;--fs-base:1rem;--fs-md:1.25rem;--fs-lg:1.6rem;--fs-h2:clamp(2rem,5vw,3.5rem);--fs-h1:clamp(2.2rem,6.5vw,5rem);--fs-h1-alt:clamp(2.4rem,6vw,4.5rem);--space-2xs:0.5rem;--space-xs:0.75rem;--space-sm:1rem;--space-md:1.5rem;--space-lg:2rem;--space-xl:2.5rem;--space-2xl:3rem;--space-3xl:4rem;--space-4xl:6rem}html[data-focus=Dawn]{--bg:#070707;--bg-rgb:7,7,7;--text:#f5f4f1;--text-rgb:245,244,241;--accent:#f5f4f1;--accent-rgb:245,244,241;--accent-strong:#fff}html[data-focus=Morning]{--bg:#26282c;--bg-rgb:38,40,44;--text:#f2f2ef;--text-rgb:242,242,239;--accent:#f2f2ef;--accent-rgb:242,242,239;--accent-strong:#fff}html[data-focus=Noon]{--bg:#d9c7ac;--bg-rgb:217,199,172;--text:#241a10;--text-rgb:36,26,16;--accent:var(--accent-600);--accent-rgb:143,107,58;--accent-strong:#6f5229;--a-muted:0.72;--a-faint:0.5;--a-hair:0.2;--smoothing:auto;--weight-body:400;--smoke-blend:multiply}html[data-focus=Dusk]{--bg:#f4f2ee;--bg-rgb:244,242,238;--text:#141210;--text-rgb:20,18,16;--accent:var(--accent-600);--accent-rgb:143,107,58;--accent-strong:#6f5229;--a-muted:0.68;--a-faint:0.46;--a-hair:0.16;--smoothing:auto;--weight-body:400;--smoke-blend:multiply}html[data-focus=Night]{--bg:#3a2c22;--bg-rgb:58,44,34;--text:#f4ede3;--text-rgb:244,237,227;--accent:var(--accent-200);--accent-rgb:221,195,154;--accent-strong:#ecd9b8}html[data-focus=Sleep]{--bg:#17100b;--bg-rgb:23,16,11;--text:#ded7cb;--text-rgb:222,215,203;--accent:#ded7cb;--accent-rgb:222,215,203;--accent-strong:#f2ece1;--a-muted:0.66;--a-faint:0.46}body,html{-webkit-font-smoothing:antialiased;-webkit-font-smoothing:var(--smoothing);-moz-osx-font-smoothing:grayscale;background:#0d0d0d;background:var(--bg);color:#e8e6e1;color:var(--text);font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;height:100%;margin:0;overflow-x:hidden;overscroll-behavior-y:none;padding:0;scroll-behavior:smooth;text-rendering:optimizeLegibility;transition:background-color 1.2s cubic-bezier(.4,0,.2,1),color 1.2s cubic-bezier(.4,0,.2,1);transition:background-color 1.2s var(--ease-smoke),color 1.2s var(--ease-smoke)}body{-ms-overflow-style:none;scroll-snap-type:y proximity;scrollbar-width:none}body::-webkit-scrollbar{display:none}.section{align-items:center;box-sizing:border-box;display:flex;flex-direction:column;justify-content:center;min-height:100vh;min-height:100svh;padding:6rem 2rem 4rem;padding:var(--space-4xl) var(--space-lg) var(--space-3xl);position:relative;scroll-snap-align:start;z-index:1}.section-label{color:#e8e6e16b;color:var(--text-faint);font-size:.7rem;font-size:var(--fs-micro);font-weight:600;letter-spacing:.35em;margin:0 0 2.5rem;margin:0 0 var(--space-xl);text-transform:uppercase}::selection{background:#e8e6e1;background:var(--accent);color:#0d0d0d;color:var(--bg)}a:focus-visible,button:focus-visible{border-radius:2px;outline:2px solid #fff;outline:2px solid var(--accent-strong);outline-offset:3px}:focus:not(:focus-visible){outline:none}.focus-backdrop{inset:0;overflow:hidden;pointer-events:none;position:fixed;z-index:0}.focus-backdrop .focus-layer{animation:gradient-drift 60s ease-in-out infinite alternate;animation-play-state:paused;background-size:160% 160%;inset:-20%;opacity:0;position:absolute;transition:opacity 2.8s cubic-bezier(.4,0,.2,1);transition:opacity 2.8s var(--ease-smoke);will-change:opacity,transform}.focus-backdrop .focus-layer:nth-child(2n){animation-direction:alternate-reverse;animation-duration:74s}.focus-backdrop .focus-layer.active{animation-play-state:running;opacity:1}.focus-layer--sleep:after{animation:sleep-breathe 22s ease-in-out infinite alternate;background:#000;content:"";inset:0;opacity:0;position:absolute}@keyframes sleep-breathe{0%{opacity:0}to{opacity:1}}@keyframes gradient-drift{0%{transform:translate(0) scale(1)}55%{transform:translate(-6%,5%) scale(1.06)}to{transform:translate(5%,-4%) scale(1.03)}}.focus-backdrop .smoke{animation-delay:0s;animation-delay:var(--drift-delay,0s);animation-iteration-count:infinite;animation-timing-function:ease-in-out;border-radius:50%;pointer-events:none;position:absolute;will-change:transform}.focus-backdrop .smoke:after,.focus-backdrop .smoke:before{animation-iteration-count:infinite;animation-timing-function:ease-in-out;border-radius:inherit;content:"";inset:0;position:absolute}.focus-backdrop .smoke:before{animation-delay:0s;animation-delay:var(--pulse-delay-1,0s);animation-name:smoke-pulse-in;background:radial-gradient(circle,#e8e6e1a6,#0000 100%);background:radial-gradient(circle,rgba(var(--accent-rgb),.65),#0000 100%)}.focus-backdrop .smoke:after{animation-delay:0s;animation-delay:var(--pulse-delay-2,0s);animation-name:smoke-pulse-out;background:radial-gradient(circle,#e8e6e18c,#0000 100%);background:radial-gradient(circle,rgba(var(--text-rgb),.55),#0000 100%)}.focus-backdrop .smoke-a{animation-duration:37s;animation-name:drift-a;height:85vmax;left:-10%;mix-blend-mode:screen;mix-blend-mode:var(--smoke-blend,screen);top:-15%;width:85vmax}.focus-backdrop .smoke-a:before{animation-duration:23s}.focus-backdrop .smoke-a:after{animation-duration:29s}.focus-backdrop .smoke-b{animation-duration:51s;animation-name:drift-b;bottom:-18%;height:90vmax;mix-blend-mode:screen;mix-blend-mode:var(--smoke-blend,screen);right:-10%;width:90vmax}.focus-backdrop .smoke-b:before{animation-duration:31s}.focus-backdrop .smoke-b:after{animation-duration:19s}.focus-backdrop:after{background:radial-gradient(ellipse 80% 70% at 50% 50%,#0000 45%,#0d0d0d4d 100%);background:radial-gradient(ellipse 80% 70% at 50% 50%,#0000 45%,rgba(var(--bg-rgb),.3) 100%);content:"";inset:0;mix-blend-mode:multiply;position:absolute;transition:background-color 1.2s cubic-bezier(.4,0,.2,1);transition:background-color 1.2s var(--ease-smoke)}@keyframes smoke-pulse-in{0%{opacity:.25}50%{opacity:1}to{opacity:.25}}@keyframes smoke-pulse-out{0%{opacity:.9}50%{opacity:.2}to{opacity:.9}}@keyframes drift-a{0%{transform:translate(0) scale(1) rotate(0deg)}28%{transform:translate(16vw,9vh) scale(1.18) rotate(9deg)}60%{transform:translate(9vw,19vh) scale(.96) rotate(-5deg)}to{transform:translate(21vw,3vh) scale(1.22) rotate(4deg)}}@keyframes drift-b{0%{transform:translate(0) scale(1.15) rotate(0deg)}35%{transform:translate(-15vw,-7vh) scale(.92) rotate(-7deg)}70%{transform:translate(-6vw,-17vh) scale(1.05) rotate(5deg)}to{transform:translate(-18vw,-11vh) scale(.88) rotate(-4deg)}}.loading-screen{align-items:center;color:#e8e6e1;color:var(--text);display:flex;inset:0;justify-content:center;position:fixed;z-index:1000}.loading-screen--leaving{pointer-events:none}.loading-plate{background:#0d0d0d;background:var(--bg);inset:0;position:absolute;transition:opacity .35s cubic-bezier(.4,0,.2,1),background-color 1.2s cubic-bezier(.4,0,.2,1);transition:opacity .35s var(--ease-smoke),background-color 1.2s var(--ease-smoke)}.loading-screen--leaving .loading-plate{opacity:0}.splash-title{animation:splash-in .45s cubic-bezier(.4,0,.2,1) backwards;animation:splash-in .45s var(--ease-smoke) backwards;color:#e8e6e1;color:var(--text);font-size:clamp(1.3rem,3.2vw,2.35rem);font-weight:800;letter-spacing:-.04em;line-height:.95;margin:0;position:relative;text-transform:uppercase;transform-origin:center center;transition:transform .35s cubic-bezier(.4,0,.2,1),opacity .35s cubic-bezier(.4,0,.2,1);transition:transform .35s var(--ease-smoke),opacity .35s var(--ease-smoke);white-space:nowrap}.loading-screen--leaving .splash-title{transform:translate(0) scale(1);transform:translate(var(--flip-x,0),var(--flip-y,0)) scale(var(--flip-s,1))}html:not([data-handoff]) .loading-screen--leaving .splash-title,html[data-handoff] .landing h1{opacity:0}@keyframes splash-in{0%{opacity:0;transform:translateY(8px)}}html[data-splash=in] .landing-subtitle,html[data-splash=in] .nav{opacity:0}html[data-splash=out] .landing-subtitle{animation:reveal-rise .5s cubic-bezier(.4,0,.2,1) .24s backwards;animation:reveal-rise .5s var(--ease-smoke) .24s backwards}html[data-splash=out] .nav{animation:reveal-fade .5s cubic-bezier(.4,0,.2,1) .32s backwards;animation:reveal-fade .5s var(--ease-smoke) .32s backwards}@keyframes reveal-rise{0%{opacity:0;transform:translateY(6px)}}@keyframes reveal-fade{0%{opacity:0}}.nav-links{display:flex;gap:28px;left:50%;list-style:none;margin:0;padding:24px 32px;position:fixed;top:0;transform:translateX(-50%);transition:opacity .45s cubic-bezier(.4,0,.2,1),transform .45s cubic-bezier(.4,0,.2,1);transition:opacity .45s var(--ease-smoke),transform .45s var(--ease-smoke);z-index:100}.nav-links a{color:#e8e6e19e;color:var(--text-muted);font-size:.75rem;font-size:var(--fs-xs);font-weight:500;letter-spacing:.18em;text-decoration:none;text-transform:uppercase;transition:color .3s cubic-bezier(.4,0,.2,1);transition:color .3s var(--ease-smoke)}.nav-links a:hover{color:#e8e6e1;color:var(--text)}.nav--burger .nav-links{opacity:0;pointer-events:none;transform:translate(-50%,-10px)}.nav-burger-btn{align-items:center;background:#0000;border:none;cursor:pointer;display:flex;flex-direction:column;gap:5px;height:44px;justify-content:center;position:fixed;right:22px;top:18px;transition:opacity .45s cubic-bezier(.4,0,.2,1);transition:opacity .45s var(--ease-smoke);width:44px;z-index:220}.nav-burger-btn span{background:#e8e6e1;background:var(--text);display:block;height:2px;transition:transform .35s cubic-bezier(.4,0,.2,1),opacity .35s ease,background-color 1.2s cubic-bezier(.4,0,.2,1);transition:transform .35s var(--ease-smoke),opacity .35s ease,background-color 1.2s var(--ease-smoke);width:22px}.nav--center .nav-burger-btn{opacity:0;pointer-events:none}.nav--open .nav-burger-btn{opacity:1;pointer-events:auto}.nav--open .nav-burger-btn span:first-child{transform:translateY(7px) rotate(45deg)}.nav--open .nav-burger-btn span:nth-child(2){opacity:0}.nav--open .nav-burger-btn span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}.nav-overlay{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#0d0d0da6;background:rgba(var(--bg-rgb),.65);inset:0;opacity:0;overscroll-behavior:contain;pointer-events:none;position:fixed;touch-action:none;transition:opacity .4s cubic-bezier(.4,0,.2,1);transition:opacity .4s var(--ease-smoke);z-index:200}.nav--open .nav-overlay{opacity:1;pointer-events:auto}.nav-drawer{align-items:center;background:#0d0d0d;background:var(--bg);border-left:1px solid #e8e6e129;border-left:1px solid var(--border);bottom:0;box-sizing:border-box;display:flex;padding:0 3rem;position:fixed;right:0;top:0;transform:translateX(100%);transition:transform .45s cubic-bezier(.4,0,.2,1),background-color 1.2s cubic-bezier(.4,0,.2,1);transition:transform .45s var(--ease-smoke),background-color 1.2s var(--ease-smoke);width:min(320px,80vw);z-index:210}.nav--open .nav-drawer{box-shadow:0 24px 60px #00000052;box-shadow:var(--shadow-2);transform:translateX(0)}.nav-drawer ul{display:flex;flex-direction:column;gap:2rem;list-style:none;margin:0;padding:0}.nav-drawer a{color:#e8e6e19e;color:var(--text-muted);font-size:1rem;font-size:var(--fs-base);font-weight:500;letter-spacing:.25em;text-decoration:none;text-transform:uppercase;transition:color .3s cubic-bezier(.4,0,.2,1);transition:color .3s var(--ease-smoke)}.nav-drawer a:hover{color:#e8e6e1;color:var(--accent)}.landing{padding:0}.landing .landing-content{position:relative;text-align:center;z-index:2}.landing h1{font-size:clamp(2.2rem,6.5vw,5rem);font-size:var(--fs-h1);font-weight:800;letter-spacing:-.04em;line-height:.95;margin:0;text-transform:uppercase}.landing .landing-subtitle{color:#e8e6e19e;color:var(--text-muted);font-size:clamp(.75rem,1.4vw,1rem);font-size:clamp(var(--fs-xs),1.4vw,var(--fs-base));font-weight:300;font-weight:var(--weight-body);letter-spacing:.38em;margin-top:1.5rem;margin-top:var(--space-md);text-transform:uppercase}.projects{border-top:1px solid #e8e6e112;border-top:1px solid rgba(var(--text-rgb),.07)}.projects>:not(.projects-calendar-bg){position:relative;z-index:1}.project-filters{display:flex;flex-wrap:wrap;gap:.5rem;justify-content:center;margin-bottom:4rem;margin-bottom:var(--space-3xl)}.filter-btn{background:#0000;border:1px solid rgba(232,230,225,.3);border:1px solid var(--border-strong);border-radius:999px;color:#e8e6e19e;color:var(--text-muted);cursor:pointer;font-family:inherit;font-size:.7rem;font-size:var(--fs-micro);font-weight:500;letter-spacing:.2em;padding:.6rem 1.4rem;text-transform:uppercase;transition:color .35s cubic-bezier(.4,0,.2,1),border-color .35s cubic-bezier(.4,0,.2,1),background-color .35s cubic-bezier(.4,0,.2,1);transition:color .35s var(--ease-smoke),border-color .35s var(--ease-smoke),background-color .35s var(--ease-smoke)}.filter-btn:hover{border-color:#fff;border-color:var(--accent-strong);color:#fff;color:var(--accent-strong)}.filter-btn.selected{background:#e8e6e1;background:var(--text);border-color:#e8e6e1;border-color:var(--text);color:#0d0d0d;color:var(--bg)}.project-scroller{max-width:1100px;position:relative;width:100%}.project-grid{-webkit-overflow-scrolling:touch;-ms-overflow-style:none;align-items:stretch;display:flex;gap:2rem;margin:-1.5rem 0;-webkit-mask-image:linear-gradient(90deg,#000 92%,#0000);mask-image:linear-gradient(90deg,#000 92%,#0000);overflow-x:auto;overscroll-behavior-x:contain;padding:2.5rem .5rem;scroll-behavior:smooth;scroll-snap-type:x proximity;scrollbar-width:none}.project-grid::-webkit-scrollbar{display:none}@media (min-width:900px){.project-card{flex-basis:calc(33.33333% - 1.33333rem)}}.project-card{background:#e8e6e10d;background:rgba(var(--text-rgb),.05);border:1px solid #e8e6e129;border:1px solid var(--border);border-radius:14px;border-radius:var(--radius-m);box-sizing:border-box;color:#e8e6e1;color:var(--card-text);cursor:pointer;display:flex;flex:0 0 300px;flex-direction:column;justify-content:flex-end;min-height:420px;overflow:hidden;padding:1.75rem;position:relative;scroll-snap-align:start;text-decoration:none;transition:transform .5s cubic-bezier(.4,0,.2,1),box-shadow .5s cubic-bezier(.4,0,.2,1),border-color .5s cubic-bezier(.4,0,.2,1);transition:transform .5s var(--ease-smoke),box-shadow .5s var(--ease-smoke),border-color .5s var(--ease-smoke)}.project-card:focus-visible,.project-card:hover{border-color:rgba(232,230,225,.3);border-color:var(--border-strong);box-shadow:0 10px 30px #0003;box-shadow:var(--shadow-1);transform:translateY(-6px);z-index:3}.project-card .card-art{inset:0;opacity:.9;position:absolute;transition:opacity .6s cubic-bezier(.4,0,.2,1);transition:opacity .6s var(--ease-smoke)}.project-card:focus-visible .card-art,.project-card:hover .card-art{opacity:1}.project-card .card-body{position:relative;z-index:1}.project-card .card-category{color:#e8e6e1;color:var(--accent);font-size:.65rem;font-size:var(--fs-nano);font-weight:600;letter-spacing:.3em;margin:0 0 .5rem;margin:0 0 var(--space-2xs);text-transform:uppercase}.project-card h3{font-size:1.6rem;font-size:var(--fs-lg);font-weight:700;letter-spacing:-.02em;margin:0 0 .5rem;margin:0 0 var(--space-2xs)}.project-card h3:after{content:"\2192";display:inline-block;font-weight:300;margin-left:.5rem;opacity:0;transform:translateX(-8px);transition:opacity .4s cubic-bezier(.4,0,.2,1),transform .4s cubic-bezier(.4,0,.2,1);transition:opacity .4s var(--ease-smoke),transform .4s var(--ease-smoke)}.project-card:focus-visible h3:after,.project-card:hover h3:after{opacity:.7;transform:translateX(0)}.project-card .card-desc{color:#e8e6e19e;color:var(--text-muted);font-size:.85rem;font-size:var(--fs-sm);font-weight:300;font-weight:var(--weight-body);line-height:1.5;margin:0}.projects-calendar-bg{align-items:center;display:flex;inset:0;justify-content:center;-webkit-mask-image:radial-gradient(ellipse 90% 85% at 50% 50%,#000 20%,#0000 92%);mask-image:radial-gradient(ellipse 90% 85% at 50% 50%,#000 20%,#0000 92%);opacity:.55;overflow:hidden;pointer-events:none;position:absolute;z-index:0}.projects-calendar-bg .calendar-field{display:flex;flex-direction:column;flex-shrink:0;transform:rotate(-8deg) scale(1.9);width:-webkit-max-content;width:max-content}.projects-calendar-bg .calendar{background:#0000;border:none;font-family:inherit;max-width:none!important;padding:0;width:auto!important}.projects-calendar-bg .calendar table,.projects-calendar-bg .calendar tbody{display:block!important;width:auto!important}.projects-calendar-bg .calendar tr{display:flex!important;gap:5px;margin-bottom:5px}.projects-calendar-bg .calendar td[data-level]{border-radius:3px;display:block!important;flex:0 0 12px;height:12px!important;padding:0!important;width:12px!important}.projects-calendar-bg .calendar .ContributionCalendar-label,.projects-calendar-bg .calendar .contrib-column,.projects-calendar-bg .calendar .contrib-footer,.projects-calendar-bg .calendar .show-on-focus,.projects-calendar-bg .calendar .sr-only,.projects-calendar-bg .calendar .width-full.f6,.projects-calendar-bg .calendar text,.projects-calendar-bg .calendar tool-tip{display:none!important}.projects-calendar-bg .calendar div{overflow:hidden!important;scrollbar-width:none}.projects-calendar-bg .calendar div::-webkit-scrollbar{display:none}.projects-calendar-bg .calendar [data-level]{transition:background-color 1.2s cubic-bezier(.4,0,.2,1);transition:background-color 1.2s var(--ease-smoke)}.projects-calendar-bg .calendar [data-level="0"]{background-color:#e8e6e112!important;background-color:rgba(var(--text-rgb),.07)!important}.projects-calendar-bg .calendar [data-level="1"]{background-color:#e8e6e133!important;background-color:rgba(var(--text-rgb),.2)!important}.projects-calendar-bg .calendar [data-level="2"]{background-color:#e8e6e152!important;background-color:rgba(var(--text-rgb),.32)!important}.projects-calendar-bg .calendar [data-level="3"]{background-color:#e8e6e173!important;background-color:rgba(var(--text-rgb),.45)!important}.projects-calendar-bg .calendar [data-level="4"]{background-color:#e8e6e199!important;background-color:rgba(var(--accent-rgb),.6)!important}.projects .github-activity{margin:3rem 0 0;margin:var(--space-2xl) 0 0}.projects .github-activity a{border-bottom:1px solid rgba(232,230,225,.3);border-bottom:1px solid var(--border-strong);color:#e8e6e19e;color:var(--text-muted);font-size:.75rem;font-size:var(--fs-xs);font-weight:500;letter-spacing:.22em;padding-bottom:2px;text-decoration:none;text-transform:uppercase;transition:color .3s cubic-bezier(.4,0,.2,1),border-color .3s cubic-bezier(.4,0,.2,1);transition:color .3s var(--ease-smoke),border-color .3s var(--ease-smoke)}.projects .github-activity a:hover{border-color:#e8e6e1;border-color:var(--text);color:#e8e6e1;color:var(--text)}.education{border-top:1px solid #e8e6e112;border-top:1px solid rgba(var(--text-rgb),.07)}.education .education-inner{width:min(900px,92vw)}.education h2{font-size:clamp(2rem,5vw,3.5rem);font-size:var(--fs-h2);font-weight:800;letter-spacing:-.03em;line-height:1;margin:0 0 2.5rem;margin:0 0 var(--space-xl);text-transform:uppercase}.education-list{width:100%}.education-entry{align-items:baseline;border-top:1px solid #e8e6e11f;border-top:1px solid rgba(var(--text-rgb),.12);display:flex;gap:2rem;justify-content:space-between;padding:1.75rem 0;transition:transform .3s ease}.education-entry:last-child{border-bottom:1px solid #e8e6e11f;border-bottom:1px solid rgba(var(--text-rgb),.12)}.education-entry:hover{transform:translateX(6px)}.education-entry .edu-school{font-size:1.25rem;font-size:var(--fs-md);font-weight:600;letter-spacing:-.01em;margin:0 0 .35rem}.education-entry .edu-note{color:#e8e6e19e;color:var(--text-muted);font-size:.85rem;font-size:var(--fs-sm);font-weight:300;font-weight:var(--weight-body);margin:0}.education-entry .edu-years{color:#e8e6e16b;color:var(--text-faint);font-size:.75rem;font-size:var(--fs-xs);font-weight:500;letter-spacing:.15em;transition:color .3s cubic-bezier(.4,0,.2,1);transition:color .3s var(--ease-smoke);white-space:nowrap}.education-entry:hover .edu-years{color:#e8e6e19e;color:var(--text-muted)}.edu-grid{grid-gap:3rem;grid-gap:var(--space-2xl);display:grid;gap:3rem;gap:var(--space-2xl);grid-template-columns:1.4fr 1fr;margin-top:3rem;margin-top:var(--space-2xl)}.edu-subhead{color:#e8e6e16b;color:var(--text-faint);font-size:.65rem;font-size:var(--fs-nano);font-weight:600;letter-spacing:.3em;margin:0 0 1rem;margin:0 0 var(--space-sm);text-transform:uppercase}.edu-skill-group{margin-bottom:1.5rem;margin-bottom:var(--space-md)}.edu-group-label{color:#e8e6e19e;color:var(--text-muted);font-size:.75rem;font-size:var(--fs-xs);font-weight:500;letter-spacing:.04em;margin:0 0 .75rem;margin:0 0 var(--space-xs)}.edu-skill-group:last-child{margin-bottom:0}.edu-chips{display:flex;flex-wrap:wrap;gap:.5rem}.chip{background:#e8e6e10a;background:rgba(var(--text-rgb),.04);border:1px solid #e8e6e129;border:1px solid var(--border);border-radius:999px;color:#e8e6e19e;color:var(--text-muted);font-size:.7rem;font-size:var(--fs-micro);font-weight:400;letter-spacing:.08em;padding:.45rem .9rem;transition:border-color .3s cubic-bezier(.4,0,.2,1),color .3s cubic-bezier(.4,0,.2,1);transition:border-color .3s var(--ease-smoke),color .3s var(--ease-smoke)}.chip:hover{border-color:#e8e6e1;border-color:var(--accent);color:#e8e6e1;color:var(--accent)}.edu-lang-row{align-items:baseline;border-top:1px solid #e8e6e11f;border-top:1px solid rgba(var(--text-rgb),.12);display:flex;gap:2rem;gap:var(--space-lg);justify-content:space-between;padding:1rem 0;padding:var(--space-sm) 0}.edu-lang-row:last-child{border-bottom:1px solid #e8e6e11f;border-bottom:1px solid rgba(var(--text-rgb),.12)}.edu-lang-row .edu-lang{font-size:1rem;font-size:var(--fs-base);font-weight:500;margin:0}.edu-lang-row .edu-lang-level{color:#e8e6e16b;color:var(--text-faint);font-size:.7rem;font-size:var(--fs-micro);font-weight:500;letter-spacing:.18em;text-transform:uppercase;white-space:nowrap}.contact{border-top:1px solid #e8e6e112;border-top:1px solid rgba(var(--text-rgb),.07)}.contact .contact-inner{align-items:center;display:flex;flex-direction:column;justify-content:center;text-align:center}.contact h2{font-size:clamp(2rem,5vw,3.5rem);font-size:var(--fs-h2);font-weight:800;letter-spacing:-.03em;line-height:1;margin:0 0 2rem;margin:0 0 var(--space-lg);text-transform:uppercase}.contact .contact-links{align-items:center;display:flex;flex-direction:column;gap:1.1rem}.contact .contact-links a{color:#e8e6e19e;color:var(--text-muted);font-size:.85rem;font-size:var(--fs-sm);font-weight:400;letter-spacing:.2em;text-decoration:none;text-transform:uppercase;transition:color .3s cubic-bezier(.4,0,.2,1),transform .3s cubic-bezier(.4,0,.2,1);transition:color .3s var(--ease-smoke),transform .3s var(--ease-smoke);width:-webkit-fit-content;width:fit-content}.contact .contact-links a:hover{color:#e8e6e1;color:var(--accent);transform:translateX(6px)}.contact .contact-location{color:#e8e6e16b;color:var(--text-faint);font-size:.75rem;font-size:var(--fs-xs);font-weight:400;letter-spacing:.2em;margin:1.75rem 0 0;text-transform:uppercase}.project-page{background:#0d0d0d;background:var(--bg);box-sizing:border-box;color:#e8e6e1;color:var(--text);font-family:Inter,sans-serif;min-height:100vh;min-height:100svh;padding:7rem 2rem 5rem;transition:background-color 1.2s cubic-bezier(.4,0,.2,1),color 1.2s cubic-bezier(.4,0,.2,1);transition:background-color 1.2s var(--ease-smoke),color 1.2s var(--ease-smoke)}.project-page .back-btn{background:#0000;border:none;color:#e8e6e19e;color:var(--text-muted);cursor:pointer;font-family:inherit;font-size:.7rem;font-size:var(--fs-micro);font-weight:600;left:2rem;letter-spacing:.25em;position:fixed;text-transform:uppercase;top:1.5rem;transition:color .3s cubic-bezier(.4,0,.2,1);transition:color .3s var(--ease-smoke);z-index:10}.project-page .back-btn:hover{color:#fff;color:var(--accent-strong)}.pp-hero{margin:0 auto 3rem;margin:0 auto var(--space-2xl);max-width:760px}.pp-hero h1{font-size:clamp(2.4rem,6vw,4.5rem);font-size:var(--fs-h1-alt);font-weight:800;letter-spacing:-.03em;line-height:.95;margin:0 0 1rem;margin:0 0 var(--space-sm);text-transform:uppercase}.pp-tagline{color:#e8e6e19e;color:var(--text-muted);font-size:1rem;font-size:var(--fs-base);font-weight:300;font-weight:var(--weight-body);margin:0;max-width:48ch}.pp-badge{border:1px solid rgba(232,230,225,.3);border:1px solid var(--border-strong);border-radius:999px;display:inline-block;font-size:.65rem;font-size:var(--fs-nano);font-weight:600;letter-spacing:.3em;margin-top:1.25rem;padding:.45rem 1rem;text-transform:uppercase}.pp-hero-art{animation:gradient-drift 44s ease-in-out infinite alternate;background-size:180% 180%;border:1px solid #e8e6e129;border:1px solid var(--border);border-radius:14px;border-radius:var(--radius-m);height:clamp(160px,28vh,300px);margin:2.5rem auto 3rem;margin:var(--space-xl) auto var(--space-2xl);max-width:1000px}.pp-meta{grid-gap:3rem;grid-gap:var(--space-2xl);display:grid;gap:3rem;gap:var(--space-2xl);grid-template-columns:1fr 1.3fr;margin:0 auto 4rem;margin:0 auto var(--space-3xl);max-width:760px}.pp-meta h2{color:#e8e6e16b;color:var(--text-faint);font-size:.65rem;font-size:var(--fs-nano);font-weight:600;letter-spacing:.3em;margin:0 0 1rem;margin:0 0 var(--space-sm);text-transform:uppercase}.pp-tech .edu-chips{gap:.5rem}.pp-tech .chip{border-color:rgba(232,230,225,.3);border-color:var(--border-strong)}.pp-tech .chip:hover{border-color:#fff;border-color:var(--accent-strong);color:#fff;color:var(--accent-strong)}.pp-feature-list{list-style:none;margin:0;padding:0}.pp-feature-list li{padding:0 0 1.1rem 1.4rem;position:relative}.pp-feature-list li:last-child{padding-bottom:0}.pp-feature-list li:before{background:#fff;background:var(--accent-strong);content:"";height:7px;left:0;position:absolute;top:.42em;width:7px}.pp-feature-list .pp-feature-title{display:block;font-size:.85rem;font-size:var(--fs-sm);font-weight:500;margin:0 0 .15rem}.pp-feature-list .pp-feature-desc{color:#e8e6e19e;color:var(--text-muted);display:block;font-size:.85rem;font-size:var(--fs-sm);font-weight:300;font-weight:var(--weight-body);line-height:1.5}.pp-body{margin:0 auto 4rem;margin:0 auto var(--space-3xl);max-width:760px}.pp-body p{color:rgba(232,230,225,.78);color:rgba(var(--text-rgb),calc(var(--a-muted) + .16));font-size:1rem;font-size:var(--fs-base);font-weight:300;font-weight:var(--weight-body);line-height:1.7;margin:0 0 1rem;margin:0 0 var(--space-sm)}.pp-gallery{grid-gap:1.5rem;grid-gap:var(--space-md);align-items:start;display:grid;gap:1.5rem;gap:var(--space-md);grid-template-columns:repeat(2,1fr);margin:0 auto 4rem;margin:0 auto var(--space-3xl);max-width:1000px}.pp-frame{align-items:center;background:repeating-linear-gradient(-45deg,#e8e6e10a 0 1px,#0000 1px 12px),linear-gradient(200deg,#e8e6e114,#e8e6e124);background:repeating-linear-gradient(-45deg,rgba(var(--text-rgb),.04) 0 1px,#0000 1px 12px),linear-gradient(200deg,rgba(var(--text-rgb),.08) 0,rgba(var(--text-rgb),.14) 100%);border:1px solid #e8e6e11f;border:1px solid rgba(var(--text-rgb),.12);border-radius:6px;border-radius:var(--radius-s);display:flex;justify-content:center;margin:0;overflow:hidden;position:relative}.pp-frame--web{aspect-ratio:16/10;grid-column:1/-1}.pp-frame--web:before{background:#e8e6e10f;background:rgba(var(--text-rgb),.06);border-bottom:1px solid #e8e6e114;border-bottom:1px solid rgba(var(--text-rgb),.08);content:"";height:28px;left:0;position:absolute;right:0;top:0}.pp-frame--web:after{background:#e8e6e140;background:rgba(var(--text-rgb),.25);border-radius:50%;box-shadow:12px 0 0 #e8e6e12e,24px 0 0 #e8e6e11f;box-shadow:12px 0 0 rgba(var(--text-rgb),.18),24px 0 0 rgba(var(--text-rgb),.12);content:"";height:6px;left:14px;position:absolute;top:11px;width:6px}.pp-frame--mobile{aspect-ratio:9/19.5;border-radius:28px;justify-self:center;width:min(240px,60vw)}.pp-frame img{display:block;height:100%;object-fit:cover;width:100%}.pp-frame-label{color:#e8e6e16b;color:var(--text-faint);font-size:.65rem;font-size:var(--fs-nano);font-weight:600;letter-spacing:.3em;text-transform:uppercase}.pp-links{align-items:baseline;display:flex;gap:2rem;gap:var(--space-lg);margin:0 auto;max-width:760px}.pp-links a,.pp-private{font-size:.75rem;font-size:var(--fs-xs);font-weight:500;letter-spacing:.22em;text-transform:uppercase}.pp-links a{border-bottom:1px solid rgba(232,230,225,.3);border-bottom:1px solid var(--border-strong);color:#e8e6e19e;color:var(--text-muted);padding-bottom:2px;text-decoration:none;transition:border-color .3s cubic-bezier(.4,0,.2,1),color .3s cubic-bezier(.4,0,.2,1);transition:border-color .3s var(--ease-smoke),color .3s var(--ease-smoke)}.pp-links a:hover{border-color:#fff;border-color:var(--accent-strong);color:#fff;color:var(--accent-strong)}.pp-private{color:#e8e6e16b;color:var(--text-faint)}.styleguide{background:#0d0d0d;background:var(--bg);box-sizing:border-box;color:#e8e6e1;color:var(--text);font-family:Inter,sans-serif;min-height:100vh;min-height:100svh;padding:4rem 2rem 6rem;transition:background-color 1.2s cubic-bezier(.4,0,.2,1),color 1.2s cubic-bezier(.4,0,.2,1);transition:background-color 1.2s var(--ease-smoke),color 1.2s var(--ease-smoke)}.sg-header{margin:0 auto 4rem;max-width:760px}.sg-kicker{color:#e8e6e16b;color:var(--text-faint);font-size:.7rem;font-weight:600;letter-spacing:.3em;margin:0 0 1rem;text-transform:uppercase}.sg-header h1{font-size:clamp(1.8rem,4vw,2.75rem);font-weight:800;letter-spacing:-.02em;margin:0 0 1rem}.sg-intro{color:#e8e6e19e;color:var(--text-muted);font-size:.95rem;font-weight:300;font-weight:var(--weight-body);line-height:1.6;margin:0 0 1.5rem;max-width:620px}.sg-focus-switch{display:flex;flex-wrap:wrap;gap:.6rem}.sg-focus-switch a{border:1px solid rgba(232,230,225,.3);border:1px solid var(--border-strong);border-radius:999px;color:#e8e6e19e;color:var(--text-muted);font-size:.7rem;font-weight:600;letter-spacing:.15em;padding:.45rem 1rem;text-decoration:none;text-transform:uppercase;transition:color .3s cubic-bezier(.4,0,.2,1),border-color .3s cubic-bezier(.4,0,.2,1);transition:color .3s var(--ease-smoke),border-color .3s var(--ease-smoke)}.sg-focus-switch a:hover{border-color:#fff;border-color:var(--accent-strong);color:#fff;color:var(--accent-strong)}.sg-block{margin:0 auto 4rem;max-width:900px}.sg-block-label{color:#e8e6e19e;color:var(--text-muted);font-size:.78rem;font-weight:500;letter-spacing:.04em;margin:0 0 1.25rem;max-width:640px}.sg-swatch-grid{grid-gap:1.5rem;display:grid;gap:1.5rem;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));margin-bottom:2.5rem}.sg-swatch{display:flex;flex-direction:column;gap:.4rem}.sg-swatch-fill{border:1px solid #e8e6e129;border:1px solid var(--border);border-radius:6px;border-radius:var(--radius-s);height:56px}.sg-swatch-fill--radius,.sg-swatch-fill--shadow{background:#e8e6e10f;background:rgba(var(--text-rgb),.06)}.sg-swatch code{color:#e8e6e1;color:var(--text);font-size:.75rem}.sg-swatch span{color:#e8e6e16b;color:var(--text-faint);font-size:.72rem;line-height:1.4}.sg-type-row{border-top:1px solid #e8e6e129;border-top:1px solid var(--border);display:flex;flex-direction:column;gap:.4rem;padding:1.5rem 0}.sg-type-row:first-of-type{border-top:none}.sg-type-row code{color:#e8e6e16b;color:var(--text-faint);font-size:.72rem}.sg-sample{margin:0}.sg-sample--eyebrow{font-size:.7rem;font-weight:600;letter-spacing:.35em;text-transform:uppercase}.sg-sample--hero{font-size:clamp(2.2rem,6.5vw,5rem);letter-spacing:-.04em;line-height:.95}.sg-sample--heading,.sg-sample--hero{font-weight:800;text-transform:uppercase}.sg-sample--heading{font-size:clamp(2rem,5vw,3.5rem);letter-spacing:-.03em;line-height:1}.sg-sample--card-title{font-size:1.6rem;font-weight:700;letter-spacing:-.02em}.sg-sample--body{font-size:1rem;font-weight:300;font-weight:var(--weight-body);line-height:1.6;max-width:560px}.sg-sample--body,.sg-sample--meta{color:#e8e6e19e;color:var(--text-muted)}.sg-sample--meta{font-size:.75rem;font-weight:600;letter-spacing:.15em;text-transform:uppercase}.sg-sample--note{color:#e8e6e19e;color:var(--text-muted);font-size:.85rem;font-weight:300;font-weight:var(--weight-body);line-height:1.5;margin:.5rem 0 0;max-width:320px}.sg-row{align-items:center;display:flex;flex-wrap:wrap;gap:1rem}.sg-row--wrap{gap:2rem;justify-content:space-between}.sg-card-demo{cursor:default}@media (max-width:1024px){.section{padding:5rem 1.5rem 3.5rem}.project-grid{gap:1.5rem}.projects-calendar-bg .calendar-field{transform:rotate(-8deg) scale(1.35)}.education .education-inner{width:92vw}}@media (max-width:720px){.nav-links{display:none}.nav--center .nav-burger-btn{opacity:1;pointer-events:auto}.section{padding:4.5rem 1.25rem 2.5rem}.section-label{margin-bottom:1.75rem}.project-filters{margin-bottom:2rem}.project-card{min-height:380px}.edu-grid{gap:2rem;margin-top:2rem}.edu-grid,.pp-gallery{grid-template-columns:1fr}.pp-frame--mobile{justify-self:start}.pp-meta{gap:2.5rem;grid-template-columns:1fr}}@media (max-width:480px){.project-card{flex-basis:min(78vw,280px);min-height:360px}.landing .landing-subtitle{letter-spacing:.24em}.education-entry{padding:1.25rem 0}.contact h2,.education h2{margin-bottom:1.75rem}.project-page .back-btn{left:1rem}.pp-links{flex-direction:column;gap:1rem}.styleguide{padding:3rem 1.25rem 4rem}.sg-row--wrap{flex-direction:column;gap:1.5rem}}@media (prefers-reduced-motion:reduce){body,html{scroll-behavior:auto}.loading-screen,.nav-burger-btn,.nav-burger-btn span,.nav-drawer,.nav-links,.nav-overlay,.project-page,body,html{transition:none}.splash-title{transition:opacity .35s cubic-bezier(.4,0,.2,1);transition:opacity .35s var(--ease-smoke)}.focus-backdrop .focus-layer,.focus-backdrop .smoke,.focus-backdrop .smoke:after,.focus-backdrop .smoke:before,.landing-subtitle,.nav,.pp-hero-art,.splash-title{animation:none}.focus-backdrop .focus-layer{transition-duration:.5s}.focus-layer--sleep:after{animation:none;opacity:.5}.contact .contact-links a,.education-entry,.project-card,.project-card .card-art{transition:none}.project-card:focus-visible,.project-card:hover{transform:none}}
/*# sourceMappingURL=main.89b17c13.css.map*/