@font-face{font-family:__Inter_f367f3;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/ba9851c3c22cd980-s.woff2) format("woff2");unicode-range:U+0460-052f,U+1c80-1c8a,U+20b4,U+2de0-2dff,U+a640-a69f,U+fe2e-fe2f}@font-face{font-family:__Inter_f367f3;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/21350d82a1f187e9-s.woff2) format("woff2");unicode-range:U+0301,U+0400-045f,U+0490-0491,U+04b0-04b1,U+2116}@font-face{font-family:__Inter_f367f3;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/c5fe6dc8356a8c31-s.woff2) format("woff2");unicode-range:U+1f??}@font-face{font-family:__Inter_f367f3;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/19cfc7226ec3afaa-s.woff2) format("woff2");unicode-range:U+0370-0377,U+037a-037f,U+0384-038a,U+038c,U+038e-03a1,U+03a3-03ff}@font-face{font-family:__Inter_f367f3;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/df0a9ae256c0569c-s.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01a0-01a1,U+01af-01b0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1ea0-1ef9,U+20ab}@font-face{font-family:__Inter_f367f3;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/8e9860b6e62d6359-s.woff2) format("woff2");unicode-range:U+0100-02ba,U+02bd-02c5,U+02c7-02cc,U+02ce-02d7,U+02dd-02ff,U+0304,U+0308,U+0329,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:__Inter_f367f3;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/e4af272ccee01ff0-s.p.woff2) format("woff2");unicode-range:U+00??,U+0131,U+0152-0153,U+02bb-02bc,U+02c6,U+02da,U+02dc,U+0304,U+0308,U+0329,U+2000-206f,U+20ac,U+2122,U+2191,U+2193,U+2212,U+2215,U+feff,U+fffd}@font-face{font-family:__Inter_Fallback_f367f3;src:local("Arial");ascent-override:90.20%;descent-override:22.48%;line-gap-override:0.00%;size-adjust:107.40%}.__className_f367f3{font-family:__Inter_f367f3,__Inter_Fallback_f367f3;font-style:normal}.__variable_f367f3{--font-inter:"__Inter_f367f3","__Inter_Fallback_f367f3"}:root{--ink:#00020c;--ink-soft:#010818;--ink-deep:#020f24;--snow:#fff;--slate:#94a3b8;--slate-dim:#64748b;--cyan:#38bdf8;--green:#4ade80;--green-glow:#0f8;--snow-80:hsla(0,0%,100%,.8);--snow-40:hsla(0,0%,100%,.4);--snow-12:hsla(0,0%,100%,.12);--snow-06:hsla(0,0%,100%,.06);--noise-texture:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='300' height='300'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");--bg:var(--ink);--bg-raised:var(--ink-soft);--bg-sunken:var(--ink-deep);--text:var(--snow);--text-soft:var(--snow-80);--text-dim:var(--slate);--text-faint:var(--slate-dim);--line:var(--snow-12);--line-soft:var(--snow-06);--line-strong:var(--snow-40);--hover:var(--snow-06);--active:var(--snow-12);--accent:var(--cyan);--online:var(--green);--online-glow:var(--green-glow);--pill-bg:hsla(0,0%,100%,.04);--pill-line:hsla(0,0%,100%,.08);--pill-on:hsla(0,0%,100%,.1);--topbar-h:4.5rem;--topbar-pad-y:clamp(1.25rem,3vh,2rem);--ring-size:min(92vw,42rem);--ring-line:hsla(0,0%,100%,.14);--nav-gap-x:clamp(0.75rem,7vw,7.5rem);--hero-ring-size:min(90vw,38rem);--hero-ring-line:hsla(0,0%,100%,.14);--hero-min-h:max(32rem,calc(100dvh - var(--topbar-h) - var(--topbar-pad-y) * 2 - 2rem));--about-photo-w:min(100%,32rem);--about-photo-h:clamp(16rem,45vw,22rem);--about-ring-size:min(72vw,26rem);--about-ring-line:hsla(0,0%,100%,.14);--tech-ticker-size:min(88vw,22rem);--tech-ticker-size-mobile:min(72vw,18rem);--tech-slide-duration:4s;--projects-app-w:min(100%,28rem);--projects-card-w:min(26rem,calc(100vw - 2 * var(--pad-x) - 4.5rem));--projects-card-h:13rem;--projects-card-h-mobile:22rem;--projects-card-gap:0;--projects-overlap:clamp(2rem,7vw,3.5rem);--projects-scale-active:0.94;--projects-scale-side:0.86;--projects-scale-far:0.82;--projects-side-dim:0.38;--projects-ring-size:min(72vw,30rem);--projects-ring-line:hsla(0,0%,100%,.14);--gallery-ring-size:min(78vw,32rem);--gallery-ring-line:hsla(0,0%,100%,.14);--gallery-card-ratio:4/3;--contact-ring-size:min(85vw,36rem);--contact-ring-line:hsla(0,0%,100%,.14);--grain-opacity:0.035;--grain-blend:overlay;--grain-size:180px;--radius-sm:0.375rem;--radius-md:0.5rem;--radius-lg:0.75rem;--radius-xl:1rem;--radius-pill:9999px;--font-sans:var(--font-inter),ui-sans-serif,system-ui,sans-serif;--pad-x:clamp(1rem,5vw,2rem);--pad-y:clamp(1.5rem,6vh,3rem);--rail-w:calc(43.5rem + 2 * var(--nav-gap-x));--z-grain:1;--z-main:10;--z-menu:60;--z-overlay:50;--z-modal:100;--bp-desktop:850px;--ease-out:cubic-bezier(0.16,1,0.3,1);--t-fast:150ms;--t-base:250ms;--t-slow:400ms;--background:228 100% 2.4%;--foreground:0 0% 100%;--muted:228 50% 8%;--muted-foreground:215 16% 65%;--border:0 0% 100%/0.12;--radius:var(--radius-md)}


/*
! tailwindcss v3.3.3 | MIT License | https://tailwindcss.com
*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:var(--font-sans);font-feature-settings:normal;font-variation-settings:normal}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,:after,:before{border-color:hsl(var(--border))}html{color-scheme:dark}body,html{background-color:var(--bg);width:100%;overflow-x:clip}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:var(--font-sans);color:var(--text);min-height:100dvh}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.shell-main{width:100%;max-width:100%;overflow-x:clip}.bg-layer{position:fixed;inset:0;z-index:var(--z-grain);pointer-events:none;isolation:isolate}.bg-layer__fill{position:absolute;inset:0;background-color:var(--bg)}.bg-layer__grain{position:absolute;inset:0;opacity:var(--grain-opacity);mix-blend-mode:var(--grain-blend);background-image:var(--noise-texture);background-repeat:repeat;background-size:var(--grain-size)}.topbar{position:relative;width:100%;max-width:100%;min-height:var(--topbar-h);padding-block:var(--topbar-pad-y);overflow-x:clip;overflow-y:visible}.topbar__rail{position:relative;z-index:2}.topbar__mobile{display:flex;align-items:center;justify-content:space-between;gap:1rem;width:100%}@media (min-width:850px){.topbar__mobile{display:none}}.topbar__desktop{display:none;position:relative;align-items:center;justify-content:space-between;gap:1rem;width:100%}@media (min-width:850px){.topbar__desktop{display:flex}}.topbar .availability,.topbar .brand,.topbar .nav-desktop{flex-shrink:0}.topbar .nav-desktop{position:absolute;left:50%;transform:translateX(-50%);margin-inline:0}.menu{position:relative;z-index:var(--z-menu)}.menu__trigger{display:flex;align-items:center;justify-content:center;width:2.75rem;height:2.75rem;padding:0;border:none;cursor:pointer;background:var(--pill-bg)}.menu__icon{position:relative;width:1.125rem;height:.625rem}.menu__icon:after,.menu__icon:before{content:"";position:absolute;left:0;width:100%;height:1.5px;background:var(--text);border-radius:1px;transition:transform var(--t-base) var(--ease-out),top var(--t-base) var(--ease-out),opacity var(--t-fast) var(--ease-out)}.menu__icon:before{top:0}.menu__icon:after{top:calc(100% - 1.5px)}.menu__icon--open:before{top:50%;transform:translateY(-50%) rotate(45deg)}.menu__icon--open:after{top:50%;transform:translateY(-50%) rotate(-45deg)}.menu__backdrop{position:fixed;inset:0;z-index:calc(var(--z-menu) - 1);background:rgba(0,2,12,.72);opacity:0;pointer-events:none;transition:opacity var(--t-base) var(--ease-out)}.menu__backdrop--open{opacity:1;pointer-events:auto}.menu__panel{position:fixed;top:calc(var(--topbar-h) + var(--topbar-pad-y));right:var(--pad-x);z-index:var(--z-menu);display:flex;flex-direction:column;gap:1.5rem;width:min(18rem,calc(100% - var(--pad-x) * 2));padding:1.25rem;opacity:0;visibility:hidden;transform:translateY(-.5rem) scale(.98);transition:opacity var(--t-base) var(--ease-out),transform var(--t-base) var(--ease-out),visibility var(--t-base)}.menu__panel--open{opacity:1;visibility:visible;transform:translateY(0) scale(1)}.menu__footer .availability{width:100%;justify-content:center}.rail{box-sizing:border-box;display:grid;grid-template-columns:minmax(var(--pad-x),1fr) minmax(0,var(--rail-w)) minmax(var(--pad-x),1fr);width:100%;max-width:100%}.rail__body{grid-column:2;width:100%;min-width:0;margin-inline:0;max-width:none}.section-label{margin:0;font-size:clamp(.8125rem,1.6vw,.9375rem);font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--text)}.section-label__muted{color:var(--text-faint)}.section-copy{margin:0;font-size:clamp(.875rem,1.7vw,1rem);line-height:1.7;color:var(--text-dim)}.page{display:flex;flex-direction:column;width:100%;max-width:100%;overflow-x:clip}.topbar-ring{position:absolute;top:50%;right:0;z-index:0;width:var(--ring-size);height:var(--ring-size);pointer-events:none;transform:translate(23%,-60%)}.topbar-ring svg{width:100%;height:100%}.topbar-ring circle{fill:none;stroke:var(--ring-line)}.pill{border-radius:var(--radius-pill);background:var(--pill-bg);border:1px solid var(--pill-line);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.dot-online{flex-shrink:0;width:.5rem;height:.5rem;border-radius:var(--radius-pill);background-color:var(--online);box-shadow:0 0 6px var(--online-glow),0 0 12px rgba(0,255,136,.35)}.hero{position:relative;display:flex;align-items:center;min-height:var(--hero-min-h);padding-block:clamp(2rem,6vh,4rem);overflow:hidden}@media (max-width:849px){.hero{min-height:65vh;padding-block:clamp(.75rem,2.5vh,1.25rem)}.hero__body{gap:clamp(1.25rem,3vh,2rem)}}.hero__rail{position:relative;z-index:1}.hero__ring{position:absolute;left:0;bottom:0;z-index:0;width:var(--hero-ring-size);height:var(--hero-ring-size);pointer-events:none;transform:translate(-25%,8%)}.hero__ring svg{width:100%;height:100%}.hero__ring circle{fill:none;stroke:var(--hero-ring-line)}.hero__body{display:flex;flex-direction:column;gap:clamp(2.5rem,6vh,4.5rem)}.hero__top{display:grid;grid-template-columns:1fr;gap:2rem;align-items:start;width:100%}@media (min-width:850px){.hero__top{grid-template-columns:minmax(0,1.1fr) minmax(14rem,20rem);-moz-column-gap:clamp(2rem,6vw,calc(2 * var(--nav-gap-x)));column-gap:clamp(2rem,6vw,calc(2 * var(--nav-gap-x)));align-items:start}}.hero__title{margin:0;font-size:clamp(2.75rem,10vw,5.25rem);font-weight:700;line-height:.92;letter-spacing:-.03em;text-transform:uppercase}.hero__title-line{display:block;color:var(--text)}.hero__title-line--accent{color:var(--accent)}.hero__aside{display:flex;flex-direction:column;align-items:flex-start;gap:1.25rem}@media (min-width:850px){.hero__aside{align-items:flex-end;text-align:right;padding-top:.35rem}}.hero__bio{margin:0;max-width:22rem;font-size:.8125rem;line-height:1.55;color:var(--text-dim)}@media (min-width:850px){.hero__bio{font-size:.875rem}}.hero__cta{display:inline-flex;align-items:center;justify-content:center;padding:.8rem 3rem;border-radius:var(--radius-pill);background:var(--snow);color:var(--ink);font-size:.75rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;text-decoration:none;transition:opacity var(--t-fast) var(--ease-out)}.hero__cta:hover{opacity:.9}.hero__socials{display:flex;justify-content:flex-start;flex-wrap:wrap;gap:.75rem;list-style:none;margin:0;padding:0}.hero__social-link{display:inline-flex;align-items:center;gap:.5rem;padding:.55rem 1rem;font-size:.8125rem;font-weight:500;color:var(--text-soft);text-decoration:none;transition:color var(--t-fast) var(--ease-out),border-color var(--t-fast) var(--ease-out),background var(--t-fast) var(--ease-out)}.hero__social-link:hover{color:var(--text);border-color:var(--line-strong);background:var(--hover)}.about{position:relative;padding-block:clamp(4rem,10vh,7rem);overflow-x:clip}.about__body{position:relative;z-index:1}.about__layout{display:grid;grid-template-columns:minmax(0,1fr);align-items:center;gap:clamp(2.5rem,6vh,4rem);width:100%}@media (min-width:850px){.about__layout{grid-template-columns:minmax(0,1.65fr) minmax(0,1fr);gap:clamp(2rem,6vw,5rem)}}.about__copy{display:flex;flex-direction:column;gap:clamp(1.25rem,3vh,2rem);min-width:0;width:100%;max-width:none}.about__heading,.gallery__heading,.projects__heading{margin:0;font-size:clamp(.8125rem,1.6vw,.9375rem);font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--text)}.about__heading-muted,.gallery__heading-muted,.projects__heading-muted{color:var(--text-faint)}.about__lead,.projects__item-desc{margin:0;font-size:clamp(.75rem,1.35vw,.875rem);line-height:1.65;color:var(--text-dim)}.about__lead{max-width:none}.projects__item-desc{max-width:36rem}.about__callout{margin:0;max-width:none;width:100%;padding:clamp(1.25rem,3vw,1.75rem) clamp(1.25rem,3.5vw,2rem);font-size:clamp(.75rem,1.35vw,.875rem);line-height:1.65;color:var(--text-soft);background:var(--bg-raised);border:1px solid var(--line-soft);border-radius:2rem;box-shadow:0 0 0 1px hsla(0,0%,100%,.03)}.about__visual{position:relative;width:100%;max-width:var(--about-photo-w);height:var(--about-photo-h);justify-self:center}@media (min-width:850px){.about__visual{justify-self:end}}.about__ring{position:absolute;top:clamp(6rem,28vh,11.25rem);left:clamp(0rem,12vw,7.5rem);z-index:0;width:var(--about-ring-size);height:var(--about-ring-size);pointer-events:none;transform:translate(18%,-22%)}.about__ring svg{width:100%;height:100%}.about__ring circle{fill:none;stroke:var(--about-ring-line)}.about__photo-wrap{position:relative;z-index:1;width:100%;max-width:22rem;height:100%;margin-inline:auto}@media (min-width:850px){.about__photo-wrap{max-width:21rem;margin-inline:auto 0}}.about__photo{width:100%;height:100%;-o-object-fit:cover;object-fit:cover;-o-object-position:center top;object-position:center top;border-radius:var(--radius-xl);border:1px solid var(--line-soft);box-shadow:0 20px 48px rgba(0,0,0,.45)}@media (max-width:849px){.about__callout,.about__lead{max-width:none}.about__photo-wrap{width:min(100%,20rem)}.about__ring{transform:translate(8%,-18%)}}.tech{position:relative;padding-top:clamp(2rem,5vh,3.25rem);padding-bottom:clamp(3rem,8vh,5.5rem);overflow:hidden}.tech__ring{position:absolute;pointer-events:none;z-index:0;width:min(62vw,24rem);height:min(62vw,24rem)}.tech__ring svg{width:100%;height:100%}.tech__ring--tl{top:0;left:0;transform:translate(-48%,-48%)}.tech__ring--bl{bottom:0;left:0;transform:translate(-48%,48%)}.tech__body{position:relative;z-index:1}.tech__layout{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:clamp(1.5rem,5vw,4rem);width:100%}@media (min-width:850px){.tech__layout{gap:clamp(2rem,8vw,6rem)}}@media (max-width:849px){.tech{padding-top:clamp(.5rem,1.5vh,.875rem);padding-bottom:clamp(1.75rem,4vh,3rem)}.tech__ring{width:min(48vw,14rem);height:min(48vw,14rem)}.tech__layout{grid-template-columns:1fr;justify-items:center;gap:clamp(1rem,3vh,1.5rem)}.tech-ticker__viewport{width:var(--tech-ticker-size-mobile);mask-image:linear-gradient(180deg,transparent 0,#000 6%,#000 94%,transparent);-webkit-mask-image:linear-gradient(180deg,transparent 0,#000 6%,#000 94%,transparent)}.tech-ticker__panel{height:var(--tech-ticker-size-mobile)}}.tech__quote{margin:0;align-self:center;justify-self:center;display:flex;align-items:center;justify-content:center;min-height:var(--tech-ticker-size)}.tech__quote p{margin:0;writing-mode:vertical-rl;transform:rotate(180deg);font-size:clamp(.6875rem,2vw,.8125rem);line-height:1.55;letter-spacing:.02em;color:var(--text-dim);text-align:center}.tech__quote-line{display:inline}.tech__quote-mark{color:var(--text-soft)}.tech__quote-author{display:inline;color:var(--text-faint)}@media (max-width:849px){.tech__quote{min-height:0;width:100%}.tech__quote p{writing-mode:horizontal-tb;transform:none;text-align:center;max-width:14rem;margin-inline:auto}}.tech-ticker{width:100%;display:flex;justify-content:center}@media (min-width:850px){.tech-ticker{justify-content:flex-end}}.tech-ticker__viewport{position:relative;width:var(--tech-ticker-size);aspect-ratio:1;overflow:hidden;mask-image:linear-gradient(180deg,transparent 0,#000 10%,#000 90%,transparent);-webkit-mask-image:linear-gradient(180deg,transparent 0,#000 10%,#000 90%,transparent)}.tech-ticker__track{display:flex;flex-direction:column;will-change:transform;backface-visibility:hidden}.tech-ticker__panel{display:flex;flex-direction:column;justify-content:center;height:var(--tech-ticker-size);flex-shrink:0}.tech-ticker__line{margin:0;padding-block:.4rem;font-size:clamp(2rem,6.5vw,3.25rem);font-weight:700;line-height:1.05;letter-spacing:-.03em;text-transform:uppercase;color:var(--text);flex-shrink:0}.tech-ticker__line--accent{color:var(--accent)}.projects{position:relative;padding-block:clamp(4rem,10vh,7rem);padding-top:clamp(5.5rem,12vh,8.5rem);overflow:hidden}@media (max-width:849px){.projects{overflow-x:clip;overflow-y:visible}}.projects__ring{position:absolute;top:18%;left:50%;z-index:0;width:var(--projects-ring-size);height:var(--projects-ring-size);pointer-events:none;transform:translate(-50%,-50%)}.projects__ring svg{width:100%;height:100%}.projects__pixel{position:absolute;top:clamp(1rem,4vh,2.5rem);right:var(--pad-x);z-index:0;width:clamp(5rem,14vw,8.5rem);height:clamp(3.5rem,10vw,6rem);border-radius:var(--radius-md);background:var(--bg-raised);opacity:.55;filter:blur(6px);pointer-events:none}.projects__body{position:relative;z-index:1}.projects__header{margin-bottom:clamp(1.5rem,4vh,2.5rem)}.projects__carousel{margin-bottom:clamp(4rem,10vh,6rem)}.projects__stage{display:grid;grid-template-columns:2.75rem minmax(0,1fr) 2.75rem;align-items:center;gap:clamp(.5rem,2vw,1rem);width:100%}.projects__viewport{grid-column:2;min-width:0;overflow:hidden;width:100%}.projects__track{display:flex;align-items:center;gap:var(--projects-card-gap);will-change:transform;transition:transform .6s var(--ease-out)}.projects__track.projects__track--instant,.projects__track.projects__track--instant .projects__card-frame{transition:none}.projects__card{flex:0 0 var(--projects-card-w);width:var(--projects-card-w);max-width:100%;z-index:0;pointer-events:none}.projects__card+.projects__card{margin-left:calc(-1 * var(--projects-overlap))}.projects__card--side{z-index:1;pointer-events:none}.projects__card--active{z-index:5;pointer-events:auto}.projects__card--active .projects__card-body,.projects__card--active .projects__card-frame,.projects__card--active .projects__card-link{pointer-events:auto}.projects__card--active .projects__card-body,.projects__card--active .projects__card-desc,.projects__card--active .projects__card-title{-moz-user-select:text;user-select:text;-webkit-user-select:text;cursor:text}.projects__card--active .projects__card-link{cursor:pointer;position:relative;z-index:2}.projects__card:not(.projects__card--active) .projects__card-body{visibility:hidden;opacity:0;overflow:hidden;padding:0;border-left-color:transparent;pointer-events:none}.projects__card:not(.projects__card--active) .projects__card-link{opacity:0;visibility:hidden;pointer-events:none}.projects__card--far .projects__card-frame{filter:brightness(.28);opacity:.35}.projects__card-frame{position:relative;width:100%;height:var(--projects-card-h);border-radius:var(--radius-xl);overflow:hidden;background:var(--bg-raised);border:1px solid var(--line-soft);box-shadow:0 0 0 1px hsla(0,0%,100%,.04);transform:scale(var(--projects-scale-far));transform-origin:center center;transition:transform .6s var(--ease-out),border-color var(--t-slow) var(--ease-out),box-shadow var(--t-slow) var(--ease-out),filter .6s var(--ease-out),opacity .6s var(--ease-out)}.projects__card--side .projects__card-frame{transform:scale(var(--projects-scale-side));filter:brightness(var(--projects-side-dim));opacity:.52}.projects__card--active .projects__card-frame{transform:scale(var(--projects-scale-active));filter:none;opacity:1;border-color:var(--line-strong);box-shadow:0 0 0 1px hsla(0,0%,100%,.08),0 20px 50px rgba(0,0,0,.55)}.projects__card--active .projects__card-frame:before{content:"";position:absolute;inset:0 0 auto;z-index:2;height:1px;background:linear-gradient(90deg,transparent,hsla(0,0%,100%,.65),transparent);pointer-events:none}.projects__card--active .projects__card-title{color:var(--text)}.projects__card--active .projects__card-desc{color:var(--text-soft)}.projects__card-inner{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);height:100%;min-height:0}.projects__card-media{position:relative;height:100%;min-height:0;overflow:hidden;background:#f4f6f8;isolation:isolate}.projects__preview-img{-o-object-fit:cover;object-fit:cover;-o-object-position:center center;object-position:center center}.projects__card-body{display:flex;flex-direction:column;gap:.5rem;height:100%;min-height:0;padding:clamp(.65rem,1.5vw,.9rem);background:var(--bg-sunken);border-left:1px solid var(--line-soft);overflow:hidden}.projects__card-title{margin:0;font-size:clamp(.9375rem,2.2vw,1.0625rem);font-weight:700;letter-spacing:-.02em;color:var(--text)}.projects__card-desc{margin:0;flex:1;min-height:0;font-size:clamp(.625rem,1.5vw,.75rem);line-height:1.5;color:var(--text-dim);display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:6;overflow:hidden}.projects__card-link{display:inline-flex;align-items:center;gap:.35rem;align-self:flex-start;padding:.4rem .75rem;font-size:.75rem;font-weight:500;color:var(--text-soft);text-decoration:none;border:1px solid var(--line);border-radius:var(--radius-sm);transition:color var(--t-fast) var(--ease-out),border-color var(--t-fast) var(--ease-out),background var(--t-fast) var(--ease-out),opacity var(--t-fast) var(--ease-out),visibility var(--t-fast) var(--ease-out)}.projects__card-link:hover{color:var(--text);border-color:var(--line-strong);background:var(--hover)}.projects__nav{position:relative;z-index:10;display:flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;padding:0;color:var(--text);background:rgba(0,2,12,.85);border:1px solid var(--line);border-radius:50%;cursor:pointer;pointer-events:auto;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);transition:border-color var(--t-fast) var(--ease-out),background var(--t-fast) var(--ease-out)}.projects__nav:hover{border-color:var(--line-strong);background:rgba(0,2,12,.95)}.projects__nav--prev{grid-column:1;justify-self:end}.projects__nav--next{grid-column:3;justify-self:start}@media (max-width:849px){.projects__ring{top:12%}.projects__stage{grid-template-columns:2rem minmax(0,1fr) 2rem;gap:.35rem;align-items:stretch}.projects__viewport{overflow-x:hidden;overflow-y:visible}.projects__track{align-items:stretch}.projects__nav{width:2rem;height:2rem}.projects__card-frame{height:auto;min-height:var(--projects-card-h-mobile)}.projects__card--active .projects__card-frame{transform:scale(1)}.projects__card--side .projects__card-frame{transform:scale(var(--projects-scale-side))}.projects__card--far .projects__card-frame{transform:scale(var(--projects-scale-far))}.projects__card-inner{grid-template-columns:1fr;grid-template-rows:auto auto;height:auto;min-height:0}.projects__card-media{height:auto;min-height:11rem;aspect-ratio:16/10}.projects__card-body{flex-shrink:0;min-height:7.5rem;height:auto;border-left:none;border-top:1px solid var(--line-soft)}.projects__card--active .projects__card-body{visibility:visible;opacity:1;overflow:visible;padding:clamp(.75rem,2vw,1rem)}.projects__card--active .projects__card-link{opacity:1;visibility:visible}}.projects__list{display:flex;flex-direction:column;gap:clamp(4rem,10vh,7rem);margin-top:clamp(5rem,15vh,9rem);padding-top:clamp(1.5rem,4vh,2.5rem)}.projects__item{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,var(--projects-app-w));align-items:center;gap:clamp(2rem,6vw,5rem);width:100%}.projects__item--reverse{grid-template-columns:minmax(0,var(--projects-app-w)) minmax(0,1fr)}.projects__item--reverse .projects__copy{order:2}.projects__item--reverse .projects__showcase-media{order:1}.projects__copy{display:flex;flex-direction:column;gap:clamp(1rem,2.5vw,1.5rem);min-width:0}.projects__title-row{display:flex;align-items:flex-start;gap:.75rem}.projects__item-title{margin:0;flex:1;min-width:0;font-size:clamp(.8125rem,1.45vw,.9375rem);font-weight:600;line-height:1.35;letter-spacing:.02em;text-transform:uppercase;color:var(--text-soft)}.projects__github{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;color:var(--text-soft);transition:color var(--t-fast) var(--ease-out)}.projects__github:hover{color:var(--text)}.projects__skills{display:flex;flex-direction:column;gap:.85rem}.projects__skills-label{margin:0;font-size:clamp(.6875rem,1.25vw,.8125rem);font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--text-faint)}.projects__skills-list{display:flex;flex-wrap:wrap;gap:.65rem;margin:0;padding:0;list-style:none}.projects__skill{display:inline-flex;align-items:center;justify-content:center;width:3.25rem;height:3.25rem;border-radius:50%;background:var(--bg-raised);border:1px solid var(--line-soft);box-shadow:0 0 0 1px hsla(0,0%,100%,.03);overflow:hidden}.projects__skill svg{width:1.75rem;height:1.75rem;flex-shrink:0}.projects__showcase-media{position:relative;width:100%;max-width:var(--projects-app-w);min-height:clamp(11rem,28vw,15rem);aspect-ratio:16/10;justify-self:end;border-radius:var(--radius-lg);overflow:hidden;background:var(--bg-raised);border:1px solid var(--line-soft);box-shadow:0 0 0 1px hsla(0,0%,100%,.04),0 16px 40px rgba(0,0,0,.35)}.projects__showcase-img{-o-object-fit:cover;object-fit:cover;-o-object-position:center center;object-position:center center}.projects__item--reverse .projects__showcase-media{justify-self:start}@media (max-width:849px){.projects__item,.projects__item--reverse{grid-template-columns:1fr;gap:2rem}.projects__item--reverse .projects__copy,.projects__item--reverse .projects__showcase-media{order:unset}.projects__showcase-media{justify-self:center;max-width:100%}.projects__item-desc{max-width:none}}.gallery{position:relative;padding-block:clamp(4rem,10vh,7rem);overflow:hidden}.gallery__ring{position:absolute;top:50%;left:0;z-index:0;width:var(--gallery-ring-size);height:var(--gallery-ring-size);pointer-events:none;transform:translate(-52%,-50%)}.gallery__ring svg{width:100%;height:100%}.gallery__ring circle{fill:none;stroke:var(--gallery-ring-line)}.gallery__body,.gallery__rail{position:relative;z-index:1}.gallery__header{margin-bottom:clamp(1.5rem,4vh,2.5rem)}.gallery__grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(.85rem,2.2vw,1.35rem);width:100%}.gallery__card{position:relative;margin:0}.gallery__card-plate{position:absolute;inset:0;z-index:0;background:rgba(0,0,0,.42);transform:translate(5px,7px);pointer-events:none}.gallery__card-media,.gallery__card-plate{border-radius:var(--radius-lg);border:1px solid var(--line-soft)}.gallery__card-media{position:relative;z-index:1;aspect-ratio:var(--gallery-card-ratio);overflow:hidden;background:var(--bg-raised);box-shadow:0 0 0 1px hsla(0,0%,100%,.04)}.gallery__card-img{-o-object-fit:cover;object-fit:cover;-o-object-position:center;object-position:center}@media (max-width:849px){.gallery__grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:549px){.gallery__grid{grid-template-columns:minmax(0,1fr);max-width:22rem;margin-inline:auto}.gallery__ring{transform:translate(-58%,-42%)}}.contact{position:relative;margin-top:clamp(2rem,6vh,4rem);padding-block:clamp(4rem,11vh,7rem);overflow:hidden;border-radius:9rem 9rem 0 0;background:var(--bg-raised);border-top:1px solid var(--line-soft)}@media (max-width:849px){.contact{border-radius:5rem 5rem 0 0}}.contact__ring{position:absolute;z-index:0;width:var(--contact-ring-size);height:var(--contact-ring-size);pointer-events:none}.contact__ring svg{width:100%;height:100%}.contact__ring circle{fill:none;stroke:var(--contact-ring-line)}.contact__ring--bl{bottom:0;left:0;transform:translate(-48%,42%)}.contact__ring--br{bottom:0;right:0;transform:translate(48%,38%)}.contact__rail{position:relative;z-index:1}.contact__body{gap:clamp(3rem,8vh,5rem)}.contact__body,.contact__main{display:flex;flex-direction:column;align-items:center}.contact__main{gap:clamp(1.25rem,3vh,2rem);width:100%;text-align:center}.contact__heading{margin:0;max-width:20ch;font-size:clamp(1.75rem,5.5vw,3rem);font-weight:700;line-height:1.1;letter-spacing:-.03em;color:var(--text)}.contact__actions{display:flex;flex-wrap:wrap;gap:.85rem}.contact__actions,.contact__cv{align-items:center;justify-content:center}.contact__cv{display:inline-flex;padding:.8rem 2.25rem;border-radius:var(--radius-pill);background:var(--snow);color:var(--ink);font-size:.75rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;text-decoration:none;transition:opacity var(--t-fast) var(--ease-out)}.contact__cv:hover{opacity:.9}.contact__links{display:flex;flex-wrap:wrap;gap:.65rem;margin:0;padding:0;list-style:none}.contact__link,.contact__links{align-items:center;justify-content:center}.contact__link{display:inline-flex;width:3rem;height:3rem;border-radius:50%;background:var(--snow);color:var(--ink);text-decoration:none;transition:transform var(--t-fast) var(--ease-out),opacity var(--t-fast) var(--ease-out)}.contact__link:hover{opacity:.92;transform:translateY(-1px)}.contact__bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:1rem;width:100%;padding-top:clamp(1.5rem,4vh,2.5rem);border-top:1px solid var(--line-soft)}.contact__copy{margin:0;font-size:.75rem;color:var(--text-faint);letter-spacing:.02em}@media (max-width:849px){.contact__bar{flex-direction:column;align-items:center;text-align:center}.contact__heading{max-width:16ch}}.visible{visibility:visible}.relative{position:relative}.z-\[1\]{z-index:1}.z-main{z-index:var(--z-main)}.block{display:block}.flex{display:flex}.hidden{display:none}.h-9{height:2.25rem}.min-h-screen{min-height:100vh}.w-auto{width:auto}.w-full{width:100%}.shrink-0{flex-shrink:0}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.list-none{list-style-type:none}.flex-col{flex-direction:column}.items-center{align-items:center}.gap-0{gap:0}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-2\.5{gap:.625rem}.gap-3{gap:.75rem}.rounded-pill{border-radius:var(--radius-pill)}.bg-pill-on{background-color:var(--pill-on)}.p-0{padding:0}.p-1{padding:.25rem}.px-4{padding-left:1rem;padding-right:1rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.text-\[11px\]{font-size:11px}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-medium{font-weight:500}.tracking-\[0\.12em\]{letter-spacing:.12em}.tracking-tight{letter-spacing:-.025em}.tracking-wide{letter-spacing:.025em}.text-dim{color:var(--text-dim)}.text-foreground{color:var(--text)}.text-soft{color:var(--text-soft)}.ring{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-base{transition-duration:var(--t-base)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.reveal{display:block;width:100%;opacity:0;transform:translateY(1.75rem)}.reveal--visible{animation:reveal-in .8s cubic-bezier(.16,1,.3,1) forwards;animation-delay:var(--reveal-delay,0ms)}@keyframes reveal-in{0%{opacity:0;transform:translateY(1.75rem)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){.reveal{opacity:1;transform:none}.reveal--visible{animation:none}}body.has-aura-cursor,body.has-aura-cursor *{cursor:none!important}.aura-cursor{position:fixed;inset:0;z-index:2147483646;pointer-events:none;overflow:visible}.aura-cursor__dot,.aura-cursor__ring{position:fixed;top:0;left:0;pointer-events:none;opacity:0;transition:opacity .25s ease;will-change:transform}.aura-cursor__dot--visible,.aura-cursor__ring--visible{opacity:1}.aura-cursor__dot{width:6px;height:6px;border-radius:50%;background:#fff;box-shadow:0 0 8px rgba(56,189,248,.85),0 0 18px rgba(56,189,248,.4);transition:opacity .25s ease,box-shadow .25s ease}.aura-cursor__dot--hover{box-shadow:0 0 10px #38bdf8,0 0 24px rgba(56,189,248,.55)}.aura-cursor__ring{width:2.5rem;height:2.5rem;border-radius:50%;border:1px solid hsla(0,0%,100%,.35);background:rgba(56,189,248,.04);box-shadow:0 0 28px rgba(56,189,248,.12);transition:opacity .25s ease,width .3s ease,height .3s ease,border-color .3s ease,background .3s ease,box-shadow .3s ease}.aura-cursor__ring--hover{width:3.25rem;height:3.25rem;border-color:rgba(56,189,248,.6);background:rgba(56,189,248,.08);box-shadow:0 0 32px rgba(56,189,248,.2)}.hover\:bg-surface-hover:hover{background-color:var(--hover)}.hover\:text-soft:hover{color:var(--text-soft)}.hover\:opacity-90:hover{opacity:.9}@media (min-width:768px){.md\:h-10{height:2.5rem}.md\:text-base{font-size:1rem;line-height:1.5rem}}@media (min-width:850px){.desktop\:flex{display:flex}.desktop\:hidden{display:none}}