.navbar{z-index:100;height:var(--nav-height);border-bottom:1px solid #0000;transition:background .35s,border-color .35s;position:fixed;top:0;left:0;right:0}.navbar-inner{justify-content:space-between;align-items:center;gap:24px;max-width:1200px;height:100%;margin:0 auto;padding:0 6vw;display:flex}.navbar.scrolled{border-bottom-color:var(--border);-webkit-backdrop-filter:blur(14px);background:#070a06d1}.nav-logo{flex-direction:column;line-height:1;display:flex}.logo-mark{font-family:var(--font-display);color:var(--primary);letter-spacing:.04em;font-size:1.7rem;font-weight:700}.logo-sub{text-transform:uppercase;letter-spacing:.28em;color:var(--text-muted);margin-top:4px;font-size:.6rem}.nav-desktop{gap:36px;display:flex}.nav-link{font-family:var(--font-display);color:var(--text);font-size:.98rem;font-weight:500;transition:color .2s;position:relative}.nav-link:after{content:"";background:var(--primary);transform-origin:0;width:100%;height:2px;transition:transform .25s;position:absolute;bottom:-6px;left:0;transform:scaleX(0)}.nav-link:hover{color:var(--primary)}.nav-link:hover:after{transform:scaleX(1)}.nav-right{align-items:center;gap:24px;display:flex}.nav-socials{gap:16px;display:flex}.nav-socials a{color:var(--text-muted);transition:color .2s,transform .2s;display:flex}.nav-socials a:hover{color:var(--primary);transform:translateY(-2px)}.lang-toggle{color:var(--text-muted);font-family:var(--font-display);align-items:center;gap:8px;font-size:.9rem;display:flex}.lang-toggle button{color:var(--text-muted);font-weight:600;transition:color .2s}.lang-toggle button.active,.lang-toggle button:hover{color:var(--primary)}.hamburger{z-index:120;flex-direction:column;justify-content:center;gap:6px;width:40px;height:40px;display:none}.hamburger span{background:var(--primary);width:26px;height:2px;margin:0 auto;transition:transform .3s,opacity .3s;display:block}.hamburger.open span:first-child{transform:translateY(8px)rotate(45deg)}.hamburger.open span:nth-child(2){opacity:0}.hamburger.open span:nth-child(3){transform:translateY(-8px)rotate(-45deg)}.mobile-overlay{z-index:95;-webkit-backdrop-filter:blur(18px);opacity:0;pointer-events:none;background:#070a06f5;flex-direction:column;justify-content:center;align-items:center;gap:48px;transition:opacity .3s;display:flex;position:fixed;inset:0}.mobile-overlay.open{opacity:1;pointer-events:auto}.mobile-nav{flex-direction:column;align-items:center;gap:30px;display:flex}.mobile-link{font-family:var(--font-display);color:var(--text);font-size:1.7rem;font-weight:600;transition:color .2s}.mobile-link:hover{color:var(--primary)}.mobile-overlay .lang-toggle{font-size:1.1rem}@media (width<=900px){.nav-desktop,.nav-socials,.navbar .lang-toggle{display:none}.mobile-overlay .lang-toggle,.hamburger{display:flex}}.footer{border-top:1px solid var(--border);background:#070a06b3}.footer-inner{max-width:1200px;min-height:var(--nav-height);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:20px;margin:0 auto;padding:14px 6vw;display:flex}.footer-socials{gap:18px;display:flex}.footer-socials a{color:var(--text-muted);transition:color .2s,transform .2s;display:flex}.footer-socials a:hover{color:var(--primary);transform:translateY(-2px)}.footer-links{gap:26px;display:flex}.footer-links a{color:var(--text-muted);text-transform:capitalize;font-size:.9rem;transition:color .2s}.footer-links a:hover{color:var(--primary)}.footer-copy{color:var(--text-muted);font-size:.9rem}.footer-tech{color:var(--text-muted);letter-spacing:.04em;font-size:.8rem}.footer-tech .tech-name{color:var(--primary-dim);font-family:var(--font-display);font-weight:600}@media (width<=900px){.footer-inner{text-align:center;flex-direction:column;padding-top:24px;padding-bottom:24px}}.hero{min-height:100svh;padding:var(--nav-height) 6vw 60px;justify-content:center;align-items:center;display:flex;position:relative}.hero-inner{justify-content:center;align-items:center;gap:clamp(40px,8vw,120px);width:100%;max-width:1200px;display:flex}.hero-greeting{font-family:var(--font-display);color:var(--primary);letter-spacing:.14em;margin-bottom:18px;font-size:1rem}.hero-text h1{letter-spacing:-.01em;font-size:clamp(3rem,8vw,6rem);font-weight:700}.hero-text h1 span{color:#0000;-webkit-text-stroke:1.5px var(--primary);display:block}.hero-text h2{color:var(--text-muted);letter-spacing:.16em;text-transform:uppercase;margin-top:18px;font-size:clamp(1.2rem,2.6vw,1.9rem);font-weight:400}.hero-location{color:var(--primary);font-family:var(--font-display);letter-spacing:.1em;margin-top:12px}.hero-photo{flex-shrink:0;position:relative}.hero-photo img{object-fit:cover;border:2px solid var(--border-strong);filter:saturate(.9);border-radius:50%;width:clamp(220px,26vw,340px);height:clamp(220px,26vw,340px)}.photo-ring{border:1px dashed var(--border-strong);border-radius:50%;animation:24s linear infinite ring-spin;position:absolute;inset:-16px}@keyframes ring-spin{to{transform:rotate(360deg)}}.scroll-hint{color:var(--text-muted);letter-spacing:.24em;text-transform:uppercase;white-space:nowrap;flex-direction:column;align-items:center;gap:10px;font-size:.78rem;transition:color .2s;display:flex;position:absolute;bottom:28px;left:50%;transform:translate(-50%)}.scroll-hint:hover{color:var(--primary)}.scroll-line{background:var(--border-strong);width:1px;height:46px;position:relative;overflow:hidden}.scroll-line:after{content:"";background:var(--primary);width:100%;height:50%;animation:1.8s ease-in-out infinite scroll-drop;position:absolute;top:-50%;left:0}@keyframes scroll-drop{to{top:100%}}@media (prefers-reduced-motion:reduce){.photo-ring,.scroll-line:after{animation:none}}@media (width<=800px){.hero{padding-bottom:130px}.hero-inner{text-align:center;flex-direction:column-reverse;gap:36px}.hero-photo img{width:190px;height:190px}.scroll-hint{font-size:.68rem}}.why-me-grid{grid-template-columns:1.2fr 1fr;align-items:start;gap:clamp(40px,6vw,90px);display:grid}.why-me-intro{color:var(--text);font-size:clamp(1.15rem,2vw,1.45rem);font-weight:300;line-height:1.75}.why-me-facts h3{color:var(--primary);margin-bottom:22px;font-size:1.4rem}.why-me-facts ul{flex-direction:column;gap:14px;margin-bottom:32px;list-style:none;display:flex}.why-me-facts li{font-family:var(--font-display);align-items:center;gap:14px;padding:16px 22px;font-weight:500;transition:border-color .25s,transform .25s;display:flex}.why-me-facts li:hover{border-color:var(--border-strong);transform:translate(6px)}.why-me-facts li span{font-size:1.3rem}@media (width<=800px){.why-me-grid{grid-template-columns:1fr}}.skills-intro{max-width:640px;color:var(--text-muted);margin-bottom:48px;font-size:1.05rem}.skills-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:18px;list-style:none;display:grid}.skill-card{--skill-color:var(--primary);font-family:var(--font-display);text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:14px;padding:28px 16px;font-weight:500;transition:transform .35s,border-color .35s,box-shadow .35s;display:flex;position:relative;overflow:hidden}.skill-card:before{content:"";background:radial-gradient(130px circle at 50% 0%, color-mix(in srgb, var(--skill-color) 22%, transparent), transparent 72%);opacity:0;pointer-events:none;transition:opacity .35s;position:absolute;inset:0}.skill-card:hover{border-color:color-mix(in srgb, var(--skill-color) 55%, transparent);box-shadow:0 16px 44px color-mix(in srgb, var(--skill-color) 20%, #0006);transform:translateY(-8px)}.skill-card:hover:before{opacity:1}.skill-card img{object-fit:contain;filter:saturate(.7);width:52px;height:52px;transition:transform .35s cubic-bezier(.34,1.56,.64,1),filter .35s}.skill-card:hover img{filter:saturate(1) drop-shadow(0 0 12px color-mix(in srgb, var(--skill-color) 55%, transparent));transform:scale(1.18)rotate(-5deg)}.skill-card span{transition:color .35s}.skill-card:hover span{color:var(--skill-color)}@media (prefers-reduced-motion:reduce){.skill-card:hover,.skill-card:hover img{transform:none}}.skill-card.challenge{border-color:var(--border-strong);grid-column:span 2}.skill-card.challenge p{font-family:var(--font-body);color:var(--text-muted);font-size:.88rem;font-weight:400;line-height:1.55}@media (width<=560px){.skills-grid{grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:12px}.skill-card{padding:20px 10px}.skill-card img{width:40px;height:40px}}.projects-list{flex-direction:column;gap:64px;display:flex}.tilt-card{will-change:transform;transition:transform .25s ease-out}.project-card{grid-template-columns:1fr 1.1fr;display:grid;overflow:hidden}.projects-list .tilt-card:nth-child(2n) .project-card{grid-template-columns:1.1fr 1fr}.projects-list .tilt-card:nth-child(2n) .project-media{order:2}.project-media{min-height:280px;position:relative;overflow:hidden}.project-media .media-bg{object-fit:cover;filter:blur(14px)brightness(.45)saturate(1.2);width:100%;height:100%;position:absolute;inset:0;transform:scale(1.15)}.project-media .media-fg{object-fit:contain;width:100%;height:100%;padding:22px;transition:transform .5s;position:absolute;inset:0}.tilt-card:hover .project-media .media-fg{transform:scale(1.05)}.project-number{font-family:var(--font-display);color:#0000;-webkit-text-stroke:1.5px var(--primary);opacity:.9;font-size:3rem;font-weight:700;position:absolute;top:18px;left:22px}.project-body{padding:clamp(26px,3.5vw,44px)}.project-body h3{margin-bottom:18px;font-size:clamp(1.5rem,2.6vw,2rem)}.project-body h4{color:var(--primary);text-transform:uppercase;letter-spacing:.18em;margin:20px 0 8px;font-size:.82rem}.project-body p{color:var(--text-muted);font-size:.95rem}.tech-tags{flex-wrap:wrap;gap:8px;list-style:none;display:flex}.tech-tags li{border:1px solid var(--border);font-family:var(--font-display);color:var(--text);border-radius:999px;padding:5px 14px;font-size:.82rem}.project-links{gap:14px;margin-top:28px;display:flex}.project-links .btn{padding:11px 24px;font-size:.92rem}@media (width<=800px){.project-card,.projects-list .tilt-card:nth-child(2n) .project-card{grid-template-columns:1fr}.projects-list .tilt-card:nth-child(2n) .project-media{order:0}.project-media{min-height:200px}.projects-list{gap:40px}}.contact-grid{grid-template-columns:1fr 1.2fr;align-items:start;gap:clamp(40px,6vw,90px);display:grid}.contact-text h3{color:var(--primary);margin-bottom:20px;font-size:clamp(1.6rem,3vw,2.2rem)}.contact-text p{color:var(--text-muted);margin-bottom:16px}.contact-text strong{color:var(--text)}.contact-details{flex-direction:column;gap:12px;margin-top:30px;display:flex}.contact-details a{color:var(--text);font-family:var(--font-display);align-items:center;gap:12px;transition:color .2s;display:flex}.contact-details a:hover{color:var(--primary)}.contact-form{flex-direction:column;gap:20px;padding:clamp(26px,3.5vw,44px);display:flex}.form-group{flex-direction:column;gap:6px;display:flex}.contact-form input[type=text],.contact-form input[type=email],.contact-form textarea{border:1px solid var(--border);color:var(--text);font-family:var(--font-body);resize:vertical;background:#070a0699;border-radius:12px;padding:14px 18px;font-size:1rem;transition:border-color .2s,box-shadow .2s}.contact-form input:focus,.contact-form textarea:focus{border-color:var(--border-strong);outline:none;box-shadow:0 0 0 3px #b5e93b1f}.contact-form input.invalid,.contact-form textarea.invalid{border-color:#e05c5c}.error-msg{color:#e05c5c;font-size:.82rem}.checkbox-group label{color:var(--text-muted);cursor:pointer;align-items:flex-start;gap:12px;font-size:.9rem;display:flex}.checkbox-group input{accent-color:var(--primary);flex-shrink:0;width:16px;height:16px;margin-top:4px}.privacy-link{color:var(--primary);text-underline-offset:3px;text-decoration:underline}.form-feedback{font-family:var(--font-display);font-weight:600}.form-feedback.success{color:var(--primary)}.form-feedback.error{color:#e05c5c}.contact-form .btn{align-self:flex-start}@media (width<=800px){.contact-grid{grid-template-columns:1fr}}.legal-page{max-width:900px;padding:calc(var(--nav-height) + 40px) 6vw 100px;margin:0 auto}.back-link{color:var(--primary);font-family:var(--font-display);text-transform:uppercase;letter-spacing:.12em;align-items:center;gap:10px;margin-bottom:28px;font-size:.9rem;font-weight:600;transition:transform .2s;display:inline-flex}.back-link:hover{transform:translate(-4px)}.legal-body{padding:clamp(28px,4vw,56px)}.legal-body h1{color:var(--primary);margin-bottom:28px;font-size:clamp(1.9rem,4vw,2.8rem)}.legal-body h2{color:var(--primary);margin:32px 0 12px;font-size:1.3rem}.legal-body h3{color:var(--primary-dim);margin:22px 0 8px;font-size:1.05rem}.legal-body p{color:var(--text);margin-bottom:14px;font-size:.95rem}.legal-body p.pre-line{white-space:pre-line}.legal-body a{color:var(--primary);word-break:break-word}@font-face{font-family:Outfit;src:url(../assets/fonts/Outfit-300.woff2)format("woff2");font-weight:300;font-display:swap}@font-face{font-family:Outfit;src:url(../assets/fonts/Outfit-400.woff2)format("woff2");font-weight:400;font-display:swap}@font-face{font-family:Outfit;src:url(../assets/fonts/Outfit-500.woff2)format("woff2");font-weight:500;font-display:swap}@font-face{font-family:Outfit;src:url(../assets/fonts/Outfit-600.woff2)format("woff2");font-weight:600;font-display:swap}@font-face{font-family:Outfit;src:url(../assets/fonts/Outfit-700.woff2)format("woff2");font-weight:700;font-display:swap}@font-face{font-family:Overpass;src:url(../assets/fonts/Overpass-300.woff2)format("woff2");font-weight:300;font-display:swap}@font-face{font-family:Overpass;src:url(../assets/fonts/Overpass-400.woff2)format("woff2");font-weight:400;font-display:swap}@font-face{font-family:Overpass;src:url(../assets/fonts/Overpass-600.woff2)format("woff2");font-weight:600;font-display:swap}@font-face{font-family:Overpass;src:url(../assets/fonts/Overpass-700.woff2)format("woff2");font-weight:700;font-display:swap}:root{--primary:#b5e93b;--primary-dim:#8cb829;--primary-glow:#b5e93b59;--bg:#070a06;--bg-elevated:#141a10b8;--border:#b5e93b29;--border-strong:#b5e93b66;--text:#e8f0e0;--text-muted:#93a186;--font-display:"Outfit", sans-serif;--font-body:"Overpass", sans-serif;--radius:18px;--nav-height:76px}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html.lenis{height:auto}body{background:var(--bg);color:var(--text);font-family:var(--font-body);-webkit-font-smoothing:antialiased;line-height:1.6;overflow-x:hidden}h1,h2,h3,h4{font-family:var(--font-display);line-height:1.15}a{color:inherit;text-decoration:none}img{max-width:100%;display:block}button{font:inherit;cursor:pointer;color:inherit;background:0 0;border:none}::selection{background:var(--primary);color:#0c1004}.scene-canvas{z-index:0;pointer-events:none;position:fixed;inset:0}.static-backdrop{z-index:0;background:radial-gradient(ellipse 80% 55% at 65% 20%, #b5e93b1a, transparent 60%), radial-gradient(ellipse 60% 45% at 20% 85%, #b5e93b0f, transparent 60%), var(--bg);position:fixed;inset:0}.site-content{z-index:1;position:relative}.btn{font-family:var(--font-display);letter-spacing:.02em;border-radius:999px;justify-content:center;align-items:center;gap:10px;padding:13px 30px;font-size:1rem;font-weight:600;transition:transform .25s,box-shadow .25s,background .25s,color .25s;display:inline-flex}.btn-primary{background:var(--primary);color:#0c1004;box-shadow:0 0 24px var(--primary-glow)}.btn-primary:hover:not(:disabled){box-shadow:0 6px 36px var(--primary-glow);transform:translateY(-2px)}.btn-primary:disabled{opacity:.45;cursor:not-allowed;box-shadow:none}.btn-outline{border:1.5px solid var(--border-strong);color:var(--primary)}.btn-outline:hover{background:#b5e93b1a;transform:translateY(-2px)}.section{max-width:1200px;margin:0 auto;padding:140px 6vw;position:relative}.section-heading{align-items:baseline;gap:20px;margin-bottom:56px;display:flex}.section-heading .index{font-family:var(--font-display);color:var(--primary);letter-spacing:.2em;font-size:1rem;font-weight:600}.section-heading h2{text-transform:uppercase;letter-spacing:.02em;font-size:clamp(2.2rem,5vw,3.6rem);font-weight:700}.section-heading .line{background:linear-gradient(to right, var(--border-strong), transparent);transform-origin:0;flex:1;height:1px}.glass{border:1px solid var(--border);border-radius:var(--radius);background:#11160ee0}.reveal{opacity:0;transform:translateY(48px)}@media (prefers-reduced-motion:reduce){.reveal{opacity:1;transform:none}}@media (width<=800px){.section{padding:90px 6vw}.section-heading{margin-bottom:36px}}
