@font-face{font-family:Inter;src:url(/fonts/Inter-Regular.woff2) format("woff2"),url(/fonts/Inter-Regular.woff) format("woff");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Inter;src:url(/fonts/Inter-Medium.woff2) format("woff2"),url(/fonts/Inter-Medium.woff) format("woff");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:Inter;src:url(/fonts/Inter-SemiBold.woff2) format("woff2"),url(/fonts/Inter-SemiBold.woff) format("woff");font-weight:600;font-style:normal;font-display:swap}@font-face{font-family:Inter;src:url(/fonts/Inter-Bold.woff2) format("woff2"),url(/fonts/Inter-Bold.woff) format("woff");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:"IBM Plex Mono";src:url(/fonts/IBMPlexMono-Regular.woff2) format("woff2"),url(/fonts/IBMPlexMono-Regular.woff) format("woff");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:"IBM Plex Mono";src:url(/fonts/IBMPlexMono-Medium.woff2) format("woff2"),url(/fonts/IBMPlexMono-Medium.woff) format("woff");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:"IBM Plex Mono";src:url(/fonts/IBMPlexMono-SemiBold.woff2) format("woff2"),url(/fonts/IBMPlexMono-SemiBold.woff) format("woff");font-weight:600;font-style:normal;font-display:swap}@font-face{font-family:"IBM Plex Mono";src:url(/fonts/IBMPlexMono-Bold.woff2) format("woff2"),url(/fonts/IBMPlexMono-Bold.woff) format("woff");font-weight:700;font-style:normal;font-display:swap}:root{--bg:#0e0e10;--surface:#1a1b1f;--text:#f0f0f0;--muted:#999999;--muted-light:#b3b3b3;--accent:#00f7ff;--accent-light:#66fbff;--accent-secondary:#f9f871;--danger:#ef233c;--gradient-hero:linear-gradient(to bottom, #0f2027, #203a43, #2c5364);--gradient-accent:linear-gradient(90deg, #00f7ff, #00ffe7);--portfolio-overlay-start:rgba(35, 90, 126, 0.9);--portfolio-overlay-end:rgba(16, 27, 49, 0.9);--portfolio-text:#0e0e10;--portfolio-bg:rgba(28, 29, 37, 0.5)}body.theme-light{--bg:#ffffff;--surface:#f9f9fb;--text:#2b2d42;--muted:#777777;--muted-light:#999999;--accent:#007aff;--accent-light:#339eff;--accent-secondary:#00bcd4;--danger:#ef233c;--gradient-hero:linear-gradient(to bottom, #0f2027, #203a43, #2c5364);--gradient-accent:linear-gradient(90deg, #00f7ff, #00ffe7);--portfolio-overlay-start:rgba(35, 90, 126, 0.9);--portfolio-overlay-end:rgba(16, 27, 49, 0.9);--portfolio-text:#f9f9fb}body.theme-dark{--bg:#0e0e10;--surface:#1a1b1f;--text:#f0f0f0;--muted:#999999;--muted-light:#b3b3b3;--accent:#00f7ff;--accent-light:#66fbff;--accent-secondary:#f9f871;--danger:#ef233c;--gradient-hero:linear-gradient(to bottom, #ffffff, #e6ecf1);--gradient-accent:linear-gradient(90deg, #007aff, #00bcd4);--portfolio-overlay-start:rgba(220, 220, 255, 0.9);--portfolio-overlay-end:rgba(240, 240, 255, 0.9);--portfolio-text:#0e0e10;--portfolio-bg:rgba(249, 249, 251, 0.5)}@-webkit-keyframes floating{0%{-webkit-transform:translate(-50%,-50%) scale(1);transform:translate(-50%,-50%) scale(1);border-radius:50% 50% 50% 50%}50%{-webkit-transform:translate(-50%,-50%) scale(1.4);transform:translate(-50%,-50%) scale(1.4);border-radius:50% 60% 70% 50%}100%{-webkit-transform:translate(-50%,-50%) scale(1);transform:translate(-50%,-50%) scale(1);border-radius:60% 50% 50% 60%}}@keyframes floating{0%{-webkit-transform:translate(-50%,-50%) scale(1);transform:translate(-50%,-50%) scale(1);border-radius:50% 50% 50% 50%}50%{-webkit-transform:translate(-50%,-50%) scale(1.4);transform:translate(-50%,-50%) scale(1.4);border-radius:50% 60% 70% 50%}100%{-webkit-transform:translate(-50%,-50%) scale(1);transform:translate(-50%,-50%) scale(1);border-radius:60% 50% 50% 60%}}@-webkit-keyframes ovalRipple{0%{-webkit-transform:translate(-50%,-50%) scale(1.05);transform:translate(-50%,-50%) scale(1.05);border-radius:45% 55% 60% 40%}25%{-webkit-transform:translate(-50%,-50%) scale(1.2);transform:translate(-50%,-50%) scale(1.2);border-radius:60% 40% 50% 70%}50%{-webkit-transform:translate(-50%,-50%) scale(1.05);transform:translate(-50%,-50%) scale(1.05);border-radius:50% 60% 40% 50%}75%{-webkit-transform:translate(-50%,-50%) scale(1.2);transform:translate(-50%,-50%) scale(1.2);border-radius:60% 50% 60% 40%}100%{-webkit-transform:translate(-50%,-50%) scale(1.05);transform:translate(-50%,-50%) scale(1.05);border-radius:45% 55% 60% 40%}}@keyframes ovalRipple{0%{-webkit-transform:translate(-50%,-50%) scale(1.05);transform:translate(-50%,-50%) scale(1.05);border-radius:45% 55% 60% 40%}25%{-webkit-transform:translate(-50%,-50%) scale(1.2);transform:translate(-50%,-50%) scale(1.2);border-radius:60% 40% 50% 70%}50%{-webkit-transform:translate(-50%,-50%) scale(1.05);transform:translate(-50%,-50%) scale(1.05);border-radius:50% 60% 40% 50%}75%{-webkit-transform:translate(-50%,-50%) scale(1.2);transform:translate(-50%,-50%) scale(1.2);border-radius:60% 50% 60% 40%}100%{-webkit-transform:translate(-50%,-50%) scale(1.05);transform:translate(-50%,-50%) scale(1.05);border-radius:45% 55% 60% 40%}}@-webkit-keyframes fadeIn{from{opacity:0}to{opacity:1}}@keyframes fadeIn{from{opacity:0}to{opacity:1}}@-webkit-keyframes fadeOut{from{opacity:1}to{opacity:0}}@keyframes fadeOut{from{opacity:1}to{opacity:0}}@-webkit-keyframes fadeInTopRight{from{opacity:0;-webkit-transform:translate3d(100%,-100%,0);transform:translate3d(100%,-100%,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes fadeInTopRight{from{opacity:0;-webkit-transform:translate3d(100%,-100%,0);transform:translate3d(100%,-100%,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@-webkit-keyframes fadeOutTopRight{from{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}to{opacity:0;-webkit-transform:translate3d(100%,-100%,0);transform:translate3d(100%,-100%,0)}}@keyframes fadeOutTopRight{from{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}to{opacity:0;-webkit-transform:translate3d(100%,-100%,0);transform:translate3d(100%,-100%,0)}}@-webkit-keyframes blink-caret{from,to{border-color:transparent}50%{border-color:#000}}@keyframes blink-caret{from,to{border-color:transparent}50%{border-color:#000}}@-webkit-keyframes slideDown{from{-webkit-transform:translateY(-100%);transform:translateY(-100%)}to{-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes slideDown{from{-webkit-transform:translateY(-100%);transform:translateY(-100%)}to{-webkit-transform:translateY(0);transform:translateY(0)}}:root{--container-max-width:1280px;--container-padding:1rem}.container{width:100%;max-width:var(--container-max-width);padding-left:var(--container-padding);padding-right:var(--container-padding);margin-left:auto;margin-right:auto;-webkit-box-sizing:border-box;box-sizing:border-box}html{font-size:16px}body{font-size:1rem;line-height:1.5;font-family:Inter,sans-serif;color:var(--text)}h1,h2,h3,h4,h5,h6{font-family:"IBM Plex Mono",monospace;font-weight:700;margin:0 0 16px}h1{font-size:2.5rem;line-height:1.2}h2{font-size:2rem;line-height:1.3}h3{font-size:1.5rem;line-height:1.4}h4{font-size:1.125rem;line-height:1.4}h5{font-size:1.125rem;line-height:1.5}h6{font-size:1rem;line-height:1.6}:root{--delay-step:100ms}*,::after,::before{-webkit-box-sizing:border-box;box-sizing:border-box}body,html{scroll-behavior:smooth;margin:0;overflow-x:hidden;background:var(--bg);font-family:Inter,sans-serif;font-optical-sizing:auto;font-weight:400;font-style:normal;font-variation-settings:"slnt" 0;cursor:none}body.menu-open{overflow:hidden;height:100vh}main{-ms-scroll-snap-type:y mandatory;scroll-snap-type:y mandatory}section{position:relative;scroll-snap-align:start}section::before{content:attr(data-section);position:absolute;top:20px;right:20px;font-size:5rem;font-weight:700;color:var(--muted-light);-webkit-transform:translateY(20px);-ms-transform:translateY(20px);transform:translateY(20px);font-family:"IBM Plex Mono",monospace;pointer-events:none;-webkit-transition:color .6s ease;transition:color .6s ease;z-index:1;-webkit-writing-mode:vertical-rl;-ms-writing-mode:tb-rl;writing-mode:vertical-rl}section:hover::before{color:var(--muted)}img.lazy{opacity:0;-webkit-transition:opacity .6s ease-out;transition:opacity .6s ease-out}img.lazy.loaded{opacity:1}.observe{opacity:0;-webkit-transform:translateY(40px);-ms-transform:translateY(40px);transform:translateY(40px);-webkit-transition:all .6s ease;transition:all .6s ease}.in-view{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}.custom-cursor{position:fixed;top:0;left:0;width:40px;height:40px;border:2px solid rgba(255,255,255,.7);border-radius:50%;pointer-events:none;z-index:10000;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);-webkit-transition:-webkit-transform .15s ease-out;transition:-webkit-transform .15s ease-out;transition:transform .15s ease-out;transition:transform .15s ease-out,-webkit-transform .15s ease-out;mix-blend-mode:difference;will-change:transform}.custom-cursor__dot{position:absolute;top:50%;left:50%;width:6px;height:6px;background-color:rgba(255,255,255,.9);border-radius:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);will-change:transform}#section-indicator{position:fixed;top:50%;right:2rem;-webkit-transform:translateY(-50%);-ms-transform:translateY(-50%);transform:translateY(-50%);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:.5rem;z-index:10;opacity:.75;-webkit-transition:opacity .3s ease;transition:opacity .3s ease;pointer-events:none}#section-indicator:hover{opacity:1}#section-indicator__bar{width:4px;height:160px;background:-webkit-gradient(linear,left bottom,left top,from(var(--bg)),to(var(--muted-light)));background:linear-gradient(to top,var(--bg),var(--muted-light));border-radius:100px;position:relative;overflow:hidden;-webkit-box-shadow:inset 0 0 3px rgba(0,0,0,.1);box-shadow:inset 0 0 3px rgba(0,0,0,.1);-webkit-transition:all .3s ease;transition:all .3s ease}#section-indicator__fill{position:absolute;bottom:0;left:0;width:100%;height:0;background:-webkit-gradient(linear,left bottom,left top,from(var(--text)),to(var(--text)));background:linear-gradient(to top,var(--text),var(--text));border-radius:100px;-webkit-transition:height .3s ease,width .3s ease;transition:height .3s ease,width .3s ease}#section-indicator__text,#section-indicator__text-bottom{color:var(--text);font-size:.75rem;font-family:"IBM Plex Mono",monospace;font-weight:500}.animate-clip,.animate-fade-in,.animate-slide-left,.animate-slide-right,.animate-zoom-in{opacity:0;-webkit-transition:all .6s ease-out;transition:all .6s ease-out;-webkit-transition-delay:var(--delay,0ms);transition-delay:var(--delay,0ms)}.animate-clip.in-view,.animate-fade-in.in-view,.animate-slide-left.in-view,.animate-slide-right.in-view,.animate-zoom-in.in-view{opacity:1}.animate-fade-in.in-view{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}.animate-slide-right.in-view{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}.animate-slide-left.in-view{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}.animate-zoom-in.in-view{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.animate-clip.in-view{-webkit-clip-path:inset(0 0 0 0);clip-path:inset(0 0 0 0)}.animate-fade-in{-webkit-transform:translateY(20px);-ms-transform:translateY(20px);transform:translateY(20px)}.animate-slide-right{-webkit-transform:translateX(-30px);-ms-transform:translateX(-30px);transform:translateX(-30px)}.animate-slide-left{-webkit-transform:translateX(30px);-ms-transform:translateX(30px);transform:translateX(30px)}.animate-zoom-in{-webkit-transform:scale(.9);-ms-transform:scale(.9);transform:scale(.9)}.animate-clip{-webkit-clip-path:inset(0 0 100% 0);clip-path:inset(0 0 100% 0)}.animate-fade-in.delay-1{-webkit-transition-delay:calc(var(--delay-step) * 1);transition-delay:calc(var(--delay-step) * 1)}.animate-fade-in.delay-2{-webkit-transition-delay:calc(var(--delay-step) * 2);transition-delay:calc(var(--delay-step) * 2)}.animate-fade-in.delay-3{-webkit-transition-delay:calc(var(--delay-step) * 3);transition-delay:calc(var(--delay-step) * 3)}.animate-fade-in.delay-4{-webkit-transition-delay:calc(var(--delay-step) * 4);transition-delay:calc(var(--delay-step) * 4)}.scroll-to-top{position:fixed;bottom:1.5rem;right:1.5rem;width:48px;height:48px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border:none;border-radius:50%;background:var(--text);color:var(--bg);cursor:pointer;-webkit-box-shadow:0 2px 10px rgba(0,0,0,.2);box-shadow:0 2px 10px rgba(0,0,0,.2);opacity:0;pointer-events:none;-webkit-transition:opacity .3s ease;transition:opacity .3s ease;z-index:9999}.scroll-to-top svg{width:24px;height:24px;fill:currentColor;-webkit-transition:-webkit-transform .3s ease;transition:-webkit-transform .3s ease;transition:transform .3s ease;transition:transform .3s ease,-webkit-transform .3s ease}.scroll-to-top:hover{-webkit-animation:pulse 1.2s infinite;animation:pulse 1.2s infinite}.scroll-to-top:hover svg{-webkit-transform:translateY(-3px);-ms-transform:translateY(-3px);transform:translateY(-3px)}.scroll-to-top--visible{opacity:1;pointer-events:auto}.theme-toggle{position:fixed;bottom:1.5rem;right:5rem;width:48px;height:48px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border:none;border-radius:50%;background:var(--text);color:var(--bg);cursor:pointer;-webkit-box-shadow:0 2px 10px rgba(0,0,0,.2);box-shadow:0 2px 10px rgba(0,0,0,.2);opacity:.9;-webkit-transition:background-color .3s ease,-webkit-transform .3s ease;transition:background-color .3s ease,-webkit-transform .3s ease;transition:background-color .3s ease,transform .3s ease;transition:background-color .3s ease,transform .3s ease,-webkit-transform .3s ease;z-index:9999}.theme-toggle svg{width:24px;height:24px;fill:currentColor;-webkit-transition:-webkit-transform .3s ease;transition:-webkit-transform .3s ease;transition:transform .3s ease;transition:transform .3s ease,-webkit-transform .3s ease}.theme-toggle:hover{-webkit-transform:rotate(20deg);-ms-transform:rotate(20deg);transform:rotate(20deg)}.theme-toggle:hover svg{-webkit-transform:scale(1.2);-ms-transform:scale(1.2);transform:scale(1.2)}.theme-toggle__icon{width:24px;height:24px;fill:currentColor;display:none;-webkit-transition:-webkit-transform .3s ease;transition:-webkit-transform .3s ease;transition:transform .3s ease;transition:transform .3s ease,-webkit-transform .3s ease}.theme-light .theme-toggle__icon--sun{display:block}.theme-dark .theme-toggle__icon--moon{display:block}@-webkit-keyframes pulse{0%{-webkit-box-shadow:0 0 0 0 rgba(0,247,255,.4);box-shadow:0 0 0 0 rgba(0,247,255,.4)}70%{-webkit-box-shadow:0 0 0 10px rgba(0,247,255,0);box-shadow:0 0 0 10px rgba(0,247,255,0)}100%{-webkit-box-shadow:0 0 0 0 rgba(0,247,255,0);box-shadow:0 0 0 0 rgba(0,247,255,0)}}@keyframes pulse{0%{-webkit-box-shadow:0 0 0 0 rgba(0,247,255,.4);box-shadow:0 0 0 0 rgba(0,247,255,.4)}70%{-webkit-box-shadow:0 0 0 10px rgba(0,247,255,0);box-shadow:0 0 0 10px rgba(0,247,255,0)}100%{-webkit-box-shadow:0 0 0 0 rgba(0,247,255,0);box-shadow:0 0 0 0 rgba(0,247,255,0)}}:root{--header-height:50px;--menu-icon-size:24px;--menu-dot-size:5px;--menu-button-size:50px;--container-padding:1rem}.header{position:absolute;top:0;width:100%;min-width:320px;padding:var(--container-padding) 0;background-color:var(--surface);color:var(--text);-webkit-transition:background-color .3s ease,-webkit-box-shadow .3s ease;transition:background-color .3s ease,-webkit-box-shadow .3s ease;transition:background-color .3s ease,box-shadow .3s ease;transition:background-color .3s ease,box-shadow .3s ease,-webkit-box-shadow .3s ease}.header--fixed{position:fixed;top:0;left:0;right:0;z-index:1000;-webkit-box-shadow:0 4px 12px rgba(0,0,0,.3);box-shadow:0 4px 12px rgba(0,0,0,.3);background-color:var(--surface)}.header--hidden{-webkit-transform:translateY(-100%);-ms-transform:translateY(-100%);transform:translateY(-100%);-webkit-transition:-webkit-transform .3s ease;transition:-webkit-transform .3s ease;transition:transform .3s ease;transition:transform .3s ease,-webkit-transform .3s ease}.header__container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:0 var(--container-padding)}.header__logo{display:inline-block;z-index:2;width:50px;height:50px}.header__logo svg{width:100%;height:100%;-o-object-fit:contain;object-fit:contain}.header__menu-button{width:var(--menu-button-size);height:var(--menu-button-size);padding:1rem;background:var(--text);border:none;border-radius:6px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;cursor:pointer;-webkit-transition:background-color .3s ease,-webkit-transform .3s ease;transition:background-color .3s ease,-webkit-transform .3s ease;transition:background-color .3s ease,transform .3s ease;transition:background-color .3s ease,transform .3s ease,-webkit-transform .3s ease;z-index:2;outline:0}.header__menu-button.menu-open .header__menu-icon{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.header__menu-button.menu-closing .header__menu-icon{-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0)}.header__menu-button:focus-visible .header__menu-dot,.header__menu-button:hover .header__menu-dot{-webkit-transform:scale(1.2);-ms-transform:scale(1.2);transform:scale(1.2)}.header__menu-button.menu-open .header__menu-dot:nth-child(even){-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0);opacity:0}.header .header__menu-button:focus-visible .header__menu-dot,.header .header__menu-button:hover .header__menu-dot{-webkit-animation:jump .6s ease-in-out;animation:jump .6s ease-in-out}.header__menu-icon{display:-ms-grid;display:grid;-ms-grid-columns:(1fr)[3];grid-template-columns:repeat(3,1fr);-ms-grid-rows:(1fr)[3];grid-template-rows:repeat(3,1fr);gap:4px;width:var(--menu-icon-size);height:var(--menu-icon-size);-webkit-transition:-webkit-transform .3s ease;transition:-webkit-transform .3s ease;transition:transform .3s ease;transition:transform .3s ease,-webkit-transform .3s ease}.header__menu-dot{width:var(--menu-dot-size);height:var(--menu-dot-size);background-color:var(--bg);border-radius:50%;-webkit-transition:opacity .3s ease,-webkit-transform .3s ease;transition:opacity .3s ease,-webkit-transform .3s ease;transition:transform .3s ease,opacity .3s ease;transition:transform .3s ease,opacity .3s ease,-webkit-transform .3s ease;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);-webkit-animation-fill-mode:both;animation-fill-mode:both}.header__menu{position:fixed;top:0;left:0;width:100vw;height:100dvh;background-color:var(--bg);display:none;-webkit-transform:scale(0);-ms-transform:scale(0);transform:scale(0);-webkit-transform-origin:center center;-ms-transform-origin:center center;transform-origin:center center;opacity:0;z-index:1;overflow:hidden}.header__menu.active{display:block}.header__menu.expanded{-webkit-animation:growIn .9s ease forwards;animation:growIn .9s ease forwards}.header__menu.closing{-webkit-animation:shrinkOut .9s ease forwards;animation:shrinkOut .9s ease forwards}.header__menu-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;width:100%;height:100%;position:relative}.header__menu-list{list-style:none;padding:0;margin:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;height:100%;z-index:2}.header__menu-item{padding-left:20px;-webkit-transition:padding-left .3s ease,-webkit-transform .3s ease;transition:padding-left .3s ease,-webkit-transform .3s ease;transition:padding-left .3s ease,transform .3s ease;transition:padding-left .3s ease,transform .3s ease,-webkit-transform .3s ease}.header__menu-item:hover{padding-left:40px;-webkit-transform:translateX(10px);-ms-transform:translateX(10px);transform:translateX(10px)}.header__menu-link{color:var(--text);font-size:2rem;font-weight:700;text-decoration:none;margin:10px 0;position:relative;opacity:0;-webkit-transform:translateY(15px);-ms-transform:translateY(15px);transform:translateY(15px);-webkit-transition:opacity .6s ease-out,-webkit-transform .6s ease-out;transition:opacity .6s ease-out,-webkit-transform .6s ease-out;transition:opacity .6s ease-out,transform .6s ease-out;transition:opacity .6s ease-out,transform .6s ease-out,-webkit-transform .6s ease-out;pointer-events:none}.header__menu-link.is-visible{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);pointer-events:auto}.header__menu-link:hover{color:var(--text);text-shadow:0 0 4px var(--text)}.header__social-links{position:absolute;bottom:20px;right:20px;display:-webkit-box;display:-ms-flexbox;display:flex;gap:1rem;z-index:2}.header__social-links svg{width:2rem;height:2rem;opacity:0;fill:currentColor;stroke:currentColor;-webkit-transition:opacity .4s ease,-webkit-transform .4s ease;transition:opacity .4s ease,-webkit-transform .4s ease;transition:opacity .4s ease,transform .4s ease;transition:opacity .4s ease,transform .4s ease,-webkit-transform .4s ease;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.header__social-links svg.is-visible{opacity:1}.header__social-links svg:hover{-webkit-transform:scale(1.1);-ms-transform:scale(1.1);transform:scale(1.1);color:var(--text)}.header__social-link{color:var(--text)}.header #menuCanvas{position:absolute;top:0;left:0;width:100%;height:100%;z-index:0;background:0 0;pointer-events:none;-webkit-transition:opacity .4s ease;transition:opacity .4s ease;opacity:0;display:none;mix-blend-mode:difference}@keyframes slideDown{from{-webkit-transform:translateY(-100%);transform:translateY(-100%)}to{-webkit-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes slideUp{from{-webkit-transform:translateY(0);transform:translateY(0)}to{-webkit-transform:translateY(-100%);transform:translateY(-100%)}}@keyframes slideUp{from{-webkit-transform:translateY(0);transform:translateY(0)}to{-webkit-transform:translateY(-100%);transform:translateY(-100%)}}@-webkit-keyframes growIn{0%{-webkit-transform:scale(0);transform:scale(0);opacity:0}50%{-webkit-transform:scaleX(1) scaleY(.3);transform:scaleX(1) scaleY(.3);opacity:1}100%{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@keyframes growIn{0%{-webkit-transform:scale(0);transform:scale(0);opacity:0}50%{-webkit-transform:scaleX(1) scaleY(.3);transform:scaleX(1) scaleY(.3);opacity:1}100%{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@-webkit-keyframes shrinkOut{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}50%{-webkit-transform:scaleX(1) scaleY(.3);transform:scaleX(1) scaleY(.3);opacity:1}100%{-webkit-transform:scale(0);transform:scale(0);opacity:0}}@keyframes shrinkOut{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}50%{-webkit-transform:scaleX(1) scaleY(.3);transform:scaleX(1) scaleY(.3);opacity:1}100%{-webkit-transform:scale(0);transform:scale(0);opacity:0}}@-webkit-keyframes jump{0%{-webkit-transform:translateY(0);transform:translateY(0)}30%{-webkit-transform:translateY(-4px);transform:translateY(-4px)}50%{-webkit-transform:translateY(0);transform:translateY(0)}70%{-webkit-transform:translateY(-2px);transform:translateY(-2px)}100%{-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes jump{0%{-webkit-transform:translateY(0);transform:translateY(0)}30%{-webkit-transform:translateY(-4px);transform:translateY(-4px)}50%{-webkit-transform:translateY(0);transform:translateY(0)}70%{-webkit-transform:translateY(-2px);transform:translateY(-2px)}100%{-webkit-transform:translateY(0);transform:translateY(0)}}.hero{position:relative;width:100%;min-height:calc(var(--vh,1vh) * 100);overflow:hidden;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;background:var(--gradient-hero)}.hero__background-wrapper{position:absolute;inset:0;overflow:hidden;border-radius:inherit}.no-webp .hero__background{background-image:url(../../img/content/hero/hero-img.png)}.hero__background{position:absolute;top:0;left:0;width:100%;height:100%;max-width:100vw;overflow:hidden;background-repeat:no-repeat;background-position:center;background-size:contain;opacity:.5;will-change:transform;-webkit-transition:-webkit-transform .2s ease-out;transition:-webkit-transform .2s ease-out;transition:transform .2s ease-out;transition:transform .2s ease-out,-webkit-transform .2s ease-out}.webp .hero__background{background-image:url(../../img/content/hero/hero-img.webp)}.hero__content{position:relative;width:100%;height:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:center;padding:0 1rem}.hero__text{max-width:90vw;margin:0;font-family:var(--font-mono, "IBM Plex Mono", monospace);color:#f0f0f0;opacity:0;-webkit-transform:translateY(20px);-ms-transform:translateY(20px);transform:translateY(20px);-webkit-transition:opacity .6s ease,-webkit-transform .6s ease;transition:opacity .6s ease,-webkit-transform .6s ease;transition:opacity .6s ease,transform .6s ease;transition:opacity .6s ease,transform .6s ease,-webkit-transform .6s ease;text-shadow:0 0 5px rgba(0,0,0,.3)}.hero__text--visible{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}.hero__text--frontend{font-size:clamp(3rem,7vw,8rem);font-weight:700;line-height:1.1;margin-bottom:50px}.hero__text--final{font-size:clamp(1.25rem,3vw,2rem);font-weight:400;color:#ccc}.hero #heroCanvas{position:absolute;top:0;left:0;width:100%;height:100%;max-width:100vw;max-height:100vh;pointer-events:none;z-index:0;background:var(--gradient-hero)}.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}.about{padding:6rem 0;margin:50px 0;background-color:var(--surface);color:var(--text);border-radius:25px}.about__container{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;gap:3rem}.about__text{-webkit-box-flex:1;-ms-flex:1 1 500px;flex:1 1 500px}.about__title{font-size:3rem;font-weight:700;margin-bottom:1.5rem;font-family:"IBM Plex Mono",monospace;color:var(--text)}.about__subtitle{font-size:1.5rem;font-weight:600;margin-bottom:1rem}.about__description{font-size:1.125rem;line-height:1.7;margin-bottom:1rem;font-family:"IBM Plex Mono",monospace}.about__image{-webkit-box-flex:1;-ms-flex:1 1 300px;flex:1 1 300px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.about__image img{max-width:100%;border-radius:20px;-webkit-box-shadow:0 10px 30px rgba(0,0,0,.2);box-shadow:0 10px 30px rgba(0,0,0,.2);-webkit-transition:-webkit-transform .3s ease;transition:-webkit-transform .3s ease;transition:transform .3s ease;transition:transform .3s ease,-webkit-transform .3s ease}@supports (transform:scale(1)){.about__image img:hover{-webkit-transform:scale(1.03);-ms-transform:scale(1.03);transform:scale(1.03)}}.about__image,.about__text{-webkit-transition:all .6s ease-out;transition:all .6s ease-out;will-change:opacity,transform}.about__socials{margin-top:2rem;display:-webkit-box;display:-ms-flexbox;display:flex;gap:1.5rem;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.about__social-link{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:3rem;height:3rem;-webkit-transition:color .4s ease-in-out,-webkit-transform .4s ease-in-out;transition:color .4s ease-in-out,-webkit-transform .4s ease-in-out;transition:transform .4s ease-in-out,color .4s ease-in-out;transition:transform .4s ease-in-out,color .4s ease-in-out,-webkit-transform .4s ease-in-out;border-radius:50%;cursor:none;color:var(--text)}.about__social-link svg{width:100%;height:auto;fill:currentColor;stroke:currentColor;-webkit-transition:inherit;transition:inherit}.about__social-link:hover{-webkit-transform:scale(1.15);-ms-transform:scale(1.15);transform:scale(1.15);color:var(--text)}.portfolio{padding:80px 0;margin:50px 0;background-color:var(--surface);border-radius:25px}.portfolio__subtitle{text-align:center;font-size:.8rem;font-family:"IBM Plex Mono",monospace;text-transform:uppercase;letter-spacing:.09em;margin-bottom:12px;color:var(--text);opacity:.8!important}.portfolio__title{text-align:center;font-size:3rem;margin-bottom:50px;color:var(--text);line-height:1}.portfolio__grid{display:-ms-grid;display:grid;gap:130px;grid-template-columns:repeat(auto-fit,minmax(936px,480px));-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.portfolio__item{position:relative;overflow:hidden;max-width:936px;width:100%;border-radius:5px;cursor:none}.portfolio__item::after,.portfolio__item::before{content:"";position:absolute;width:100%;height:100%;top:0;left:0;border-radius:inherit;pointer-events:none;z-index:2}.portfolio__item::before{background:var(--portfolio-bg);-webkit-transition:opacity .3s ease;transition:opacity .3s ease}.portfolio__item::after{background:-webkit-gradient(linear,right top,left top,from(var(--portfolio-overlay-start)),to(var(--portfolio-overlay-end)));background:linear-gradient(270deg,var(--portfolio-overlay-start),var(--portfolio-overlay-end));-webkit-transform:scaleY(0);-ms-transform:scaleY(0);transform:scaleY(0);-webkit-transform-origin:bottom;-ms-transform-origin:bottom;transform-origin:bottom;opacity:0;-webkit-transition:opacity .2s ease,-webkit-transform .35s cubic-bezier(.694,.048,.335,1) .2s;transition:opacity .2s ease,-webkit-transform .35s cubic-bezier(.694,.048,.335,1) .2s;transition:transform .35s cubic-bezier(.694,.048,.335,1) .2s,opacity .2s ease;transition:transform .35s cubic-bezier(.694,.048,.335,1) .2s,opacity .2s ease,-webkit-transform .35s cubic-bezier(.694,.048,.335,1) .2s}.portfolio__item:hover::before{opacity:0}.portfolio__item:hover::after{-webkit-transform:scaleY(1);-ms-transform:scaleY(1);transform:scaleY(1);opacity:1}.portfolio__item.center{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}.portfolio__item.left{-webkit-transform:translateX(-40px);-ms-transform:translateX(-40px);transform:translateX(-40px)}.portfolio__item.right{-webkit-transform:translateX(40px);-ms-transform:translateX(40px);transform:translateX(40px)}.portfolio__img{width:100%;height:100%;display:block;-o-object-fit:contain;object-fit:contain;-webkit-transition:-webkit-transform .5s ease;transition:-webkit-transform .5s ease;transition:transform .5s ease;transition:transform .5s ease,-webkit-transform .5s ease}.portfolio__img:hover{-webkit-transform:scale(1.1);-ms-transform:scale(1.1);transform:scale(1.1)}.portfolio__img.lazy{opacity:0;-webkit-filter:blur(8px) grayscale(1);filter:blur(8px) grayscale(1);-webkit-transform:scale(1.05);-ms-transform:scale(1.05);transform:scale(1.05);-webkit-transition:opacity .7s cubic-bezier(.46,.03,.52,.96),-webkit-filter .7s cubic-bezier(.46,.03,.52,.96),-webkit-transform .7s cubic-bezier(.46,.03,.52,.96);transition:opacity .7s cubic-bezier(.46,.03,.52,.96),-webkit-filter .7s cubic-bezier(.46,.03,.52,.96),-webkit-transform .7s cubic-bezier(.46,.03,.52,.96);transition:opacity .7s cubic-bezier(.46,.03,.52,.96),filter .7s cubic-bezier(.46,.03,.52,.96),transform .7s cubic-bezier(.46,.03,.52,.96);transition:opacity .7s cubic-bezier(.46,.03,.52,.96),filter .7s cubic-bezier(.46,.03,.52,.96),transform .7s cubic-bezier(.46,.03,.52,.96),-webkit-filter .7s cubic-bezier(.46,.03,.52,.96),-webkit-transform .7s cubic-bezier(.46,.03,.52,.96)}.portfolio__img.loaded{opacity:1;-webkit-filter:blur(0) grayscale(0);filter:blur(0) grayscale(0);-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.portfolio__content{position:absolute;top:-20px;bottom:0;left:0;right:0;padding:30px 90px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;color:var(--text);-webkit-transform:translateY(20px);-ms-transform:translateY(20px);transform:translateY(20px);-webkit-transition:opacity .5s ease,-webkit-transform .5s ease;transition:opacity .5s ease,-webkit-transform .5s ease;transition:transform .5s ease,opacity .5s ease;transition:transform .5s ease,opacity .5s ease,-webkit-transform .5s ease;z-index:3}.portfolio__content:hover{-webkit-transform:translateY(-10px);-ms-transform:translateY(-10px);transform:translateY(-10px)}.portfolio__item:hover .portfolio__content{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0);opacity:1}.portfolio__name{font-size:2.5rem;line-height:1;margin-bottom:10px;color:var(--portfolio-text)}.portfolio__description{font-size:1rem;margin-bottom:20px;color:var(--portfolio-text);font-family:"IBM Plex Mono",monospace;font-weight:700}.portfolio__link{margin-top:10px;color:var(--portfolio-text);text-decoration:none;font-size:1rem;font-weight:500;font-family:"IBM Plex Mono",monospace;cursor:none;overflow:hidden;position:relative;background:0 0;padding:15px 20px;-webkit-transition:color .4s ease-in-out,-webkit-transform .4s cubic-bezier(.694,.048,.335,1) .2s;transition:color .4s ease-in-out,-webkit-transform .4s cubic-bezier(.694,.048,.335,1) .2s;transition:color .4s ease-in-out,transform .4s cubic-bezier(.694,.048,.335,1) .2s;transition:color .4s ease-in-out,transform .4s cubic-bezier(.694,.048,.335,1) .2s,-webkit-transform .4s cubic-bezier(.694,.048,.335,1) .2s;z-index:2;border-radius:5px;background:-webkit-gradient(linear,left top,right top,from(var(--danger)),to(var(--text)));background:linear-gradient(90deg,var(--danger) 0,var(--text) 100%)}.portfolio__link::before{content:"";position:absolute;inset:0;background:-webkit-gradient(linear,left top,right top,from(var(--text)),to(var(--danger)));background:linear-gradient(90deg,var(--text) 0,var(--danger) 100%);-webkit-transform:translateX(-100%);-ms-transform:translateX(-100%);transform:translateX(-100%);-webkit-transition:-webkit-transform .4s cubic-bezier(.694,.048,.335,1) .2s;transition:-webkit-transform .4s cubic-bezier(.694,.048,.335,1) .2s;transition:transform .4s cubic-bezier(.694,.048,.335,1) .2s;transition:transform .4s cubic-bezier(.694,.048,.335,1) .2s,-webkit-transform .4s cubic-bezier(.694,.048,.335,1) .2s;z-index:-1}.portfolio__link:hover{color:var(--bg);-webkit-transform:translateX(10px);-ms-transform:translateX(10px);transform:translateX(10px)}.portfolio__link:hover::before{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}.skills{padding:70px 0;margin:35px 0;background-color:var(--surface);border-radius:25px}.skills__title{text-align:center;color:var(--text);font-size:2.2rem;margin-bottom:35px;-webkit-transition:color .3s ease;transition:color .3s ease}.skills__grid{display:-ms-grid;display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:15px;justify-items:center;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.skills__item{padding:10px 0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:10px;text-align:center;opacity:0;-webkit-transform:translateY(32px) scale(.97);-ms-transform:translateY(32px) scale(.97);transform:translateY(32px) scale(.97);-webkit-transition:opacity .5s cubic-bezier(.46,.03,.52,.96),-webkit-transform .5s cubic-bezier(.46,.03,.52,.96);transition:opacity .5s cubic-bezier(.46,.03,.52,.96),-webkit-transform .5s cubic-bezier(.46,.03,.52,.96);transition:opacity .5s cubic-bezier(.46,.03,.52,.96),transform .5s cubic-bezier(.46,.03,.52,.96);transition:opacity .5s cubic-bezier(.46,.03,.52,.96),transform .5s cubic-bezier(.46,.03,.52,.96),-webkit-transform .5s cubic-bezier(.46,.03,.52,.96);will-change:opacity,transform;cursor:none}.skills__item.in-view{opacity:1;-webkit-transform:translateY(0) scale(1);-ms-transform:translateY(0) scale(1);transform:translateY(0) scale(1)}.skills__item:hover{-webkit-transform:scale(1.07);-ms-transform:scale(1.07);transform:scale(1.07)}.skills__label{margin:0;font-size:1rem;font-family:"IBM Plex Mono",monospace;color:var(--text);text-align:center;-webkit-transition:color .3s ease;transition:color .3s ease}.skills__icon{width:50px;height:50px}.skills ul{-webkit-padding-start:0;padding-inline-start:0}.experiments{padding:90px 0;position:relative;margin:40px 0;background-color:var(--surface);border-radius:25px}.experiments__subtitle{text-align:center;font-size:.8rem;font-family:"IBM Plex Mono",monospace;text-transform:uppercase;letter-spacing:.09em;margin-bottom:12px;color:var(--text);opacity:.8}.experiments__title{text-align:center;font-size:2.5rem;margin-bottom:38px;color:var(--text);line-height:1;letter-spacing:-.03em}.experiments__grid{display:-ms-grid;display:grid;-ms-grid-columns:1fr 1fr;grid-template-columns:1fr 1fr;gap:40px;max-width:900px;margin:0 auto;padding:0 10px}.experiment{background:var(--experiment-bg,rgba(28,29,37,.82));border-radius:16px;-webkit-box-shadow:0 4px 18px rgba(0,0,0,.16),0 1.5px 6px rgba(25,27,30,.2);box-shadow:0 4px 18px rgba(0,0,0,.16),0 1.5px 6px rgba(25,27,30,.2);overflow:hidden;-webkit-transition:-webkit-transform .28s cubic-bezier(.54,.13,.53,.87),-webkit-box-shadow .3s;transition:-webkit-transform .28s cubic-bezier(.54,.13,.53,.87),-webkit-box-shadow .3s;transition:transform .28s cubic-bezier(.54,.13,.53,.87),box-shadow .3s;transition:transform .28s cubic-bezier(.54,.13,.53,.87),box-shadow .3s,-webkit-transform .28s cubic-bezier(.54,.13,.53,.87),-webkit-box-shadow .3s;cursor:pointer;-webkit-backdrop-filter:blur(2.5px);backdrop-filter:blur(2.5px);opacity:0;-webkit-transform:translateY(32px) scale(.97);-ms-transform:translateY(32px) scale(.97);transform:translateY(32px) scale(.97);-webkit-transition:opacity .7s cubic-bezier(.46,.03,.52,.96),-webkit-transform .7s cubic-bezier(.46,.03,.52,.96);transition:opacity .7s cubic-bezier(.46,.03,.52,.96),-webkit-transform .7s cubic-bezier(.46,.03,.52,.96);transition:opacity .7s cubic-bezier(.46,.03,.52,.96),transform .7s cubic-bezier(.46,.03,.52,.96);transition:opacity .7s cubic-bezier(.46,.03,.52,.96),transform .7s cubic-bezier(.46,.03,.52,.96),-webkit-transform .7s cubic-bezier(.46,.03,.52,.96);will-change:opacity,transform}.experiment.in-view{opacity:1;-webkit-transform:translateY(0) scale(1);-ms-transform:translateY(0) scale(1);transform:translateY(0) scale(1)}.experiment:focus-visible,.experiment:hover{-webkit-transform:translateY(-8px) scale(1.012);-ms-transform:translateY(-8px) scale(1.012);transform:translateY(-8px) scale(1.012);-webkit-box-shadow:0 8px 32px rgba(0,0,0,.23),0 2px 10px rgba(25,27,30,.21);box-shadow:0 8px 32px rgba(0,0,0,.23),0 2px 10px rgba(25,27,30,.21)}.experiment iframe{width:100%;height:280px;display:block;border:none;background:var(--experiment-frame-bg,#131417)}.experiment__caption{padding:13px 16px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-family:"IBM Plex Mono",monospace;font-size:.93rem;background:var(--experiment-caption-bg,rgba(22,25,35,.76));color:var(--muted);gap:10px}.experiment__caption span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.experiment a{text-decoration:none;color:#fff;font-weight:700;font-size:.95em;padding-left:7px;-webkit-transition:color .18s ease;transition:color .18s ease}.experiment a:focus-visible,.experiment a:hover{color:var(--danger);text-decoration:underline}.contact{padding:100px 0;margin:50px 0;background-color:var(--surface);border-radius:25px}.contact__subtitle{text-align:center;font-size:.8rem;font-family:"IBM Plex Mono",monospace;text-transform:uppercase;letter-spacing:.09em;margin-bottom:12px;color:var(--text);opacity:.8}.contact__title{text-align:center;font-size:3rem;margin-bottom:50px;color:var(--text);line-height:1;-webkit-transition:color .3s ease;transition:color .3s ease}.contact__form{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:20px;max-width:600px;width:100%;margin:0 auto;padding:20px 10px;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:15px;overflow:hidden}.contact__form *{-webkit-box-sizing:border-box;box-sizing:border-box}.contact__form input,.contact__form textarea{width:100%;padding:15px;border-radius:10px;border:1px solid var(--text);background-color:transparent;color:var(--text);font-size:1rem;font-family:var(--font-mono, "IBM Plex Mono", monospace);-webkit-transition:border-color .3s ease;transition:border-color .3s ease;resize:none}.contact__form input::-webkit-input-placeholder,.contact__form textarea::-webkit-input-placeholder{color:var(--text);opacity:.5;-webkit-transition:opacity .3s ease;transition:opacity .3s ease}.contact__form input::-moz-placeholder,.contact__form textarea::-moz-placeholder{color:var(--text);opacity:.5;-moz-transition:opacity .3s ease;transition:opacity .3s ease}.contact__form input:-ms-input-placeholder,.contact__form textarea:-ms-input-placeholder{color:var(--text);opacity:.5;-ms-transition:opacity .3s ease;transition:opacity .3s ease}.contact__form input::-ms-input-placeholder,.contact__form textarea::-ms-input-placeholder{color:var(--text);opacity:.5;-ms-transition:opacity .3s ease;transition:opacity .3s ease}.contact__form input::placeholder,.contact__form textarea::placeholder{color:var(--text);opacity:.5;-webkit-transition:opacity .3s ease;transition:opacity .3s ease}.contact__form input:focus,.contact__form textarea:focus{outline:0;border-color:var(--text)}.contact__form input:focus::-webkit-input-placeholder,.contact__form textarea:focus::-webkit-input-placeholder{opacity:.2}.contact__form input:focus::-moz-placeholder,.contact__form textarea:focus::-moz-placeholder{opacity:.2}.contact__form input:focus:-ms-input-placeholder,.contact__form textarea:focus:-ms-input-placeholder{opacity:.2}.contact__form input:focus::-ms-input-placeholder,.contact__form textarea:focus::-ms-input-placeholder{opacity:.2}.contact__form input:focus::placeholder,.contact__form textarea:focus::placeholder{opacity:.2}.contact__form-button{position:relative;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:100%;padding:20px;background-color:var(--text);color:var(--surface);border:none;border-radius:12px;font-size:1rem;font-weight:700;font-family:"IBM Plex Mono",monospace;cursor:none;-webkit-transition:background .3s ease,-webkit-transform .2s ease;transition:background .3s ease,-webkit-transform .2s ease;transition:background .3s ease,transform .2s ease;transition:background .3s ease,transform .2s ease,-webkit-transform .2s ease}.contact__form-button:hover{-webkit-transform:translateY(-2px);-ms-transform:translateY(-2px);transform:translateY(-2px)}.contact__form-button:active{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}.contact__form-button .btn-text{pointer-events:none}.contact__form-button .btn-loader{width:20px;height:20px;border:3px solid var(--text);border-top:3px solid transparent;border-radius:50%;margin-left:10px;-webkit-animation:spin 1s linear infinite;animation:spin 1s linear infinite}.contact__status{text-align:center;color:var(--text);margin-top:20px;font-family:var(--font-mono,monospace)}.contact__socials{margin-top:40px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;gap:30px}.contact a{color:var(--text);text-decoration:none;font-weight:700;font-family:var(--font-mono,monospace);-webkit-transition:color .6s ease,-webkit-transform .6s ease;transition:color .6s ease,-webkit-transform .6s ease;transition:color .6s ease,transform .6s ease;transition:color .6s ease,transform .6s ease,-webkit-transform .6s ease;cursor:none}.contact a:hover{-webkit-transform:translateY(-5px);-ms-transform:translateY(-5px);transform:translateY(-5px)}.contact a:active{-webkit-transform:translateY(1px);-ms-transform:translateY(1px);transform:translateY(1px)}.contact__form,.contact__socials{opacity:0;-webkit-transform:translateY(40px);-ms-transform:translateY(40px);transform:translateY(40px);-webkit-transition:opacity .6s ease-out,-webkit-transform .6s ease-out;transition:opacity .6s ease-out,-webkit-transform .6s ease-out;transition:opacity .6s ease-out,transform .6s ease-out;transition:opacity .6s ease-out,transform .6s ease-out,-webkit-transform .6s ease-out}.contact__form.in-view,.contact__socials.in-view{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.visually-hidden{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.footer{padding:40px 0;text-align:center;font-family:"IBM Plex Mono",monospace;position:relative}.footer__text{color:var(--muted-light);font-size:.9rem;margin-bottom:20px;line-height:1.4;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.footer__socials{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:25px}.footer__socials a{color:var(--text);text-decoration:none;font-weight:700;font-size:.95rem;-webkit-transition:color .4s ease,-webkit-transform .4s ease;transition:color .4s ease,-webkit-transform .4s ease;transition:color .4s ease,transform .4s ease;transition:color .4s ease,transform .4s ease,-webkit-transform .4s ease;cursor:none;position:relative}.footer__socials a::after{content:"";display:block;position:absolute;bottom:-2px;left:0;width:100%;height:2px;background-color:var(--bg);-webkit-transform:scaleX(0);-ms-transform:scaleX(0);transform:scaleX(0);-webkit-transform-origin:left;-ms-transform-origin:left;transform-origin:left;-webkit-transition:-webkit-transform .3s ease;transition:-webkit-transform .3s ease;transition:transform .3s ease;transition:transform .3s ease,-webkit-transform .3s ease}.footer__socials a:hover{color:var(--text);-webkit-transform:translateY(-2px);-ms-transform:translateY(-2px);transform:translateY(-2px)}.footer__socials a:hover::after{-webkit-transform:scaleX(1);-ms-transform:scaleX(1);transform:scaleX(1)}.footer__socials a:active{-webkit-transform:translateY(1px);-ms-transform:translateY(1px);transform:translateY(1px)}.not-found{padding:60px 20px;text-align:center}.not-found__title{font-size:10rem;font-weight:700;color:var(--text);display:inline-block;overflow:hidden;white-space:nowrap;position:relative;min-height:1em}.not-found__message{font-size:1.5rem;font-family:"IBM Plex Mono",monospace}.not-found__link{margin-top:30px;display:inline-block;font-family:"IBM Plex Mono",monospace;font-size:1.2rem;color:var(--danger);text-decoration:underline}.not-found-wrapper{min-height:100dvh;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}@media (min-width:1025px){.hero__background{-webkit-transform:scale(1.1);-ms-transform:scale(1.1);transform:scale(1.1)}}@media (max-width:1439px){.container{max-width:1280px}.contact{padding:90px 0}}@media (max-width:1279px){.container{max-width:1024px}.header__menu-link{font-size:1.75rem}.about__title{font-size:2.5rem}.portfolio__title{font-size:2.5rem}.portfolio__grid{gap:80px;padding-inline:15px;-ms-grid-columns:1fr;grid-template-columns:1fr}.portfolio__item{-webkit-transform:none!important;-ms-transform:none!important;transform:none!important}.portfolio__content{padding:20px 70px}.portfolio__name{font-size:1.3rem}.portfolio__link{font-size:.95rem;padding:12px 16px}.skills__grid{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.contact{padding:80px 0}.contact__title{font-size:2.5rem}.footer{padding:35px 0}.footer__text{font-size:.85rem}.footer__socials a{font-size:.9rem}.not-found{padding:30px 10px}.not-found__title{font-size:7rem}.not-found__message{font-size:1.125rem}}@media (max-width:1023px){section::before{font-size:4rem}.header__menu-container{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:2rem 1.5rem}.header__social-links{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;position:static;margin-top:2rem}.about__container{-webkit-box-orient:vertical;-webkit-box-direction:reverse;-ms-flex-direction:column-reverse;flex-direction:column-reverse}.experiments__grid{gap:18px;max-width:100%}.contact{padding:70px 0}.contact__title{font-size:2.4rem}}@media (max-width:767px){.container{max-width:90%;padding-left:1rem;padding-right:1rem}body{font-size:.9375rem}h1{font-size:1.75rem}h2{font-size:1.5rem}h3{font-size:1.125rem}section::before{font-size:3rem;right:10px;top:10px;-webkit-writing-mode:horizontal-tb;-ms-writing-mode:lr-tb;writing-mode:horizontal-tb;-webkit-transform:none;-ms-transform:none;transform:none}#section-indicator{top:auto;bottom:0;right:0;left:0;-webkit-transform:none;-ms-transform:none;transform:none;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end;padding:.5rem 1rem;background:rgba(0,0,0,.05);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}#section-indicator__bar{width:100%;max-width:300px;height:4px}#section-indicator__fill{bottom:auto;top:0;height:100%;width:0}#section-indicator__text,#section-indicator__text-bottom{font-size:.625rem}.hero__background{background-size:cover;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}.about__social-link{width:2.5rem;height:2.5rem}.portfolio__grid{gap:60px;padding-inline:15px;-ms-grid-columns:1fr;grid-template-columns:1fr}.portfolio__item{-webkit-transform:none!important;-ms-transform:none!important;transform:none!important}.portfolio__name{font-size:1.2rem}.skills__title{font-size:1.5rem;margin-bottom:20px}.skills__grid{-ms-grid-columns:(1fr)[2];grid-template-columns:repeat(2,1fr);gap:8px;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.skills__label{font-size:.87rem}.experiments__title{font-size:1.5rem;margin-bottom:24px}.experiments__grid{-ms-grid-columns:1fr;grid-template-columns:1fr;gap:15px;max-width:100%}.contact{padding:60px 0}.contact__title{font-size:2.2rem}.contact__form-button{padding:16px;font-size:.95rem}.footer{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:30px 0}.footer__socials{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;gap:15px}}@media (max-width:479px){.container{max-width:100%;padding-left:.75rem;padding-right:.75rem}section::before{font-size:2.2rem;right:8px;top:8px}.theme-toggle{right:1.5rem;bottom:4.8rem}.header__logo svg{width:2.5rem;height:2.5rem}.header__menu-button{width:2.5rem;height:2.5rem}.header__menu-item:hover{padding-left:20px;-webkit-transform:none;-ms-transform:none;transform:none}.header__menu-link{font-size:2rem}.about__container{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;text-align:center;gap:2rem}.about__text{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.about__title{font-size:2rem}.about__subtitle{font-size:1.25rem}.about__description{font-size:1rem}.about__image{padding:0 5px}.about__socials{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.portfolio__title{font-size:2rem}.portfolio__grid{gap:40px;padding-inline:15px;-ms-grid-columns:1fr;grid-template-columns:1fr}.portfolio__item{-webkit-transform:none!important;-ms-transform:none!important;transform:none!important}.portfolio__item{max-width:100%;aspect-ratio:1/1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.portfolio__content{padding:20px;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.portfolio__name{font-size:1rem;margin-bottom:5px}.portfolio__description{font-size:.95rem;margin-bottom:5px}.portfolio__link{font-size:.9rem;padding:10px 16px}.skills__grid{-ms-grid-columns:1fr;grid-template-columns:1fr;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.skills__label{font-size:.8rem}.experiments{padding:45px 0;margin:15px 0}.experiment iframe{height:180px}.experiment{border-radius:9px}.contact__socials{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:20px}.contact{padding:50px 0}.contact__title{font-size:2rem}.contact__form-button{padding:14px;font-size:.9rem}.footer__text{font-size:.8rem}}@media (max-width:359px){section::before{font-size:2rem}.header__container{padding:0 .5rem}.contact{padding:40px 0}.contact__form{padding:5px;gap:15px}.contact__form-button{padding:12px;font-size:.85rem}.footer{padding:25px 0}.footer__socials{gap:10px}.footer__socials a{font-size:.85rem}}@media (prefers-color-scheme:light){:root{--bg:#f9f9fb;--surface:#ffffff;--text:#2b2d42;--muted:#777777;--accent:#007aff;--accent-secondary:#00bcd4;--danger:#ef233c;--gradient-hero:linear-gradient(to bottom, #ffffff, #e6ecf1);--gradient-accent:linear-gradient(90deg, #007aff, #00bcd4)}}@media (prefers-color-scheme:dark){:root{--bg:#0e0e10;--surface:#1a1b1f;--text:#f0f0f0;--muted:#999999;--accent:#00f7ff;--accent-secondary:#f9f871;--danger:#ef233c;--gradient-hero:linear-gradient(to bottom, #0f2027, #203a43, #2c5364);--gradient-accent:linear-gradient(90deg, #00f7ff, #00ffe7)}}@media (hover:none) and (pointer:coarse){.custom-cursor{display:none}}.webp .hero__background{background-image:url(../../img/content/hero/hero-img.webp)}