/*!   
 * Portfolio — Donatien KANANE
 * Professional developer portfolio — Modern, clean, expert-level design
 */.skip-link{position:absolute;top:-100%;left:50%;transform:translateX(-50%);background:var(--primary);color:#fff;padding:12px 24px;border-radius:0 0 8px 8px;z-index:10000;font-weight:600;text-decoration:none;transition:top .3s}.skip-link:focus{top:0;color:#fff}:root{--primary:#6366f1;--primary-dark:#4f46e5;--primary-light:#818cf8;--primary-glow:rgba(99,102,241,0.15);--accent:#06b6d4;--accent-warm:#f59e0b;--success:#10b981;--gradient-main:linear-gradient(135deg, #6366f1 0%, #06b6d4 100%);--gradient-hero:linear-gradient(160deg, #0f172a 0%, #1e1b4b 40%, #0f172a 100%);--gradient-card:linear-gradient(135deg, rgba(99,102,241,0.05), rgba(6,182,212,0.05));--bg-body:#f8fafc;--bg-card:#ffffff;--bg-dark:#0f172a;--bg-section-alt:#f1f5f9;--text-primary:#0f172a;--text-secondary:#64748b;--text-muted:#94a3b8;--border-color:#e2e8f0;--border-light:#f1f5f9;--shadow-xs:0 1px 2px rgba(0,0,0,0.05);--shadow-sm:0 1px 3px rgba(0,0,0,0.06),0 1px 2px rgba(0,0,0,0.04);--shadow-md:0 4px 6px -1px rgba(0,0,0,0.07),0 2px 4px -2px rgba(0,0,0,0.05);--shadow-lg:0 10px 25px -3px rgba(0,0,0,0.08),0 4px 6px -4px rgba(0,0,0,0.05);--shadow-xl:0 20px 50px -12px rgba(0,0,0,0.15);--shadow-glow:0 0 40px rgba(99,102,241,0.12);--radius-sm:8px;--radius-md:12px;--radius-lg:16px;--radius-xl:24px;--radius-full:9999px;--transition:all 0.3s cubic-bezier(0.4, 0, 0.2, 1);--transition-fast:all 0.15s ease;--font-body:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;--font-heading:'Poppins',sans-serif;--font-mono:'JetBrains Mono',monospace}*,::after,::before{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:80px}body{font-family:var(--font-body);color:var(--text-primary);background:var(--bg-body);font-size:15px;line-height:1.7;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:hidden}h1,h2,h3,h4,h5,h6{font-family:var(--font-heading);font-weight:700;color:var(--text-primary);letter-spacing:-.02em;line-height:1.3}a{color:var(--primary);transition:var(--transition);text-decoration:none}a:hover{color:var(--primary-dark);text-decoration:none}::selection{background:var(--primary);color:#fff}img{max-width:100%;height:auto}.navbar-top{position:fixed;top:0;left:0;right:0;z-index:1000;padding:20px 0;transition:all .4s cubic-bezier(.4, 0, .2, 1);background:0 0}.navbar-top .container{max-width:1200px}.navbar-top.scrolled{background:rgba(255,255,255,.85);backdrop-filter:blur(24px) saturate(180%);-webkit-backdrop-filter:blur(24px) saturate(180%);box-shadow:0 1px 3px rgba(0,0,0,.06),0 8px 30px rgba(0,0,0,.04);padding:12px 0;border-bottom:1px solid rgba(255,255,255,.5)}.nav-brand{font-family:var(--font-heading);font-size:30px;font-weight:900;color:#fff;text-decoration:none;letter-spacing:-.03em;position:relative}.nav-brand span{background:var(--gradient-main);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.navbar-top.scrolled .nav-brand{color:var(--text-primary)}.nav-links{gap:8px;list-style:none;padding:0;margin:0}.nav-links a{color:rgba(255,255,255,.7);font-size:13.5px;font-weight:500;text-decoration:none;position:relative;padding:8px 16px;border-radius:var(--radius-full);transition:all .3s ease;letter-spacing:.01em}.nav-links a::after{content:'';position:absolute;bottom:2px;left:50%;transform:translateX(-50%) scaleX(0);width:20px;height:2px;background:var(--accent);transition:transform .3s cubic-bezier(.4, 0, .2, 1);border-radius:1px}.nav-links a:hover{color:#fff;background:rgba(255,255,255,.08)}.nav-links a.active::after,.nav-links a:hover::after{transform:translateX(-50%) scaleX(1)}.nav-links a.active{color:#fff}.navbar-top.scrolled .nav-links a{color:var(--text-secondary)}.navbar-top.scrolled .nav-links a:hover{color:var(--primary);background:var(--primary-glow)}.navbar-top.scrolled .nav-links a.active::after,.navbar-top.scrolled .nav-links a:hover::after{background:var(--primary)}.navbar-top.scrolled .nav-links a.active{color:var(--primary)}.nav-actions .form-check-input{cursor:pointer;width:38px;height:20px}.nav-actions .form-check-input:checked{background-color:var(--primary);border-color:var(--primary)}.nav-actions .form-check-label{color:rgba(255,255,255,.7);cursor:pointer;font-size:15px;transition:var(--transition)}.navbar-top.scrolled .nav-actions .form-check-label{color:var(--text-secondary)}.nav-toggle{display:flex;flex-direction:column;gap:5px;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.12);border-radius:var(--radius-sm);cursor:pointer;padding:8px 7px;transition:var(--transition)}.nav-toggle:hover{background:rgba(255,255,255,.15)}.nav-toggle span{width:22px;height:2px;background:rgba(255,255,255,.9);border-radius:2px;transition:var(--transition)}.nav-toggle.open span:first-child{transform:rotate(45deg) translate(5px,5px)}.nav-toggle.open span:nth-child(2){opacity:0}.nav-toggle.open span:nth-child(3){transform:rotate(-45deg) translate(5px,-5px)}.navbar-top.scrolled .nav-toggle{background:var(--bg-section-alt);border-color:var(--border-color)}.navbar-top.scrolled .nav-toggle span{background:var(--text-primary)}.mobile-menu{display:none;flex-direction:column;padding:8px 20px 20px;gap:2px;animation:slideDown .3s ease}@keyframes slideDown{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.mobile-menu.open{display:flex}.mobile-menu a{color:rgba(255,255,255,.8);padding:12px 20px;border-radius:var(--radius-sm);font-size:15px;font-weight:500;transition:all .2s ease}.mobile-menu a:hover{background:rgba(255,255,255,.1);color:#fff;padding-left:28px}.navbar-top.scrolled .mobile-menu a{color:var(--text-secondary)}.navbar-top.scrolled .mobile-menu a:hover{background:var(--primary-glow);color:var(--primary);padding-left:28px}.hero{background:var(--gradient-hero);min-height:100vh;display:flex;align-items:center;position:relative;overflow:hidden;padding-top:80px;padding-bottom:100px}.hero::before{content:'';position:absolute;top:0;left:0;right:0;bottom:0;background:radial-gradient(ellipse 80% 50% at 50% -20%,rgba(99,102,241,.15),transparent),radial-gradient(ellipse 60% 40% at 80% 80%,rgba(6,182,212,.08),transparent);pointer-events:none}.hero::after{content:'';position:absolute;bottom:0;left:0;right:0;height:150px;background:linear-gradient(to top,var(--bg-dark),transparent);pointer-events:none;z-index:1}.hero .container{position:relative;z-index:2}.min-vh-85{min-height:85vh}.hero-bg-shapes{position:absolute;inset:0;pointer-events:none}.hero-bg-shapes .shape{position:absolute;border-radius:50%}.hero-bg-shapes .shape-1{width:700px;height:700px;top:-20%;right:-15%;background:radial-gradient(circle,rgba(99,102,241,.1) 0,transparent 60%);animation:float 20s ease-in-out infinite;filter:blur(40px)}.hero-bg-shapes .shape-2{width:500px;height:500px;bottom:-15%;left:-8%;background:radial-gradient(circle,rgba(6,182,212,.07) 0,transparent 60%);animation:float 25s ease-in-out infinite reverse;filter:blur(40px)}.hero-bg-shapes .shape-3{width:250px;height:250px;top:40%;left:35%;background:radial-gradient(circle,rgba(245,158,11,.04) 0,transparent 60%);animation:float 15s ease-in-out infinite 3s;filter:blur(30px)}@keyframes float{0%,100%{transform:translate(0,0) scale(1)}33%{transform:translate(30px,-30px) scale(1.05)}66%{transform:translate(-20px,20px) scale(.95)}}.hero-bg-shapes::before{content:'';position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.02) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.02) 1px,transparent 1px);background-size:60px 60px;mask-image:radial-gradient(ellipse 70% 60% at 50% 50%,black,transparent);-webkit-mask-image:radial-gradient(ellipse 70% 60% at 50% 50%,black,transparent)}.hero-greeting{color:var(--accent);font-family:var(--font-mono);font-size:15px;font-weight:500;margin-bottom:16px;letter-spacing:.08em;display:inline-flex;align-items:center;gap:10px;opacity:0;animation:fadeInUp .6s ease .2s forwards}.hero-greeting::before{content:'';width:28px;height:2px;background:var(--accent);border-radius:1px}.hero-name{color:#fff;font-size:clamp(40px, 5.5vw, 72px);font-weight:900;margin-bottom:12px;letter-spacing:-.03em;line-height:1.08;opacity:0;animation:fadeInUp .6s ease .35s forwards}.hero-name span{background:var(--gradient-main);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.hero-typing-wrapper{font-size:clamp(18px, 2.5vw, 22px);color:rgba(255,255,255,.6);margin-bottom:28px;min-height:36px;opacity:0;animation:fadeInUp .6s ease .5s forwards}.hero-typing-prefix{color:rgba(255,255,255,.4)}.hero-typed{color:var(--accent);font-weight:600;position:relative}.hero-cursor{color:var(--accent);animation:blink 1s step-end infinite;font-weight:300;margin-left:2px}@keyframes blink{50%{opacity:0}}@keyframes fadeInUp{from{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}.hero-description{color:rgba(255,255,255,.5);font-size:16px;max-width:520px;line-height:1.8;margin-bottom:36px;opacity:0;animation:fadeInUp .6s ease .65s forwards}.hero-cta{display:flex;flex-wrap:wrap;gap:14px;margin-bottom:44px;opacity:0;animation:fadeInUp .6s ease .8s forwards}.hero-contact-badges{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:20px;opacity:0;animation:fadeInUp .6s ease .85s forwards}.hero-contact-badges a{display:inline-block;transition:transform .3s ease,box-shadow .3s ease;border-radius:6px;overflow:hidden}.hero-contact-badges a:hover{transform:translateY(-3px);box-shadow:0 6px 20px rgba(0,0,0,.25)}.hero-contact-badges img{display:block}.hero-socials{display:flex;gap:14px;opacity:0;animation:fadeInUp .6s ease .95s forwards}.hero-socials a{width:46px;height:46px;border-radius:var(--radius-md);display:flex;align-items:center;justify-content:center;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.08);color:rgba(255,255,255,.55);font-size:18px;transition:all .3s ease;position:relative;overflow:hidden}.hero-socials a::before{content:'';position:absolute;inset:0;background:var(--gradient-main);opacity:0;transition:opacity .3s ease;border-radius:inherit}.hero-socials a:hover{border-color:transparent;color:#fff;transform:translateY(-3px);box-shadow:0 8px 24px rgba(99,102,241,.3)}.hero-socials a:hover::before{opacity:1}.hero-socials a i{position:relative;z-index:1}.hero-image-col{text-align:center;opacity:0;animation:fadeInScale .8s ease .5s forwards}@keyframes fadeInScale{from{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}.hero-image-wrapper{position:relative;display:inline-block}.hero-image{width:370px;height:370px;object-fit:cover;border-radius:50%;border:3px solid rgba(99,102,241,.25);position:relative;z-index:2;box-shadow:0 0 60px rgba(99,102,241,.15),0 0 120px rgba(6,182,212,.08)}.hero-image-ring{position:absolute;inset:-20px;border-radius:50%;border:2px dashed rgba(99,102,241,.15);animation:spin 40s linear infinite;z-index:1}.hero-image-ring::before{content:'';position:absolute;top:-4px;left:50%;width:8px;height:8px;background:var(--primary);border-radius:50%;box-shadow:0 0 12px var(--primary)}@keyframes spin{100%{transform:rotate(360deg)}}.hero-image-dots{position:absolute;bottom:-10px;right:-20px;width:130px;height:130px;background-image:radial-gradient(rgba(99,102,241,.25) 1.5px,transparent 1.5px);background-size:14px 14px;z-index:1;opacity:.7}.hero-image-wrapper::before{content:'';position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:320px;height:320px;background:radial-gradient(circle,rgba(99,102,241,.12),transparent 60%);border-radius:50%;z-index:0;animation:pulse-glow 4s ease-in-out infinite}@keyframes pulse-glow{0%,100%{transform:translate(-50%,-50%) scale(1);opacity:.6}50%{transform:translate(-50%,-50%) scale(1.1);opacity:1}}.hero-scroll-indicator{position:absolute;bottom:36px;left:50%;transform:translateX(-50%);color:rgba(255,255,255,.25);text-decoration:none;display:flex;flex-direction:column;align-items:center;gap:8px;font-size:11px;letter-spacing:.15em;text-transform:uppercase;font-family:var(--font-mono);animation:bounce 2.5s ease-in-out infinite;z-index:3}.hero-scroll-indicator i{font-size:14px}.hero-scroll-indicator:hover{color:rgba(255,255,255,.5)}@keyframes bounce{0%,100%{transform:translateX(-50%) translateY(0)}50%{transform:translateX(-50%) translateY(10px)}}.btn-primary-custom{background:var(--gradient-main);color:#fff;border:none;padding:12px 28px;border-radius:var(--radius-full);font-family:var(--font-heading);font-weight:600;font-size:14px;letter-spacing:.02em;transition:var(--transition);box-shadow:0 4px 16px rgba(99,102,241,.3);cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;gap:8px}.btn-primary-custom:hover{transform:translateY(-2px);box-shadow:0 8px 30px rgba(99,102,241,.4);color:#fff}.btn-outline-primary-custom{background:0 0;color:var(--primary);border:2px solid var(--primary);padding:10px 28px;border-radius:var(--radius-full);font-family:var(--font-heading);font-weight:600;font-size:14px;transition:var(--transition);cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;gap:8px}.btn-outline-primary-custom:hover{background:var(--gradient-main);color:#fff;border-color:transparent;transform:translateY(-2px);box-shadow:0 8px 30px rgba(99,102,241,.4)}.btn-outline-custom{background:0 0;color:#fff;border:2px solid rgba(255,255,255,.2);padding:10px 28px;border-radius:var(--radius-full);font-family:var(--font-heading);font-weight:600;font-size:14px;transition:var(--transition);cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;gap:8px}.btn-outline-custom:hover{background:rgba(255,255,255,.1);border-color:rgba(255,255,255,.4);color:#fff;transform:translateY(-2px)}.btn-ghost-custom{background:0 0;color:rgba(255,255,255,.6);border:none;padding:10px 20px;border-radius:var(--radius-full);font-family:var(--font-heading);font-weight:500;font-size:14px;transition:var(--transition);cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;gap:8px}.btn-ghost-custom:hover{color:#fff;background:rgba(255,255,255,.05)}.contact-section .btn-primary-custom,.projects-section .btn-primary-custom{color:#fff}.projects-section .btn-outline-custom{color:var(--primary);border-color:var(--primary)}.projects-section .btn-outline-custom:hover{background:var(--primary);color:#fff}.stats-bar{background:var(--bg-dark);padding:0;position:relative;z-index:2;margin-top:-1px}.stats-bar .container{max-width:1100px}.stats-bar .row{background:linear-gradient(135deg,rgba(30,27,75,.95),rgba(15,23,42,.95));border:1px solid rgba(99,102,241,.12);border-radius:var(--radius-xl);padding:44px 20px;position:relative;overflow:hidden;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);transform:translateY(-50%);box-shadow:0 20px 60px rgba(0,0,0,.3),inset 0 1px 0 rgba(255,255,255,.05)}.stats-bar .row::before{content:'';position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent 10%,rgba(99,102,241,.4) 50%,transparent 90%)}.stats-bar .row::after{content:'';position:absolute;inset:0;background:radial-gradient(ellipse at 20% 50%,rgba(99,102,241,.06),transparent 50%),radial-gradient(ellipse at 80% 50%,rgba(6,182,212,.04),transparent 50%);pointer-events:none}.stat-item{padding:12px 20px;position:relative;z-index:1}.stat-item:not(:last-child)::after{content:'';position:absolute;right:0;top:20%;height:60%;width:1px;background:linear-gradient(to bottom,transparent,rgba(99,102,241,.2),transparent)}.stat-number{font-family:var(--font-heading);font-size:46px;font-weight:800;background:var(--gradient-main);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;line-height:1.1;letter-spacing:-.02em}.stat-number::after{content:'+';font-size:26px;vertical-align:super}.stat-label{color:rgba(148,163,184,.8);font-size:12.5px;font-weight:500;text-transform:uppercase;letter-spacing:.1em;margin-top:6px}.stack-section{background:var(--bg-section-alt);overflow:hidden}.stack-bento{display:grid;grid-template-columns:1fr 1fr;gap:20px;max-width:960px;margin:0 auto}.stack-panel{position:relative;background:var(--bg-card);border:1px solid var(--border-color);border-radius:20px;padding:28px 24px 24px;overflow:hidden;transition:transform .4s cubic-bezier(.25, .46, .45, .94),box-shadow .4s ease}.stack-panel:hover{transform:translateY(-4px);box-shadow:0 20px 50px rgba(99,102,241,.12)}.stack-panel-lg{grid-column:1/-1}.stack-panel-glow{position:absolute;inset:-1px;border-radius:inherit;background:conic-gradient(from 0deg,#6366f1,#06b6d4,#a855f7,#6366f1);opacity:0;z-index:-1;transition:opacity .4s ease;filter:blur(1px)}.stack-panel:hover .stack-panel-glow{opacity:1;animation:stack-glow-spin 4s linear infinite}@keyframes stack-glow-spin{to{transform:rotate(360deg)}}.stack-panel::after{content:'';position:absolute;inset:1px;border-radius:19px;background:var(--bg-card);z-index:-1}.stack-panel-header{display:flex;align-items:center;gap:12px;margin-bottom:20px}.stack-panel-header h4{font-family:var(--font-heading);font-size:1.05rem;font-weight:700;color:var(--text-primary);margin:0;flex:1}.stack-panel-icon{width:38px;height:38px;border-radius:12px;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,rgba(99,102,241,.15),rgba(99,102,241,.05));color:#6366f1;font-size:1rem;flex-shrink:0}.stack-panel-icon--cyan{background:linear-gradient(135deg,rgba(6,182,212,.15),rgba(6,182,212,.05));color:#06b6d4}.stack-panel-icon--amber{background:linear-gradient(135deg,rgba(245,158,11,.15),rgba(245,158,11,.05));color:#f59e0b}.stack-panel-icon--rose{background:linear-gradient(135deg,rgba(244,63,94,.15),rgba(244,63,94,.05));color:#f43f5e}.stack-panel-count{font-family:var(--font-code, 'JetBrains Mono', monospace);font-size:.75rem;font-weight:600;color:var(--text-muted);background:var(--bg-section-alt);padding:3px 10px;border-radius:20px;border:1px solid var(--border-color)}.stack-panel-items{display:flex;flex-wrap:wrap;gap:10px}.stack-item{display:flex;align-items:center;gap:8px;padding:8px 14px 8px 10px;background:var(--bg-section-alt);border:1px solid var(--border-color);border-radius:12px;transition:all .3s ease;cursor:default}.stack-item:hover{border-color:var(--primary);background:rgba(99,102,241,.06);transform:translateY(-2px);box-shadow:0 4px 12px rgba(99,102,241,.1)}.stack-item img{width:28px;height:28px;object-fit:contain;flex-shrink:0}.stack-item span{font-family:var(--font-heading);font-size:.82rem;font-weight:600;color:var(--text-primary);white-space:nowrap}.stack-item--fa i{width:28px;height:28px;display:flex;align-items:center;justify-content:center;font-size:1.1rem;background:linear-gradient(135deg,var(--primary),var(--secondary));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;flex-shrink:0}.section-block{padding:90px 0}.about-section{margin-top:-60px;padding-top:40px}.section-block:nth-child(2n){background:var(--bg-section-alt)}.section-title{margin-bottom:56px}.section-subtitle{display:inline-block;color:var(--primary);font-family:var(--font-mono);font-size:14px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;margin-bottom:8px}.section-title h2{font-size:36px;font-weight:800;margin-bottom:16px;letter-spacing:-.03em}.title-line{width:48px;height:4px;background:var(--gradient-main);border-radius:2px;margin:0 auto}.section-description{max-width:600px;margin:16px auto 0;font-size:15px;color:var(--text-secondary);line-height:1.6}.about-image-wrapper{position:relative;display:inline-block}.about-image{width:280px;height:280px;object-fit:cover;border-radius:var(--radius-xl);box-shadow:var(--shadow-xl);border:4px solid var(--bg-card)}.about-text{color:var(--text-secondary);font-size:16px;line-height:1.9;margin-bottom:24px}.about-info-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}.about-info-item{display:flex;flex-direction:column;gap:2px}.about-info-item .info-label{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);font-weight:500}.about-info-item .info-label i{color:var(--primary);margin-right:4px;font-size:11px}.about-info-item .info-value{font-size:14px;font-weight:500;color:var(--text-primary)}.about-info-item .info-value a{color:var(--primary)}.about-languages h5{font-size:15px;font-weight:600;color:var(--text-primary)}.about-languages h5 i{color:var(--primary);margin-right:6px}.lang-badge{display:inline-flex;align-items:center;gap:6px;background:var(--bg-card);border:1px solid var(--border-color);padding:8px 16px;border-radius:var(--radius-full);font-size:14px;font-weight:500;box-shadow:var(--shadow-xs)}.lang-badge small{color:var(--text-muted);font-weight:400}.services-carousel-wrapper{position:relative;display:flex;align-items:center;gap:12px}.services-carousel{overflow:hidden;flex:1;border-radius:var(--radius-lg)}.services-track{display:flex;transition:transform .5s cubic-bezier(.25, .8, .25, 1);will-change:transform}.service-slide{flex:0 0 calc(100% / 3);padding:0 12px;box-sizing:border-box}.service-card{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:36px 28px;text-align:center;transition:var(--transition);height:100%;position:relative;overflow:hidden}.service-card::before{content:'';position:absolute;top:0;left:0;right:0;height:3px;background:var(--gradient-main);transform:scaleX(0);transition:var(--transition)}.service-card:hover{transform:translateY(-6px);box-shadow:var(--shadow-lg);border-color:transparent}.service-card:hover::before{transform:scaleX(1)}.service-icon{width:64px;height:64px;border-radius:var(--radius-md);background:var(--gradient-card);display:flex;align-items:center;justify-content:center;margin:0 auto 20px;font-size:24px;color:var(--primary);transition:var(--transition)}.service-card:hover .service-icon{background:var(--gradient-main);color:#fff;transform:scale(1.1)}.service-card h3{font-size:18px;margin-bottom:12px;font-weight:700}.service-card p{color:var(--text-secondary);font-size:14px;line-height:1.7;margin-bottom:0}.carousel-arrow{width:44px;height:44px;border-radius:50%;border:2px solid var(--border-color);background:var(--bg-card);color:var(--text-primary);display:flex;align-items:center;justify-content:center;font-size:14px;cursor:pointer;transition:var(--transition);flex-shrink:0;z-index:2}.carousel-arrow:hover{background:var(--gradient-main);border-color:transparent;color:#fff;box-shadow:var(--shadow-md)}.carousel-arrow:disabled{opacity:.3;cursor:default;pointer-events:none}.carousel-dots{display:flex;justify-content:center;gap:8px;margin-top:24px}.carousel-dot{width:10px;height:10px;border-radius:50%;border:none;background:var(--border-color);cursor:pointer;transition:var(--transition);padding:0}.carousel-dot.active{background:var(--gradient-main);width:28px;border-radius:var(--radius-full)}@media (max-width:991px){.service-slide{flex:0 0 50%}}@media (max-width:575px){.service-slide{flex:0 0 100%}.carousel-arrow{width:36px;height:36px;font-size:12px}}.skills-overview{display:flex;align-items:center;gap:32px;margin-bottom:40px;padding:32px;background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-xl);box-shadow:var(--shadow-sm)}.skills-overview-ring{position:relative;flex-shrink:0;width:120px;height:120px}.skills-overview-ring svg{width:120px;height:120px;transform:rotate(-90deg)}.skills-overview-bg{fill:none;stroke:var(--border-color);stroke-width:6}.skills-overview-fill{fill:none;stroke:url(#skillGradient);stroke-width:6;stroke-linecap:round;stroke-dasharray:339.29;stroke-dashoffset:339.29;transition:stroke-dashoffset 2s cubic-bezier(.4, 0, .2, 1)}.skills-overview-text{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}.skills-overview-number{font-family:var(--font-heading);font-size:32px;font-weight:800;background:var(--gradient-main);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;line-height:1}.skills-overview-number::after{content:'%';font-size:16px}.skills-overview-label{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);font-weight:500}.skills-overview-info h3{font-family:var(--font-heading);font-size:1.3rem;font-weight:700;color:var(--text-primary);margin-bottom:6px}.skills-overview-info p{color:var(--text-secondary);font-size:.95rem;margin:0}.skills-filter{display:flex;flex-wrap:wrap;justify-content:center;gap:10px;margin-bottom:36px}.skills-filter-btn{display:inline-flex;align-items:center;gap:8px;padding:10px 20px;border:1px solid var(--border-color);border-radius:var(--radius-full);background:var(--bg-card);color:var(--text-secondary);font-size:.88rem;font-weight:500;cursor:pointer;transition:all .3s ease}.skills-filter-btn:hover{border-color:var(--primary);color:var(--primary)}.skills-filter-btn.active{background:var(--gradient-main);color:#fff;border-color:transparent;box-shadow:0 4px 16px rgba(99,102,241,.3)}.skills-filter-btn.active .skills-filter-count{background:rgba(255,255,255,.25);color:#fff}.skills-filter-count{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:22px;border-radius:50%;background:var(--border-color);font-size:.75rem;font-weight:600}.skills-category-group{margin-bottom:32px;transition:opacity .4s ease,transform .4s ease}.skills-category-group:last-child{margin-bottom:0}.skills-category-group.hidden{display:none}.skills-category-header{display:flex;align-items:center;gap:12px;margin-bottom:16px}.skills-category-icon{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:var(--radius-md);background:var(--cat-color);color:#fff;font-size:16px}.skills-category-header h4{font-family:var(--font-heading);font-size:1rem;font-weight:600;color:var(--text-primary);margin:0;white-space:nowrap}.skills-category-line{flex:1;height:1px;background:linear-gradient(to right,var(--border-color),transparent)}.skill-card{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:20px;display:flex;align-items:center;gap:16px;transition:all .35s cubic-bezier(.4, 0, .2, 1);position:relative;overflow:hidden;border-left:3px solid var(--skill-color,var(--primary))}.skill-card::before{content:'';position:absolute;inset:0;background:var(--gradient-card);opacity:0;transition:opacity .35s ease}.skill-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-lg);border-color:rgba(99,102,241,.2)}.skill-card:hover::before{opacity:1}.skill-ring-wrapper{position:relative;flex-shrink:0;width:56px;height:56px;z-index:1}.skill-ring-svg{width:56px;height:56px;transform:rotate(-90deg)}.skill-ring-bg{fill:none;stroke:var(--border-color);stroke-width:4}.skill-ring-fill{fill:none;stroke:url(#skillGradient);stroke-width:4;stroke-linecap:round;stroke-dasharray:163.36;stroke-dashoffset:163.36;transition:stroke-dashoffset 1.5s cubic-bezier(.4, 0, .2, 1)}.skill-ring-percent{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-family:var(--font-heading);font-size:14px;font-weight:700;color:var(--primary)}.skill-info{flex:1;min-width:0;position:relative;z-index:1}.skill-name{font-family:var(--font-heading);font-size:14px;font-weight:600;color:var(--text-primary);margin-bottom:6px;display:block}.skill-bar-track{height:5px;background:var(--border-color);border-radius:var(--radius-full);overflow:hidden;position:relative}.skill-bar-fill{height:100%;background:var(--gradient-main);border-radius:var(--radius-full);width:0;transition:width 1.5s cubic-bezier(.4, 0, .2, 1);position:relative}.skill-bar-fill::after{content:'';position:absolute;inset:0;background:linear-gradient(90deg,transparent,rgba(255,255,255,.35),transparent);animation:shimmer 2.5s infinite}@keyframes shimmer{0%{transform:translateX(-100%)}100%{transform:translateX(100%)}}.skill-level-label{display:inline-block;margin-top:6px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--skill-color,var(--primary));opacity:.8}.skill-svg-defs{position:absolute;width:0;height:0;overflow:hidden}.featured-project{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-xl);padding:32px;box-shadow:var(--shadow-md);position:relative;overflow:hidden}.featured-project::before{content:'';position:absolute;top:0;left:0;right:0;height:4px;background:var(--gradient-main)}.featured-project-image{position:relative;border-radius:var(--radius-lg);overflow:hidden}.featured-project-image img{width:100%;transition:var(--transition)}.featured-project-image:hover img{transform:scale(1.02)}.featured-badge{position:absolute;top:16px;left:16px;background:var(--gradient-main);color:#fff;padding:6px 16px;border-radius:var(--radius-full);font-size:12px;font-weight:600;display:flex;align-items:center;gap:6px;box-shadow:0 4px 12px rgba(99,102,241,.3)}.featured-project-content h3{font-size:24px;margin-bottom:12px}.featured-project-content p{color:var(--text-secondary);line-height:1.7;margin-bottom:24px}.project-card{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-lg);overflow:hidden;transition:var(--transition);height:100%;display:flex;flex-direction:column}.project-card:hover{transform:translateY(-8px);box-shadow:var(--shadow-xl);border-color:transparent}.project-card-image{height:200px;overflow:hidden;position:relative}.project-card-image img{width:100%;height:100%;object-fit:cover;transition:var(--transition)}.project-card:hover .project-card-image img{transform:scale(1.08)}.project-card-placeholder{display:flex;align-items:center;justify-content:center;background:var(--gradient-card);color:var(--primary-light)}.project-card-body{padding:24px;flex:1;display:flex;flex-direction:column}.project-card-body h4{font-size:17px;margin-bottom:8px;font-weight:700}.project-card-body h4 a{color:var(--text-primary)}.project-card-body h4 a:hover{color:var(--primary)}.project-card-body p{color:var(--text-secondary);font-size:14px;line-height:1.6;margin-bottom:16px;flex:1}.project-link{color:var(--primary);font-size:14px;font-weight:600;display:inline-flex;align-items:center;gap:6px;transition:var(--transition)}.project-link:hover{gap:10px;color:var(--primary-dark)}.card-engagement{display:flex;align-items:center;gap:12px;margin-bottom:14px}.engagement-badge{display:inline-flex;align-items:center;gap:5px;font-size:13px;font-weight:500;color:var(--text-secondary);background:var(--bg-body);border:1px solid var(--border-color);padding:4px 10px;border-radius:var(--radius-full);transition:var(--transition)}.engagement-badge i{font-size:12px;color:var(--primary)}.engagement-badge:hover{border-color:var(--primary);color:var(--primary);background:rgba(99,102,241,.06)}.timeline{position:relative;padding:20px 0}.timeline::before{content:'';position:absolute;left:50%;transform:translateX(-50%);top:0;bottom:0;width:2px;background:var(--border-color)}.timeline-item{position:relative;width:50%;padding:0 48px 48px}.timeline-item.left{left:0;text-align:right;padding-right:48px;padding-left:0}.timeline-item.right{left:50%;text-align:left;padding-left:48px;padding-right:0}.timeline-dot{position:absolute;top:4px;width:14px;height:14px;border-radius:50%;background:var(--gradient-main);border:3px solid var(--bg-body);box-shadow:0 0 0 3px var(--primary-glow);z-index:2}.timeline-item.left .timeline-dot{right:-7px}.timeline-item.right .timeline-dot{left:-7px}.timeline-content{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:24px;box-shadow:var(--shadow-sm);transition:var(--transition)}.timeline-content:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.timeline-date{font-family:var(--font-mono);font-size:12px;color:var(--primary);font-weight:500;margin-bottom:8px;letter-spacing:.02em}.timeline-content h3{font-size:16px;margin-bottom:4px;font-weight:700}.timeline-company{font-size:14px;color:var(--text-secondary);margin-bottom:8px;font-weight:500;font-family:var(--font-body)}.timeline-company i{color:var(--primary);margin-right:4px;font-size:12px}.timeline-content p{color:var(--text-secondary);font-size:14px;line-height:1.7;margin-bottom:0}.education-card{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:28px;display:flex;align-items:flex-start;gap:20px;transition:var(--transition);height:100%}.education-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-lg);border-color:transparent}.education-icon{width:56px;height:56px;min-width:56px;border-radius:var(--radius-md);background:var(--gradient-card);display:flex;align-items:center;justify-content:center;font-size:22px;color:var(--primary)}.education-info h4{font-size:16px;margin-bottom:4px;font-weight:700}.education-school{color:var(--text-secondary);font-size:14px;margin-bottom:4px}.education-year{font-family:var(--font-mono);font-size:12px;color:var(--primary);font-weight:500}.blog-featured{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-xl);overflow:hidden;box-shadow:var(--shadow-md);margin-bottom:48px;transition:var(--transition)}.blog-featured:hover{box-shadow:var(--shadow-lg)}.blog-featured-image{position:relative;height:100%;min-height:320px;overflow:hidden}.blog-featured-image img{width:100%;height:100%;object-fit:cover;transition:transform .6s ease}.blog-featured:hover .blog-featured-image img{transform:scale(1.04)}.blog-featured-body{padding:36px;display:flex;flex-direction:column;justify-content:center;height:100%}.blog-featured-label{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--accent-warm,#f59e0b);margin-bottom:14px}.blog-featured-body .blog-card-date{margin-bottom:12px}.blog-featured-body h3{font-size:clamp(20px, 2.5vw, 26px);font-weight:800;margin-bottom:14px;line-height:1.35}.blog-featured-body h3 a{color:var(--text-primary);text-decoration:none;transition:color .3s ease}.blog-featured-body h3 a:hover{color:var(--primary)}.blog-featured-body p{font-size:15px;color:var(--text-secondary);line-height:1.7;margin-bottom:20px}.blog-card-placeholder{width:100%;height:100%;background:linear-gradient(135deg,#1e1b4b 0,#312e81 50%,#0f172a 100%);display:flex;align-items:center;justify-content:center;font-size:40px;color:rgba(255,255,255,.15)}.blog-card-category{position:absolute;top:14px;left:14px;background:var(--gradient-main);color:#fff;font-size:11px;font-weight:600;padding:4px 14px;border-radius:var(--radius-full);letter-spacing:.03em;text-transform:uppercase}.blog-card-date{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--text-muted);margin-bottom:10px}.blog-card-date .svg-inline--fa,.blog-card-date i{color:var(--primary);font-size:12px}.blog-feed{position:relative;padding:0}.blog-feed-line{position:absolute;left:50%;top:0;bottom:0;width:2px;background:linear-gradient(to bottom,var(--primary),var(--accent),transparent);transform:translateX(-50%);z-index:0}.blog-feed-item{position:relative;display:flex;align-items:flex-start;margin-bottom:32px;z-index:1}.blog-feed-item:last-child{margin-bottom:0}.blog-feed-item{justify-content:flex-start;padding-right:calc(50% + 28px);padding-left:0}.blog-feed-item-alt{justify-content:flex-end;padding-right:0;padding-left:calc(50% + 28px)}.blog-feed-dot{position:absolute;left:50%;top:24px;transform:translateX(-50%);width:16px;height:16px;background:var(--bg-body,#fff);border:3px solid var(--primary);border-radius:50%;z-index:2;display:flex;align-items:center;justify-content:center;transition:var(--transition)}.blog-feed-dot .svg-inline--fa,.blog-feed-dot i{display:none}.blog-feed-item:hover .blog-feed-dot{background:var(--primary);box-shadow:0 0 0 5px rgba(99,102,241,.2);transform:translateX(-50%) scale(1.2)}.blog-feed-card{width:100%;background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-lg);overflow:hidden;transition:var(--transition);box-shadow:var(--shadow-sm)}.blog-feed-card:hover{transform:translateY(-3px);box-shadow:var(--shadow-md);border-color:var(--primary)}.blog-feed-card-inner{padding:22px 24px}.blog-feed-meta{display:flex;align-items:center;gap:12px;margin-bottom:10px;flex-wrap:wrap}.blog-feed-category{background:var(--gradient-main);color:#fff;font-size:10px;font-weight:600;padding:3px 12px;border-radius:var(--radius-full);letter-spacing:.03em;text-transform:uppercase}.blog-feed-date{display:inline-flex;align-items:center;gap:5px;font-size:12px;color:var(--text-muted)}.blog-feed-date .svg-inline--fa,.blog-feed-date i{color:var(--primary);font-size:11px}.blog-feed-card h4{font-size:16px;font-weight:700;margin-bottom:8px;line-height:1.4}.blog-feed-card h4 a{color:var(--text-primary);text-decoration:none;transition:color .3s ease}.blog-feed-card h4 a:hover{color:var(--primary)}.blog-feed-card p{font-size:13px;color:var(--text-secondary);line-height:1.65;margin-bottom:12px}.blog-read-more{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:600;color:var(--primary);text-decoration:none;transition:var(--transition);margin-top:auto}.blog-read-more:hover{gap:10px;color:var(--accent)}.blog-read-more .svg-inline--fa,.blog-read-more i{font-size:11px;transition:transform .3s ease}.blog-read-more:hover .svg-inline--fa,.blog-read-more:hover i{transform:translateX(3px)}@media (max-width:991px){.blog-featured-image{min-height:240px}.blog-feed-line{left:18px}.blog-feed-item,.blog-feed-item-alt{padding-left:48px;padding-right:0;justify-content:flex-start}.blog-feed-dot{left:18px}}@media (max-width:575px){.blog-featured-body{padding:24px}.blog-featured-image{min-height:200px}.blog-feed-card-inner{padding:16px 18px}}.blog-detail-card{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-xl);overflow:hidden;box-shadow:var(--shadow-md)}.blog-detail-image{height:350px;overflow:hidden}.blog-detail-image img{width:100%;height:100%;object-fit:cover}.blog-detail-placeholder{width:100%;height:100%;background:linear-gradient(135deg,#1e1b4b 0,#312e81 50%,#0f172a 100%);display:flex;align-items:center;justify-content:center;font-size:60px;color:rgba(255,255,255,.12)}.blog-detail-body{padding:36px}.blog-detail-meta{display:flex;flex-wrap:wrap;align-items:center;gap:16px;margin-bottom:20px}.blog-detail-meta .blog-meta-item{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--text-secondary)}.blog-detail-meta .blog-meta-item i{color:var(--primary)}.blog-detail-body h1{font-size:clamp(22px, 3vw, 32px);font-weight:800;margin-bottom:24px;line-height:1.3}.blog-detail-content{font-size:15px;line-height:1.9;color:var(--text-secondary)}.blog-detail-content p{margin-bottom:16px}body.dark-mode .blog-featured,body.dark-mode .blog-feed-card{background:var(--bg-card);border-color:var(--border-color)}body.dark-mode .blog-feed-dot{background:var(--bg-body,#0f172a)}body.dark-mode .blog-detail-card{background:var(--bg-card);border-color:var(--border-color)}.github-section{background:var(--bg-section-alt)}.github-section .section-description{font-size:15px;color:var(--text-muted);max-width:600px;margin:10px auto 0}.github-section .section-description a{color:var(--primary);font-weight:600;text-decoration:none}.github-section .section-description a:hover{text-decoration:underline}.github-stats-row{display:flex;gap:24px;justify-content:center;align-items:stretch;flex-wrap:wrap;margin-bottom:24px}.github-stat-card{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:20px;flex:1;min-width:300px;max-width:520px;text-align:center;box-shadow:var(--shadow-sm);transition:transform .3s ease,box-shadow .3s ease}.github-stat-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-md)}.github-stat-card img{width:100%;height:auto;max-height:200px;object-fit:contain}.github-streak-card{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:20px;text-align:center;margin-bottom:24px;box-shadow:var(--shadow-sm);transition:transform .3s ease,box-shadow .3s ease}.github-streak-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-md)}.github-streak-card img{width:100%;max-width:800px;height:auto}.github-graph-card{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:20px;text-align:center;margin-bottom:0;box-shadow:var(--shadow-sm);overflow:hidden;transition:transform .3s ease,box-shadow .3s ease}.github-graph-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-md)}.github-graph-card img{width:100%;height:auto;border-radius:var(--radius-sm)}.github-stat-fallback{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2rem 1rem;color:var(--text-secondary);text-align:center;min-height:195px}.github-stat-fallback i{opacity:.4}.github-stat-fallback p{margin:.5rem 0;font-size:.9rem}.github-stat-fallback a{color:var(--primary-color);font-size:.85rem}.github-card{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:24px;height:100%;box-shadow:var(--shadow-sm);transition:transform .3s ease,box-shadow .3s ease}.github-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-md)}.github-card h5{font-size:16px;margin-bottom:16px;font-weight:600;display:flex;align-items:center;gap:8px}.github-card h5 i{color:var(--primary)}.github-graph{margin-bottom:0}.github-graph h2{font-size:14px}.github-graph .js-calendar-graph-svg{max-width:100%}.ghfeed{height:400px;overflow-y:auto;border-radius:var(--radius-sm)}.ghfeed,.ghfeed *,.ghfeed ::after,.ghfeed ::before{box-sizing:content-box}@media (max-width:768px){.github-stats-row{flex-direction:column;align-items:center}.github-stat-card{max-width:100%;min-width:unset}}.contact-section{background:var(--bg-section-alt)}.contact-card{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:32px;text-align:center;transition:var(--transition);height:100%}.contact-card:hover{transform:translateY(-6px);box-shadow:var(--shadow-lg);border-color:transparent}.contact-card-icon{width:64px;height:64px;border-radius:50%;background:var(--gradient-card);display:flex;align-items:center;justify-content:center;margin:0 auto 16px;font-size:24px;color:var(--primary);transition:var(--transition)}.contact-card:hover .contact-card-icon{background:var(--gradient-main);color:#fff}.contact-card h4{font-size:16px;margin-bottom:8px;font-weight:700}.contact-card a,.contact-card p{color:var(--text-secondary);font-size:14px;margin-bottom:0;word-break:break-all}.contact-card a:hover{color:var(--primary)}.footer{background:var(--bg-dark);padding:48px 0}.footer-content{display:flex;flex-direction:column;align-items:center;gap:20px}.footer-brand{font-family:var(--font-heading);font-size:32px;font-weight:900;color:#fff;letter-spacing:-.03em}.footer-brand span{color:var(--primary-light)}.footer-socials{display:flex;gap:14px}.footer-socials a{width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.1);color:rgba(255,255,255,.5);font-size:16px;transition:var(--transition)}.footer-socials a:hover{background:var(--primary);border-color:var(--primary);color:#fff;transform:translateY(-2px)}.footer-copy{color:var(--text-muted);font-size:13px;margin-bottom:0}.back-to-top{position:fixed;bottom:30px;right:30px;width:44px;height:44px;border-radius:50%;background:var(--gradient-main);color:#fff;border:none;cursor:pointer;font-size:16px;display:flex;align-items:center;justify-content:center;opacity:0;visibility:hidden;transform:translateY(20px);transition:var(--transition);box-shadow:0 4px 16px rgba(99,102,241,.3);z-index:999}.back-to-top.visible{opacity:1;visibility:visible;transform:translateY(0)}.back-to-top:hover{transform:translateY(-4px);box-shadow:0 8px 30px rgba(99,102,241,.4)}.reveal{opacity:0;transform:translateY(30px);transition:opacity .6s ease,transform .6s ease}.reveal.active{opacity:1;transform:translateY(0)}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--gradient-hero);overflow:hidden}.login-wrapper{width:100%;min-height:100vh;display:flex;align-items:center;justify-content:center;position:relative;padding:40px 20px}.login-bg-shapes{position:absolute;inset:0;pointer-events:none}.login-bg-shapes .shape{position:absolute;border-radius:50%}.login-bg-shapes .shape-1{width:500px;height:500px;top:-10%;right:-10%;background:radial-gradient(circle,rgba(99,102,241,.1) 0,transparent 60%);filter:blur(40px)}.login-bg-shapes .shape-2{width:400px;height:400px;bottom:-10%;left:-5%;background:radial-gradient(circle,rgba(6,182,212,.07) 0,transparent 60%);filter:blur(40px)}.login-bg-shapes .shape-3{width:200px;height:200px;top:40%;left:30%;background:radial-gradient(circle,rgba(245,158,11,.04) 0,transparent 60%);filter:blur(30px)}.login-container{display:flex;max-width:900px;width:100%;max-height:calc(100vh - 40px);border-radius:var(--radius-xl);overflow:hidden;box-shadow:0 25px 80px rgba(0,0,0,.3);position:relative;z-index:1}.login-brand-panel{flex:0 0 42%;background:linear-gradient(160deg,#1e1b4b,#0f172a);padding:36px 32px;display:flex;align-items:center;position:relative;overflow:hidden}.login-brand-panel::before{content:'';position:absolute;inset:0;background:radial-gradient(ellipse at 30% 20%,rgba(99,102,241,.12),transparent 50%),radial-gradient(ellipse at 70% 80%,rgba(6,182,212,.08),transparent 50%);pointer-events:none}.login-brand-content{position:relative;z-index:1}.login-brand-logo{font-family:var(--font-heading);font-size:42px;font-weight:900;color:#fff;text-decoration:none;display:inline-block;margin-bottom:24px}.login-brand-logo span{background:var(--gradient-main);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.login-brand-panel h2{color:#fff;font-size:28px;font-weight:700;margin-bottom:12px}.login-brand-panel p{color:rgba(255,255,255,.5);font-size:15px;line-height:1.7;margin-bottom:0}.login-brand-decoration{position:absolute;bottom:30px;right:30px}.brand-ring{width:120px;height:120px;border:2px dashed rgba(99,102,241,.15);border-radius:50%;animation:spin 40s linear infinite}.brand-dots{position:absolute;bottom:-10px;right:-10px;width:80px;height:80px;background-image:radial-gradient(rgba(99,102,241,.2) 1.5px,transparent 1.5px);background-size:12px 12px}.login-form-panel{flex:1;background:var(--bg-card);padding:36px 32px;display:flex;flex-direction:column;justify-content:center;overflow-y:auto}.login-form-header h3{font-size:24px;font-weight:800;margin-bottom:4px;color:var(--text-primary)}.login-form-header p{color:var(--text-secondary);font-size:14px;margin-bottom:20px}.form-floating-custom{position:relative}.form-floating-custom label{font-size:12px;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.06em;margin-bottom:6px;display:block}.input-icon-wrapper{position:relative}.input-icon-wrapper .svg-inline--fa,.input-icon-wrapper i{position:absolute;left:16px;top:50%;transform:translateY(-50%);color:var(--text-muted);font-size:14px;transition:color .3s ease;z-index:1;pointer-events:none}.input-icon-wrapper .form-control{padding-left:44px;padding-right:16px;height:46px;border:2px solid var(--border-color);border-radius:var(--radius-md);font-size:14px;background:var(--bg-body);color:var(--text-primary);transition:all .3s ease}.input-icon-wrapper .form-control:focus{border-color:var(--primary);box-shadow:0 0 0 4px var(--primary-glow);background:var(--bg-card)}.input-icon-wrapper .form-control:focus+i,.input-icon-wrapper .form-control:focus~.svg-inline--fa,.input-icon-wrapper:focus-within .svg-inline--fa,.input-icon-wrapper:focus-within i{color:var(--primary)}.btn-login{height:46px;font-size:15px;border-radius:var(--radius-md)}.login-footer{text-align:center;margin-top:24px;padding-top:20px;border-top:1px solid var(--border-color)}.login-footer a{color:var(--text-secondary);font-size:14px;font-weight:500;display:inline-flex;align-items:center;gap:6px;transition:color .3s ease}.login-footer a:hover{color:var(--primary)}@media (max-width:991px){.login-container{max-width:500px;flex-direction:column;max-height:none}.login-brand-panel{flex:0 0 auto;padding:28px 24px}.login-brand-decoration{display:none}.login-form-panel{padding:28px 24px;overflow-y:visible}}@media (max-width:575px){.login-wrapper{padding:12px;align-items:flex-start}.login-container{border-radius:var(--radius-lg)}.login-brand-panel{padding:20px 20px 16px}.login-brand-logo{font-size:32px;margin-bottom:8px}.login-brand-panel h2{font-size:20px;margin-bottom:4px}.login-brand-panel p{font-size:13px;line-height:1.5}.login-form-panel{padding:20px}.login-form-header h3{font-size:20px}.login-form-header p{font-size:13px;margin-bottom:14px}.form-floating-custom label{font-size:11px;margin-bottom:4px}.input-icon-wrapper .form-control{height:42px;font-size:13px;padding-left:40px}.input-icon-wrapper .svg-inline--fa,.input-icon-wrapper i{font-size:13px;left:14px}.btn-login{height:42px;font-size:14px}.login-footer{margin-top:16px;padding-top:14px}.login-footer a{font-size:13px}}.project-hero{background:var(--gradient-hero);padding:120px 0 60px;position:relative;overflow:hidden}.project-hero::after{content:'';position:absolute;bottom:0;left:0;right:0;height:100px;background:linear-gradient(to top,var(--bg-body),transparent);pointer-events:none}.project-hero-bg{position:absolute;inset:0;pointer-events:none}.project-hero-bg .shape{position:absolute;border-radius:50%}.project-hero-bg .shape-1{width:500px;height:500px;top:-20%;right:-10%;background:radial-gradient(circle,rgba(99,102,241,.1) 0,transparent 60%);filter:blur(40px)}.project-hero-bg .shape-2{width:300px;height:300px;bottom:-10%;left:10%;background:radial-gradient(circle,rgba(6,182,212,.06) 0,transparent 60%);filter:blur(40px)}.project-hero-content{position:relative;z-index:2}.project-hero-back{display:inline-flex;align-items:center;gap:8px;color:rgba(255,255,255,.5);font-size:13px;font-weight:500;margin-bottom:20px;text-decoration:none;transition:color .3s ease}.project-hero-back:hover{color:rgba(255,255,255,.8)}.project-hero h1{color:#fff;font-size:clamp(28px, 4vw, 44px);font-weight:800;margin-bottom:16px;letter-spacing:-.02em}.project-hero-meta{display:flex;flex-wrap:wrap;gap:12px}.project-meta-badge{display:inline-flex;align-items:center;gap:6px;padding:6px 16px;border-radius:var(--radius-full);font-size:13px;font-weight:500;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.1);color:rgba(255,255,255,.6)}.project-meta-badge.featured{background:rgba(99,102,241,.15);border-color:rgba(99,102,241,.3);color:var(--primary-light)}.project-main-wrapper{padding:40px 0 80px}.project-detail-card{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-xl);overflow:hidden;box-shadow:var(--shadow-md)}.project-detail-image{overflow:hidden;border-radius:var(--radius-xl) var(--radius-xl) 0 0}.project-detail-image img{width:100%;height:auto;display:block;transition:transform .5s ease}.project-detail-image:hover img{transform:scale(1.02)}.project-detail-body{padding:32px}.project-detail-heading{font-size:20px;font-weight:700;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid var(--border-color);position:relative}.project-detail-heading::after{content:'';position:absolute;bottom:-1px;left:0;width:50px;height:3px;background:var(--gradient-main);border-radius:2px}.project-detail-text{color:var(--text-secondary);font-size:15px;line-height:1.8;margin-bottom:24px}.project-detail-actions{padding-top:16px}.project-sidebar-card{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:24px;box-shadow:var(--shadow-sm);margin-bottom:20px}.project-sidebar-card h4{font-size:16px;font-weight:700;margin-bottom:16px;display:flex;align-items:center;gap:8px}.project-sidebar-card h4 i{color:var(--primary);font-size:15px}.sidebar-info-list{display:flex;flex-direction:column;gap:12px}.sidebar-info-item{display:flex;justify-content:space-between;align-items:center;padding:10px 0;border-bottom:1px solid var(--border-light)}.sidebar-info-item:last-child{border-bottom:none}.sidebar-info-label{font-size:13px;color:var(--text-secondary);display:flex;align-items:center;gap:8px}.sidebar-info-label i{color:var(--primary);width:14px;text-align:center}.sidebar-info-value{font-size:13px;font-weight:600;color:var(--text-primary)}.sidebar-info-value.featured-text{color:var(--accent-warm)}.sidebar-share-links{display:flex;gap:10px}.share-btn{width:42px;height:42px;border-radius:var(--radius-md);display:flex;align-items:center;justify-content:center;font-size:16px;transition:all .3s ease;text-decoration:none;border:1px solid var(--border-color);color:var(--text-secondary);background:var(--bg-body)}.share-btn:hover{transform:translateY(-3px);box-shadow:var(--shadow-md);color:#fff}.share-btn.linkedin:hover{background:#0077b5;border-color:#0077b5}.share-btn.twitter:hover{background:#1a1a2e;border-color:#1a1a2e}.share-btn.email:hover{background:var(--primary);border-color:var(--primary)}.project-comments-section{margin-top:40px}.comments-section-header{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:32px}.comments-section-header .section-title{margin-bottom:0}.comments-section-header .section-subtitle{display:inline-flex;align-items:center;gap:8px}.comments-section-header h2{font-size:28px;font-weight:800;letter-spacing:-.03em;display:flex;align-items:center;gap:12px}.comment-count-pill{display:inline-flex;align-items:center;justify-content:center;background:var(--gradient-main);color:#fff;font-size:13px;font-weight:700;min-width:30px;height:30px;padding:0 10px;border-radius:var(--radius-full);font-family:var(--font-body);letter-spacing:0;box-shadow:0 4px 12px rgba(99,102,241,.25);transition:transform .3s cubic-bezier(.34, 1.56, .64, 1)}.comment-count-pill.count-bump{transform:scale(1.2)}.comments-sort-toggle{display:flex;gap:4px;background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-full);padding:4px;box-shadow:var(--shadow-xs)}.sort-btn{background:0 0;border:none;font-family:var(--font-heading);font-size:12px;font-weight:600;color:var(--text-muted);padding:6px 16px;border-radius:var(--radius-full);cursor:pointer;transition:var(--transition);display:flex;align-items:center;gap:5px}.sort-btn:hover{color:var(--text-primary)}.sort-btn.active{background:var(--gradient-main);color:#fff;box-shadow:0 2px 8px rgba(99,102,241,.3)}.comment-login-card{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:40px 32px;text-align:center;margin-bottom:24px;box-shadow:var(--shadow-sm);position:relative;overflow:hidden}.comment-login-card::before{content:'';position:absolute;top:0;left:0;right:0;height:3px;background:var(--gradient-main)}.comment-login-icon-wrap{width:56px;height:56px;border-radius:var(--radius-md);background:var(--gradient-card);display:flex;align-items:center;justify-content:center;margin:0 auto 16px;font-size:22px;color:var(--primary)}.comment-login-card h5{font-family:var(--font-heading);font-size:18px;font-weight:700;margin-bottom:8px}.comment-login-card p{color:var(--text-secondary);font-size:14px;line-height:1.7;margin-bottom:20px;max-width:360px;margin-left:auto;margin-right:auto}.comment-composer-card{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:24px;margin-bottom:28px;box-shadow:var(--shadow-sm);transition:var(--transition);position:relative;overflow:hidden}.comment-composer-card::before{content:'';position:absolute;top:0;left:0;right:0;height:3px;background:var(--gradient-main);transform:scaleX(0);transition:var(--transition)}.comment-composer-card:focus-within::before{transform:scaleX(1)}.comment-composer-card:focus-within{box-shadow:var(--shadow-md);border-color:rgba(99,102,241,.2)}.composer-header{display:flex;align-items:center;gap:12px;margin-bottom:16px}.composer-user-info{display:flex;flex-direction:column}.composer-username{font-family:var(--font-heading);font-weight:700;font-size:14px;color:var(--text-primary)}.composer-meta-date{font-family:var(--font-mono);font-size:11px;color:#22c55e;display:flex;align-items:center;gap:5px;letter-spacing:.02em}.composer-meta-date i{font-size:6px}.composer-textarea{width:100%;border:2px solid var(--border-color);border-radius:var(--radius-md);padding:14px 16px;font-family:var(--font-body);font-size:14px;line-height:1.7;color:var(--text-primary);background:var(--bg-body);resize:vertical;min-height:80px;transition:var(--transition)}.composer-textarea:focus{outline:0;border-color:var(--primary);box-shadow:0 0 0 4px var(--primary-glow)}.composer-textarea::placeholder{color:var(--text-muted)}.composer-footer{display:flex;align-items:center;justify-content:space-between;margin-top:14px}.composer-meta-left{display:flex;align-items:center;gap:14px}.char-progress-ring{position:relative;width:28px;height:28px}.char-progress-ring svg{width:28px;height:28px;transform:rotate(-90deg)}.char-progress-ring .ring-bg{fill:none;stroke:var(--border-color);stroke-width:2}.char-progress-ring .ring-fill{fill:none;stroke:var(--primary);stroke-width:2;stroke-linecap:round;stroke-dasharray:62.83;stroke-dashoffset:62.83;transition:stroke-dashoffset .25s ease,stroke .25s ease}.char-progress-ring .ring-fill.warn{stroke:var(--accent-warm)}.char-progress-ring .ring-fill.danger{stroke:#ef4444}.char-count-num{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-family:var(--font-mono);font-size:8px;font-weight:600;color:var(--text-muted)}.char-count-num.warn{color:var(--accent-warm)}.char-count-num.danger{color:#ef4444}.composer-hint{font-size:12px;color:var(--text-muted);display:flex;align-items:center;gap:5px}.composer-actions{display:flex;align-items:center;gap:8px}.btn-composer-cancel{background:0 0;border:none;font-family:var(--font-heading);font-size:13px;font-weight:600;color:var(--text-muted);padding:8px 16px;cursor:pointer;border-radius:var(--radius-md);transition:var(--transition)}.btn-composer-cancel:hover{color:var(--text-primary);background:var(--bg-section-alt)}.comment-avatar{width:42px;height:42px;min-width:42px;border-radius:var(--radius-md);background:var(--gradient-card);display:flex;align-items:center;justify-content:center;color:var(--primary);font-family:var(--font-heading);font-size:16px;font-weight:800;user-select:none;transition:var(--transition)}.comment-avatar--sm{width:36px;height:36px;min-width:36px;font-size:14px}.comment-card{margin-bottom:16px;transition:opacity .4s ease,transform .4s ease}.comment-card-content{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:20px 24px;box-shadow:var(--shadow-sm);transition:var(--transition);position:relative;overflow:hidden}.comment-card-content::before{content:'';position:absolute;top:0;left:0;right:0;height:3px;background:var(--gradient-main);transform:scaleX(0);transform-origin:left;transition:var(--transition)}.comment-card-content:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.comment-card-content:hover::before{transform:scaleX(1)}.comment-card-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.comment-card-author{display:flex;align-items:center;gap:12px}.comment-author-info{display:flex;flex-direction:column}.comment-author-name{font-family:var(--font-heading);font-size:14px;font-weight:700;color:var(--text-primary);display:flex;align-items:center;gap:8px}.comment-badge-own{display:inline-flex;align-items:center;background:var(--gradient-card);color:var(--primary);font-family:var(--font-mono);font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;padding:2px 8px;border-radius:var(--radius-full)}.comment-date{font-family:var(--font-mono);font-size:12px;color:var(--primary);font-weight:500;letter-spacing:.02em}.comment-menu-trigger{background:0 0;border:none;color:var(--text-muted);padding:4px 8px;border-radius:var(--radius-md);cursor:pointer;opacity:0;transition:var(--transition)}.comment-card-content:hover .comment-menu-trigger{opacity:1}.comment-menu-trigger:hover{background:var(--bg-section-alt);color:var(--text-primary)}.comment-card-body{color:var(--text-secondary);font-size:14px;line-height:1.8;word-break:break-word}.comment-edited-badge{display:inline-flex;align-items:center;gap:4px;font-family:var(--font-mono);font-size:11px;font-weight:500;color:var(--text-muted);margin-left:4px}.comment-edited-badge i{font-size:9px}.comment-edit-form{margin-top:4px}.comment-edit-form .composer-textarea{font-size:14px;line-height:1.7;min-height:60px}.comment-card-footer{display:flex;align-items:center;gap:6px;margin-top:14px;padding-top:12px;border-top:1px solid var(--border-light)}.comment-action{background:0 0;border:1px solid var(--border-color);font-family:var(--font-heading);font-size:12px;font-weight:600;color:var(--text-muted);padding:5px 14px;border-radius:var(--radius-full);cursor:pointer;display:inline-flex;align-items:center;gap:6px;transition:var(--transition)}.comment-action:hover{color:var(--text-primary);border-color:var(--text-muted);background:var(--bg-section-alt)}.like-action.liked{color:#ef4444;border-color:rgba(239,68,68,.3);background:rgba(239,68,68,.05)}.like-action.liked i{animation:heartPop .35s ease}.like-action.like-pulse i{animation:likePulse .4s ease}@keyframes heartPop{0%{transform:scale(1)}50%{transform:scale(1.3)}100%{transform:scale(1)}}@keyframes likePulse{0%,100%{transform:scale(1)}50%{transform:scale(1.15)}}.reply-action:hover{color:var(--primary);border-color:rgba(99,102,241,.3)}.comment-replies-thread{margin-left:24px;padding-left:24px;border-left:2px solid var(--border-color);margin-top:4px}.comment-card--reply{margin-bottom:12px}.comment-card--reply .comment-card-content{padding:16px 20px}.comment-card--reply .comment-card-content::before{display:none}.comment-card--reply .comment-card-content:hover{transform:none}.inline-reply-wrap{margin-left:24px;padding-left:24px;border-left:2px solid var(--border-color);margin-top:4px;margin-bottom:8px}.inline-reply-composer{background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-md);padding:16px;box-shadow:var(--shadow-xs)}.inline-reply-composer:focus-within{border-color:rgba(99,102,241,.3);box-shadow:var(--shadow-sm)}.inline-reply-composer textarea{border:none;background:0 0;padding:0;min-height:auto}.inline-reply-composer textarea:focus{box-shadow:none}.inline-reply-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;margin-top:10px}.comment-empty-state{background:var(--bg-card);border:2px dashed var(--border-color);border-radius:var(--radius-lg);padding:52px 40px;text-align:center}.comment-empty-icon{width:56px;height:56px;border-radius:var(--radius-md);background:var(--gradient-card);display:flex;align-items:center;justify-content:center;margin:0 auto 20px;font-size:24px;color:var(--primary)}.comment-empty-state h5{font-family:var(--font-heading);font-size:18px;font-weight:700;margin-bottom:6px}.comment-empty-state p{font-size:14px;color:var(--text-secondary);margin:0}.comment-toast-container{position:fixed;bottom:24px;right:24px;z-index:10000;display:flex;flex-direction:column-reverse;gap:8px;pointer-events:none}.comment-toast{pointer-events:auto;display:flex;align-items:center;gap:12px;padding:14px 20px;border-radius:var(--radius-md);background:var(--bg-card);border:1px solid var(--border-color);box-shadow:var(--shadow-lg);font-family:var(--font-heading);font-size:13px;font-weight:600;color:var(--text-primary);min-width:260px}.toast-icon{width:30px;height:30px;min-width:30px;border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;font-size:13px}.toast-success .toast-icon{background:rgba(16,185,129,.1);color:var(--success)}.toast-error .toast-icon{background:rgba(239,68,68,.1);color:#ef4444}.toast-warning .toast-icon{background:rgba(245,158,11,.1);color:var(--accent-warm)}.toast-info .toast-icon{background:var(--gradient-card);color:var(--primary)}.toast-msg{flex:1}.toast-close{background:0 0;border:none;color:var(--text-muted);cursor:pointer;padding:2px;font-size:12px;transition:var(--transition)}.toast-close:hover{color:var(--text-primary)}.delete-modal{position:fixed;inset:0;z-index:10001;display:flex;align-items:center;justify-content:center;opacity:0;visibility:hidden;transition:opacity .3s ease,visibility .3s ease}.delete-modal.active{opacity:1;visibility:visible}.delete-modal-overlay{position:absolute;inset:0;background:rgba(0,0,0,.4);backdrop-filter:blur(4px)}.delete-modal-content{position:relative;background:var(--bg-card);border:1px solid var(--border-color);border-radius:var(--radius-lg);padding:36px 32px;text-align:center;max-width:360px;width:90%;box-shadow:var(--shadow-xl);transform:scale(.9);transition:transform .3s cubic-bezier(.34, 1.56, .64, 1)}.delete-modal.active .delete-modal-content{transform:scale(1)}.delete-modal-icon{width:56px;height:56px;border-radius:var(--radius-md);background:rgba(239,68,68,.08);display:flex;align-items:center;justify-content:center;margin:0 auto 16px;font-size:22px;color:#ef4444}.delete-modal-content h5{font-family:var(--font-heading);font-size:18px;font-weight:700;margin-bottom:6px}.delete-modal-content p{font-size:13px;color:var(--text-muted);margin-bottom:24px}.delete-modal-actions{display:flex;gap:10px;justify-content:center}.btn-modal-cancel{background:var(--bg-body);border:1px solid var(--border-color);color:var(--text-secondary);font-family:var(--font-heading);font-size:13px;font-weight:600;padding:10px 24px;border-radius:var(--radius-full);cursor:pointer;transition:var(--transition)}.btn-modal-cancel:hover{color:var(--text-primary);border-color:var(--text-muted)}.btn-modal-delete{background:#ef4444;border:none;color:#fff;font-family:var(--font-heading);font-size:13px;font-weight:700;padding:10px 24px;border-radius:var(--radius-full);cursor:pointer;display:inline-flex;align-items:center;gap:6px;transition:var(--transition);box-shadow:0 4px 12px rgba(239,68,68,.25)}.btn-modal-delete:hover{background:#dc2626;transform:translateY(-2px);box-shadow:0 8px 20px rgba(239,68,68,.35)}.comment-enter{opacity:0;transform:translateY(-12px)}.comment-exit{opacity:0;transform:translateX(-20px);transition:opacity .4s ease,transform .4s ease}@media (max-width:768px){.comments-section-header{flex-direction:column;align-items:flex-start;gap:16px}.comments-section-header h2{font-size:22px}.comment-card-content{padding:16px}.comment-replies-thread{margin-left:16px;padding-left:16px}.inline-reply-wrap{margin-left:16px;padding-left:16px}.comment-login-card{padding:28px 20px}.comment-composer-card{padding:16px}.composer-footer{flex-direction:column;gap:12px;align-items:stretch}.composer-actions{justify-content:flex-end}.comment-toast-container{right:12px;left:12px;bottom:12px}.comment-toast{min-width:auto}}body.dark-mode .comment-card-content,body.dark-mode .comment-composer-card,body.dark-mode .comment-empty-state,body.dark-mode .comment-login-card,body.dark-mode .comment-toast,body.dark-mode .delete-modal-content,body.dark-mode .inline-reply-composer,body.dark-mode .project-detail-card,body.dark-mode .project-sidebar-card{background:var(--bg-card);border-color:var(--border-color)}body.dark-mode .composer-textarea{background:var(--bg-body);border-color:var(--border-color);color:var(--text-primary)}body.dark-mode .share-btn{background:var(--bg-card);border-color:var(--border-color);color:var(--text-secondary)}body.dark-mode .login-form-panel{background:var(--bg-card)}body.dark-mode{--bg-body:#0f172a;--bg-card:#1e293b;--bg-section-alt:#0c1222;--bg-dark:#060b18;--text-primary:#e2e8f0;--text-secondary:#94a3b8;--text-muted:#64748b;--border-color:#334155;--border-light:#1e293b;--shadow-sm:0 1px 3px rgba(0,0,0,0.2);--shadow-md:0 4px 6px rgba(0,0,0,0.25);--shadow-lg:0 10px 25px rgba(0,0,0,0.3);--shadow-xl:0 20px 50px rgba(0,0,0,0.4);--gradient-card:linear-gradient(135deg, rgba(99,102,241,0.08), rgba(6,182,212,0.08))}body.dark-mode .navbar-top.scrolled{background:rgba(15,23,42,.88);border-bottom-color:rgba(51,65,85,.5);box-shadow:0 1px 3px rgba(0,0,0,.2),0 8px 30px rgba(0,0,0,.15)}body.dark-mode .navbar-top.scrolled .nav-brand{color:#e2e8f0}body.dark-mode .navbar-top.scrolled .nav-links a{color:var(--text-secondary)}body.dark-mode .navbar-top.scrolled .nav-links a:hover{color:var(--primary-light);background:rgba(99,102,241,.1)}body.dark-mode .navbar-top.scrolled .nav-links a.active{color:var(--primary-light)}body.dark-mode .navbar-top.scrolled .nav-toggle{background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.1)}body.dark-mode .navbar-top.scrolled .nav-toggle span{background:#e2e8f0}body.dark-mode .navbar-top.scrolled .nav-actions .form-check-label{color:var(--text-secondary)}body.dark-mode .stats-bar .row{background:linear-gradient(135deg,rgba(30,27,75,.98),rgba(15,23,42,.98));border-color:rgba(99,102,241,.15)}body.dark-mode .navbar-top.scrolled .mobile-menu a{color:var(--text-secondary)}body.dark-mode .navbar-top.scrolled .mobile-menu a:hover{color:var(--primary-light);background:rgba(99,102,241,.1)}body.dark-mode .about-image{border-color:var(--bg-card)}body.dark-mode .lang-badge{background:var(--bg-card);border-color:var(--border-color)}body.dark-mode .contact-card,body.dark-mode .education-card,body.dark-mode .featured-project,body.dark-mode .github-card,body.dark-mode .github-graph-card,body.dark-mode .github-stat-card,body.dark-mode .github-streak-card,body.dark-mode .project-card,body.dark-mode .service-card,body.dark-mode .timeline-content{background:var(--bg-card);border-color:var(--border-color)}body.dark-mode .github-graph-card img,body.dark-mode .github-stat-card img,body.dark-mode .github-streak-card img{filter:brightness(.9) contrast(1.1)}body.dark-mode .timeline-dot{border-color:var(--bg-body)}body.dark-mode .timeline::before{background:var(--border-color)}body.dark-mode .stat-label{color:var(--text-muted)}body.dark-mode .stack-panel{background:var(--bg-card);border-color:var(--border-color)}body.dark-mode .stack-panel::after{background:var(--bg-card)}body.dark-mode .stack-panel:hover{box-shadow:0 20px 50px rgba(99,102,241,.18)}body.dark-mode .stack-item{background:rgba(255,255,255,.03);border-color:var(--border-color)}body.dark-mode .stack-item:hover{background:rgba(99,102,241,.1);border-color:rgba(99,102,241,.4)}body.dark-mode .stack-panel-count{background:rgba(255,255,255,.05);border-color:var(--border-color)}body.dark-mode .skills-overview{background:var(--bg-card);border-color:var(--border-color)}body.dark-mode .skills-filter-btn{background:var(--bg-card);border-color:var(--border-color)}body.dark-mode .skill-card{background:var(--bg-card);border-color:var(--border-color)}body.dark-mode .skill-card:hover{border-color:rgba(99,102,241,.25)}body.dark-mode .skill-ring-bg{stroke:var(--border-color)}body.dark-mode .skill-bar-track{background:var(--border-color)}body.dark-mode .header{background:var(--gradient-hero)}body.dark-mode .card{background:var(--bg-card);border-color:var(--border-color);color:var(--text-primary)}body.dark-mode .card .text-muted{color:var(--text-muted)!important}body.dark-mode .form-control{background:var(--bg-body);border-color:var(--border-color);color:var(--text-primary)}body.dark-mode .section .section-inner{background:var(--bg-card);border-color:var(--border-color)}body.dark-mode .btn-primary{background:var(--gradient-main);border-color:transparent}@media (max-width:991px){.timeline::before{left:20px}.timeline-item,.timeline-item.left,.timeline-item.right{width:100%;left:0;text-align:left;padding-left:52px;padding-right:0}.timeline-item.left .timeline-dot,.timeline-item.right .timeline-dot{left:13px;right:auto}.hero-image{width:260px;height:260px}.hero-image-col{text-align:center;margin-bottom:32px;order:-1}.hero-image-ring{inset:-14px}.hero-image-dots{width:90px;height:90px;bottom:-6px;right:-12px}.hero-image-wrapper::before{width:220px;height:220px}.about-info-grid{grid-template-columns:1fr}.stats-bar .row{border-radius:var(--radius-lg);padding:36px 16px}.stat-item:not(:last-child)::after{display:none}}@media (max-width:767px){.section-block{padding:60px 0}.section-title h2{font-size:28px}.section-title{margin-bottom:40px}.hero-cta{flex-direction:column;align-items:flex-start}.hero .row{flex-direction:column-reverse}.hero-image-col{margin-bottom:24px}.hero-image{width:200px;height:200px}.hero-content{text-align:center}.hero-contact-badges,.hero-cta,.hero-socials{justify-content:center}.hero-contact-badges{justify-content:center}.stack-bento{grid-template-columns:1fr;gap:16px}.stack-panel{padding:20px 16px 18px}.stack-panel-items{gap:8px}.stack-item{padding:6px 10px 6px 8px}.stack-item img{width:24px;height:24px}.stack-item span{font-size:.76rem}.stats-bar .row{transform:translateY(-30px);padding:28px 12px;margin:0 8px}.stat-number{font-size:34px}.stat-label{font-size:10.5px;letter-spacing:.06em}.hero-name{font-size:32px}.hero-description{font-size:14px}.hero-scroll-indicator{display:none}.skills-overview{flex-direction:column;text-align:center;gap:20px;padding:24px}.skills-overview-ring{width:100px;height:100px}.skills-overview-ring svg{width:100px;height:100px}.skills-overview-number{font-size:26px}.skills-filter-btn{padding:8px 14px;font-size:.82rem}.header .profile-content .name{font-size:22px}.header .profile-content .desc{font-size:14px}.header .profile-image{width:80px;height:80px}}@media (max-width:575px){.about-image{width:200px;height:200px}.hero-socials{gap:10px}.hero-socials a{width:40px;height:40px;border-radius:var(--radius-sm)}.stats-bar .row{transform:translateY(-24px);border-radius:var(--radius-md);padding:24px 8px}.stat-number{font-size:28px}.featured-project{padding:20px}.nav-links{gap:4px}.nav-links a{padding:6px 10px;font-size:12.5px}}