@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/inter-cyrillic-ext-400-normal.BQZuk6qB.woff2) format("woff2"),url(/_astro/inter-cyrillic-ext-400-normal.DQukG94-.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/inter-cyrillic-400-normal.obahsSVq.woff2) format("woff2"),url(/_astro/inter-cyrillic-400-normal.HOLc17fK.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/inter-greek-ext-400-normal.DGGRlc-M.woff2) format("woff2"),url(/_astro/inter-greek-ext-400-normal.KugGGMne.woff) format("woff");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/inter-greek-400-normal.B4URO6DV.woff2) format("woff2"),url(/_astro/inter-greek-400-normal.q2sYcFCs.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/inter-vietnamese-400-normal.DMkecbls.woff2) format("woff2"),url(/_astro/inter-vietnamese-400-normal.Bbgyi5SW.woff) format("woff");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;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/inter-latin-ext-400-normal.C1nco2VV.woff2) format("woff2"),url(/_astro/inter-latin-ext-400-normal.77YHD8bZ.woff) format("woff");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;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/inter-latin-400-normal.C38fXH4l.woff2) format("woff2"),url(/_astro/inter-latin-400-normal.CyCys3Eg.woff) format("woff");unicode-range:U+0000-00FF,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;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/inter-cyrillic-ext-600-normal.Dfes3d0z.woff2) format("woff2"),url(/_astro/inter-cyrillic-ext-600-normal.Bcila6Z-.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/inter-cyrillic-600-normal.CWCymEST.woff2) format("woff2"),url(/_astro/inter-cyrillic-600-normal.4D_pXhcN.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/inter-greek-ext-600-normal.DRtmH8MT.woff2) format("woff2"),url(/_astro/inter-greek-ext-600-normal.B8X0CLgF.woff) format("woff");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/inter-greek-600-normal.plRanbMR.woff2) format("woff2"),url(/_astro/inter-greek-600-normal.BZpKdvQh.woff) format("woff");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/inter-vietnamese-600-normal.Cc8MFFhd.woff2) format("woff2"),url(/_astro/inter-vietnamese-600-normal.BuLX-rYi.woff) format("woff");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;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/inter-latin-ext-600-normal.D2bJ5OIk.woff2) format("woff2"),url(/_astro/inter-latin-ext-600-normal.CIVaiw4L.woff) format("woff");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;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/inter-latin-600-normal.LgqL8muc.woff2) format("woff2"),url(/_astro/inter-latin-600-normal.CiBQ2DWP.woff) format("woff");unicode-range:U+0000-00FF,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:Space Grotesk;font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/space-grotesk-vietnamese-700-normal.DMty7AZE.woff2) format("woff2"),url(/_astro/space-grotesk-vietnamese-700-normal.Duxec5Rn.woff) format("woff");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:Space Grotesk;font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/space-grotesk-latin-ext-700-normal.BQnZhY3m.woff2) format("woff2"),url(/_astro/space-grotesk-latin-ext-700-normal.HVCqSBdx.woff) format("woff");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:Space Grotesk;font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/space-grotesk-latin-700-normal.RjhwGPKo.woff2) format("woff2"),url(/_astro/space-grotesk-latin-700-normal.CwsQ-cCU.woff) format("woff");unicode-range:U+0000-00FF,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}:root{--font-body: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-heading: "Space Grotesk", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono: "SFMono-Regular", Consolas, "Liberation Mono", monospace;--color-primary: #0e3746;--color-primary-strong: #092b35;--color-background: #f4f2ec;--color-surface: #ffffff;--color-surface-muted: #eae8dc;--color-accent: #be2623;--color-text: #0e3746;--color-text-muted: #5f6b70;--color-dark-background: #071a22;--color-dark-surface: #0e3746;--color-dark-text: #f4f2ec;--color-dark-text-muted: #b8b6ae;--color-text-inverse: #ffffff;--color-on-primary: #ffffff;--color-border: rgb(14 55 70 / .16);--color-border-strong: rgb(14 55 70 / .28);--color-primary-soft: color-mix(in srgb, var(--color-primary) 16%, var(--color-surface) 84%);--color-primary-softer: color-mix(in srgb, var(--color-primary) 8%, var(--color-surface) 92%);--color-surface-overlay: rgb(255 255 255 / .82);--color-surface-glass: rgb(255 255 255 / .18);--color-surface-glass-border: rgb(255 255 255 / .44);--color-surface-highlight: rgb(255 255 255 / .12);--color-overlay: rgb(7 26 34 / .72);--color-video-surface: #071a22;--color-glow: rgb(14 55 70 / .14);--color-shadow-rgb: 14 55 70;--color-hero-glow-start: color-mix(in srgb, var(--color-primary) 12%, transparent);--color-hero-glow-end: color-mix(in srgb, var(--color-accent) 8%, transparent);--color-platform-youtube: var(--color-accent);--color-platform-docs: color-mix(in srgb, var(--color-primary) 82%, var(--color-text-inverse) 18%);--color-platform-github: color-mix(in srgb, var(--color-primary) 48%, var(--color-accent) 52%);--color-platform-unity: var(--color-primary-strong);--color-focus-ring: color-mix(in srgb, var(--color-primary) 72%, var(--color-text-inverse) 28%);--shadow-surface: 0 18px 50px rgb(var(--color-shadow-rgb) / .08);--shadow-card: 0 18px 44px rgb(var(--color-shadow-rgb) / .07);--shadow-frame: 0 28px 80px rgb(var(--color-shadow-rgb) / .11);--shadow-float: 0 10px 24px rgb(var(--color-shadow-rgb) / .14);--shadow-float-strong: 0 16px 32px rgb(var(--color-shadow-rgb) / .18);--shadow-toolbar: 0 10px 26px rgb(var(--color-shadow-rgb) / .05);--shadow-tooltip: 0 8px 18px rgb(var(--color-shadow-rgb) / .08);--shadow-panel: 0 12px 30px rgb(var(--color-shadow-rgb) / .05);--shadow-panel-strong: 0 18px 40px rgb(var(--color-shadow-rgb) / .08);--shadow-panel-soft: 0 10px 24px rgb(var(--color-shadow-rgb) / .04);--radius: 24px;--container: 1120px}:root[data-theme=dark]{--color-primary: color-mix(in srgb, #0e3746 34%, #f4f2ec 66%);--color-primary-strong: color-mix(in srgb, #0e3746 22%, #f4f2ec 78%);--color-background: var(--color-dark-background);--color-surface: var(--color-dark-surface);--color-surface-muted: rgb(244 242 236 / .08);--color-text: var(--color-dark-text);--color-text-muted: var(--color-dark-text-muted);--color-text-inverse: var(--color-dark-text);--color-on-primary: var(--color-dark-background);--color-border: rgb(244 242 236 / .16);--color-border-strong: rgb(244 242 236 / .26);--color-primary-soft: color-mix(in srgb, var(--color-primary) 32%, var(--color-surface) 68%);--color-primary-softer: color-mix(in srgb, var(--color-primary) 18%, var(--color-surface) 82%);--color-surface-overlay: rgb(14 55 70 / .82);--color-surface-glass: rgb(244 242 236 / .1);--color-surface-glass-border: rgb(244 242 236 / .24);--color-surface-highlight: rgb(244 242 236 / .14);--color-overlay: rgb(7 26 34 / .76);--color-video-surface: #071a22;--color-glow: rgb(244 242 236 / .08);--color-shadow-rgb: 7 26 34;--color-hero-glow-start: color-mix(in srgb, var(--color-primary) 18%, transparent);--color-hero-glow-end: color-mix(in srgb, var(--color-accent) 10%, transparent);--color-platform-docs: color-mix(in srgb, var(--color-primary) 50%, var(--color-text-inverse) 50%);--color-platform-github: color-mix(in srgb, var(--color-primary) 42%, var(--color-accent) 58%);--shadow-surface: 0 18px 50px rgb(var(--color-shadow-rgb) / .34);--shadow-card: 0 18px 44px rgb(var(--color-shadow-rgb) / .3);--shadow-frame: 0 28px 80px rgb(var(--color-shadow-rgb) / .38);--shadow-float: 0 10px 24px rgb(var(--color-shadow-rgb) / .28);--shadow-float-strong: 0 16px 32px rgb(var(--color-shadow-rgb) / .32);--shadow-toolbar: 0 10px 26px rgb(var(--color-shadow-rgb) / .24);--shadow-tooltip: 0 8px 18px rgb(var(--color-shadow-rgb) / .3);--shadow-panel: 0 12px 30px rgb(var(--color-shadow-rgb) / .24);--shadow-panel-strong: 0 18px 40px rgb(var(--color-shadow-rgb) / .3);--shadow-panel-soft: 0 10px 24px rgb(var(--color-shadow-rgb) / .22)}*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.reveal,:root.has-scroll-reveal-fallback .reveal,:root.has-scroll-reveal-fallback .reveal.is-revealed{animation:none!important;opacity:1!important;transform:none!important;filter:none!important;transition:none!important;will-change:auto!important}}body{margin:0;min-height:100vh;background:radial-gradient(circle at top left,var(--color-hero-glow-start),transparent 28%),radial-gradient(circle at top right,var(--color-hero-glow-end),transparent 24%),var(--color-background);color:var(--color-text);font-family:var(--font-body);line-height:1.6;transition:background-color .18s ease,color .18s ease}img{display:block;max-width:100%}.reveal{--reveal-y: 3.5rem;--reveal-scale: .98;--reveal-blur: 4px}.reveal-up{--reveal-y: 3.5rem;--reveal-scale: .975;--reveal-blur: 4px}.reveal-fade{--reveal-y: 1.75rem;--reveal-scale: 1;--reveal-blur: 2px}.reveal-scale{--reveal-y: 1.25rem;--reveal-scale: .94;--reveal-blur: 3px}.reveal-blur{--reveal-y: 2.5rem;--reveal-scale: .97;--reveal-blur: 4px}.reveal-logo{--reveal-y: .5rem;--reveal-scale: .82;--reveal-blur: 0px}@keyframes reveal-in{0%{opacity:0;transform:translate3d(0,var(--reveal-y),0) scale(var(--reveal-scale));filter:blur(var(--reveal-blur))}35%{opacity:.65;filter:blur(calc(var(--reveal-blur) * .35))}to{opacity:1;transform:translateZ(0) scale(1);filter:blur(0)}}@keyframes reveal-logo-in{0%{opacity:0;transform:translate3d(0,.5rem,0) scale(.82)}to{opacity:1;transform:translateZ(0) scale(1)}}@supports (animation-timeline: view()){.reveal{animation-name:reveal-in;animation-duration:1s;animation-timing-function:linear;animation-fill-mode:both;animation-timeline:view();animation-range-start:entry 0%;animation-range-end:cover 52%;will-change:transform,opacity,filter}.reveal-title{animation-range-start:entry 10%;animation-range-end:cover 35%}.reveal-copy{animation-range-start:entry 6%;animation-range-end:cover 34%}.reveal-card{animation-range-start:entry 4%;animation-range-end:cover 42%}.reveal-panel{animation-range-start:entry 0%;animation-range-end:cover 45%}.reveal-grid-item{animation-range-start:entry 5%;animation-range-end:cover 36%}.reveal-logo{animation-name:reveal-logo-in;animation-range-start:entry 1%;animation-range-end:cover 34%}}:root.has-scroll-reveal-fallback .reveal{opacity:0;transform:translate3d(0,var(--reveal-y),0) scale(var(--reveal-scale));filter:blur(var(--reveal-blur));transition:transform .78s cubic-bezier(.2,.8,.2,1),opacity .68s ease,filter .68s ease;will-change:transform,opacity,filter}:root.has-scroll-reveal-fallback .reveal.is-revealed{opacity:1;transform:translateZ(0) scale(1);filter:blur(0)}@media(max-width:768px){.reveal,.reveal-up{--reveal-y: 2rem;--reveal-scale: .985;--reveal-blur: 2px}.reveal-fade{--reveal-y: 1.1rem;--reveal-scale: 1;--reveal-blur: 1px}.reveal-scale{--reveal-y: .9rem;--reveal-scale: .96;--reveal-blur: 1.5px}.reveal-blur{--reveal-y: 1.5rem;--reveal-scale: .985;--reveal-blur: 2px}@supports (animation-timeline: view()){.reveal,.reveal-title,.reveal-copy,.reveal-card,.reveal-panel,.reveal-grid-item,.reveal-logo{animation-range-start:entry 0%;animation-range-end:cover 32%}}}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit}code,pre,kbd,samp{font-family:var(--font-mono)}p,h1,h2,h3,ul{margin:0}ul{padding:0;list-style:none}.skip-link{position:absolute;left:1rem;top:-3rem;z-index:10;padding:.75rem 1rem;border-radius:999px;background:var(--color-text);color:var(--color-text-inverse)}.skip-link:focus{top:1rem}a:focus-visible,button:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:3px}.container{width:min(var(--container),calc(100% - 2rem));margin:0 auto}.site-header{position:sticky;top:0;z-index:20;border-bottom:1px solid color-mix(in srgb,var(--color-border) 72%,transparent);background:color-mix(in srgb,var(--color-background) 82%,transparent);backdrop-filter:blur(14px)}.site-header__inner{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:1rem;padding:1rem 0}.site-brand{font-family:var(--font-heading);font-weight:700;letter-spacing:-.02em;font-size:clamp(1.15rem,2vw,1.45rem);line-height:1}.site-brand-group{display:flex;align-items:center;flex-wrap:wrap;gap:.75rem}.site-cv-link{display:inline-flex;align-items:center;justify-content:center;min-height:2.5rem;padding:.65rem .95rem;border:1px solid var(--color-border);border-radius:999px;background:var(--color-surface);color:var(--color-text-muted);font-size:.9rem;font-weight:600;line-height:1;transition:color .18s ease,border-color .18s ease,background-color .18s ease,transform .18s ease}.site-nav{display:flex;flex-wrap:wrap;gap:1rem;color:var(--color-text-muted)}.site-actions{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:.75rem}.site-mobile-menu{display:none}.site-mobile-menu__toggle{list-style:none}.site-mobile-menu__toggle::-webkit-details-marker{display:none}.site-nav a:hover,.site-nav a:focus-visible,.site-cv-link:hover,.site-cv-link:focus-visible,.site-brand:hover,.site-brand:focus-visible{color:var(--color-primary)}.site-cv-link:hover,.site-cv-link:focus-visible{border-color:var(--color-primary);background:var(--color-primary-softer);transform:translateY(-1px)}.theme-toggle{display:inline-flex;align-items:center;justify-content:center;min-width:2.75rem;min-height:2.75rem;padding:.5rem;border:1px solid var(--color-border);border-radius:999px;background:var(--color-surface);color:var(--color-text);cursor:pointer}.theme-toggle:hover,.theme-toggle:focus-visible{border-color:var(--color-primary);color:var(--color-primary)}.theme-toggle__icon{display:inline-flex;width:1.15rem;height:1.15rem}.theme-toggle__icon svg{width:100%;height:100%}:root[data-theme=dark] .theme-toggle__icon--dark{display:inline-flex}:root[data-theme=light] .theme-toggle__icon--dark,:root[data-theme=dark] .theme-toggle__icon--light{display:none}.theme-control{position:relative;display:inline-flex;align-items:center;justify-content:center;inline-size:2.75rem;block-size:2.75rem}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.language-switcher{display:inline-flex;align-items:center;gap:.35rem;padding:.25rem;border:1px solid var(--color-border);border-radius:999px;background:var(--color-surface)}.language-switcher__link{display:inline-flex;align-items:center;justify-content:center;padding:.45rem .7rem;border-radius:999px;color:var(--color-text-muted);font-size:.92rem;line-height:1}.language-switcher__flag{display:block;width:1.25rem;height:1.25rem;border-radius:999px;object-fit:cover}.language-switcher__link:hover,.language-switcher__link:focus-visible{color:var(--color-primary);background:var(--color-primary-softer)}.language-switcher__link--active{background:var(--color-primary);color:var(--color-on-primary);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--color-primary) 42%,transparent)}.section{padding:5rem 0}.section--muted{background:color-mix(in srgb,var(--color-surface) 70%,transparent)}.stack>*+*{margin-top:1.25rem}.eyebrow{display:inline-block;font-size:.8rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--color-primary)}h1{max-width:12ch;font-size:clamp(2.8rem,8vw,4.8rem);line-height:1.02;letter-spacing:-.04em;font-family:var(--font-heading)}h2{max-width:14ch;font-size:clamp(2rem,4vw,3rem);line-height:1.1;letter-spacing:-.03em;font-family:var(--font-heading)}#experience h2,#projects h2{margin-inline:auto;text-align:center}h3{font-size:1.2rem;line-height:1.3;font-family:var(--font-heading)}h4{font-size:1.1rem;line-height:1.3;font-family:var(--font-heading)}.lead,.copy p,.card p,.footer{color:var(--color-text-muted)}.lead{max-width:40rem;font-size:1.05rem}.lead--narrow{max-width:34rem}.hero{position:relative;overflow:hidden;min-height:clamp(28rem,82vh,46rem);display:grid;align-items:center;padding:0;isolation:isolate}.hero__media{position:absolute;inset:0;z-index:-2;transform:translate3d(0,var(--hero-bg-shift, 0px),0) scale(1.06);transform-origin:center;will-change:transform}.hero__media-picture{position:absolute;inset:0;display:block}.hero__media-image{width:100%;height:100%;object-fit:cover;object-position:center center}.hero:after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,#ffffff0f,#071a2285),linear-gradient(90deg,#071a222e,#071a227a 68%,#071a2299)}:root[data-theme=dark] .hero:after{background:linear-gradient(180deg,#071a2224,#071a22a8),linear-gradient(90deg,#071a225c,#071a229e 65%,#071a22c7)}.hero .container{position:relative;z-index:1}.hero__panel{min-height:inherit;display:grid;align-items:center;padding:clamp(2rem,5vw,3.75rem) 0}.hero__content{display:grid;gap:.75rem;max-width:min(46rem,100%);color:var(--color-text-inverse)}.hero__title{max-width:11.5ch;color:var(--color-text-inverse);text-shadow:0 14px 34px rgb(7 26 34 / .34);transform:translate3d(0,var(--hero-title-shift, 0px),0);will-change:transform}.button{display:inline-flex;align-items:center;justify-content:center;min-height:3rem;padding:.85rem 1.2rem;border-radius:999px;border:1px solid transparent;font-weight:600}.button--primary{background:var(--color-primary);color:var(--color-on-primary)}.button--primary:hover,.button--primary:focus-visible{background:var(--color-primary-strong)}.footer__nav a:hover,.footer__nav a:focus-visible{color:var(--color-primary)}.copy{max-width:44rem}.copy p+p{margin-top:1rem}.about__intro,.about__copy,.about__intro h2,.about__intro .lead{margin-inline:auto;text-align:center}.about__layout{display:grid;gap:1.5rem;align-items:center;position:relative;contain:layout paint}.about .container{width:min(var(--container),calc(100% - 5rem))}.about__body{width:100%;max-width:44rem;margin-inline:auto}.about__logo-wrap{--about-docker-shift: 0px;--about-figma-shift: 0px;--about-odoo-shift: 0px;--about-react-shift: 0px;--about-expo-shift: 0px;--about-python-shift: 0px;--about-django-shift: 0px;--about-n8n-shift: 0px;--about-node-shift: 0px;--about-codex-shift: 0px;position:relative;justify-self:center;width:clamp(8rem,34vw,12rem);transform-origin:center;will-change:transform;filter:saturate(1.08) brightness(1.08);isolation:isolate;pointer-events:none;backface-visibility:hidden;transform:translateZ(0)}.about__logo-wrap--far-left{transform:translate3d(0,var(--about-docker-shift),0) rotate(-5deg) scale(1.02)}.about__logo-wrap--top-left{transform:translate3d(0,var(--about-figma-shift),0) rotate(-6deg) scale(1.025)}.about__logo-wrap--mid-left{transform:translate3d(0,var(--about-odoo-shift),0) rotate(-3deg) scale(1.02)}.about__logo-wrap--left{transform:translate3d(0,var(--about-react-shift),0) rotate(-8deg) scale(1.035)}.about__logo-wrap--bottom-left{transform:translate3d(0,var(--about-expo-shift),0) rotate(-4deg) scale(1.02)}.about__logo-wrap--right{transform:translate3d(0,var(--about-python-shift),0) rotate(7deg) scale(1.04)}.about__logo-wrap--mid-right{transform:translate3d(0,var(--about-django-shift),0) rotate(4deg) scale(1.025);z-index:1}.about__logo-wrap--far-right{transform:translate3d(0,var(--about-n8n-shift),0) rotate(5deg) scale(1.035)}.about__logo-wrap--lower-mid-right{transform:translate3d(0,var(--about-node-shift),0) rotate(2deg) scale(1.02)}.about__logo-wrap--bottom-right{transform:translate3d(0,var(--about-codex-shift),0) rotate(3deg) scale(1.02)}.about__logo-wrap:before{content:"";position:absolute;inset:16% 18%;z-index:-1;border-radius:999px;background:color-mix(in srgb,var(--color-primary) 28%,transparent);filter:blur(24px);opacity:.78}.about__logo{width:100%;height:auto;filter:drop-shadow(0 20px 34px rgb(var(--color-shadow-rgb) / .2)) drop-shadow(0 0 22px color-mix(in srgb,var(--color-text-inverse) 18%,transparent));backface-visibility:hidden}.about[data-about-parallax-mode=static] .about__logo-wrap{will-change:auto}.about[data-about-parallax-mode=static] .about__logo-wrap:before{opacity:.42}.about__logo--react{width:58%;margin-inline:auto}.about__logo--react-dark{display:none}.about__logo--figma{filter:drop-shadow(0 24px 36px rgb(var(--color-shadow-rgb) / .22)) drop-shadow(0 0 24px color-mix(in srgb,var(--color-text-inverse) 16%,transparent))}.about__logo--figma-light,.about__logo--figma-dark{width:66%;margin-inline:auto}.about__logo--figma-dark{display:none}.about__logo--odoo{filter:drop-shadow(0 24px 36px rgb(var(--color-shadow-rgb) / .22)) drop-shadow(0 0 24px color-mix(in srgb,var(--color-text-inverse) 16%,transparent))}.about__logo--odoo-light,.about__logo--odoo-dark{width:78%;margin-inline:auto}.about__logo--odoo-dark{display:none}.about__logo--docker{filter:drop-shadow(0 24px 36px rgb(var(--color-shadow-rgb) / .22)) drop-shadow(0 0 24px color-mix(in srgb,var(--color-text-inverse) 16%,transparent))}.about__logo--docker-light,.about__logo--docker-dark{width:80%;margin-inline:auto}.about__logo--docker-dark{display:none}.about__logo--expo{filter:drop-shadow(0 24px 36px rgb(var(--color-shadow-rgb) / .22)) drop-shadow(0 0 24px color-mix(in srgb,var(--color-text-inverse) 16%,transparent))}.about__logo--expo-light,.about__logo--expo-dark{width:62%;margin-inline:auto}.about__logo--expo-dark{display:none}.about__logo--python{filter:drop-shadow(0 24px 36px rgb(var(--color-shadow-rgb) / .22)) drop-shadow(0 0 24px color-mix(in srgb,var(--color-text-inverse) 16%,transparent))}.about__logo--python-light{width:84%;margin-inline:auto}.about__logo--python-dark{display:none}.about__logo--django{filter:drop-shadow(0 24px 36px rgb(var(--color-shadow-rgb) / .22)) drop-shadow(0 0 24px color-mix(in srgb,var(--color-text-inverse) 16%,transparent))}.about__logo--django-light,.about__logo--django-dark{width:54%;margin-inline:auto}.about__logo--django-dark{display:none}.about__logo--n8n{filter:drop-shadow(0 26px 40px rgb(var(--color-shadow-rgb) / .24)) drop-shadow(0 0 28px color-mix(in srgb,var(--color-text-inverse) 18%,transparent))}.about__logo--n8n-light{width:68%;margin-inline:auto}.about__logo--n8n-dark{display:none}.about__logo--n8n-dark,.about__logo--n8n-light{width:68%;margin-inline:auto}.about__logo--node{filter:drop-shadow(0 24px 36px rgb(var(--color-shadow-rgb) / .22)) drop-shadow(0 0 24px color-mix(in srgb,var(--color-text-inverse) 16%,transparent))}.about__logo--node-light,.about__logo--node-dark{width:62%;margin-inline:auto}.about__logo--node-dark{display:none}.about__logo--codex{filter:drop-shadow(0 26px 40px rgb(var(--color-shadow-rgb) / .24)) drop-shadow(0 0 28px color-mix(in srgb,var(--color-text-inverse) 18%,transparent))}.about__logo--codex-light,.about__logo--codex-dark{width:64%;margin-inline:auto}.about__logo--codex-dark{display:none}:root[data-theme=dark] .about__logo--react-light{display:none}:root[data-theme=dark] .about__logo--react-dark{display:block}:root[data-theme=dark] .about__logo--docker-light{display:none}:root[data-theme=dark] .about__logo--docker-dark{display:block}:root[data-theme=dark] .about__logo--figma-light{display:none}:root[data-theme=dark] .about__logo--figma-dark{display:block}:root[data-theme=dark] .about__logo--odoo-light{display:none}:root[data-theme=dark] .about__logo--odoo-dark{display:block}:root[data-theme=dark] .about__logo--expo-light{display:none}:root[data-theme=dark] .about__logo--expo-dark{display:block}:root[data-theme=dark] .about__logo--python-light{display:none}:root[data-theme=dark] .about__logo--python-dark{display:block}:root[data-theme=dark] .about__logo--django-light{display:none}:root[data-theme=dark] .about__logo--django-dark{display:block}:root[data-theme=dark] .about__logo--n8n-light{display:none}:root[data-theme=dark] .about__logo--n8n-dark{display:block}:root[data-theme=dark] .about__logo--node-light{display:none}:root[data-theme=dark] .about__logo--node-dark{display:block}:root[data-theme=dark] .about__logo--codex-light{display:none}:root[data-theme=dark] .about__logo--codex-dark{display:block}.projects-grid,.contact-grid{display:grid;gap:1rem}.contact-grid{gap:1.75rem;align-items:start}.card{padding:1.5rem;border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);box-shadow:var(--shadow-surface)}.card>*+*{margin-top:.85rem}.contact-copy{display:grid;gap:1.8rem;align-content:start}.contact-copy .stack>*+*{margin-top:.95rem}.contact-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;width:100%;max-width:none;justify-items:stretch;align-items:stretch}.contact-list__item{margin:0;width:100%}.contact-list__link{display:flex;align-items:center;justify-content:center;width:100%;aspect-ratio:1;min-height:6.25rem;padding:1rem;border:1px solid color-mix(in srgb,var(--color-border) 84%,transparent);border-radius:1.35rem;background:transparent;box-shadow:none;transition:border-color .18s ease,background-color .18s ease,transform .18s ease,color .18s ease,box-shadow .18s ease}.contact-list__link:hover,.contact-list__link:focus-visible{transform:translateY(-2px);box-shadow:var(--shadow-float)}.contact-list__link[data-contact=email]:hover,.contact-list__link[data-contact=email]:focus-visible{border-color:color-mix(in srgb,var(--color-accent) 74%,var(--color-primary) 26%);background:linear-gradient(135deg,color-mix(in srgb,var(--color-accent) 78%,var(--color-primary) 22%),var(--color-accent))}.contact-list__link[data-contact=linkedin]:hover,.contact-list__link[data-contact=linkedin]:focus-visible{border-color:#2563eb;background:linear-gradient(135deg,#2563eb,#1d4ed8)}.contact-list__link[data-contact=instagram]:hover,.contact-list__link[data-contact=instagram]:focus-visible{border-color:#db2777;background:linear-gradient(135deg,#f97316,#db2777 48%,#7c3aed)}.contact-list__link[data-contact=whatsapp]:hover,.contact-list__link[data-contact=whatsapp]:focus-visible{border-color:#16a34a;background:linear-gradient(135deg,#22c55e,#16a34a)}.contact-list__link:hover .contact-list__icon,.contact-list__link:focus-visible .contact-list__icon{color:var(--color-text-inverse)}.contact-list__icon{display:inline-flex;align-items:center;justify-content:center;width:3.35rem;height:3.35rem;color:var(--color-primary);margin:auto;transition:color .18s ease}.contact-list__icon svg{width:100%;height:100%}.contact-form{display:grid;gap:1.2rem;padding:1.75rem;border-radius:1.5rem;box-shadow:var(--shadow-panel-strong)}.contact-form__fields{display:grid;gap:1rem}.contact-form__field{display:grid;gap:.45rem}.contact-form__field span{font-size:.9rem;font-weight:600;color:var(--color-text)}.contact-form__field input,.contact-form__field textarea{width:100%;padding:1rem 1.1rem;border:1px solid color-mix(in srgb,var(--color-border) 86%,transparent);border-radius:1rem;background:color-mix(in srgb,var(--color-surface) 96%,transparent);color:var(--color-text);font:inherit;resize:vertical;transition:border-color .18s ease,box-shadow .18s ease,background-color .18s ease}.contact-form__field input::placeholder,.contact-form__field textarea::placeholder{color:var(--color-text-muted)}.contact-form__field input:focus,.contact-form__field textarea:focus{outline:none;border-color:var(--color-primary);background:var(--color-surface);box-shadow:0 0 0 4px color-mix(in srgb,var(--color-primary) 14%,transparent)}.contact-form__field textarea{min-height:11rem}.projects-grid{gap:1.5rem}.project-card{display:grid;gap:1.4rem;padding:0;border:0;border-radius:0;background:transparent;box-shadow:var(--shadow-card);overflow:clip}.project-card__media-shell{position:relative;padding:1.35rem 1.35rem 0}.project-card__visual{position:relative;width:min(100%,680px);margin-inline:auto}.project-card__visual-frame{--project-shape: polygon(3% 7%, 100% 0%, 97% 93%, 0% 100%);position:relative;aspect-ratio:16 / 9;overflow:hidden;clip-path:var(--project-shape);background:var(--color-primary);padding:2px;box-shadow:var(--shadow-frame),0 0 32px var(--color-glow)}.project-card--reverse .project-card__visual-frame{--project-shape: polygon(0% 0%, 97% 7%, 100% 100%, 3% 93%)}.project-card__visual-frame:before{content:"";position:absolute;inset:0;clip-path:inherit;z-index:2;pointer-events:none;border:1px solid var(--color-primary)}.project-card__visual-media{position:relative;width:100%;height:100%;overflow:hidden;clip-path:inherit;background:color-mix(in srgb,var(--color-surface-muted) 92%,transparent)}.project-card__visual-media:after{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;background:linear-gradient(180deg,var(--color-surface-highlight),transparent 26%);opacity:.42}.project-card__play{position:absolute;left:50%;top:50%;z-index:2;display:inline-flex;align-items:center;justify-content:center;width:4.25rem;height:4.25rem;padding:0;border:1px solid var(--color-primary);border-radius:999px;background:var(--color-surface);color:var(--color-primary);box-shadow:var(--shadow-float),inset 0 0 0 1px var(--color-surface-highlight);opacity:1;transform:translate(-50%,-50%) scale(.94);transition:opacity .18s ease,transform .22s ease,background-color .18s ease,border-color .18s ease,box-shadow .18s ease;cursor:pointer;appearance:none}.project-card__play-icon{display:inline-flex;align-items:center;justify-content:center;width:1.2rem;height:1.2rem;margin-left:.14rem}.project-card__play-icon svg{width:100%;height:100%}.project-card__visual:hover .project-card__play,.project-card__visual:focus-within .project-card__play,.project-card__play:hover,.project-card__play:focus-visible{opacity:1;transform:translate(-50%,-50%) scale(1);background:var(--color-primary);color:var(--color-on-primary);border-color:var(--color-primary);box-shadow:var(--shadow-float-strong),inset 0 0 0 1px var(--color-surface-highlight)}.project-card__image{width:100%;height:100%;object-fit:cover;object-position:center top;background:var(--color-surface-muted)}.project-card__image--fallback{display:flex;align-items:flex-end;height:100%;padding:1.5rem;color:var(--color-text-inverse);background:color-mix(in srgb,var(--color-text) 82%,var(--color-surface) 18%)}.project-card__fallback-title{max-width:8ch;font-size:clamp(2rem,5vw,3.6rem);font-weight:700;line-height:.94;letter-spacing:-.05em}.project-card__content{display:grid;gap:.9rem;padding:1.6rem 1.35rem 1.35rem}.project-card__content h3{max-width:10ch;font-size:clamp(2rem,5vw,3.3rem);line-height:.95;letter-spacing:-.06em;font-family:var(--font-heading);font-weight:700}.project-card__content p{max-width:34rem;font-size:1rem;line-height:1.8}.badge-list{display:flex;flex-wrap:wrap;gap:.45rem;padding:0;list-style:none}.badge-list li{padding:.4rem .72rem;border:1px solid color-mix(in srgb,var(--color-border) 84%,transparent);border-radius:999px;background:color-mix(in srgb,var(--color-surface-muted) 78%,transparent);color:var(--color-text);font-size:.8rem;font-weight:600;line-height:1;font-family:var(--font-mono)}.badge-list--compact{gap:.4rem}.project-card__links{display:flex;flex-wrap:wrap;gap:0;align-items:center;width:fit-content;margin-top:.35rem;border:1px solid color-mix(in srgb,var(--color-border) 82%,transparent);background:color-mix(in srgb,var(--color-surface) 94%,transparent);box-shadow:var(--shadow-toolbar)}.project-card__external-links{display:grid;gap:.45rem;margin-top:.55rem}.project-card__external-links a{color:var(--color-primary);font-size:.96rem;font-weight:600;line-height:1.4;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.16em}.project-card__external-links a:hover,.project-card__external-links a:focus-visible{color:var(--color-primary-strong)}.project-card__link{--project-link-hover: var(--color-primary);position:relative;display:inline-flex;align-items:center;justify-content:center;width:3.65rem;height:3.05rem;color:var(--color-text-muted);border-right:1px solid color-mix(in srgb,var(--color-border) 82%,transparent);transition:color .18s ease,background-color .18s ease,transform .18s ease}.project-card__link:last-child{border-right:0}.project-card__link:hover,.project-card__link:focus-visible{color:var(--color-text-inverse);background:var(--project-link-hover);transform:translateY(-1px)}.project-card__link[data-kind=youtube]{--project-link-hover: #ff3b30}.project-card__link[data-kind=docs]{--project-link-hover: #2563eb}.project-card__link[data-kind=github]{--project-link-hover: #7c3aed}.project-card__link[data-kind=unityWebgl]{--project-link-hover: var(--color-primary)}.project-card__link:after{content:attr(data-label);position:absolute;left:50%;top:calc(100% + .45rem);padding:.25rem .45rem;border:1px solid color-mix(in srgb,var(--color-border) 86%,transparent);background:var(--color-surface);color:var(--color-text);font-size:.72rem;font-weight:600;line-height:1;white-space:nowrap;opacity:0;pointer-events:none;transform:translate(-50%,-.2rem);transition:opacity .16s ease,transform .16s ease;box-shadow:var(--shadow-tooltip)}.project-card__link:hover:after,.project-card__link:focus-visible:after{opacity:1;transform:translate(-50%)}.project-card__link-icon{display:inline-flex;align-items:center;justify-content:center;width:1.3rem;height:1.3rem}.project-card__link-icon svg{width:100%;height:100%}.project-card__link-image{width:100%;height:100%;object-fit:contain;transition:none}:root[data-theme=light] .project-card__link[data-kind=unityWebgl] .project-card__link-image{filter:brightness(0) saturate(100%) invert(38%) sepia(9%) saturate(562%) hue-rotate(176deg) brightness(91%) contrast(86%)}:root[data-theme=dark] .project-card__link[data-kind=unityWebgl] .project-card__link-image,:root[data-theme=light] .project-card__link[data-kind=unityWebgl]:hover .project-card__link-image,:root[data-theme=light] .project-card__link[data-kind=unityWebgl]:focus-visible .project-card__link-image{filter:brightness(0) invert(1)}.experience-toggle{display:grid;gap:1rem}.experience-toggle__mobile-nav{display:none}.experience-toggle__tabs{display:flex;gap:.55rem;overflow-x:auto;padding-bottom:.2rem;scrollbar-width:thin}.experience-toggle__tab{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;min-height:2.55rem;padding:.65rem .9rem;border:1px solid color-mix(in srgb,var(--color-border) 86%,transparent);border-radius:999px;background:color-mix(in srgb,var(--color-surface) 94%,transparent);color:var(--color-text-muted);font-size:.9rem;font-weight:600;line-height:1.15;cursor:pointer;transition:color .18s ease,border-color .18s ease,background-color .18s ease,transform .18s ease}.experience-toggle__tab:hover,.experience-toggle__tab:focus-visible{color:var(--color-primary);border-color:var(--color-primary);background:var(--color-primary-softer)}.experience-toggle__tab--active{background:var(--color-primary);border-color:var(--color-primary);color:var(--color-on-primary)}.experience-toggle__panels{position:relative}.experience-toggle__panel{display:grid;gap:.85rem;padding:1rem;border:1px solid color-mix(in srgb,var(--color-border) 84%,transparent);border-radius:calc(var(--radius) - 6px);background:color-mix(in srgb,var(--color-surface) 94%,transparent);box-shadow:var(--shadow-panel)}.experience-toggle__panel[hidden]{display:none}.experience-toggle__panel--active{animation:experience-panel-in .22s cubic-bezier(.18,.75,.25,1)}.experience-toggle__panel--primary{border-color:color-mix(in srgb,var(--color-primary) 32%,var(--color-border) 68%);background:linear-gradient(180deg,color-mix(in srgb,var(--color-surface) 95%,var(--color-primary) 5%),var(--color-surface)),var(--color-surface);box-shadow:var(--shadow-panel-strong)}.experience-toggle__panel--compact{box-shadow:var(--shadow-panel-soft)}.experience-toggle__entry{display:grid;gap:.7rem;padding:.9rem 0;border-top:1px solid color-mix(in srgb,var(--color-border) 78%,transparent)}.experience-toggle__entry:first-child{padding-top:0;border-top:0}.experience-toggle__entry-top{display:grid;gap:.5rem}.experience-toggle__entry-heading{display:grid;gap:.18rem}.experience-toggle__entry-heading h3{font-size:1.02rem;line-height:1.25}.experience-toggle__entry-subtitle,.experience-toggle__entry-summary,.experience-toggle__highlights{color:var(--color-text-muted)}.experience-toggle__entry-subtitle{font-size:.93rem}.experience-toggle__entry-meta{display:flex;flex-wrap:wrap;gap:.65rem;font-size:.82rem;font-weight:600;color:var(--color-text)}.experience-toggle__entry-summary{margin:0;max-width:60rem}.experience-toggle__highlights{display:flex;flex-wrap:wrap;gap:.45rem .9rem;font-size:.9rem}.experience-toggle__highlights li{position:relative;padding-left:.8rem}.experience-toggle__highlights li:before{content:"";position:absolute;left:0;top:.5rem;width:.28rem;height:.28rem;border-radius:999px;background:var(--color-primary)}@keyframes experience-panel-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.video-modal{width:min(100%,92vw);max-width:1120px;padding:0;border:0;background:transparent;color:var(--color-text)}.video-modal::backdrop{background:var(--color-overlay);backdrop-filter:blur(10px)}.video-modal__surface{display:grid;gap:1rem;padding:1rem;border:1px solid color-mix(in srgb,var(--color-border) 74%,transparent);border-radius:calc(var(--radius) - 2px);background:color-mix(in srgb,var(--color-surface) 96%,transparent);box-shadow:var(--shadow-surface)}.video-modal__header{display:flex;align-items:center;justify-content:space-between;gap:1rem}.video-modal__title{font-size:.95rem;font-weight:600;color:var(--color-text);font-family:var(--font-heading)}.video-modal__close{display:inline-flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;padding:0;border:1px solid var(--color-border);border-radius:999px;background:var(--color-surface);color:var(--color-text-muted);cursor:pointer}.video-modal__close:hover,.video-modal__close:focus-visible{color:var(--color-primary);border-color:color-mix(in srgb,var(--color-primary) 42%,var(--color-border) 58%)}.video-modal__close span{font-size:1.5rem;line-height:1}.video-modal__frame{overflow:hidden;aspect-ratio:16 / 9;border-radius:calc(var(--radius) - 8px);background:var(--color-video-surface);box-shadow:inset 0 0 0 1px var(--color-surface-highlight)}.video-modal__frame iframe{display:block;width:100%;height:100%;border:0}.video-modal__frame iframe[hidden]{display:none}.video-modal__fallback{display:grid;gap:1rem;align-items:center;justify-items:center;min-height:100%;padding:1rem;text-align:center}.video-modal__poster{width:min(100%,48rem);aspect-ratio:16 / 9;object-fit:cover;border-radius:calc(var(--radius) - 12px);border:1px solid color-mix(in srgb,var(--color-border) 76%,transparent)}.video-modal__fallback-copy{display:grid;gap:.9rem;justify-items:center}.video-modal__fallback-text{max-width:36rem;color:var(--color-text-muted)}.footer{padding:2rem 0 3rem}.footer__inner{display:flex;flex-direction:column;gap:1rem;border-top:1px solid var(--color-border);padding-top:1.5rem}.footer__nav{display:flex;flex-wrap:wrap;gap:1rem}#home,#about,#experience,#projects,#contact{scroll-margin-top:5.5rem}html.has-dialog-open,html.has-dialog-open body{overflow:hidden}@media(min-width:760px){.about__layout{display:block;min-height:18rem}.about__logo-wrap{position:absolute;left:clamp(-5rem,-2vw,-1.5rem);top:50%;width:clamp(10rem,18vw,14rem)}.about__logo-wrap--far-left{left:clamp(-9rem,-7vw,-5rem);top:40%;width:clamp(7.5rem,11.5vw,9.75rem);transform:translate3d(0,calc(-50% + var(--about-docker-shift)),0) rotate(-5deg) scale(1.02)}.about__logo-wrap--top-left{left:clamp(-6rem,-3vw,-2rem);top:10%;width:clamp(7.5rem,12vw,10rem);transform:translate3d(0,calc(-50% + var(--about-figma-shift)),0) rotate(-6deg) scale(1.025)}.about__logo-wrap--mid-left{left:clamp(-8.5rem,-6vw,-4.5rem);top:69%;width:clamp(7.5rem,11vw,9.5rem);transform:translate3d(0,calc(-50% + var(--about-odoo-shift)),0) rotate(-3deg) scale(1.02)}.about__logo-wrap--left{transform:translate3d(0,calc(-50% + var(--about-react-shift)),0) rotate(-8deg) scale(1.035)}.about__logo-wrap--bottom-left{left:clamp(-5.5rem,-2vw,-1.75rem);top:90%;width:clamp(7.5rem,11vw,9.5rem);transform:translate3d(0,calc(-50% + var(--about-expo-shift)),0) rotate(-4deg) scale(1.02)}.about__logo-wrap--right{left:auto;right:clamp(-4.5rem,-2vw,-1.25rem);transform:translate3d(0,calc(-50% + var(--about-python-shift)),0) rotate(7deg) scale(1.04)}.about__logo-wrap--mid-right{left:auto;right:clamp(-10.5rem,-7vw,-6rem);top:33%;width:clamp(8.5rem,12vw,10.75rem);transform:translate3d(0,calc(-50% + var(--about-django-shift)),0) rotate(4deg) scale(1.025)}.about__logo-wrap--far-right{left:auto;right:clamp(-9rem,-5vw,-4rem);top:10%;width:clamp(8rem,13vw,10.75rem);transform:translate3d(0,calc(-50% + var(--about-n8n-shift)),0) rotate(5deg) scale(1.02)}.about__logo-wrap--lower-mid-right{left:auto;right:clamp(-12rem,-8vw,-7rem);top:62%;width:clamp(8rem,11.5vw,10rem);transform:translate3d(0,calc(-50% + var(--about-node-shift)),0) rotate(2deg) scale(1.02)}.about__logo-wrap--bottom-right{left:auto;right:clamp(-11rem,-7vw,-5rem);top:90%;width:clamp(7.5rem,11vw,9.75rem);transform:translate3d(0,calc(-50% + var(--about-codex-shift)),0) rotate(3deg) scale(1.02)}.about__body{max-width:46rem}.contact-grid{grid-template-columns:minmax(0,.92fr) minmax(22rem,1.08fr)}.experience-toggle__entry-top{grid-template-columns:minmax(0,1fr) auto;align-items:start}.project-card{grid-template-columns:minmax(0,1.15fr) minmax(18rem,.85fr);align-items:start}.project-card--reverse{grid-template-columns:minmax(18rem,.85fr) minmax(0,1.15fr)}.project-card__media-shell{padding:1.45rem 0 1.45rem 1.45rem}.project-card--reverse .project-card__media-shell{order:2;padding:1.45rem 1.45rem 1.45rem 0;display:flex;justify-content:flex-end}.project-card__content{padding:1.45rem 1.45rem 1.45rem .4rem}.project-card--reverse .project-card__content{order:1;padding:1.45rem .4rem 1.45rem 1.45rem}.project-card__visual-frame{aspect-ratio:1.28 / 1}}@media(min-width:980px){.site-header__inner{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:center;column-gap:1.5rem}.site-brand{justify-self:start}.site-actions{justify-self:end;flex-wrap:nowrap}.projects-grid{gap:1.7rem}.contact-grid{gap:2.5rem}.contact-copy{padding-right:1.5rem}.contact-list{max-width:none}.contact-list__link{min-height:7rem;border-radius:1.45rem}.contact-list__icon{width:3.75rem;height:3.75rem}.contact-form{min-height:100%}.footer__inner{flex-direction:row;justify-content:space-between;align-items:center}}@media(max-width:1024px){.about__logo-wrap{filter:saturate(1.03) brightness(1.03)}.about__logo-wrap:before{inset:18% 20%;filter:blur(16px);opacity:.56}.about__logo{filter:drop-shadow(0 12px 20px rgb(var(--color-shadow-rgb) / .14)) drop-shadow(0 0 12px color-mix(in srgb,var(--color-text-inverse) 10%,transparent))}}@media(max-width:759px){.about__layout{grid-template-columns:repeat(10,minmax(0,1fr));gap:.6rem .25rem;align-items:start;margin-top:-4.35rem}.about__body{grid-column:1 / -1;grid-row:3;max-width:none;width:100%;margin-top:.55rem;margin-bottom:1rem}.about__logo-wrap{width:clamp(4.35rem,18vw,5.9rem);margin-bottom:0;filter:none;will-change:auto}.about__logo-wrap:before{inset:24%;filter:blur(8px);opacity:.34}.about__logo-wrap--far-left{grid-column:2 / span 2;grid-row:1;transform:translate3d(3.8rem,calc(-.3rem + var(--about-docker-shift)),0)}.about__logo-wrap--top-left{grid-column:2 / span 2;grid-row:2;transform:translate3d(0,calc(-.55rem + var(--about-figma-shift)),0)}.about__logo-wrap--mid-left{grid-column:7 / span 2;grid-row:1;transform:translate3d(-1rem,calc(.65rem + var(--about-odoo-shift)),0)}.about__logo-wrap--left{grid-column:5 / span 2;grid-row:2;transform:translate3d(0,calc(-.15rem + var(--about-react-shift)),0)}.about__logo-wrap--bottom-left{grid-column:8 / span 2;grid-row:2;transform:translate3d(0,calc(-.55rem + var(--about-expo-shift)),0)}.about__logo-wrap--right{grid-column:2 / span 2;grid-row:5;transform:translate3d(0,calc(.55rem + var(--about-python-shift)),0)}.about__logo-wrap--mid-right{grid-column:4 / span 2;grid-row:4;transform:translate3d(0,calc(-.15rem + var(--about-django-shift)),0)}.about__logo-wrap--far-right{grid-column:5 / span 2;grid-row:5;transform:translate3d(0,calc(.15rem + var(--about-n8n-shift)),0)}.about__logo-wrap--lower-mid-right{grid-column:6 / span 2;grid-row:4;transform:translate3d(0,calc(-.15rem + var(--about-node-shift)),0)}.about__logo-wrap--bottom-right{grid-column:8 / span 2;grid-row:5;transform:translate3d(0,calc(.55rem + var(--about-codex-shift)),0)}.about[data-about-parallax-mode=static] .about__logo-wrap--far-left{transform:translate3d(3.8rem,-.3rem,0)}.about[data-about-parallax-mode=static] .about__logo-wrap--top-left{transform:translate3d(0,-.55rem,0)}.about[data-about-parallax-mode=static] .about__logo-wrap--mid-left{transform:translate3d(-1rem,.65rem,0)}.about[data-about-parallax-mode=static] .about__logo-wrap--left{transform:translate3d(0,-.15rem,0)}.about[data-about-parallax-mode=static] .about__logo-wrap--bottom-left{transform:translate3d(0,-.55rem,0)}.about[data-about-parallax-mode=static] .about__logo-wrap--right{transform:translate3d(0,.55rem,0)}.about[data-about-parallax-mode=static] .about__logo-wrap--mid-right{transform:translate3d(0,-.15rem,0)}.about[data-about-parallax-mode=static] .about__logo-wrap--far-right{transform:translate3d(0,.15rem,0)}.about[data-about-parallax-mode=static] .about__logo-wrap--lower-mid-right{transform:translate3d(0,-.15rem,0)}.about[data-about-parallax-mode=static] .about__logo-wrap--bottom-right{transform:translate3d(0,.55rem,0)}.about__logo{filter:drop-shadow(0 6px 10px rgb(var(--color-shadow-rgb) / .12))}.video-modal{width:min(24rem,92vw)}.video-modal__frame{aspect-ratio:auto;min-height:auto}.video-modal__frame iframe,.video-modal__poster{display:none}.video-modal__fallback{min-height:auto;padding:1.25rem .75rem}.video-modal__fallback-copy,.video-modal__fallback-link{width:100%}.hero{min-height:24rem}.hero__panel{align-items:center;padding:1.7rem 0}.hero__title{max-width:12ch}.project-card__visual-frame{--project-shape: polygon(2% 4%, 100% 0%, 98% 96%, 0% 100%)}.project-card__play{width:3.7rem;height:3.7rem}.project-card--reverse .project-card__visual-frame{--project-shape: polygon(0% 0%, 98% 4%, 100% 100%, 2% 96%)}.project-card__content{padding-top:1.35rem}.project-card__content h3{max-width:none}.experience-toggle__tabs{display:none}.experience-toggle__mobile-nav{display:grid;grid-template-columns:2.75rem minmax(0,1fr) 2.75rem;align-items:center;gap:.75rem}.experience-toggle__arrow{display:inline-flex;align-items:center;justify-content:center;width:2.75rem;height:2.75rem;padding:0;border:1px solid color-mix(in srgb,var(--color-border) 86%,transparent);border-radius:999px;background:color-mix(in srgb,var(--color-surface) 94%,transparent);color:var(--color-text);font-size:1.15rem;font-weight:700;line-height:1;cursor:pointer}.experience-toggle__arrow:hover,.experience-toggle__arrow:focus-visible{border-color:var(--color-primary);background:var(--color-primary-softer);color:var(--color-primary)}.experience-toggle__current{min-height:2.75rem;display:inline-flex;align-items:center;justify-content:center;padding:.65rem .9rem;border:1px solid var(--color-primary);border-radius:999px;background:var(--color-primary);color:var(--color-on-primary);font-size:clamp(.92rem,4vw,1.05rem);font-weight:700;line-height:1.15;text-align:center}}@media(max-width:979px){.site-header__inner{position:relative;flex-wrap:nowrap;gap:1rem;padding:.85rem 0}.site-brand-group{min-width:0;flex:1 1 auto;flex-wrap:nowrap;align-items:center;gap:.5rem}.site-brand{overflow-wrap:anywhere;font-size:1.2rem;white-space:nowrap}.site-brand-group>.site-cv-link{display:inline-flex;min-height:2rem;padding:.45rem .7rem;font-size:.88rem;white-space:nowrap;flex:0 0 auto}.site-header__inner>.site-actions{display:none}.site-mobile-menu{display:block;margin-left:auto}.site-mobile-menu__toggle{display:inline-flex;flex-direction:column;justify-content:center;gap:.32rem;width:2.75rem;height:2.75rem;padding:0;border:1px solid var(--color-border);border-radius:999px;background:var(--color-surface);color:var(--color-text);cursor:pointer;transition:transform .18s ease,border-color .18s ease,background-color .18s ease,box-shadow .18s ease,color .18s ease}.site-mobile-menu__toggle:hover,.site-mobile-menu__toggle:focus-visible{color:var(--color-primary);border-color:var(--color-primary);background:var(--color-primary-softer);box-shadow:var(--shadow-float)}.site-mobile-menu__toggle span{display:block;width:1.15rem;height:2px;margin-inline:auto;border-radius:999px;background:currentColor;transition:transform .18s ease,opacity .18s ease}.site-mobile-menu[data-menu-state=open] .site-mobile-menu__toggle span:nth-child(1),.site-mobile-menu[data-menu-state=opening] .site-mobile-menu__toggle span:nth-child(1),.site-mobile-menu[data-menu-state=closing] .site-mobile-menu__toggle span:nth-child(1){transform:translateY(.42rem) rotate(45deg)}.site-mobile-menu[data-menu-state=open] .site-mobile-menu__toggle span:nth-child(2),.site-mobile-menu[data-menu-state=opening] .site-mobile-menu__toggle span:nth-child(2),.site-mobile-menu[data-menu-state=closing] .site-mobile-menu__toggle span:nth-child(2){opacity:0}.site-mobile-menu[data-menu-state=open] .site-mobile-menu__toggle span:nth-child(3),.site-mobile-menu[data-menu-state=opening] .site-mobile-menu__toggle span:nth-child(3),.site-mobile-menu[data-menu-state=closing] .site-mobile-menu__toggle span:nth-child(3){transform:translateY(-.42rem) rotate(-45deg)}.site-mobile-menu__panel{position:absolute;top:calc(100% + .75rem);left:0;right:0;display:grid;align-content:center;justify-items:center;gap:1rem;min-height:calc(100vh - 6rem);padding:1rem;border:1px solid color-mix(in srgb,var(--color-border) 78%,transparent);border-radius:calc(var(--radius) - 8px);background:color-mix(in srgb,var(--color-background) 94%,transparent);box-shadow:var(--shadow);backdrop-filter:blur(16px);opacity:0;pointer-events:none;transform:translateY(-.85rem) scale(.985);transform-origin:top center}.site-mobile-menu__panel>*{opacity:0;transform:translateY(.8rem)}.site-mobile-menu[data-menu-state=opening] .site-mobile-menu__panel,.site-mobile-menu[data-menu-state=open] .site-mobile-menu__panel,.site-mobile-menu[data-menu-state=closing] .site-mobile-menu__panel{pointer-events:auto}.site-mobile-menu[data-menu-state=opening] .site-mobile-menu__panel{animation:mobile-menu-in .22s cubic-bezier(.2,.8,.2,1) forwards}.site-mobile-menu[data-menu-state=open] .site-mobile-menu__panel{opacity:1;transform:translateY(0) scale(1)}.site-mobile-menu[data-menu-state=closing] .site-mobile-menu__panel{animation:mobile-menu-out .2s cubic-bezier(.4,0,.2,1) forwards}.site-cv-link--mobile{display:none}.site-nav--mobile{display:grid;justify-items:center;gap:.85rem;color:var(--color-text-muted);text-align:center;width:min(100%,22rem)}.site-nav--mobile a{display:inline-flex;align-items:center;justify-content:center;width:100%;min-height:48px;padding:.875rem 1rem;border-radius:999px;font-size:clamp(1.35rem,4.25vw,1.7rem);font-weight:600;line-height:1.2}.site-mobile-menu[data-menu-state=opening] .site-mobile-menu__panel>*{animation:mobile-menu-item-in .26s cubic-bezier(.2,.8,.2,1) forwards}.site-mobile-menu[data-menu-state=open] .site-mobile-menu__panel>*{opacity:1;transform:translateY(0)}.site-mobile-menu[data-menu-state=closing] .site-mobile-menu__panel>*{animation:mobile-menu-item-out .18s cubic-bezier(.4,0,.2,1) forwards}.site-mobile-menu[data-menu-state=opening] .site-mobile-menu__panel>*:nth-child(1),.site-mobile-menu[data-menu-state=open] .site-mobile-menu__panel>*:nth-child(1),.site-mobile-menu[data-menu-state=closing] .site-mobile-menu__panel>*:nth-child(1){animation-delay:40ms}.site-mobile-menu[data-menu-state=opening] .site-mobile-menu__panel>*:nth-child(2),.site-mobile-menu[data-menu-state=open] .site-mobile-menu__panel>*:nth-child(2),.site-mobile-menu[data-menu-state=closing] .site-mobile-menu__panel>*:nth-child(2){animation-delay:90ms}.site-mobile-menu[data-menu-state=opening] .site-mobile-menu__panel>*:nth-child(3),.site-mobile-menu[data-menu-state=open] .site-mobile-menu__panel>*:nth-child(3),.site-mobile-menu[data-menu-state=closing] .site-mobile-menu__panel>*:nth-child(3){animation-delay:.14s}.site-nav--mobile a:hover,.site-nav--mobile a:focus-visible{background:var(--color-primary-softer);color:var(--color-primary)}.site-mobile-menu__controls{display:flex;align-items:center;justify-content:center;gap:.75rem;flex-wrap:wrap;padding-top:.5rem}.site-mobile-menu .theme-control{inline-size:2.75rem;block-size:2.75rem}}@keyframes mobile-menu-in{0%{opacity:0;transform:translateY(-.85rem) scale(.985)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes mobile-menu-out{0%{opacity:1;transform:translateY(0) scale(1)}to{opacity:0;transform:translateY(-.65rem) scale(.985)}}@keyframes mobile-menu-item-in{0%{opacity:0;transform:translateY(.8rem)}to{opacity:1;transform:translateY(0)}}@keyframes mobile-menu-item-out{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(.45rem)}}@media(min-width:760px){.video-modal{width:min(760px,88vw)}}@media(min-width:980px){.video-modal{width:min(960px,82vw)}}@media(min-width:1280px){.video-modal{width:min(1120px,78vw)}}@media(prefers-reduced-motion:reduce){.hero__media,.hero__title,.about__logo-wrap{transform:none;will-change:auto}.experience-toggle__panel--active{animation:none}}
