:root{--bg:#0a0b0d;--bg-soft:#101317;--surface:#14171c;--surface-2:#1b1f25;--border:#262b33;--text:#e8eaed;--text-dim:#9aa1ad;--text-faint:#5c636e;--accent:#34d399;--accent-2:#22d3ee;--accent-soft:#34d3991f;--danger:#fb7185;--warn:#fbbf24;--shadow:0 20px 60px -20px #0009;--radius:14px;--font-display:"Space Grotesk", sans-serif;--font-body:"Inter", sans-serif;--font-mono:"JetBrains Mono", monospace}[data-theme=light]{--bg:#fafaf9;--bg-soft:#f3f3f1;--surface:#fff;--surface-2:#f5f5f4;--border:#e6e6e3;--text:#16181c;--text-dim:#5b616b;--text-faint:#9aa0a8;--accent:#0e9f6e;--accent-2:#0891b2;--accent-soft:#0e9f6e1a;--shadow:0 20px 50px -25px #1414142e}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{font-family:var(--font-body);background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;line-height:1.6;transition:background .35s,color .35s;overflow-x:hidden}img{max-width:100%;display:block}a{color:inherit;text-decoration:none}ul{list-style:none}button{cursor:pointer;color:inherit;background:0 0;border:none;font-family:inherit}input,textarea{font-family:inherit}.skip-link{background:var(--accent);color:#06140e;z-index:999;border-radius:0 0 8px;padding:.75rem 1.25rem;position:absolute;top:0;left:-999px}.skip-link:focus{left:0}::selection{background:var(--accent);color:#06140e}.container{max-width:1180px;margin:0 auto;padding:0 1.5rem}.section{padding:4.5rem 0;position:relative}@media (width<=768px){.section{padding:3rem 0}}h1,h2,h3,h4{font-family:var(--font-display);letter-spacing:-.02em;font-weight:700}.gradient-text{background:linear-gradient(120deg, var(--accent), var(--accent-2));color:#0000;-webkit-background-clip:text;background-clip:text}.section-header{max-width:640px;margin-bottom:3.5rem}.section-label{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--accent);align-items:center;gap:.5rem;margin-bottom:.9rem;font-size:.78rem;display:inline-flex}.label-dot{background:var(--accent);width:6px;height:6px;box-shadow:0 0 8px var(--accent);border-radius:50%}.section-title{font-size:clamp(1.8rem,3.4vw,2.6rem);line-height:1.15}.btn{white-space:nowrap;border-radius:10px;align-items:center;gap:.6rem;padding:.85rem 1.6rem;font-size:.92rem;font-weight:600;transition:transform .25s,box-shadow .25s,background .25s,color .25s;display:inline-flex}.btn-primary{background:linear-gradient(120deg, var(--accent), var(--accent-2));color:#06140e;box-shadow:0 10px 30px -10px var(--accent-soft)}.btn-primary:hover{transform:translateY(-2px);box-shadow:0 16px 36px -10px #34d39966}.btn-outline{border:1px solid var(--border);color:var(--text)}.btn-outline:hover{border-color:var(--accent);color:var(--accent);transform:translateY(-2px)}.btn-full{justify-content:center;width:100%}.navbar{z-index:200;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:color-mix(in srgb, var(--bg) 78%, transparent);border-bottom:1px solid var(--border);position:fixed;top:0;left:0;right:0}.nav-container{justify-content:space-between;align-items:center;max-width:1180px;height:72px;margin:0 auto;padding:0 1.5rem;display:flex}.logo{font-family:var(--font-display);align-items:center;gap:.55rem;font-size:1.15rem;font-weight:700;display:flex}.logo-dim{background:linear-gradient(120deg, var(--accent), var(--accent-2));color:#0000;-webkit-background-clip:text;background-clip:text;margin-left:.2rem;font-weight:500}.nav-links{align-items:center;gap:2.1rem;display:flex}.nav-link{color:var(--text-dim);padding:.3rem 0;font-size:.92rem;transition:color .2s;position:relative}.nav-link:after{content:"";background:linear-gradient(120deg, var(--accent), var(--accent-2));width:0;height:2px;transition:width .25s;position:absolute;bottom:-4px;left:0}.nav-link:hover,.nav-link.active{color:var(--text)}.nav-link:hover:after,.nav-link.active:after{width:100%}.nav-actions{align-items:center;gap:1rem;display:flex}.theme-toggle{border:1px solid var(--border);width:40px;height:40px;color:var(--text-dim);border-radius:50%;justify-content:center;align-items:center;transition:border-color .2s,color .2s;display:flex;position:relative}.theme-toggle:hover{border-color:var(--accent);color:var(--accent)}.theme-toggle i{transition:opacity .2s,transform .3s;position:absolute}#themeIconSun{opacity:0;transform:rotate(-90deg)scale(.5)}#themeIconMoon,[data-theme=light] #themeIconSun{opacity:1;transform:rotate(0)scale(1)}[data-theme=light] #themeIconMoon{opacity:0;transform:rotate(90deg)scale(.5)}.hamburger{flex-direction:column;gap:5px;width:28px;display:none}.hamburger span{background:var(--text);border-radius:2px;width:100%;height:2px;transition:all .3s}@media (width<=920px){.nav-links{background:var(--bg);border-bottom:1px solid var(--border);flex-direction:column;align-items:flex-start;gap:0;max-height:0;transition:max-height .35s;position:fixed;top:72px;left:0;right:0;overflow:hidden}.nav-links.open{max-height:480px}.nav-links li{width:100%}.nav-link{width:100%;padding:1rem 1.5rem;display:block}.hamburger{display:flex}}.hero{align-items:center;min-height:100vh;padding-top:90px;display:flex;position:relative;overflow:hidden}.hero-bg{z-index:0;position:absolute;inset:0}.grid-overlay{background-image:linear-gradient(var(--border) 1px, transparent 1px), linear-gradient(90deg, var(--border) 1px, transparent 1px);opacity:.5;background-size:48px 48px;position:absolute;inset:0;-webkit-mask-image:radial-gradient(70% 60% at 50% 30%,#000,#0000 75%);mask-image:radial-gradient(70% 60% at 50% 30%,#000,#0000 75%)}.glow{filter:blur(100px);opacity:.35;border-radius:50%;position:absolute}.glow-1{background:var(--accent);width:480px;height:480px;top:-120px;right:-80px}.glow-2{background:var(--accent-2);width:380px;height:380px;bottom:-100px;left:-60px}.hero-container{z-index:1;grid-template-columns:1.15fr .85fr;align-items:center;gap:3rem;max-width:1180px;margin:0 auto;padding:0 1.5rem;display:grid;position:relative}.build-console{background:var(--surface);border:1px solid var(--border);font-family:var(--font-mono);border-radius:9px;align-items:center;gap:.6rem;margin-bottom:1.6rem;padding:.55rem .9rem;font-size:.8rem;display:inline-flex}.dot{border-radius:50%;width:8px;height:8px}.dot-red{background:#fb7185}.dot-yellow{background:#fbbf24}.dot-green{background:#34d399}.console-text{color:var(--text-dim);margin-left:.35rem}.console-prompt{color:var(--accent)}.console-cursor{color:var(--accent);animation:1s step-end infinite blink;display:inline-block}@keyframes blink{50%{opacity:0}}.hero-eyebrow{font-family:var(--font-mono);color:var(--accent);letter-spacing:.08em;text-transform:uppercase;margin-bottom:1rem;font-size:.85rem}.hero-name{margin-bottom:1.4rem;font-size:clamp(2.4rem,5.6vw,4.2rem);line-height:1.06}.hero-desc{color:var(--text-dim);max-width:540px;margin-bottom:2.1rem;font-size:1.08rem}.hero-cta{flex-wrap:wrap;gap:1rem;margin-bottom:2.2rem;display:flex}.hero-socials{gap:.9rem;display:flex}.hero-socials a{border:1px solid var(--border);width:42px;height:42px;color:var(--text-dim);border-radius:50%;justify-content:center;align-items:center;transition:all .25s;display:flex}.hero-socials a:hover{color:var(--accent);border-color:var(--accent);transform:translateY(-3px)}.hero-image{justify-content:center;display:flex}.image-frame{width:min(360px,80vw);position:relative}.image-frame img{aspect-ratio:1;object-fit:cover;border:1px solid var(--border);border-radius:18px;width:100%}.frame-corner{border:2px solid var(--accent);width:34px;height:34px;position:absolute}.frame-corner.tl{border-bottom:none;border-right:none;border-top-left-radius:10px;top:-10px;left:-10px}.frame-corner.br{border-top:none;border-left:none;border-bottom-right-radius:10px;bottom:-10px;right:-10px}.frame-tag{background:var(--surface);border:1px solid var(--border);font-family:var(--font-mono);color:var(--accent);white-space:nowrap;border-radius:8px;padding:.4rem .8rem;font-size:.72rem;position:absolute;bottom:-18px;left:50%;transform:translate(-50%)}.scroll-down{font-family:var(--font-mono);color:var(--text-faint);letter-spacing:.1em;text-transform:uppercase;flex-direction:column;align-items:center;gap:.4rem;font-size:.7rem;animation:2.4s ease-in-out infinite floaty;display:flex;position:absolute;bottom:2rem;left:50%;transform:translate(-50%)}@keyframes floaty{0%,to{transform:translate(-50%)}50%{transform:translate(-50%,8px)}}@media (width<=900px){.hero-container{text-align:left;grid-template-columns:1fr}.hero-image{order:-1;margin-bottom:1rem}.image-frame{width:220px}}.about-grid{grid-template-columns:1fr;align-items:start;gap:3.5rem;max-width:860px;margin:0;display:grid}.about-text h3{margin-bottom:1.1rem;font-size:1.4rem}.about-text p{color:var(--text-dim);margin-bottom:1rem}.about-text .btn{margin-top:.8rem}.about-stats{grid-template-columns:1fr 1fr;gap:1rem;display:grid}.stat-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);text-align:center;padding:1.6rem 1.2rem;transition:border-color .25s,transform .25s;position:relative;overflow:hidden}.stat-card:hover{border-color:var(--accent);transform:translateY(-4px)}.stat-number,.stat-suffix{font-family:var(--font-display);color:var(--accent);font-size:2rem;font-weight:700}.stat-card p{color:var(--text-dim);margin-top:.3rem;font-size:.85rem}@media (width<=860px){.about-grid{grid-template-columns:1fr}}.skills-grid{grid-template-columns:repeat(3,1fr);gap:1.4rem;display:grid}.skill-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1.8rem;transition:transform .25s,border-color .25s;position:relative;overflow:hidden}.skill-card:hover{border-color:var(--accent);transform:translateY(-5px)}.skill-icon{background:var(--accent-soft);width:46px;height:46px;color:var(--accent);border-radius:11px;justify-content:center;align-items:center;margin-bottom:1rem;font-size:1.2rem;display:flex}.skill-card h3{margin-bottom:.4rem;font-size:1.05rem}.skill-card p{color:var(--text-dim);min-height:42px;margin-bottom:1.1rem;font-size:.86rem}.skill-bar{background:var(--surface-2);border-radius:99px;height:6px;margin-bottom:.5rem;overflow:hidden}.skill-fill{background:linear-gradient(90deg, var(--accent), var(--accent-2));border-radius:99px;width:0;height:100%;transition:width 1.1s cubic-bezier(.4,0,.2,1)}.skill-percent{font-family:var(--font-mono);color:var(--text-faint);font-size:.78rem}@media (width<=860px){.skills-grid{grid-template-columns:1fr 1fr}}@media (width<=540px){.skills-grid{grid-template-columns:1fr}}.projects-grid{grid-template-columns:repeat(2,1fr);gap:1.8rem;display:grid}.project-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);flex-direction:column;transition:all .35s;display:flex;overflow:hidden}.project-card:hover{border-color:var(--accent);transform:translateY(-8px)}.project-image{background:var(--bg-soft);width:100%;height:220px;overflow:hidden}.project-image img{object-fit:cover;width:100%;height:100%;transition:transform .5s;display:block}.project-card:hover .project-image img{transform:scale(1.08)}.project-content{flex-direction:column;flex:1;padding:1.6rem;display:flex}.project-top{justify-content:space-between;align-items:center;margin-bottom:1rem;display:flex}.project-icon{background:var(--accent-soft);width:48px;height:48px;color:var(--accent);border-radius:12px;justify-content:center;align-items:center;font-size:1.2rem;display:flex}.project-links{gap:.6rem;display:flex}.project-links a{border:1px solid var(--border);width:38px;height:38px;color:var(--text-dim);border-radius:10px;justify-content:center;align-items:center;transition:all .25s;display:flex}.project-links a:hover{background:var(--accent);border-color:var(--accent);color:#06140e}.project-content h3{margin-bottom:.7rem;font-size:1.2rem}.project-content p{color:var(--text-dim);flex:1;margin-bottom:1.3rem;font-size:.92rem;line-height:1.7}.project-tags{flex-wrap:wrap;gap:.55rem;display:flex}.project-tags span{background:var(--accent-soft);color:var(--accent);font-size:.72rem;font-family:var(--font-mono);border:1px solid #34d39926;border-radius:999px;padding:.38rem .8rem}@media (width<=760px){.projects-grid{grid-template-columns:1fr}.project-image{height:200px}}.timeline-wrapper{padding-left:5.5rem;position:relative}.timeline-wrapper:before{content:"";background:linear-gradient(var(--accent), var(--accent-2));opacity:.4;width:2px;position:absolute;top:6px;bottom:6px;left:5rem;transform:translate(-50%)}.timeline-item{padding-bottom:2.6rem;position:relative}.timeline-item:last-child{padding-bottom:0}.timeline-year{text-align:right;width:4rem;font-family:var(--font-mono);color:var(--text-faint);font-size:.78rem;line-height:12px;position:absolute;top:6px;left:-5.5rem}.timeline-item:before{content:"";background:var(--bg);border:2px solid var(--accent);border-radius:50%;width:12px;height:12px;position:absolute;top:6px;left:-.5rem;transform:translate(-50%)}.timeline-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1.6rem 1.8rem}.timeline-date{font-family:var(--font-mono);color:var(--accent);font-size:.78rem}.timeline-card h3{margin:.4rem 0 .15rem;font-size:1.1rem}.timeline-card h4{color:var(--text-dim);margin-bottom:.6rem;font-size:.9rem;font-weight:500}.timeline-card p{color:var(--text-dim);font-size:.9rem}.contact-grid{grid-template-columns:.9fr 1.1fr;gap:3rem;display:grid}.contact-info h3{margin-bottom:.9rem;font-size:1.3rem}.contact-info p{color:var(--text-dim);margin-bottom:1.6rem}.contact-details{flex-direction:column;gap:.7rem;display:flex}.contact-item{color:var(--text-dim);align-items:center;gap:.7rem;padding:.5rem 0;font-size:.92rem;transition:color .2s;display:flex}.contact-item i{color:var(--accent);text-align:center;width:18px}.contact-item:hover{color:var(--text)}.contact-form{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;gap:1.1rem;padding:2rem;display:flex;position:relative;overflow:hidden}.form-group{flex-direction:column;gap:.4rem;display:flex}.form-group label{color:var(--text-dim);font-size:.82rem}.form-group input,.form-group textarea{background:var(--bg-soft);border:1px solid var(--border);color:var(--text);resize:vertical;border-radius:9px;padding:.8rem 1rem;font-size:.92rem;transition:border-color .2s}.form-group input:focus,.form-group textarea:focus{border-color:var(--accent);outline:none}.form-status-message{text-align:center;border-radius:9px;justify-content:center;align-items:center;gap:.5rem;margin-top:1.2rem;padding:1rem;font-weight:500;animation:.3s ease-out slideInUp;display:flex}.form-status-message.success{color:#2ecc71;background-color:#2ecc711a;border:1px solid #2ecc7133}.form-status-message.error{color:#e74c3c;background-color:#e74c3c1a;border:1px solid #e74c3c33}.form-status-message.sending{color:var(--text);border:1px solid var(--border);background-color:#ffffff0d}@keyframes slideInUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@media (width<=860px){.contact-grid{grid-template-columns:1fr}}.footer{border-top:1px solid var(--border);background:var(--bg-soft);padding:4rem 0 1.6rem}.footer-content{grid-template-columns:1.6fr 1fr 1fr;gap:2.5rem;margin-bottom:2.5rem;display:grid}.footer-brand p{color:var(--text-dim);max-width:280px;margin:.9rem 0 1.2rem;font-size:.88rem}.footer-socials{gap:.7rem;display:flex}.footer-socials a{border:1px solid var(--border);width:36px;height:36px;color:var(--text-dim);border-radius:9px;justify-content:center;align-items:center;transition:all .2s;display:flex}.footer-socials a:hover{color:var(--accent);border-color:var(--accent)}.footer-links h4{margin-bottom:1rem;font-size:.92rem}.footer-links li{margin-bottom:.6rem}.footer-links a{color:var(--text-dim);font-size:.88rem}.footer-links a:hover{color:var(--accent)}.footer-bottom{border-top:1px solid var(--border);color:var(--text-faint);flex-wrap:wrap;justify-content:space-between;gap:.6rem;padding-top:1.6rem;font-size:.82rem;display:flex}@media (width<=760px){.footer-content{grid-template-columns:1fr 1fr}}@media (width<=480px){.footer-content{grid-template-columns:1fr}}.back-to-top{background:var(--surface);border:1px solid var(--border);width:46px;height:46px;color:var(--text-dim);z-index:150;opacity:0;visibility:hidden;border-radius:50%;justify-content:center;align-items:center;transition:all .3s;display:flex;position:fixed;bottom:1.8rem;right:1.8rem;transform:translateY(10px)}.back-to-top.show{opacity:1;visibility:visible;transform:translateY(0)}.back-to-top:hover{color:var(--accent);border-color:var(--accent)}.ripple{z-index:9997;pointer-events:none;border:1.5px solid var(--accent);background:radial-gradient(circle, var(--accent-soft) 0%, transparent 70%);opacity:.6;border-radius:50%;animation:.7s cubic-bezier(.22,.68,.36,1) forwards ripple-expand;position:fixed;transform:translate(-50%,-50%)}@keyframes ripple-expand{0%{opacity:.55;width:0;height:0}to{opacity:0;width:220px;height:220px}}.cursor-dot,.cursor-ring{pointer-events:none;z-index:9998;opacity:0;border-radius:50%;position:fixed;top:0;left:0;transform:translate(-50%,-50%)}.cursor-dot{background:var(--accent);width:7px;height:7px;transition:opacity .25s,background .25s,width .25s,height .25s}.cursor-ring{border:1.5px solid var(--accent);width:36px;height:36px;transition:opacity .25s,width .2s,height .2s,background .2s,border-color .2s}body.cursor-active .cursor-dot{opacity:1}body.cursor-active .cursor-ring{opacity:.5}body.cursor-active.cursor-hover .cursor-ring{background:var(--accent-soft);opacity:.85;width:54px;height:54px}body.cursor-active.cursor-hover .cursor-dot{opacity:0}@media (hover:hover) and (pointer:fine){body.cursor-active,body.cursor-active a,body.cursor-active button,body.cursor-active input,body.cursor-active textarea{cursor:none}}@media (hover:none),(pointer:coarse){.cursor-dot,.cursor-ring{display:none}}.skill-card,.project-card,.stat-card,.contact-form{--mx:50%;--my:50%}.skill-card:before,.project-card:before,.stat-card:before,.contact-form:before{content:"";z-index:2;border-radius:inherit;background:radial-gradient(240px circle at var(--mx) var(--my), var(--accent-soft), transparent 72%);opacity:0;pointer-events:none;transition:opacity .4s;position:absolute;inset:0}.skill-card:hover:before,.project-card:hover:before,.stat-card:hover:before,.contact-form:hover:before{opacity:1}.hero-image .image-frame{will-change:transform}.antigravity-canvas{z-index:-1;pointer-events:none;width:100%;height:100%;display:block;position:fixed;inset:0}body.loading{overflow:hidden}.preloader{z-index:9999;background:var(--bg);justify-content:center;align-items:center;transition:opacity .6s cubic-bezier(.65,0,.35,1),visibility .6s;display:flex;position:fixed;inset:0}.preloader.hidden{opacity:0;visibility:hidden;pointer-events:none}.preloader-inner{flex-direction:column;align-items:center;gap:1.1rem;display:flex}.preloader-logo{width:56px;height:56px;animation:2.2s ease-in-out infinite preloader-float}.preloader-mark{object-fit:contain;width:100%;height:100%;filter:drop-shadow(0 0 22px var(--accent-soft))}@keyframes preloader-float{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}.preloader-bar{background:var(--surface-2);border-radius:99px;width:180px;height:3px;overflow:hidden}.preloader-fill{background:linear-gradient(90deg, var(--accent), var(--accent-2));border-radius:99px;width:0%;height:100%}.preloader-percent{font-family:var(--font-mono);color:var(--text-faint);letter-spacing:.05em;font-size:.72rem}.preloader-label{font-family:var(--font-mono);color:var(--text-faint);text-transform:uppercase;letter-spacing:.16em;margin-top:.2rem;font-size:.68rem}.logo-icon{object-fit:contain;flex-shrink:0;width:28px;height:28px;transition:transform .35s cubic-bezier(.34,1.56,.64,1)}.logo:hover .logo-icon{transform:rotate(-10deg)scale(1.08)}.footer-brand .logo-icon{width:32px;height:32px}.navbar{transition:background .3s,box-shadow .3s}.nav-container{transition:height .3s}.navbar.scrolled{box-shadow:0 12px 30px -20px #00000080}.navbar.scrolled .nav-container{height:64px}.hero-bg:after{content:"";opacity:.05;pointer-events:none;background:url(images/logo-mark-accent.png) 50%/contain no-repeat;width:620px;height:620px;position:absolute;top:50%;right:-6%;transform:translateY(-50%)}@media (width<=900px){.hero-bg:after{display:none}}.about{position:relative}.about:before{content:"";z-index:-1;opacity:.04;pointer-events:none;background:url(images/logo-mark-accent.png) 50%/contain no-repeat;width:420px;height:420px;position:absolute;top:-6%;left:-8%}@media (width<=900px){.about:before{width:280px;height:280px}}.project-card{position:relative}.project-card:after{content:"";z-index:-1;opacity:.055;pointer-events:none;background:url(images/logo-mark-accent.png) 50%/contain no-repeat;width:120px;height:120px;position:absolute;bottom:-22px;right:-22px}.footer{position:relative;overflow:hidden}.footer:after{content:"";z-index:-1;opacity:.05;pointer-events:none;background:url(images/logo-mark-accent.png) 50%/contain no-repeat;width:300px;height:300px;position:absolute;bottom:-70px;right:-40px}.reveal{opacity:0;transition:opacity .7s,transform .7s;transform:translateY(24px)}.reveal.visible{opacity:1;transform:translateY(0)}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}.reveal{opacity:1;transform:none}.antigravity-canvas,.preloader{display:none!important}body.loading{overflow:visible!important}}
