@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{--ink:#0d0d0d;--ink-2:#161616;--paper:#f4f2ee;--accent-050:#f3ead9;--accent-200:#ddc39a;--accent-400:#c09a62;--accent-600:#8f6b3a;--night:#0e1119;--night-2:#1c2233;--radius-s:6px;--radius-m:14px;--shadow-1:0 10px 30px #0d0d0d2e;--shadow-2:0 24px 60px #0d0d0d4d;--ease-smoke:cubic-bezier(0.4,0,0.2,1)}body,html{background:#0d0d0d;background:var(--ink);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}body{-ms-overflow-style:none;scroll-snap-type:y mandatory;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;padding:6rem 2rem 4rem;position:relative;scroll-snap-align:start;scroll-snap-stop:always}.section-label{font-size:.7rem;font-weight:600;letter-spacing:.35em;margin:0 0 2.5rem;opacity:.45;text-transform:uppercase}::selection{background:#ddc39a;background:var(--accent-200);color:#0d0d0d;color:var(--ink)}a:focus-visible,button:focus-visible{border-radius:2px;outline:2px solid #c09a62;outline:2px solid var(--accent-400);outline-offset:3px}:focus:not(:focus-visible){outline:none}nav ul{display:flex;gap:28px;list-style:none;margin:0;mix-blend-mode:difference;padding:24px 32px;position:fixed;right:0;top:0;z-index:100}nav a{color:#fff;font-size:.75rem;font-weight:500;letter-spacing:.18em;opacity:.7;text-decoration:none;text-transform:uppercase;transition:opacity .3s ease}nav a:hover{opacity:1}.landing{background:#0d0d0d;background:var(--ink);color:#f4f2ee;color:var(--paper);overflow:hidden;padding:0}.landing .focus-layer{animation:gradient-drift 44s ease-in-out infinite alternate;background-size:220% 220%;inset:-10%;opacity:0;position:absolute;transition:opacity 2.8s cubic-bezier(.4,0,.2,1);transition:opacity 2.8s var(--ease-smoke);will-change:opacity,background-position}.landing .focus-layer:nth-child(2n){animation-direction:alternate-reverse;animation-duration:58s}.landing .focus-layer.active{opacity:1}@keyframes gradient-drift{0%{background-position:0 0}55%{background-position:60% 100%}to{background-position:100% 40%}}.landing .smoke{border-radius:50%;filter:blur(90px);height:60vmax;mix-blend-mode:soft-light;pointer-events:none;position:absolute;width:60vmax}.landing .smoke-a{animation:drift-a 26s ease-in-out infinite alternate;background:radial-gradient(circle,#f0e2c84d,#0000 65%);left:-15%;top:-20%}.landing .smoke-b{animation:drift-b 34s ease-in-out infinite alternate;background:radial-gradient(circle,#0e111973,#0000 65%);bottom:-25%;right:-15%}@keyframes drift-a{0%{transform:translate(0) scale(1)}to{transform:translate(18vw,12vh) scale(1.25)}}@keyframes drift-b{0%{transform:translate(0) scale(1.15)}to{transform:translate(-14vw,-10vh) scale(.9)}}.landing .landing-content{position:relative;text-align:center;transition:color 2.8s cubic-bezier(.4,0,.2,1);transition:color 2.8s var(--ease-smoke);z-index:2}.landing h1{font-size:clamp(2.2rem,6.5vw,5rem);font-weight:800;letter-spacing:-.04em;line-height:.95;margin:0;text-transform:uppercase}.landing .landing-subtitle{font-size:clamp(.75rem,1.4vw,1rem);font-weight:300;letter-spacing:.38em;margin-top:1.4rem;opacity:.75;text-transform:uppercase}.projects{background:#f4f2ee;background:var(--paper);color:#0d0d0d;color:var(--ink)}.project-filters{display:flex;flex-wrap:wrap;gap:.5rem;justify-content:center;margin-bottom:3.5rem}.filter-btn{background:#0000;border:1px solid #0d0d0d40;border-radius:999px;color:#0d0d0d;color:var(--ink);cursor:pointer;font-family:inherit;font-size:.7rem;font-weight:500;letter-spacing:.2em;padding:.6rem 1.4rem;text-transform:uppercase;transition:all .35s ease}.filter-btn:hover{border-color:#8f6b3a;border-color:var(--accent-600);color:#8f6b3a;color:var(--accent-600)}.filter-btn.selected{background:#0d0d0d;background:var(--ink);border-color:#0d0d0d;border-color:var(--ink);color:#f4f2ee;color:var(--paper)}.project-scroller{max-width:1100px;position:relative;width:100%}.project-scroller:after{background:linear-gradient(90deg,#0000,#f4f2ee);background:linear-gradient(90deg,#0000,var(--paper));bottom:0;content:"";pointer-events:none;position:absolute;right:0;top:0;width:60px}.project-grid{-ms-overflow-style:none;align-items:stretch;display:flex;gap:2rem;margin:-1.5rem 0;overflow-x:auto;padding:2.5rem .5rem;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:#0d0d0d;background:var(--ink);border-radius:14px;border-radius:var(--radius-m);box-shadow:0 10px 30px #0d0d0d2e;box-shadow:var(--shadow-1);box-sizing:border-box;color:#f4f2ee;color:var(--paper);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);transition:transform .5s var(--ease-smoke),box-shadow .5s var(--ease-smoke)}.project-card:focus-visible,.project-card:hover{box-shadow:0 24px 60px #0d0d0d4d;box-shadow:var(--shadow-2);transform:translateY(-6px) scale(1.015);z-index:3}.project-card--placeholder{align-items:center;background:#0000;border:1px dashed #0d0d0d40;box-shadow:none;color:#0d0d0d;color:var(--ink);cursor:default;justify-content:center}.project-card--placeholder:hover{box-shadow:none;transform:none}.card-placeholder-label{font-size:.65rem;font-weight:600;letter-spacing:.3em;opacity:.45;text-transform:uppercase}.project-card .card-art{inset:0;opacity:.92;position:absolute;transition:opacity .6s cubic-bezier(.4,0,.2,1),filter .6s cubic-bezier(.4,0,.2,1);transition:opacity .6s var(--ease-smoke),filter .6s var(--ease-smoke)}.project-card:focus-visible .card-art,.project-card:hover .card-art{filter:brightness(1.08);opacity:1}.project-card .card-index{color:#ddc39a;color:var(--accent-200);font-size:4.5rem;font-weight:200;letter-spacing:-.04em;line-height:1;opacity:.14;position:absolute;right:1.5rem;top:1.25rem}.project-card .card-body{position:relative;z-index:1}.project-card .card-category{font-size:.62rem;font-weight:600;letter-spacing:.3em;margin:0 0 .6rem;opacity:.6;text-transform:uppercase}.project-card h3{font-size:1.6rem;font-weight:700;letter-spacing:-.02em;margin:0 0 .5rem}.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{font-size:.85rem;font-weight:300;line-height:1.5;margin:0;opacity:.7}.projects .github-activity{align-items:flex-end;display:flex;flex-direction:column;margin:3.5rem 0 0;max-width:900px;opacity:.85;overflow:hidden;width:100%}.projects .github-activity a{align-self:center}.projects .github-activity .calendar{background:#0000;border:none;color:#0d0d0d;color:var(--ink);flex-shrink:0;font-family:inherit;max-width:100%;padding:0;width:clamp(700px,90vw,1000px)}.projects .github-activity .calendar .ContributionCalendar-label,.projects .github-activity .calendar .contrib-column,.projects .github-activity .calendar .contrib-footer,.projects .github-activity .calendar .show-on-focus,.projects .github-activity .calendar .sr-only,.projects .github-activity .calendar .width-full.f6,.projects .github-activity .calendar text,.projects .github-activity .calendar tool-tip{display:none!important}.projects .github-activity .calendar div{overflow:hidden!important;scrollbar-width:none}.projects .github-activity .calendar div::-webkit-scrollbar{display:none}.projects .github-activity .calendar [data-level="0"]{background-color:initial!important}.projects .github-activity .calendar [data-level="1"]{background-color:#0d0d0d4d!important}.projects .github-activity .calendar [data-level="2"]{background-color:#0d0d0d80!important}.projects .github-activity .calendar [data-level="3"]{background-color:#0d0d0dbf!important}.projects .github-activity .calendar [data-level="4"]{background-color:#0d0d0d!important}.projects .github-activity a{border-bottom:1px solid #0d0d0d4d;color:#0d0d0d;color:var(--ink);font-size:.75rem;font-weight:500;letter-spacing:.22em;margin-top:1rem;opacity:.6;padding-bottom:2px;text-decoration:none;text-transform:uppercase;transition:opacity .3s ease,border-color .3s ease}.projects .github-activity a:hover{border-color:#0d0d0d;border-color:var(--ink);opacity:1}.education{background:#161616;background:var(--ink-2);border-top:1px solid #f4f2ee14;color:#f4f2ee;color:var(--paper)}.education .education-inner{width:min(900px,92vw)}.education h2{font-size:clamp(2rem,5vw,3.5rem);font-weight:800;letter-spacing:-.03em;line-height:1;margin:0 0 2.5rem;text-transform:uppercase}.education-list{width:100%}.education-entry{align-items:baseline;border-top:1px solid #f4f2ee1f;display:flex;gap:2rem;justify-content:space-between;padding:1.75rem 0;transition:transform .3s ease}.education-entry:last-child{border-bottom:1px solid #f4f2ee1f}.education-entry:hover{transform:translateX(6px)}.education-entry .edu-school{font-size:1.25rem;font-weight:600;letter-spacing:-.01em;margin:0 0 .35rem}.education-entry .edu-note{font-size:.85rem;font-weight:300;margin:0;opacity:.6}.education-entry .edu-years{font-size:.75rem;font-weight:500;letter-spacing:.15em;opacity:.5;transition:opacity .3s ease;white-space:nowrap}.education-entry:hover .edu-years{opacity:.85}.edu-grid{grid-gap:3rem;display:grid;gap:3rem;grid-template-columns:1.4fr 1fr;margin-top:3rem}.edu-subhead{font-size:.65rem;font-weight:600;letter-spacing:.3em;margin:0 0 1rem;opacity:.45;text-transform:uppercase}.edu-skill-group{margin-bottom:1.5rem}.edu-group-label{font-size:.78rem;font-weight:500;letter-spacing:.04em;margin:0 0 .7rem;opacity:.7}.edu-skill-group:last-child{margin-bottom:0}.edu-chips{display:flex;flex-wrap:wrap;gap:.5rem}.chip{border:1px solid #f4f2ee2e;border-radius:999px;font-size:.72rem;font-weight:400;letter-spacing:.08em;padding:.45rem .9rem;transition:border-color .3s ease,color .3s ease}.chip:hover{border-color:#ddc39a;border-color:var(--accent-200);color:#ddc39a;color:var(--accent-200)}.edu-lang-row{align-items:baseline;border-top:1px solid #f4f2ee1f;display:flex;gap:2rem;justify-content:space-between;padding:1rem 0}.edu-lang-row:last-child{border-bottom:1px solid #f4f2ee1f}.edu-lang-row .edu-lang{font-size:.95rem;font-weight:500;margin:0}.edu-lang-row .edu-lang-level{font-size:.7rem;font-weight:500;letter-spacing:.18em;opacity:.5;text-transform:uppercase;white-space:nowrap}.contact{background:#0d0d0d;background:var(--ink);border-top:1px solid #f4f2ee14;color:#f4f2ee;color:var(--paper)}.contact .contact-inner{align-items:center;display:flex;flex-wrap:wrap;gap:clamp(3rem,8vw,7rem);justify-content:center}.contact h2{font-size:clamp(2rem,5vw,3.5rem);font-weight:800;letter-spacing:-.03em;line-height:1;margin:0 0 2rem;text-transform:uppercase}.contact .contact-links{display:flex;flex-direction:column;gap:1.1rem}.contact .contact-links a{color:#f4f2ee;color:var(--paper);font-size:.85rem;font-weight:400;letter-spacing:.2em;opacity:.65;text-decoration:none;text-transform:uppercase;transition:opacity .3s ease,transform .3s ease;width:-webkit-fit-content;width:fit-content}.contact .contact-links a:hover{color:#ddc39a;color:var(--accent-200);opacity:1;transform:translateX(6px)}.contact .contact-location{font-size:.75rem;font-weight:400;letter-spacing:.2em;margin:1.75rem 0 0;opacity:.5;text-transform:uppercase}.contact .map{text-align:center}.contact .map svg{display:block}.contact .map-caption{font-size:.65rem;font-weight:400;letter-spacing:.3em;margin-top:1.25rem;opacity:.45;text-transform:uppercase}.project-page{background:#f4f2ee;background:var(--paper);box-sizing:border-box;color:#0d0d0d;color:var(--ink);font-family:Inter,sans-serif;min-height:100vh;padding:7rem 2rem 5rem}.project-page .back-btn{background:#0000;border:none;color:#0d0d0d;color:var(--ink);cursor:pointer;font-family:inherit;font-size:.7rem;font-weight:600;left:2rem;letter-spacing:.25em;opacity:.55;position:fixed;text-transform:uppercase;top:1.5rem;transition:opacity .3s ease;z-index:10}.project-page .back-btn:hover{color:#8f6b3a;color:var(--accent-600);opacity:1}.pp-hero{margin:0 auto 3rem;max-width:760px}.pp-hero h1{font-size:clamp(2.4rem,6vw,4.5rem);font-weight:800;letter-spacing:-.03em;line-height:.95;margin:0 0 1rem;text-transform:uppercase}.pp-tagline{font-size:1.05rem;font-weight:300;margin:0;max-width:48ch;opacity:.7}.pp-badge{border:1px solid #0d0d0d4d;border-radius:999px;display:inline-block;font-size:.62rem;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-radius:14px;border-radius:var(--radius-m);height:clamp(160px,28vh,300px);margin:2.5rem auto 3rem;max-width:1000px}.pp-meta{grid-gap:3rem;display:grid;gap:3rem;grid-template-columns:1fr 1.3fr;margin:0 auto 4rem;max-width:760px}.pp-meta h2{font-size:.65rem;font-weight:600;letter-spacing:.3em;margin:0 0 1rem;opacity:.45;text-transform:uppercase}.pp-tech .edu-chips{gap:.5rem}.pp-tech .chip{border-color:#0d0d0d33}.pp-tech .chip:hover{border-color:#8f6b3a;border-color:var(--accent-600);color:#8f6b3a;color:var(--accent-600)}.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:#c09a62;background:var(--accent-400);content:"";height:7px;left:0;position:absolute;top:.42em;width:7px}.pp-feature-list .pp-feature-title{display:block;font-size:.9rem;font-weight:500;margin:0 0 .15rem}.pp-feature-list .pp-feature-desc{display:block;font-size:.85rem;font-weight:300;line-height:1.5;opacity:.65}.pp-body{margin:0 auto 4rem;max-width:760px}.pp-body p{font-size:.95rem;font-weight:300;line-height:1.7;margin:0 0 1rem;opacity:.8}.pp-gallery{grid-gap:1.5rem;align-items:start;display:grid;gap:1.5rem;grid-template-columns:repeat(2,1fr);margin:0 auto 4rem;max-width:1000px}.pp-frame{align-items:center;background:repeating-linear-gradient(-45deg,#0d0d0d08 0 1px,#0000 1px 12px),linear-gradient(200deg,#e9e6e0,#d9d5cd);border:1px solid #0d0d0d1f;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:#0d0d0d0f;border-bottom:1px solid #0d0d0d14;content:"";height:28px;left:0;position:absolute;right:0;top:0}.pp-frame--web:after{background:#0d0d0d40;border-radius:50%;box-shadow:12px 0 0 #0d0d0d2e,24px 0 0 #0d0d0d1f;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{font-size:.62rem;font-weight:600;letter-spacing:.3em;opacity:.4;text-transform:uppercase}.pp-links{align-items:baseline;display:flex;gap:2rem;margin:0 auto;max-width:760px}.pp-links a,.pp-private{font-size:.75rem;font-weight:500;letter-spacing:.22em;text-transform:uppercase}.pp-links a{border-bottom:1px solid #0d0d0d59;color:#0d0d0d;color:var(--ink);padding-bottom:2px;text-decoration:none;transition:border-color .3s ease}.pp-links a:hover{border-color:#8f6b3a;border-color:var(--accent-600);color:#8f6b3a;color:var(--accent-600)}.pp-private{opacity:.45}@media (max-width:1024px){.section{padding:5rem 1.5rem 3.5rem}.project-grid{gap:1.5rem}.education .education-inner{width:92vw}}@media (max-width:720px){.contact .contact-inner,.edu-grid{gap:2.5rem}.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}.project-page .back-btn{left:1rem}.pp-links{flex-direction:column;gap:1rem}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.landing .focus-layer,.landing .smoke,.pp-hero-art{animation:none}.landing .focus-layer{transition-duration:.5s}.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.761c48a5.css.map*/