:root{--bg:#0a0a10;--bg-2:#0f0f1a;--bg-3:#141422;--surface:rgba(255,255,255,0.04);--surface-h:rgba(255,255,255,0.07);--border:rgba(255,255,255,0.08);--border-h:rgba(255,255,255,0.16);--accent:#7c3aed;--accent-2:#a855f7;--accent-3:#06b6d4;--accent-glow:rgba(124,58,237,0.35);--text:#f1f0ff;--text-2:#a8a4c0;--text-3:#6b667f;--grad:linear-gradient(135deg,#7c3aed,#a855f7,#06b6d4);--grad-h:linear-gradient(135deg,#6d28d9,#9333ea,#0891b2);--radius:16px;--radius-sm:10px;--radius-lg:24px;--shadow:0 20px 60px rgba(0,0,0,0.5);--shadow-glow:0 0 40px rgba(124,58,237,0.2);--font-main:'Plus Jakarta Sans','Inter',sans-serif;--font-sub:'Plus Jakarta Sans','Inter',sans-serif;--nav-h:70px;--section-gap:120px;--site-pad:48px;--nav-bg:rgba(10,10,16,0.85);--badge-bg:rgba(15,15,26,0.85);--overlay-bg:rgba(10,10,16,0.7);--menu-bg:rgba(10,10,16,0.97);--cursor-opacity:0.12;}[data-theme="light"]{--bg:#f5f5fa;--bg-2:#ffffff;--bg-3:#eaeaf2;--surface:rgba(0,0,0,0.03);--surface-h:rgba(0,0,0,0.06);--border:rgba(0,0,0,0.08);--border-h:rgba(0,0,0,0.15);--accent:#6d28d9;--accent-2:#7c3aed;--accent-3:#0891b2;--accent-glow:rgba(109,40,217,0.18);--text:#0b0a14;--text-2:#4c4962;--text-3:#837e9b;--grad:linear-gradient(135deg,#6d28d9,#7c3aed,#0891b2);--grad-h:linear-gradient(135deg,#5b21b6,#6d28d9,#0e7490);--shadow:0 20px 50px rgba(0,0,0,0.05);--shadow-glow:0 0 40px rgba(109,40,217,0.08);--nav-bg:rgba(245,245,250,0.85);--badge-bg:rgba(255,255,255,0.85);--overlay-bg:rgba(255,255,255,0.7);--menu-bg:rgba(245,245,250,0.97);--cursor-opacity:0.04;}*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;}html{scroll-behavior:auto;font-size:16px;}body{font-family:var(--font-sub);background:var(--bg);color:var(--text);line-height:1.7;overflow-x:hidden;-webkit-font-smoothing:antialiased;transition:background-color 0.75s ease,color 0.75s ease;}.theme-transitioning,.theme-transitioning *,.theme-transitioning *::before,.theme-transitioning *::after{transition:background-color  0.75s ease,color             0.75s ease,border-color      0.75s ease,box-shadow        0.75s ease,opacity           0.75s ease !important;}img{display:block;max-width:100%;}a{color:inherit;text-decoration:none;}button{cursor:pointer;border:none;background:none;}ul{list-style:none;}::-webkit-scrollbar{width:6px;}::-webkit-scrollbar-track{background:var(--bg);}::-webkit-scrollbar-thumb{background:var(--accent);border-radius:99px;}::selection{background:var(--accent-glow);color:#fff;}#cursor-glow{position:fixed;width:500px;height:500px;border-radius:50%;background:radial-gradient(circle,var(--accent-glow)0%,transparent 70%);pointer-events:none;transform:translate(-50%,-50%);transition:opacity 0.3s ease;z-index:0;mix-blend-mode:screen;}.container{max-width:1140px;margin:0 auto;padding:0 var(--site-pad);}.section-pad{padding:var(--section-gap)0;}.gradient-text{background:var(--grad);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;}.glass-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);}.section-label{font-family:var(--font-sub);font-size:0.75rem;font-weight:600;letter-spacing:0.15em;text-transform:uppercase;color:var(--accent-2);margin-bottom:12px;}.section-heading{font-family:var(--font-main);font-size:clamp(2rem,4vw,3rem);font-weight:800;line-height:1.15;color:var(--text);margin-bottom:16px;}.section-heading.centered{text-align:center;}.section-sub{color:var(--text-2);font-size:1.05rem;text-align:center;max-width:520px;margin:0 auto 64px;}.btn-primary{display:inline-flex;align-items:center;gap:8px;padding:14px 28px;background:var(--grad);color:#fff;font-weight:600;font-size:0.95rem;border-radius:50px;transition:opacity 0.25s,transform 0.25s,box-shadow 0.25s;box-shadow:0 4px 20px var(--accent-glow);position:relative;z-index:1;}.btn-primary:hover{opacity:0.9;transform:translateY(-2px);box-shadow:0 8px 30px var(--accent-glow);}.btn-primary.btn-full{width:100%;justify-content:center;border-radius:var(--radius-sm);}.btn-ghost{display:inline-flex;align-items:center;gap:8px;padding:14px 28px;border:1.5px solid var(--border-h);color:var(--text);font-weight:600;font-size:0.95rem;border-radius:50px;transition:border-color 0.25s,background 0.25s,transform 0.25s;}.btn-ghost:hover{border-color:var(--accent-2);background:var(--accent-glow);transform:translateY(-2px);}.btn-resume{display:inline-flex;align-items:center;gap:6px;padding:8px 18px;border:1.5px solid var(--accent-2);color:var(--accent-2);font-weight:600;font-size:0.85rem;border-radius:50px;transition:background 0.25s,color 0.25s;}.btn-resume:hover{background:var(--accent-2);color:#fff;}#navbar{position:fixed;top:0;left:0;right:0;z-index:1000;transition:background 0.35s,backdrop-filter 0.35s,box-shadow 0.35s;}#navbar.scrolled{background:var(--nav-bg);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);box-shadow:0 1px 0 var(--border);}.nav-inner{max-width:1140px;margin:0 auto;padding:0 var(--site-pad);height:var(--nav-h);display:flex;align-items:center;gap:32px;}.nav-logo{font-family:var(--font-main);font-size:1.4rem;font-weight:900;color:var(--text);letter-spacing:-0.02em;margin-right:auto;transition:opacity 0.2s;}.nav-logo:hover{opacity:0.8;}.nav-logo .dot{color:var(--accent-2);}.nav-links{display:flex;gap:32px;align-items:center;}.nav-links a{font-size:0.9rem;font-weight:500;color:var(--text-2);transition:color 0.2s;position:relative;}.nav-links a::after{content:'';position:absolute;bottom:-4px;left:0;right:0;height:2px;background:var(--accent-2);border-radius:2px;transform:scaleX(0);transition:transform 0.25s ease;}.nav-links a:hover{color:var(--text);}.nav-links a:hover::after{transform:scaleX(1);}.nav-links a.active{color:var(--text);}.nav-links a.active::after{transform:scaleX(1);}.hamburger{display:none;flex-direction:column;gap:5px;padding:4px;}.hamburger span{display:block;width:22px;height:2px;background:var(--text);border-radius:2px;transition:transform 0.3s ease,opacity 0.3s ease;}.hamburger.open span:nth-child(1){transform:translateY(7px)rotate(45deg);}.hamburger.open span:nth-child(2){opacity:0;}.hamburger.open span:nth-child(3){transform:translateY(-7px)rotate(-45deg);}.mobile-menu{display:flex;flex-direction:column;background:var(--menu-bg);backdrop-filter:blur(20px);border-top:1px solid var(--border);overflow:hidden;max-height:0;transition:max-height 0.4s cubic-bezier(0.16,1,0.3,1);}.mobile-menu.open{max-height:400px;}.mobile-link{padding:16px 24px;font-weight:500;color:var(--text-2);border-bottom:1px solid var(--border);transition:color 0.2s,background 0.2s;}.mobile-link:hover{color:var(--text);background:var(--surface);}#hero{min-height:100vh;display:grid;grid-template-columns:1fr 1fr;align-items:center;gap:48px;max-width:1140px;margin:5rem auto 0;padding:calc(var(--nav-h)+20px)var(--site-pad)80px;position:relative;}.hero-bg-orbs{position:fixed;inset:0;pointer-events:none;z-index:-1;overflow:hidden;}.orb{position:absolute;border-radius:50%;filter:blur(80px);opacity:0.35;will-change:transform;}.orb-1{width:600px;height:600px;background:radial-gradient(circle,var(--accent),transparent);top:-200px;left:-200px;animation:orb-drift 12s ease-in-out infinite;}.orb-2{width:500px;height:500px;background:radial-gradient(circle,var(--accent-3),transparent);top:40%;right:-150px;animation:orb-drift 16s ease-in-out infinite reverse;}.orb-3{width:400px;height:400px;background:radial-gradient(circle,var(--accent-2),transparent);bottom:-100px;left:40%;animation:orb-drift 10s ease-in-out infinite 3s;}@keyframes orb-drift{0%,100%{transform:translate(0,0)scale(1);}33%{transform:translate(30px,-30px)scale(1.05);}66%{transform:translate(-20px,20px)scale(0.95);}}.hero-content{z-index:1;}.hero-badge{display:inline-flex;align-items:center;gap:8px;background:var(--accent-glow);border:1px solid var(--accent);border-radius:50px;padding:6px 16px;font-size:0.8rem;font-weight:500;color:var(--accent-2);margin-bottom:28px;animation:fade-up 0.6s ease both;}.badge-dot{width:8px;height:8px;background:#22c55e;border-radius:50%;box-shadow:0 0 8px #22c55e;animation:pulse-dot 2s ease infinite;will-change:transform,opacity;}@keyframes pulse-dot{0%,100%{transform:scale(1);opacity:0.8;}50%{transform:scale(1.4);opacity:1;}}.hero-name{font-family:var(--font-main);font-size:clamp(2.8rem,5.5vw,4.5rem);font-weight:900;line-height:1.08;letter-spacing:-0.03em;margin-bottom:20px;animation:fade-up 0.6s ease 0.1s both;}.hero-tagline{font-size:clamp(1.3rem,2.5vw,1.8rem);font-weight:600;color:var(--text-2);margin-bottom:16px;animation:fade-up 0.6s ease 0.2s both;display:flex;align-items:center;gap:8px;flex-wrap:wrap;}.type-wrap{display:inline-flex;align-items:center;gap:2px;}#typed-text{color:var(--accent-2);min-width:2ch;}.cursor-blink{color:var(--accent-2);animation:blink 1s step-end infinite;}@keyframes blink{0%,100%{opacity:1;}50%{opacity:0;}}.hero-sub{color:var(--text-2);font-size:1.05rem;max-width:440px;margin-bottom:36px;animation:fade-up 0.6s ease 0.3s both;}.hero-cta{display:flex;gap:16px;flex-wrap:wrap;animation:fade-up 0.6s ease 0.4s both;}.hero-scroll-hint{display:flex;flex-direction:column;align-items:flex-start;gap:8px;margin-top:64px;animation:fade-up 0.6s ease 0.6s both;opacity:0.5;}.scroll-line{width:1px;height:40px;background:linear-gradient(to bottom,var(--accent-2),transparent);animation:scroll-pulse 2s ease infinite;transform-origin:top;will-change:transform;}.hero-scroll-hint span{font-size:0.7rem;letter-spacing:0.12em;text-transform:uppercase;color:var(--text-3);writing-mode:horizontal-tb;}@keyframes scroll-pulse{0%,100%{transform:scaleY(1);opacity:0.5;}50%{transform:scaleY(1.4);opacity:1;}}.hero-photo-wrap{position:relative;display:flex;justify-content:center;align-items:center;animation:fade-up 0.8s ease 0.2s both;z-index:1;}.photo-ring{position:absolute;border-radius:50%;border:1px solid;animation:ring-spin 12s linear infinite;will-change:transform;}.ring-1{width:380px;height:380px;border-color:var(--accent-glow);}.ring-2{width:440px;height:440px;border-color:rgba(168,85,247,0.1);animation-duration:20s;animation-direction:reverse;}.hero-photo{width:300px;height:300px;object-fit:cover;border-radius:50%;border:3px solid transparent;background:var(--grad)border-box;-webkit-mask:linear-gradient(#fff 0 0)padding-box,linear-gradient(#fff 0 0);-webkit-mask-composite:destination-out;mask-composite:exclude;box-shadow:0 0 60px var(--accent-glow),0 0 0 3px var(--accent);transition:box-shadow 0.4s ease;}.hero-photo:hover{box-shadow:0 0 80px var(--accent-glow),0 0 0 3px var(--accent-2);}@keyframes ring-spin{from{transform:rotate(0deg);}to{transform:rotate(360deg);}}.photo-badge-floating{position:absolute;inset:0;pointer-events:none;}.float-badge{position:absolute;display:flex;align-items:center;gap:10px;background:var(--badge-bg);backdrop-filter:blur(12px);border:1px solid var(--border-h);border-radius:var(--radius-sm);padding:10px 14px;pointer-events:auto;animation:float-y 4s ease-in-out infinite;animation-delay:var(--delay,0s);will-change:transform;}#float-badge-1{bottom:20px;left:-40px;}#float-badge-2{top:20px;right:-40px;}.fb-emoji{font-size:1.3rem;}.float-badge strong{display:block;font-size:0.85rem;font-weight:700;}.float-badge small{display:block;font-size:0.7rem;color:var(--text-3);}@keyframes float-y{0%,100%{transform:translateY(0);}50%{transform:translateY(-8px);}}.about-grid{display:grid;grid-template-columns:1fr 400px;gap:80px;align-items:start;}.about-text h2{font-family:var(--font-main);margin-bottom:24px;}.about-text p{color:var(--text-2);margin-bottom:18px;font-size:1.02rem;}.about-stats{display:flex;gap:40px;margin-top:40px;padding-top:32px;border-top:1px solid var(--border);}.stat-item{text-align:center;}.stat-num{display:block;font-family:var(--font-main);font-size:2.4rem;font-weight:900;background:var(--grad);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;line-height:1;margin-bottom:4px;}.stat-item span{font-size:0.8rem;color:var(--text-3);font-weight:500;}.about-visual{position:sticky;top:calc(var(--nav-h)+24px);}.about-card{padding:24px;}.about-card-inner{display:flex;flex-direction:column;gap:20px;}.about-photo{width:100%;height:auto;aspect-ratio:3/4;object-fit:cover;border-radius:12px;}.about-card-tags{display:flex;gap:8px;flex-wrap:wrap;}.tag{padding:6px 16px;border-radius:50px;font-size:0.78rem;font-weight:600;background:var(--accent-glow);border:1px solid var(--accent);color:var(--accent-2);}.projects-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px;}.project-card--wide{grid-column:1 / -1;}.project-card{background:var(--bg-2);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;transition:border-color 0.3s ease,transform 0.3s ease,box-shadow 0.3s ease;cursor:pointer;display:flex;flex-direction:column;}.project-card:hover{border-color:var(--accent);transform:translateY(-4px);box-shadow:0 20px 60px rgba(0,0,0,0.4),0 0 0 1px var(--accent-glow);}.project-card--wide{flex-direction:row;}.project-card--wide .project-img-wrap{width:55%;flex-shrink:0;}.project-card--wide .project-info{flex:1;}.project-img-wrap{position:relative;overflow:hidden;height:320px;}.project-card--wide .project-img-wrap{height:auto;min-height:340px;}.project-img{width:100%;height:100%;object-fit:cover;transition:transform 0.5s ease;}.project-card:hover .project-img{transform:scale(1.04);}.project-overlay{position:absolute;inset:0;background:var(--overlay-bg);display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity 0.3s ease;}.project-card:hover .project-overlay{opacity:1;}.overlay-btn{display:inline-flex;align-items:center;gap:8px;padding:12px 24px;background:var(--grad);color:#fff;font-weight:600;font-size:0.9rem;border-radius:50px;transition:transform 0.2s;}.overlay-btn:hover{transform:scale(1.04);}.project-info{padding:28px;display:flex;flex-direction:column;gap:14px;}.project-header{display:flex;align-items:center;justify-content:space-between;gap:12px;}.project-num{font-size:0.7rem;font-weight:800;letter-spacing:0.1em;color:var(--accent-2);opacity:0.7;}.project-tags{display:flex;gap:6px;flex-wrap:wrap;}.p-tag{padding:3px 10px;font-size:0.72rem;font-weight:600;border-radius:50px;background:var(--accent-glow);border:1px solid var(--accent-3);color:var(--accent-3);}.project-title{font-family:var(--font-main);font-size:1.5rem;font-weight:800;letter-spacing:-0.02em;}.project-desc{font-size:0.93rem;color:var(--text-2);line-height:1.65;}.project-built{background:var(--accent-glow);border:1px solid var(--accent);border-radius:var(--radius-sm);padding:12px 16px;font-size:0.85rem;color:var(--text-2);line-height:1.6;}.built-label{display:block;font-weight:700;color:var(--accent-2);font-size:0.78rem;text-transform:uppercase;letter-spacing:0.08em;margin-bottom:4px;}.project-link{display:inline-flex;align-items:center;gap:4px;font-weight:600;font-size:0.88rem;color:var(--accent-2);transition:gap 0.2s ease,opacity 0.2s;margin-top:auto;}.project-link:hover{gap:8px;opacity:0.8;}.skills-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;}.skill-group{padding:28px;transition:border-color 0.3s ease,transform 0.3s ease;}.skill-group:hover{border-color:var(--border-h);transform:translateY(-4px);}.skill-group-header{display:flex;align-items:center;gap:12px;margin-bottom:28px;}.skill-icon{font-size:1.6rem;}.skill-group-header h3{font-family:var(--font-main);font-size:1.1rem;font-weight:700;}.skill-list{display:flex;flex-direction:column;gap:20px;}.skill-item{display:flex;flex-direction:column;gap:8px;}.skill-name{font-size:0.88rem;font-weight:500;color:var(--text-2);}.skill-bar{height:5px;background:rgba(255,255,255,0.06);border-radius:99px;overflow:hidden;}.skill-fill{height:100%;width:var(--pct);background:var(--grad);border-radius:99px;transform:scaleX(0);transform-origin:left;transition:transform 1s cubic-bezier(0.34,1.56,0.64,1);}.skill-fill.animate{transform:scaleX(1);}.testimonials-wrap{position:relative;}.testimonials-track{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:24px;transition:transform 0.5s cubic-bezier(0.16,1,0.3,1);}.testimonial-card{padding:32px;transition:border-color 0.3s,transform 0.3s;}.testimonial-card:hover{border-color:var(--border-h);transform:translateY(-4px);}.t-stars{font-size:1rem;color:#f59e0b;letter-spacing:2px;margin-bottom:16px;}.t-text{font-size:0.96rem;color:var(--text-2);line-height:1.75;margin-bottom:24px;font-style:italic;}.t-text::before{content:'"';}.t-text::after{content:'"';}.t-author{display:flex;align-items:center;gap:14px;}.t-avatar{width:44px;height:44px;border-radius:50%;background:var(--av-color,var(--grad));display:flex;align-items:center;justify-content:center;font-size:0.8rem;font-weight:800;color:#fff;flex-shrink:0;}.t-author strong{display:block;font-size:0.9rem;font-weight:700;}.t-author small{display:block;font-size:0.78rem;color:var(--text-3);}.t-controls{display:none;align-items:center;justify-content:center;gap:16px;margin-top:32px;}.t-btn{width:40px;height:40px;border-radius:50%;border:1px solid var(--border-h);color:var(--text);display:flex;align-items:center;justify-content:center;transition:background 0.2s,border-color 0.2s;}.t-btn:hover{background:var(--surface-h);border-color:var(--accent-2);}.t-dots{display:flex;gap:8px;}.t-dot{width:8px;height:8px;border-radius:50%;background:var(--border-h);transition:background 0.3s,transform 0.3s;}.t-dot.active{background:var(--accent-2);transform:scale(1.3);}.contact-grid{display:grid;grid-template-columns:1fr 1.4fr;gap:48px;align-items:start;}.contact-info{display:flex;flex-direction:column;gap:24px;}.contact-item{display:flex;align-items:center;gap:16px;padding:20px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);transition:border-color 0.3s,background 0.3s;}.contact-item:hover{border-color:var(--border-h);background:var(--surface-h);}.ci-icon{width:44px;height:44px;border-radius:50%;background:var(--accent-glow);display:flex;align-items:center;justify-content:center;color:var(--accent-2);flex-shrink:0;}.contact-item small{display:block;font-size:0.72rem;color:var(--text-3);margin-bottom:2px;}.contact-item a{font-size:0.9rem;font-weight:500;color:var(--text);transition:color 0.2s;}.contact-item a:hover{color:var(--accent-2);}.contact-form{padding:36px;display:flex;flex-direction:column;gap:20px;}.form-group{display:flex;flex-direction:column;gap:8px;}.form-group label{font-size:0.82rem;font-weight:600;text-transform:uppercase;letter-spacing:0.08em;color:var(--text-3);}.form-group input,.form-group textarea{background:rgba(255,255,255,0.04);border:1px solid var(--border);border-radius:var(--radius-sm);padding:14px 16px;color:var(--text);font-family:var(--font-sub);font-size:0.94rem;transition:border-color 0.25s,box-shadow 0.25s;resize:none;outline:none;}.form-group input::placeholder,.form-group textarea::placeholder{color:var(--text-3);}.form-group input:focus,.form-group textarea:focus{border-color:var(--accent-2);box-shadow:0 0 0 3px var(--accent-glow);}.form-group input.error,.form-group textarea.error{border-color:#ef4444;}.form-error{font-size:0.78rem;color:#ef4444;min-height:16px;}.form-success{padding:14px 18px;background:rgba(34,197,94,0.1);border:1px solid rgba(34,197,94,0.25);border-radius:var(--radius-sm);color:#22c55e;font-size:0.9rem;font-weight:500;text-align:center;}#footer{border-top:1px solid var(--border);padding:40px var(--site-pad);}.footer-inner{max-width:1140px;margin:0 auto;text-align:center;display:flex;flex-direction:column;gap:6px;}.footer-inner p{font-size:0.88rem;color:var(--text-3);}.footer-copy{font-size:0.78rem;}#back-to-top{position:fixed;bottom:32px;right:32px;width:48px;height:48px;border-radius:50%;background:var(--grad);color:#fff;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 20px var(--accent-glow);opacity:0;transform:translateY(16px);transition:opacity 0.3s,transform 0.3s;z-index:999;}#back-to-top.visible{opacity:1;transform:translateY(0);}#back-to-top:hover{transform:translateY(-2px);}@keyframes fade-up{from{opacity:0;transform:translateY(32px);}to{opacity:1;transform:translateY(0);}}.reveal{opacity:0;transform:translateY(40px);transition:opacity 0.7s ease,transform 0.7s ease;will-change:transform,opacity;}.reveal.visible{opacity:1;transform:translateY(0);}.reveal-left{opacity:0;transform:translateX(-40px);transition:opacity 0.7s ease,transform 0.7s ease;will-change:transform,opacity;}.reveal-left.visible{opacity:1;transform:translateX(0);}.reveal-right{opacity:0;transform:translateX(40px);transition:opacity 0.7s ease,transform 0.7s ease;will-change:transform,opacity;}.reveal-right.visible{opacity:1;transform:translateX(0);}@media(max-width:1024px){:root{--section-gap:80px;--site-pad:32px;}#hero{grid-template-columns:1fr;text-align:center;margin-top:3rem;padding-top:calc(var(--nav-h)+20px);}.hero-content{order:2;}.hero-photo-wrap{order:1;}.hero-sub{margin-left:auto;margin-right:auto;}.hero-cta{justify-content:center;}.hero-scroll-hint{display:none;}.hero-photo{width:220px;height:220px;}.ring-1{width:270px;height:270px;}.ring-2{width:320px;height:320px;}#float-badge-1{left:0;}#float-badge-2{right:0;}.hero-tagline{justify-content:center;}.about-grid{grid-template-columns:1fr;gap:40px;}.about-visual{position:static;}.about-photo{aspect-ratio:4/3;}.projects-grid{grid-template-columns:1fr;}.project-card--wide{flex-direction:column;}.project-card--wide .project-img-wrap{width:100%;height:240px;}.skills-grid{grid-template-columns:1fr;}.testimonials-track{display:flex;flex-direction:row;flex-wrap:nowrap;width:100%;overflow:hidden;}.testimonial-card{flex:0 0 100%;box-sizing:border-box;}.t-controls{display:flex;}.contact-grid{grid-template-columns:1fr;}.about-stats{flex-wrap:wrap;gap:24px;}}@media(max-width:640px){:root{--site-pad:20px;}.nav-links,.btn-resume{display:none;}.hamburger{display:flex;}.hero-name{font-size:2.2rem;}.hero-photo{width:180px;height:180px;}.ring-1{width:220px;height:220px;}.ring-2{width:260px;height:260px;}.float-badge{display:none;}.project-card{border-radius:var(--radius);}}.theme-toggle{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;border:1.5px solid var(--border-h);color:var(--text-2);background:var(--surface);transition:border-color 0.25s,color 0.25s,transform 0.25s,background-color 0.25s;flex-shrink:0;}.theme-toggle:hover{border-color:var(--accent-2);color:var(--text);transform:scale(1.05);background:var(--surface-h);}.theme-toggle .sun-icon{display:block;}.theme-toggle .moon-icon{display:none;}[data-theme="light"] .theme-toggle .sun-icon{display:none;}[data-theme="light"] .theme-toggle .moon-icon{display:block;}@keyframes toggle-origin-pulse{0%{box-shadow:0 0 0 0 rgba(139,92,246,0.7);transform:scale(1);}40%{box-shadow:0 0 0 14px rgba(139,92,246,0);transform:scale(1.18);}70%{transform:scale(0.94);}100%{box-shadow:0 0 0 0 rgba(139,92,246,0);transform:scale(1);}}.theme-toggle.ripple-firing{animation:toggle-origin-pulse 0.55s cubic-bezier(0.4,0,0.2,1)forwards;}#theme-ripple-canvas{position:fixed;inset:0;z-index:10000;pointer-events:none;width:100vw;height:100vh;}#theme-ripple-canvas.blocking{pointer-events:auto;}#customizer-trigger{position:fixed;bottom:32px;left:32px;display:none !important;align-items:center;gap:10px;padding:14px 24px;background:var(--bg-2);border:1px solid var(--border-h);border-radius:50px;color:var(--text);font-weight:600;font-size:0.9rem;box-shadow:var(--shadow);z-index:1500;transition:transform 0.25s,border-color 0.25s,background 0.25s;}html[data-edit-mode] #customizer-trigger{display:inline-flex !important;}#customizer-trigger:hover{transform:translateY(-2px)scale(1.03);border-color:var(--accent-2);background:var(--surface-h);}#customizer-trigger svg{animation:gear-spin 8s linear infinite;color:var(--accent-2);will-change:transform;}@keyframes gear-spin{from{transform:rotate(0deg);}to{transform:rotate(360deg);}}.custom-hidden{display:none !important;}#customizer-panel{position:fixed;top:0;left:0;width:400px;height:100vh;background:rgba(15,15,26,0.95);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-right:1px solid var(--border);box-shadow:10px 0 45px rgba(0,0,0,0.6);z-index:2000;display:none !important;flex-direction:column;transform:translateX(-100%);transition:transform 0.4s cubic-bezier(0.16,1,0.3,1);}html[data-edit-mode] #customizer-panel{display:flex !important;}[data-theme="light"] #customizer-panel{background:rgba(245,245,250,0.95);border-right:1px solid rgba(0,0,0,0.1);box-shadow:10px 0 45px rgba(0,0,0,0.1);}#customizer-panel.open{transform:translateX(0);}@media(min-width:901px){html.customizer-open body{padding-left:var(--panel-width,400px);transition:padding-left 0.4s cubic-bezier(0.16,1,0.3,1);}html.customizer-open #navbar{left:var(--panel-width,400px);transition:left 0.4s cubic-bezier(0.16,1,0.3,1),background 0.35s,backdrop-filter 0.35s,box-shadow 0.35s;}html.customizer-open.resizing body,html.customizer-open.resizing #navbar{transition:none !important;}}#cust-resize-handle{position:absolute;top:0;right:0;width:8px;height:100%;cursor:ew-resize;background:transparent;border-right:2px solid transparent;z-index:100;transition:background-color 0.2s,border-right-color 0.2s;}#cust-resize-handle:hover,#cust-resize-handle.active{background:var(--accent-glow);border-right-color:var(--accent-2);}[data-theme="light"] #cust-resize-handle:hover,[data-theme="light"] #cust-resize-handle.active{background:var(--accent-glow);}.cust-header{padding:20px 24px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;}.cust-header h3{font-family:var(--font-main);font-size:1.25rem;font-weight:700;background:var(--grad);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;}#cust-close-btn{font-size:1.8rem;color:var(--text-2);line-height:1;transition:color 0.2s;padding:4px;}#cust-close-btn:hover{color:var(--text);}.cust-body{flex:1;overflow-y:auto;padding:24px;display:flex;flex-direction:column;gap:28px;}.cust-body::-webkit-scrollbar{width:5px;}.cust-body::-webkit-scrollbar-track{background:transparent;}.cust-body::-webkit-scrollbar-thumb{background:var(--border-h);border-radius:99px;}.cust-section{border:1px solid var(--border);border-radius:var(--radius);padding:20px;display:flex;flex-direction:column;gap:18px;background:rgba(255,255,255,0.01);container-type:inline-size;container-name:cust-section;}[data-theme="light"] .cust-section{border:1px solid rgba(0,0,0,0.08);background:rgba(0,0,0,0.01);}.cust-section legend{padding:0 8px;font-size:0.85rem;font-weight:700;text-transform:uppercase;letter-spacing:0.08em;color:var(--accent-2);}.cust-color-row{display:flex;flex-wrap:wrap;gap:12px;}.cust-color-picker-wrap{flex:1 1 130px;display:flex;flex-direction:column;gap:8px;}.cust-color-picker-wrap label{font-size:0.76rem;font-weight:700;text-transform:uppercase;letter-spacing:0.07em;color:var(--text-2);}.cust-color-swatch{display:flex;align-items:center;gap:10px;padding:8px 12px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;transition:border-color 0.2s,box-shadow 0.2s;position:relative;overflow:hidden;}.cust-color-swatch:hover{border-color:var(--accent-2);box-shadow:0 0 0 3px var(--accent-glow);}.cust-color-swatch input[type="color"]{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer;border:none;padding:0;}.cust-color-dot{width:28px;height:28px;border-radius:50%;flex-shrink:0;border:2px solid rgba(255,255,255,0.15);transition:background 0.25s ease;pointer-events:none;}.cust-color-hex{font-size:0.83rem;font-weight:600;font-family:'Courier New',monospace;color:var(--text-2);pointer-events:none;}.cust-gradient-preview{height:8px;border-radius:99px;background:linear-gradient(135deg,#7c3aed,#a855f7,#06b6d4);margin-top:2px;transition:background 0.4s ease;opacity:0.85;}[data-theme="light"] .cust-gradient-preview{opacity:1;}.cust-fields-wrap{display:flex;flex-wrap:wrap;gap:14px;}.cust-fields-wrap>.cust-field{flex:1 1 200px;min-width:0;}.cust-subgroups-wrap{display:flex;flex-wrap:wrap;gap:16px;}.cust-subgroups-wrap>.cust-field.sub-group{flex:1 1 260px;min-width:0;border:1px solid var(--border);border-radius:var(--radius-sm);padding:14px;border-bottom:none;}[data-theme="light"] .cust-subgroups-wrap>.cust-field.sub-group{border:1px solid rgba(0,0,0,0.07);}@container cust-section(max-width:420px){.cust-subgroups-wrap>.cust-field.sub-group,.cust-fields-wrap>.cust-field{flex:1 1 100%;}}.cust-field{display:flex;flex-direction:column;gap:6px;}.cust-field.sub-group{border-bottom:1px dashed var(--border);padding-bottom:14px;}.cust-field.sub-group:last-child{border-bottom:none;padding-bottom:0;}.cust-subgroups-wrap>.cust-field.sub-group{border-bottom:none;padding-bottom:0;}.cust-field.sub-group input[type="text"],.cust-field.sub-group textarea,.cust-field.sub-group input[type="number"],.cust-field.sub-group select{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);padding:8px 10px;color:var(--text);font-family:var(--font-sub);font-size:0.85rem;outline:none;transition:border-color 0.2s;width:100%;}.cust-field.sub-group input[type="text"]:focus,.cust-field.sub-group textarea:focus,.cust-field.sub-group input[type="number"]:focus,.cust-field.sub-group select:focus{border-color:var(--accent-2);}.cust-field.sub-group label{font-size:0.75rem;font-weight:600;color:var(--text-3);margin-top:8px;text-transform:uppercase;letter-spacing:0.05em;}.cust-field.sub-group label:first-of-type{margin-top:0;}.cust-field label{font-size:0.8rem;font-weight:600;color:var(--text-2);}.cust-field input[type="text"],.cust-field textarea{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);padding:10px 12px;color:var(--text);font-family:var(--font-sub);font-size:0.88rem;outline:none;transition:border-color 0.2s;resize:vertical;}.cust-field input[type="text"]:focus,.cust-field textarea:focus{border-color:var(--accent-2);}.customizer-hide-label{display:inline-flex !important;flex-direction:row !important;align-items:center;gap:6px;font-size:0.76rem !important;font-weight:600 !important;color:#ef4444 !important;cursor:pointer;margin-top:4px;user-select:none;align-self:flex-start;}.customizer-hide-label input{accent-color:#ef4444;cursor:pointer;}.cust-footer{padding:20px 24px;border-top:1px solid var(--border);}@media(max-width:640px){#customizer-panel{width:320px;}#customizer-trigger{bottom:24px;left:24px;padding:10px 18px;font-size:0.82rem;}}html.lenis,html.lenis body{height:auto;}.lenis-smooth{scroll-behavior:auto !important;}.lenis-smooth [data-lenis-prevent]{overscroll-behavior:contain;}.lenis-stopped{overflow:hidden;}.lenis-scrolling iframe{pointer-events:none;}.services-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:32px;margin-top:48px;}.service-card{padding:48px 36px;display:flex;flex-direction:column;gap:16px;transition:border-color 0.3s ease,transform 0.3s ease,box-shadow 0.3s ease;}.service-card:hover{border-color:var(--accent);transform:translateY(-4px);box-shadow:0 20px 60px rgba(0,0,0,0.4),0 0 0 1px var(--accent-glow);}.service-icon{width:50px;height:50px;border-radius:12px;background:var(--surface-h);display:flex;align-items:center;justify-content:center;font-size:1.5rem;margin-bottom:8px;border:1px solid var(--border-h);}.service-title{font-family:var(--font-main);font-size:1.35rem;font-weight:700;color:var(--text);}.service-desc{font-size:0.93rem;color:var(--text-2);line-height:1.65;}.cust-img-upload-wrap{display:flex;flex-direction:column;gap:8px;}.cust-img-drop-zone{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:18px 12px;background:var(--surface);border:2px dashed var(--border-h);border-radius:var(--radius-sm);cursor:pointer;transition:border-color 0.2s,background 0.2s;text-align:center;min-height:80px;overflow:hidden;}.cust-img-drop-zone:hover,.cust-img-drop-zone.dragover{border-color:var(--accent-2);background:var(--accent-glow);}.cust-img-drop-zone input[type="file"]{position:absolute;inset:0;opacity:0;cursor:pointer;width:100%;height:100%;}.cust-img-drop-icon{font-size:1.5rem;line-height:1;pointer-events:none;}.cust-img-drop-text{font-size:0.78rem;font-weight:600;color:var(--text-2);pointer-events:none;}.cust-img-drop-sub{font-size:0.68rem;color:var(--text-3);pointer-events:none;}.cust-img-drop-zone.has-image{padding:0;border-style:solid;border-color:var(--accent-2);}.cust-img-preview{width:100%;height:110px;object-fit:cover;border-radius:calc(var(--radius-sm)- 2px);display:block;pointer-events:none;}.cust-img-remove-btn{position:absolute;top:6px;right:6px;width:24px;height:24px;border-radius:50%;background:rgba(0,0,0,0.7);color:#fff;font-size:0.8rem;display:flex;align-items:center;justify-content:center;cursor:pointer;border:none;z-index:2;transition:background 0.2s;pointer-events:all;}.cust-img-remove-btn:hover{background:#ef4444;}.cust-profile-photo-wrap{display:flex;align-items:center;gap:14px;}.cust-profile-thumb{width:56px;height:56px;border-radius:50%;object-fit:cover;border:2px solid var(--accent-2);flex-shrink:0;display:none;}.cust-profile-thumb.visible{display:block;}.cust-profile-upload-btn{flex:1;position:relative;display:flex;align-items:center;gap:8px;padding:10px 14px;background:var(--surface);border:1px dashed var(--border-h);border-radius:var(--radius-sm);cursor:pointer;font-size:0.82rem;font-weight:600;color:var(--text-2);transition:border-color 0.2s,background 0.2s;overflow:hidden;}.cust-profile-upload-btn:hover{border-color:var(--accent-2);background:var(--accent-glow);}.cust-profile-upload-btn input[type="file"]{position:absolute;inset:0;opacity:0;cursor:pointer;width:100%;height:100%;}.cust-img-drop-zone:focus,.cust-profile-photo-wrap:focus,.cust-profile-upload-btn:focus-within,.about-photo:focus,.project-card:focus{outline:2.5px solid var(--accent-2);outline-offset:3px;}.cust-upload-error{color:#ef4444;font-size:0.76rem;margin-top:6px;display:block;font-weight:600;text-align:left;}#landing-container,#not-found-container{min-height:100vh;display:flex;flex-direction:column;background:radial-gradient(circle at 50% 50%,var(--bg-2)0%,var(--bg)100%);padding:0 var(--site-pad);position:relative;z-index:10;}.landing-header{height:var(--nav-h);display:flex;align-items:center;justify-content:space-between;max-width:1200px;width:100%;margin:0 auto;}.landing-logo{font-family:var(--font-main);font-size:1.4rem;font-weight:800;letter-spacing:-0.02em;color:var(--text);text-decoration:none;}.landing-logo .dot{color:var(--accent);}.btn-login-header{padding:10px 20px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);font-weight:600;font-size:0.9rem;cursor:pointer;transition:all 0.3s ease;}.btn-login-header:hover{background:var(--surface-h);border-color:var(--border-h);transform:translateY(-2px);}.landing-main{flex:1;display:grid;grid-template-columns:1.1fr 0.9fr;align-items:center;gap:60px;max-width:1200px;width:100%;margin:0 auto;padding:40px 0 80px 0;}@media(max-width:900px){.landing-main{grid-template-columns:1fr;text-align:center;gap:40px;padding:20px 0 60px 0;}}.landing-hero{display:flex;flex-direction:column;gap:24px;}.landing-badge{align-self:flex-start;display:inline-flex;align-items:center;gap:8px;background:var(--badge-bg);border:1px solid var(--border);padding:6px 14px;border-radius:100px;font-size:0.82rem;font-weight:600;letter-spacing:0.05em;text-transform:uppercase;color:var(--text-2);}@media(max-width:900px){.landing-badge{align-self:center;}}.landing-title{font-family:var(--font-main);font-size:clamp(2.5rem,5vw,4rem);font-weight:800;line-height:1.1;letter-spacing:-0.03em;color:var(--text);}.landing-subtitle{font-size:clamp(1rem,1.2vw,1.15rem);color:var(--text-2);line-height:1.6;max-width:520px;}@media(max-width:900px){.landing-subtitle{margin:0 auto;}}.landing-actions{margin-top:10px;}.btn-google-login{display:inline-flex;align-items:center;gap:12px;padding:16px 28px;background:#ffffff;color:#1f2937;border:1px solid #e5e7eb;border-radius:var(--radius-sm);font-weight:700;font-size:1.05rem;cursor:pointer;transition:all 0.3s cubic-bezier(0.16,1,0.3,1);box-shadow:0 4px 12px rgba(0,0,0,0.08);}.btn-google-login:hover{transform:translateY(-3px);box-shadow:0 12px 24px rgba(0,0,0,0.15);background:#fcfcfc;}.btn-google-login:active{transform:translateY(-1px);}[data-theme="light"] .btn-google-login{background:#f3f4f6;border-color:#d1d5db;}[data-theme="light"] .btn-google-login:hover{background:#e5e7eb;}.google-icon{width:20px;height:20px;}.landing-preview-wrap{display:flex;justify-content:center;align-items:center;position:relative;}.landing-preview-card{width:100%;max-width:480px;border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow),var(--shadow-glow);background:rgba(255,255,255,0.02);border:1px solid var(--border);transition:transform 0.5s ease;}.landing-preview-card:hover{transform:translateY(-5px)rotate(1deg);}.preview-browser-bar{background:var(--bg-3);padding:10px 16px;display:flex;align-items:center;gap:8px;border-bottom:1px solid var(--border);}.preview-browser-bar .dot{width:10px;height:10px;border-radius:50%;display:inline-block;}.preview-browser-bar .dot.red{background:#ff5f56;}.preview-browser-bar .dot.yellow{background:#ffbd2e;}.preview-browser-bar .dot.green{background:#27c93f;}.preview-browser-bar .browser-address{margin-left:12px;background:var(--bg);color:var(--text-3);font-size:0.75rem;padding:4px 16px;border-radius:6px;flex:1;font-family:monospace;}.preview-img-container{position:relative;aspect-ratio:4/3;overflow:hidden;}.landing-preview-img{width:100%;height:100%;object-fit:cover;opacity:0.85;}.preview-overlay-customizer{position:absolute;bottom:20px;right:20px;background:rgba(10,10,16,0.9);backdrop-filter:blur(12px);border:1px solid var(--border);border-radius:var(--radius-sm);padding:12px;width:200px;box-shadow:var(--shadow);animation:floatPreview 3s ease-in-out infinite;}[data-theme="light"] .preview-overlay-customizer{background:rgba(255,255,255,0.95);}@keyframes floatPreview{0%,100%{transform:translateY(0);}50%{transform:translateY(-8px);}}.preview-customizer-header{display:flex;align-items:center;gap:6px;font-size:0.7rem;font-weight:700;text-transform:uppercase;color:var(--text-2);margin-bottom:8px;border-bottom:1px solid var(--border);padding-bottom:6px;}.preview-customizer-header .preview-dot{width:6px;height:6px;border-radius:50%;background:#10b981;}.preview-customizer-body{display:flex;flex-direction:column;gap:6px;}.preview-input-mock{font-size:0.7rem;background:rgba(255,255,255,0.05);padding:4px 8px;border-radius:4px;color:var(--text);display:flex;align-items:center;justify-content:space-between;}[data-theme="light"] .preview-input-mock{background:rgba(0,0,0,0.05);}.preview-color-box{width:12px;height:12px;border-radius:3px;background:linear-gradient(135deg,var(--accent),var(--accent-3));display:inline-block;}.landing-modal-overlay{position:fixed;inset:0;background:rgba(10,10,16,0.85);backdrop-filter:blur(12px);display:flex;align-items:center;justify-content:center;z-index:10000;padding:20px;}.landing-modal{max-width:500px;width:100%;padding:32px;background:rgba(255,255,255,0.03);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);display:flex;flex-direction:column;gap:20px;}.modal-title{font-family:var(--font-main);font-size:1.4rem;font-weight:800;color:var(--text);letter-spacing:-0.02em;}.modal-text{font-size:0.94rem;color:var(--text-2);line-height:1.6;}.modal-instruction{background:rgba(255,255,255,0.03);border:1px solid var(--border);padding:16px;border-radius:var(--radius-sm);font-size:0.88rem;color:var(--text-2);}.modal-instruction strong{display:block;margin-bottom:8px;color:var(--text);}.modal-instruction ol{padding-left:20px;display:flex;flex-direction:column;gap:6px;}.modal-actions{display:flex;gap:12px;margin-top:10px;}.modal-actions button{flex:1;}[data-theme="light"] .landing-modal-overlay{background:rgba(245,245,250,0.85);}[data-theme="light"] .landing-modal{background:rgba(0,0,0,0.02);}