@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-cyrillic-ext-wght-normal-X_5orZeX.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-cyrillic-wght-normal-DiZS0aHC.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-symbols2-wght-normal-CO5SzqOn.woff2)format("woff2-variations");unicode-range:U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F}@font-face{font-family:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-vietnamese-wght-normal-DadHysG0.woff2)format("woff2-variations");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:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-latin-ext-wght-normal-Bwz-egvJ.woff2)format("woff2-variations");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:Geist Mono Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/geist-mono-latin-wght-normal-XN7g48iV.woff2)format("woff2-variations");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:Switzer Fallback;src:local(Arial);size-adjust:100.27%;ascent-override:97.74%;descent-override:24.93%;line-gap-override:8.98%}@font-face{font-family:Geist Mono Fallback;src:local(Courier New);size-adjust:99.98%;ascent-override:100.52%;descent-override:29.5%;line-gap-override:0.0%}@font-face{font-family:PolySans;src:url(/fonts/polysans/polysans-300.woff2)format("woff2");font-weight:300;font-style:normal;font-display:swap;unicode-range:U20, U2C, U2\65 -U3A, U41-U5A, U61-U7A}@font-face{font-family:PolySans;src:url(/fonts/polysans/polysans-400.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap;unicode-range:U20, U2C, U2\65 -U3A, U41-U5A, U61-U7A}@font-face{font-family:PolySans;src:url(/fonts/polysans/polysans-500.woff2)format("woff2");font-weight:500;font-style:normal;font-display:swap;unicode-range:U20, U2C, U2\65 -U3A, U41-U5A, U61-U7A}@font-face{font-family:PolySans;src:url(/fonts/polysans/polysans-700.woff2)format("woff2");font-weight:700;font-style:normal;font-display:swap;unicode-range:U20, U2C, U2\65 -U3A, U41-U5A, U61-U7A}@font-face{font-family:PolySans Mono;src:url(/fonts/polysans/polysans-mono-400.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap;unicode-range:U20, U2C, U2\65 -U3A, U41-U5A, U61-U7A}@font-face{font-family:PolySans Mono;src:url(/fonts/polysans/polysans-mono-500.woff2)format("woff2");font-weight:500;font-style:normal;font-display:swap;unicode-range:U20, U2C, U2\65 -U3A, U41-U5A, U61-U7A}@font-face{font-family:Switzer;src:url(/fonts/switzer/switzer-300.woff2)format("woff2");font-weight:300;font-style:normal;font-display:swap}@font-face{font-family:Switzer;src:url(/fonts/switzer/switzer-400.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Switzer;src:url(/fonts/switzer/switzer-500.woff2)format("woff2");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:Switzer;src:url(/fonts/switzer/switzer-600.woff2)format("woff2");font-weight:600;font-style:normal;font-display:swap}@font-face{font-family:Switzer;src:url(/fonts/switzer/switzer-700.woff2)format("woff2");font-weight:700;font-style:normal;font-display:swap}:root{--bg:#eff7ff;--fg:#100b00;--muted:#656839;--accent:#22577a;--surface-inverse:#2e1505;--accent-light:#88a7bc;--surface:#e3eef9;--border:#100b001f;--border-strong:#100b003d;--focus:#22577a;--font-display:"PolySans", "Switzer", var(--font-sans-fallback);--font-body:"PolySans", "Switzer", var(--font-sans-fallback);--font-mono:"PolySans Mono", "Geist Mono Variable", "Geist Mono", var(--font-mono-fallback);--font-sans-fallback:"Switzer Fallback", system-ui, sans-serif;--font-mono-fallback:"Geist Mono Fallback", ui-monospace, monospace;--t-hero-size:104px;--t-hero-lh:1.05;--t-hero-track:-.03em;--t-section-size:60px;--t-section-lh:1.15;--t-section-track:-.02em;--t-project-size:34px;--t-project-lh:1.2;--t-project-track:-.02em;--t-lead-size:24px;--t-lead-lh:1.5;--t-lead-track:-.01em;--t-body-size:19px;--t-body-lh:1.6;--t-body-track:-.01em;--t-caption-size:15px;--t-caption-lh:1.5;--t-caption-track:0;--t-mono-label-size:13px;--t-mono-label-lh:1;--t-mono-label-track:.08em;--t-mono-tag-size:13px;--t-mono-tag-lh:1;--t-mono-tag-track:.04em;--t-mono-number-size:15px;--t-mono-number-lh:1;--t-mono-number-track:.04em;--t-fine-size:13px;--t-fine-lh:1.5;--t-fine-track:0;--w-light:300;--w-regular:400;--w-medium:500;--w-semi:600;--w-bold:700;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-6:24px;--space-8:32px;--space-12:48px;--space-16:64px;--space-24:96px;--container:1360px;--gutter:24px;--measure:760px;--section-y:var(--space-24);--nav-h:56px;--r-none:0;--r-sm:4px;--r-md:12px;--r-pill:9999px;--shadow-image:0 4px 24px #100b001a;--ease:cubic-bezier(.16, 1, .3, 1);--dur-fast:.2s;--dur-mid:.6s;--dur-slow:.9s;--stagger-step:70ms;--stagger-max:.4s}@media (width<=1024px){:root{--t-hero-size:68px;--t-section-size:44px;--t-project-size:28px;--section-y:var(--space-16)}}@media (width<=640px){:root{--t-hero-size:42px;--t-section-size:32px;--t-project-size:24px;--t-lead-size:20px;--t-body-size:17px;--section-y:var(--space-12);--gutter:20px}}*,:before,:after{box-sizing:border-box}*{margin:0}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}body{background:var(--bg);color:var(--fg);font-family:var(--font-body);font-size:var(--t-body-size);font-weight:var(--w-regular);line-height:var(--t-body-lh);letter-spacing:var(--t-body-track);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;overflow-x:clip}img,picture,svg,video{max-width:100%;display:block}img,video{height:auto}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer;background:0 0;border:none}a{color:var(--accent);text-decoration:none}ul,ol{padding:0;list-style:none}:focus-visible{outline:2px solid var(--focus);outline-offset:2px;border-radius:var(--r-sm)}.container{width:100%;max-width:calc(var(--container) + var(--gutter) * 2);padding-inline:var(--gutter);margin-inline:auto}.prose{max-width:var(--measure)}.section{padding-block:var(--section-y);scroll-margin-top:calc(var(--nav-h) + var(--space-4))}.section--bg{background:var(--bg)}.section--surface{background:var(--surface)}.stack-6>*+*{margin-top:var(--space-6)}.stack-4>*+*{margin-top:var(--space-4)}.stack-3>*+*{margin-top:var(--space-3)}.visually-hidden{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.t-hero{font-family:var(--font-display);font-size:var(--t-hero-size);font-weight:var(--w-medium);line-height:var(--t-hero-lh);letter-spacing:var(--t-hero-track)}.t-section{font-family:var(--font-display);font-size:var(--t-section-size);font-weight:var(--w-medium);line-height:var(--t-section-lh);letter-spacing:var(--t-section-track);text-wrap:balance}.t-project{font-family:var(--font-display);font-size:var(--t-project-size);font-weight:var(--w-medium);line-height:var(--t-project-lh);letter-spacing:var(--t-project-track);text-wrap:balance}.t-lead{font-family:var(--font-body);font-size:var(--t-lead-size);font-weight:var(--w-regular);line-height:var(--t-lead-lh);letter-spacing:var(--t-lead-track)}.t-body{font-family:var(--font-body);font-size:var(--t-body-size);font-weight:var(--w-regular);line-height:var(--t-body-lh);letter-spacing:var(--t-body-track)}.t-body-strong{font-family:var(--font-body);font-size:var(--t-body-size);font-weight:var(--w-medium);line-height:var(--t-body-lh);letter-spacing:var(--t-body-track)}.t-caption{font-family:var(--font-body);font-size:var(--t-caption-size);font-weight:var(--w-regular);line-height:var(--t-caption-lh);letter-spacing:var(--t-caption-track)}.t-mono-label{font-family:var(--font-mono);font-size:var(--t-mono-label-size);font-weight:var(--w-regular);line-height:var(--t-mono-label-lh);letter-spacing:var(--t-mono-label-track);text-transform:uppercase}.t-mono-tag{font-family:var(--font-mono);font-size:var(--t-mono-tag-size);font-weight:var(--w-regular);line-height:var(--t-mono-tag-lh);letter-spacing:var(--t-mono-tag-track)}.t-mono-number{font-family:var(--font-mono);font-size:var(--t-mono-number-size);font-weight:var(--w-regular);line-height:var(--t-mono-number-lh);letter-spacing:var(--t-mono-number-track);font-variant-numeric:tabular-nums}.t-fine{font-family:var(--font-body);font-size:var(--t-fine-size);font-weight:var(--w-regular);line-height:var(--t-fine-lh);letter-spacing:var(--t-fine-track)}.u-muted{color:var(--muted)}.u-accent{color:var(--accent)}#preloader{z-index:9999;background:var(--surface-inverse);padding:var(--space-8);transition-property:transform;transition-duration:var(--dur-mid);transition-timing-function:var(--ease);will-change:transform;flex-direction:column;justify-content:space-between;display:none;position:fixed;inset:0}.preloader__mark{font-family:var(--font-display);font-size:var(--t-project-size);font-weight:var(--w-medium);line-height:var(--t-project-lh);letter-spacing:var(--t-project-track);color:var(--bg)}#preloader-count{font-family:var(--font-mono);font-size:clamp(48px,12vw,96px);font-weight:var(--w-regular);color:var(--accent-light);font-variant-numeric:tabular-nums;align-self:flex-end;line-height:1}#preloader-bar{background:var(--accent-light);transform-origin:0;width:100%;height:1px;position:absolute;bottom:0;left:0;transform:scaleX(0)}.hero__bg,.hero__inner{transition-property:transform,opacity;transition-duration:var(--dur-slow);transition-timing-function:var(--ease);transform:scale(1.04)}.is-revealing .hero__bg,.is-revealing .hero__inner{transform:scale(1)}@media (prefers-reduced-motion:reduce){#preloader{display:none}.hero__bg,.hero__inner,.is-revealing .hero__bg,.is-revealing .hero__inner{transition:none;transform:none}}.skip-link{top:var(--space-2);left:var(--space-2);z-index:100;padding:var(--space-3) var(--space-4);background:var(--accent);color:var(--bg);border-radius:var(--r-pill);transition-property:transform;transition-duration:var(--dur-fast);transition-timing-function:var(--ease);position:absolute;transform:translateY(-200%)}.skip-link:focus-visible{transform:none}.nav{z-index:50;height:var(--nav-h);background:color-mix(in srgb, var(--bg) 85%, transparent);-webkit-backdrop-filter:blur(12px)saturate(180%);transition-property:border-color;transition-duration:var(--dur-fast);transition-timing-function:var(--ease);border-bottom:1px solid #0000;position:sticky;top:0}.nav.is-scrolled{border-bottom-color:var(--border)}.nav__inner{justify-content:space-between;align-items:center;gap:var(--space-6);height:100%;display:flex}.nav__mark{color:var(--fg);white-space:nowrap}.nav__links{align-items:center;gap:var(--space-2);margin:0;display:flex}.nav__link{min-height:44px;padding-inline:var(--space-3);color:var(--muted);border-radius:var(--r-sm);transition-property:color;transition-duration:var(--dur-fast);transition-timing-function:var(--ease);align-items:center;display:flex}.nav__link:hover,.nav__link[aria-current=true]{color:var(--accent)}@media (width<=720px){.nav__links>li:not(:last-child){display:none}}.has-custom-cursor,.has-custom-cursor a,.has-custom-cursor button,.has-custom-cursor [role=button]{cursor:none}.cursor-dot,.cursor-ring{pointer-events:none;will-change:transform;z-index:9999;width:0;height:0;position:fixed;top:0;left:0}.cursor-dot__inner,.cursor-ring__inner{border-radius:var(--r-pill);will-change:transform;transition-property:background-color,border-color;transition-duration:var(--dur-fast);transition-timing-function:var(--ease);position:absolute;top:0;left:0}.cursor-dot__inner{background:var(--accent);width:8px;height:8px;margin:-4px 0 0 -4px}.cursor-ring__inner{border:1px solid var(--accent);width:32px;height:32px;margin:-16px 0 0 -16px}.is-inverse .cursor-dot__inner{background:var(--accent-light)}.is-inverse .cursor-ring__inner{border-color:var(--accent-light)}@media (prefers-reduced-motion:reduce){.cursor-dot,.cursor-ring{display:none}}.hero{min-height:100svh;padding-top:var(--nav-h);flex-direction:column;justify-content:center;align-items:center;display:flex;position:relative;overflow:hidden}.hero__bg{z-index:0;background:var(--surface);position:absolute;inset:0;overflow:hidden}.hero__bg-img{object-fit:cover;opacity:.72;width:100%;height:100%}.hero__bg:after{content:"";background:color-mix(in srgb, var(--bg) 48%, transparent);position:absolute;inset:0}.hero__inner{z-index:1;text-align:center;flex-direction:column;align-items:center;display:flex;position:relative}.hero__eyebrow{color:var(--fg);font-weight:var(--w-medium);margin-bottom:var(--space-6)}.hero__headline{align-items:center;gap:var(--space-4);margin-bottom:var(--space-6);flex-direction:column;display:flex}.hero__name{font-weight:var(--w-bold);display:block}.hero__tagline{font-weight:var(--w-light);max-inline-size:24ch;display:block}.hero__line{display:block;overflow:hidden}.hero__line-inner{display:block}.hero__subline{color:var(--fg);font-weight:var(--w-light);max-width:760px;margin-bottom:var(--space-6)}.hero__links{justify-content:center;gap:var(--space-12);flex-wrap:wrap;display:flex}.hero__links .text-link{min-height:44px;font-weight:var(--w-medium);align-items:center;display:inline-flex}.hero__scroll{z-index:1;left:50%;bottom:var(--space-8);align-items:center;gap:var(--space-3);color:var(--muted);flex-direction:column;display:flex;position:absolute;transform:translate(-50%)}.hero__scroll-line{background:var(--border-strong);width:1px;height:48px;display:block;position:relative;overflow:hidden}.hero__scroll-line:after{content:"";background:var(--accent);transform-origin:top;animation:hero-scroll-wipe 2.4s var(--ease) infinite;position:absolute;inset:0;transform:scaleY(0)}@keyframes hero-scroll-wipe{0%{transform-origin:top;transform:scaleY(0)}45%{transform-origin:top;transform:scaleY(1)}55%{transform-origin:bottom;transform:scaleY(1)}to{transform-origin:bottom;transform:scaleY(0)}}.is-loading .hero__line-inner{transform:translateY(100%)}.is-loading .hero__eyebrow,.is-loading .hero__subline,.is-loading .hero__links,.is-loading .hero__scroll,.is-loading .hero__bg{opacity:0}.hero__line-inner{transition-property:transform;transition-duration:var(--dur-mid);transition-timing-function:var(--ease);transition-delay:calc(var(--i) * 80ms);transform:translateY(0)}.hero__eyebrow,.hero__subline,.hero__links,.hero__scroll,.hero__bg{opacity:1;transition-property:opacity;transition-duration:var(--dur-mid);transition-timing-function:var(--ease)}.hero__subline,.hero__links,.hero__scroll{transition-delay:.2s}@media (width<=640px){.hero__tagline{max-inline-size:20ch}}@media (prefers-reduced-motion:reduce){.hero__scroll-line:after{animation:none}.is-loading .hero__line-inner,.is-loading .hero__eyebrow,.is-loading .hero__subline,.is-loading .hero__links,.is-loading .hero__scroll,.is-loading .hero__bg,.hero__line-inner,.hero__eyebrow,.hero__subline,.hero__links,.hero__scroll,.hero__bg{opacity:1;transition:none;transform:none}.hero__bg-img{opacity:.72}.hero__scroll{transform:translate(-50%)}}.section-heading{align-items:center;gap:var(--space-4);margin-bottom:var(--space-16);text-align:center;flex-direction:column;display:flex}.section-heading__title{max-width:20ch;font-weight:var(--w-semi)}.carousel{gap:var(--space-4);flex-direction:column;display:flex}.carousel__frame{border-radius:var(--r-md);aspect-ratio:16/10;position:relative;overflow:hidden}.carousel__track{height:100%;transition-property:transform;transition-duration:var(--dur-fast);transition-timing-function:var(--ease);display:flex}.carousel__slide{flex:0 0 100%;height:100%}.carousel__img{object-fit:cover;width:100%;height:100%}.carousel__pending{justify-content:center;align-items:center;gap:var(--space-2);height:100%;padding:var(--space-6);text-align:center;background:var(--surface);border:1px dashed var(--border-strong);border-radius:var(--r-md);flex-direction:column;display:flex}.carousel__pending-label{color:var(--accent)}.carousel__pending-note{color:var(--muted);max-width:34ch}.carousel__arrow{z-index:2;border-radius:var(--r-pill);width:44px;height:44px;color:var(--bg);background:color-mix(in srgb, var(--fg) 45%, transparent);-webkit-backdrop-filter:blur(6px);opacity:0;transition-property:opacity,background-color,transform;transition-duration:var(--dur-fast);transition-timing-function:var(--ease);justify-content:center;align-items:center;margin-top:-22px;display:flex;position:absolute;top:50%}.carousel__arrow--prev{left:var(--space-3)}.carousel__arrow--next{right:var(--space-3)}.carousel__frame:hover .carousel__arrow,.carousel__arrow:focus-visible{opacity:1}.carousel__arrow:hover{background:color-mix(in srgb, var(--fg) 70%, transparent)}.carousel__arrow:active{transform:scale(.97)}@media (hover:none){.carousel__arrow{opacity:1}}@media (prefers-reduced-motion:reduce){.carousel__track,.carousel__arrow{transition:none}}.tech-tags{gap:var(--space-2);flex-wrap:wrap;margin:0;display:flex}.tech-tag{padding:var(--space-1) 10px;border:1px solid var(--border);border-radius:var(--r-sm);color:var(--muted);white-space:nowrap;background:0 0}.text-link{color:var(--accent);text-decoration:none;position:relative}.text-link:after{content:"";transform-origin:0;height:1px;transition-property:transform;transition-duration:var(--dur-fast);transition-timing-function:var(--ease);background:currentColor;position:absolute;bottom:-2px;left:0;right:0;transform:scaleX(0)}.text-link:hover:after,.text-link:focus-visible:after{transform:scaleX(1)}@media (prefers-reduced-motion:reduce){.text-link:after{transition:none}}.todo-chip{padding:var(--space-2) var(--space-3);color:var(--muted);border:1px dashed var(--border-strong);border-radius:var(--r-sm);background:var(--surface);align-self:flex-start;display:inline-block}.projects__stack{gap:var(--space-16);flex-direction:column;display:flex}.projects__block{gap:var(--space-4);max-width:var(--measure);flex-direction:column;display:flex}.projects__number{color:var(--accent);font-weight:var(--w-medium)}.projects__meta{color:var(--muted)}.projects__hook{color:var(--fg);font-weight:var(--w-medium)}.projects__para{color:var(--fg);font-weight:var(--w-light)}.projects__links{gap:var(--space-6);margin-top:var(--space-2);flex-wrap:wrap;display:flex}.projects__inline-media{margin-top:var(--space-6)}.projects__rail{display:none}@media (width>=900px){.projects--pinned{gap:0;display:block}.projects__stage{height:100svh;padding-top:var(--nav-h);align-items:center;display:flex;overflow:hidden}.projects__grid{gap:var(--space-12);grid-template-columns:40fr 60fr;align-items:center;width:100%;display:grid}.projects--pinned .projects__text{gap:var(--space-8);flex-direction:column;display:flex}.projects--pinned .projects__stack,.projects--pinned .projects__media{gap:0;display:grid}.projects--pinned .projects__block,.projects--pinned .projects__set{grid-area:1/1}.projects--pinned .projects__block{max-width:none}.projects--pinned .projects__media{width:min(100%, calc((100svh - var(--nav-h) - var(--space-16)) * 1.6));border-radius:var(--r-md);justify-self:end}.projects--pinned .projects__set{border-radius:var(--r-md);overflow:hidden}.projects--pinned .projects__rail{gap:var(--space-2);grid-auto-columns:1fr;grid-auto-flow:column;width:100%;max-width:320px;display:grid}.projects__rail-seg{background:var(--border-strong);border-radius:var(--r-pill);height:2px;display:block;overflow:hidden}.projects__rail-fill{background:var(--accent);border-radius:var(--r-pill);height:100%;display:block}}.figure{margin:0}.figure__frame{border-radius:var(--r-md);box-shadow:var(--shadow-image)}.figure__clip{border-radius:var(--r-md);overflow:hidden}.figure__zoom{transform-origin:50%}.figure__img{object-fit:cover;width:100%;height:auto}.figure__caption{margin-top:var(--space-3)}.empty-frame{aspect-ratio:4/3;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);justify-content:center;align-items:center;max-height:360px;display:flex}.empty-frame__label{color:var(--accent)}.experience{flex-direction:column;display:flex}.experience__item{gap:var(--space-12);padding-block:var(--space-16);border-top:1px solid var(--border);grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);align-items:center;display:grid}.experience__item:first-child{border-top:none;padding-top:0}.experience__item:nth-child(2n){grid-template-columns:minmax(0,1fr) minmax(0,1.2fr)}.experience__item:nth-child(2n) .experience__media{order:2}.experience__media .figure__clip{max-height:760px}.experience__media .figure__img{object-fit:contain;width:100%;height:auto}.experience__body{gap:var(--space-3);max-width:var(--measure);flex-direction:column;display:flex}.experience__meta{color:var(--muted)}.experience__para{color:var(--fg);font-weight:var(--w-light)}.experience__note{margin-top:var(--space-12);padding-top:var(--space-8);border-top:1px solid var(--border);text-align:center}@media (width<=900px){.experience__item,.experience__item:nth-child(2n){gap:var(--space-8);padding-block:var(--space-12);grid-template-columns:minmax(0,1fr)}.experience__item:nth-child(2n) .experience__media{order:0}}.hackathons{gap:var(--space-16);grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;display:grid}.hackathons__item{gap:var(--space-6);flex-direction:column;display:flex}.hackathons__item .figure__clip{max-height:560px}.hackathons__item .figure__img{object-fit:cover;height:560px}.hackathons__body{gap:var(--space-3);flex-direction:column;display:flex}.hackathons__place{color:var(--accent);font-weight:var(--w-semi)}.hackathons__para{color:var(--fg);font-weight:var(--w-light)}@media (width<=833px){.hackathons{gap:var(--space-12);grid-template-columns:minmax(0,1fr)}}.community{gap:var(--space-12);grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);align-items:center;display:grid}.community__body{gap:var(--space-3);max-width:var(--measure);flex-direction:column;align-items:flex-start;display:flex}.community__para{color:var(--fg);font-weight:var(--w-light)}@media (width<=900px){.community{gap:var(--space-8);grid-template-columns:minmax(0,1fr)}}.skills{align-items:start;gap:var(--space-12) var(--space-16);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.skills__group{gap:var(--space-3);flex-direction:column;display:flex}.skills__label{color:var(--muted);font-weight:var(--w-regular)}.skills__list{color:var(--fg);font-weight:var(--w-light);margin:0;padding:0;list-style:none;display:block}.skills__item{display:inline}.skills__sep{color:var(--muted)}@media (width<=1023px){.skills{gap:var(--space-8) var(--space-12);grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=640px){.skills{gap:var(--space-6);grid-template-columns:minmax(0,1fr)}}.skills__downloads{gap:var(--space-4);margin-top:var(--space-24);flex-wrap:wrap;display:flex}.dl{isolation:isolate;align-items:center;gap:var(--space-3);padding:var(--space-4) var(--space-6);border-radius:var(--r-sm);background:var(--surface-inverse);color:var(--bg);transition-property:transform;transition-duration:var(--dur-fast);transition-timing-function:var(--ease);display:inline-flex;position:relative;overflow:hidden}.dl:active{transform:scale(.98)}.dl__fill{z-index:-1;background:var(--accent);transform-origin:50% 100%;transition-property:transform;transition-duration:var(--dur-fast);transition-timing-function:var(--ease);position:absolute;inset:0;transform:scaleY(0)}.dl:hover .dl__fill,.dl:focus-visible .dl__fill{transform:scaleY(1)}.dl__swap{display:block;overflow:hidden}.dl__swap--label{height:calc(var(--t-body-size) * var(--t-body-lh))}.dl__swap--arrow{height:12px}.dl__lines{transition-property:transform;transition-duration:var(--dur-fast);transition-timing-function:var(--ease);display:block}.dl:hover .dl__lines,.dl:focus-visible .dl__lines{transform:translateY(-50%)}.dl__line{white-space:nowrap;display:block}.dl__note{color:var(--accent-light)}.dl__arrow{width:12px;height:12px;display:block}@media (width<=640px){.skills__downloads{margin-top:var(--space-16);flex-direction:column;align-items:stretch}.dl{justify-content:center}}@media (prefers-reduced-motion:reduce){.dl,.dl__fill,.dl__lines{transition:none}.dl:hover .dl__lines,.dl:focus-visible .dl__lines{transform:none}}.oos{overflow:clip}.oos__intro{align-items:center;gap:var(--space-6);max-width:min(100%,1080px);margin-inline:auto;margin-bottom:var(--space-12);text-align:center;text-wrap:pretty;flex-direction:column;display:flex}@media (width<=900px){.oos__intro{gap:var(--space-4)}}.oos__line{color:var(--fg);font-weight:var(--w-light)}.oos__line .split-word{display:inline-block}.oos__hint{margin-bottom:var(--space-4)}.albums{align-items:end;gap:var(--space-16) var(--space-12);max-width:calc(var(--container) + var(--gutter) * 2);padding-inline:var(--gutter);padding-block:var(--space-4) var(--space-12);grid-template-columns:repeat(4,1fr);margin-inline:auto;display:grid}.album{--pile-h:300px;gap:var(--space-6);flex-direction:column;display:flex;position:relative}.album__meta{gap:var(--space-2);flex-direction:column;display:flex}.album__trigger{align-items:baseline;gap:var(--space-4);color:var(--fg);text-align:left;cursor:pointer;background:0 0;border:0;padding:0;display:flex}.album__name{font-weight:var(--w-medium)}.album__count{color:var(--accent);white-space:nowrap;transition-property:transform;transition-duration:var(--dur-fast);transition-timing-function:var(--ease)}.album__trigger:hover .album__count,.album__trigger:focus-visible .album__count{transform:translate(4px)}.album__note{color:var(--muted);font-weight:var(--w-light);max-width:34ch}.album__cards{height:var(--pile-h);cursor:pointer;place-items:end center;margin:0;padding:0;list-style:none;display:grid}.album__card{--rot:0deg;--shift:0px;z-index:calc(9 - var(--i));transform:translateX(var(--shift)) rotate(var(--rot));transform-origin:50% 100%;transition-property:transform;transition-duration:var(--dur-fast);transition-timing-function:var(--ease);grid-area:1/1}.album__card:nth-child(2){--rot:-6deg;--shift:-16px}.album__card:nth-child(3){--rot:7deg;--shift:18px}.album:hover .album__card,.album:focus-within .album__card{transform:translateX(calc(var(--shift) * 1.6)) rotate(calc(var(--rot) * 1.5))}.album__clip{height:var(--pile-h);aspect-ratio:4/5;border-radius:var(--r-md);box-shadow:var(--shadow-image);overflow:hidden}.album__img{object-fit:cover;width:100%;height:100%}.lb{width:min(96vw, calc(var(--container) + var(--gutter) * 2));background:0 0;border:0;max-width:none;height:min(88dvh,940px);max-height:none;padding:0;overflow:visible}.lb::backdrop{background:color-mix(in srgb, var(--fg) 76%, transparent);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);animation:lb-backdrop var(--dur-mid) var(--ease)}@keyframes lb-backdrop{0%{opacity:0}}.lb__panel{gap:var(--space-6);height:100%;padding-block:var(--space-8) var(--space-6);border-radius:var(--r-md);background:var(--bg);box-shadow:var(--shadow-image);flex-direction:column;display:flex;overflow:hidden}.lb__bar{justify-content:space-between;align-items:flex-end;gap:var(--space-8);padding-inline:var(--space-12);display:flex}.lb__id{gap:var(--space-1);flex-direction:column;display:flex}.lb__title{font-weight:var(--w-medium)}.lb__note{font-weight:var(--w-light);max-width:46ch}.lb__controls{align-items:center;gap:var(--space-4);display:flex}.lb__nav{border:1px solid var(--border);border-radius:var(--r-pill);width:40px;height:40px;color:var(--fg);font-size:var(--t-body-size);cursor:pointer;transition-property:transform,border-color,opacity;transition-duration:var(--dur-fast);transition-timing-function:var(--ease);background:0 0;place-items:center;line-height:1;display:grid}.lb__nav:hover:not(:disabled){border-color:var(--border-strong);transform:scale(1.08)}.lb__nav:disabled{opacity:.3;cursor:default}.lb__counter{min-width:6ch;color:var(--muted);text-align:center;font-variant-numeric:tabular-nums}.lb__close{padding:var(--space-3) var(--space-4);border:1px solid var(--border);border-radius:var(--r-pill);color:var(--fg);cursor:pointer;transition-property:border-color,background-color;transition-duration:var(--dur-fast);transition-timing-function:var(--ease);background:0 0}.lb__close:hover{border-color:var(--border-strong);background:var(--surface)}.lb__strip{align-items:center;gap:var(--space-12);min-height:0;padding-inline:max(var(--space-12), calc(50% - 30vh));overscroll-behavior-x:contain;scroll-snap-type:x mandatory;scrollbar-width:none;flex:1;margin:0;list-style:none;display:flex;overflow:auto hidden}.lb__strip::-webkit-scrollbar{display:none}.lb__slide{scroll-snap-align:center;flex:none}.lb__fig{margin:0}.lb__clip{height:min(58dvh,620px);aspect-ratio:var(--ar);border-radius:var(--r-md);box-shadow:var(--shadow-image);overflow:hidden}.lb__img{object-fit:cover;width:100%;height:100%}.lb__caption{margin-top:var(--space-4);color:var(--muted)}@media (width<=1200px){.albums{gap:var(--space-16) var(--space-12);grid-template-columns:repeat(2,1fr)}.album{--pile-h:280px}}@media (width<=899px){.albums{gap:var(--space-12);grid-template-columns:1fr}.album{--pile-h:260px}.lb{width:100vw;height:100dvh}.lb__panel{border-radius:var(--r-none)}.lb__bar{align-items:flex-start;gap:var(--space-4);padding-inline:var(--gutter);flex-direction:column}.lb__strip{gap:var(--space-8);padding-inline:max(var(--gutter), calc(50% - 44vw))}.lb__clip{max-width:88vw;height:min(52dvh,520px)}}@media (width<=640px){.album{--pile-h:220px}.lb__note{display:none}}@media (prefers-reduced-motion:reduce){.album__card,.album__count,.lb__nav,.lb__close{transition:none}.album:hover .album__card,.album:focus-within .album__card{transform:translateX(var(--shift)) rotate(var(--rot))}.lb::backdrop{animation:none}}.contact-band{--accent:var(--accent-light);--fg:var(--bg);--muted:var(--accent-light);--surface:color-mix(in srgb, var(--bg) 12%, transparent);--border:color-mix(in srgb, var(--bg) 24%, transparent);--border-strong:color-mix(in srgb, var(--bg) 40%, transparent);--focus:var(--bg);background:var(--surface-inverse);color:var(--bg);border-radius:var(--r-none);padding-block:var(--space-24);scroll-margin-top:calc(var(--nav-h) + var(--space-4));display:block}.contact-band__inner{align-items:flex-start;gap:var(--space-6);flex-direction:column;display:flex}.contact-band__eyebrow{color:var(--accent-light)}.contact-band__title{color:var(--bg)}.contact-band__line{color:var(--bg);max-width:var(--measure)}.contact-band__links{gap:var(--space-8);flex-wrap:wrap;margin:0;display:flex}.contact-band__links--social{margin-top:calc(var(--space-2) * -1)}.contact-band__foot{justify-content:space-between;align-items:flex-end;gap:var(--space-8);width:100%;margin-top:var(--space-16);padding-top:var(--space-8);border-top:1px solid var(--border);flex-wrap:wrap;display:flex}.contact-band__colophon{gap:var(--space-2);color:var(--accent-light);flex-direction:column;margin:0;display:flex}.contact-band__colophon-row{align-items:center;gap:var(--space-3);display:flex}.contact-band__swatch-name{min-width:11ch}.contact-band__swatch{border-radius:var(--r-sm);border:1px solid var(--border);flex-shrink:0;width:10px;height:10px;display:inline-block}.contact-band__legal{color:var(--accent-light)}
/*$vite$:1*/