:root{--bg:#eef2f7;--surface:#fff;--surface2:#f4f7fb;--accent:#2563eb;--accent2:#0ea5e9;--accent3:#14b8a6;--accent4:#f59e0b;--text:#1e293b;--muted:#64748b;--border:#cbd5e1;--nav-bg:#fffffff2;--nav-bg-unscrolled:#eef2f7cc;--hero-grad:linear-gradient(160deg,#eef2f7 0%,#e8f0fe 55%,#f0fafa 100%);--mail-color:var(--text);--phone-color:var(--text);--wa-color:var(--text);--pin-color:var(--text);--contact-label-color:var(--muted);--section-title-color:#f33;--card-glow-default:0 8px 24px -4px #2563eb40, 0 0 16px #2563eb26;--card-glow-hover:0 16px 40px -10px #2563eb73, 0 0 32px 4px #2563eb4d;--ring1-color:#2563ebbf;--ring2-color:#0ea5e999}:root.dark{--bg:#0f172a;--surface:#1e293b;--surface2:#334155;--accent:#3b82f6;--accent2:#38bdf8;--accent3:#2dd4bf;--accent4:#fbbf24;--text:#f1f5f9;--muted:#94a3b8;--border:#334155;--nav-bg:#1e293bf2;--nav-bg-unscrolled:#0f172acc;--hero-grad:linear-gradient(160deg,#0f172a 0%,#1e293b 55%,#334155 100%);--mail-color:#3b82f6;--phone-color:#2dd4bf;--wa-color:#4ade80;--pin-color:#fbbf24;--contact-label-color:#fff;--section-title-color:#fff;--card-glow-default:0 8px 24px -4px #38bdf814, 0 0 10px #38bdf80a;--card-glow-hover:0 16px 40px -10px #38bdf840, 0 0 24px 2px #38bdf826;--ring1-color:#38bdf866;--ring2-color:#2dd4bf4d}.footer-copyright{font-weight:700}:root.dark .footer-copyright{font-weight:400}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);color:var(--text);font-family:DM Sans,sans-serif;overflow-x:hidden}h1,h2,h3,h4,h5{font-family:Syne,sans-serif}::-webkit-scrollbar{width:5px}::-webkit-scrollbar-thumb{background:var(--accent);border-radius:3px}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-14px)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes spinRev{to{transform:rotate(-360deg)}}@keyframes fadeUp{0%{opacity:0;transform:translateY(32px)}to{opacity:1;transform:translateY(0)}}.hero-title,.hero-bio,.hero-cta-group,.hero-social-group,.hero-avatar{will-change:opacity, transform}.reveal{opacity:0;will-change:opacity, transform;transition:opacity .6s cubic-bezier(.2,.8,.2,1),transform .6s cubic-bezier(.2,.8,.2,1);transform:translateY(60px)}.section-header-wrap.reveal{transition:opacity 1.2s cubic-bezier(.2,.8,.2,1),transform 1.2s cubic-bezier(.2,.8,.2,1);transform:translateY(100px)}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.animate-float{will-change:transform;animation:4s ease-in-out infinite float}.ring1{border:2px dashed var(--ring1-color);pointer-events:none;will-change:transform;border-radius:50%;animation:20s linear infinite spin;position:absolute;inset:-28px}.ring2{border:2px dashed var(--ring2-color);pointer-events:none;will-change:transform;border-radius:50%;animation:28s linear infinite spinRev;position:absolute;inset:-56px}.blob{filter:blur(90px);opacity:.16;pointer-events:none;border-radius:50%;position:absolute}.grad-text{background:linear-gradient(135deg,#2563eb,#0ea5e9,#14b8a6);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text}.reveal{opacity:0;transition:opacity .5s,transform .5s;transform:translateY(24px)}.reveal.visible{opacity:1;transform:none}.active-link{color:#f33!important;font-weight:800!important}.nav-link{color:var(--text);cursor:pointer;letter-spacing:.05em;text-transform:uppercase;flex-direction:column;align-items:center;font-family:Syne,sans-serif;font-size:.78rem;font-weight:700;text-decoration:none;transition:all .15s;display:inline-flex;position:relative}.nav-link:before{content:attr(data-text);visibility:hidden;-webkit-user-select:none;user-select:none;pointer-events:none;height:0;font-weight:800;display:block;overflow:hidden}.nav-link:after{content:"";background:var(--accent);border-radius:2px;width:0;height:2px;transition:width .3s;position:absolute;bottom:-4px;left:0}.nav-link:hover{color:var(--accent)}.nav-link:hover:after{width:100%}.btn-primary{background:var(--accent);color:#fff;letter-spacing:.02em;cursor:pointer;border:none;border-radius:50px;align-items:center;gap:8px;padding:12px 28px;font-family:Syne,sans-serif;font-size:.875rem;font-weight:700;text-decoration:none;transition:all .25s;display:inline-flex;position:relative;box-shadow:0 4px 20px #2563eb52}.btn-primary:after,.btn-outline:after{content:"";z-index:1;position:absolute;inset:-8px}.btn-primary:active,.btn-outline:active{transform:translateY(0)}.btn-primary:hover{background:#1d4ed8;transform:translateY(-2px);box-shadow:0 8px 30px #2563eb73}.btn-outline{color:var(--accent);border:2px solid var(--accent);cursor:pointer;background:0 0;border-radius:50px;align-items:center;gap:8px;padding:11px 28px;font-family:Syne,sans-serif;font-size:.875rem;font-weight:700;text-decoration:none;transition:all .25s;display:inline-flex;position:relative}.btn-outline:hover{transform:translateY(-2px);box-shadow:0 8px 30px #2563eb33;background:var(--accent)!important;color:#fff!important}.card{background:var(--surface);border:1px solid var(--border);border-radius:20px;transition:all .3s;box-shadow:0 2px 20px #2563eb0d}.card:hover{border-color:#2563eb33;transform:translateY(-4px);box-shadow:0 12px 40px #2563eb1f}.glass{-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#ffffffb8;border:1px solid #ffffffd9}.section-label{background:var(--surface2);border:1px solid var(--border);color:var(--accent);letter-spacing:.15em;text-transform:uppercase;border-radius:50px;align-items:center;gap:10px;margin:0 auto 20px;padding:8px 26px;font-family:Syne,sans-serif;font-size:.75rem;font-weight:700;display:inline-flex;box-shadow:0 4px 12px #00000008}.accent-line{background:linear-gradient(90deg, var(--accent), var(--accent2));border-radius:2px;width:60px;height:4px}.tech-badge{color:var(--accent);background:#2563eb14;border-radius:50px;align-items:center;gap:5px;padding:4px 10px;font-family:Syne,sans-serif;font-size:.72rem;font-weight:600;display:inline-flex}.skills-grid{grid-template-columns:repeat(auto-fill,minmax(90px,1fr));gap:14px;display:grid}.skill-card{background:var(--surface);border:1px solid var(--border);cursor:default;border-radius:16px;flex-direction:column;align-items:center;gap:10px;padding:18px 12px;transition:transform .3s,box-shadow 2s,border-color 2s;display:flex}.skill-icon{object-fit:contain;width:40px;height:40px}.skill-label{text-align:center;color:var(--text);font-family:Syne,sans-serif;font-size:.75rem;font-weight:700}.skill-card:hover{border-color:#2563eb40;transform:translateY(-4px);box-shadow:0 8px 24px #2563eb1f}.filter-tab{border:1px solid var(--border);letter-spacing:.05em;cursor:pointer;background:var(--surface);color:var(--muted);border-radius:50px;padding:8px 24px;font-family:Syne,sans-serif;font-size:.82rem;font-weight:600;transition:all .15s}.filter-tab.active,.filter-tab:hover{background:var(--accent);color:#fff;border-color:var(--accent)}.project-card{background:var(--surface);border:1px solid var(--border);border-radius:20px;transition:all .3s;overflow:hidden}.project-card:hover{border-color:#2563eb40;transform:translateY(-6px);box-shadow:0 16px 48px #2563eb24}.social-icon{border:1.5px solid var(--border);width:44px;height:44px;color:var(--text);opacity:.8;border-radius:50%;justify-content:center;align-items:center;text-decoration:none;transition:all .25s;display:flex}.social-icon:hover{border-color:var(--accent);background:var(--accent);color:#fff;transform:translateY(-3px)}.input-field{background:var(--surface2);border:1.5px solid var(--border);letter-spacing:.04em;width:100%;color:var(--text);border-radius:12px;outline:none;padding:12px 20px;font-family:DM Sans,sans-serif;font-size:1rem;line-height:1.5;transition:all .2s}.input-field::placeholder{opacity:.6;font-size:.88rem;font-weight:400}.input-field:focus{border-color:var(--accent);background:var(--surface);box-shadow:0 0 0 4px #2563eb14}.timeline-dot{background:var(--accent);border:3px solid var(--bg);border-radius:50%;flex-shrink:0;width:14px;height:14px;margin-top:4px;box-shadow:0 0 0 3px #2563eb33}@keyframes pulseActive{0%{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(1.4)}to{opacity:1;transform:scale(1)}}@keyframes pulseActiveDark{0%{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(1.4)}to{opacity:1;transform:scale(1)}}.timeline-dot.active{animation:1.1s ease-out infinite pulseActive}:root.dark .timeline-dot.active{animation:1.1s ease-out infinite pulseActiveDark}.modal-bg{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);z-index:500;background:#0f172a99;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.edu-card{border:1px solid var(--border);box-shadow:var(--card-glow-default);transition:all .3s cubic-bezier(.4,0,.2,1)}.edu-card:hover{border-color:var(--accent);box-shadow:var(--card-glow-hover);transform:translateY(-5px)}@property --sa{syntax:"<angle>";inherits:false;initial-value:0deg}@keyframes serviceOrbit{to{--sa:360deg}}.svc-section{padding:96px 24px;position:relative;overflow:clip}.svc-wrap{z-index:1;max-width:1360px;margin:0 auto;position:relative}.svc-lead{text-align:center;max-width:620px;color:var(--muted);margin:-36px auto 56px;font-size:1.05rem;line-height:1.7}.svc-aurora{z-index:0;pointer-events:none;position:absolute;inset:0}.svc-blob{aspect-ratio:1;filter:blur(90px);opacity:.14;border-radius:50%;width:46vw;max-width:620px;animation:22s ease-in-out infinite svcDrift;position:absolute}:root.dark .svc-blob{opacity:.2}.svc-blob--a{background:var(--accent);top:4%;left:-10%}.svc-blob--b{background:#8b5cf6;animation-duration:26s;animation-delay:-7s;top:38%;right:-12%}.svc-blob--c{background:var(--accent3);animation-duration:30s;animation-delay:-13s;bottom:-8%;left:28%}@keyframes svcDrift{0%,to{transform:translate(0)scale(1)}33%{transform:translate(60px,-40px)scale(1.08)}66%{transform:translate(-50px,50px)scale(.94)}}.svc-grid{perspective:1200px;grid-template-columns:repeat(auto-fit,minmax(min(100%,340px),1fr));gap:28px;display:grid}@keyframes svcIn{0%{opacity:0;filter:blur(8px);translate:0 46px;scale:.96}to{opacity:1;filter:blur();translate:0;scale:1}}.svc-grid:not(.visible) .svc-card{opacity:0}.svc-grid.visible .svc-card{animation:.9s cubic-bezier(.2,.8,.2,1) backwards svcIn;animation-delay:calc(var(--i,0) * .11s)}.svc-card{--rx:0deg;--ry:0deg;border:1px solid var(--border);background:linear-gradient(160deg, color-mix(in srgb, var(--c) 9%, var(--surface)) 0%, var(--surface) 55%);transform:rotateX(var(--rx)) rotateY(var(--ry));transform-style:preserve-3d;will-change:transform;border-radius:22px;flex-direction:column;padding:36px 34px 30px;transition:transform .35s cubic-bezier(.2,.8,.2,1),border-color .4s,box-shadow .4s;display:flex;position:relative;overflow:hidden;box-shadow:0 2px 20px #0f172a0f}.svc-card>*{z-index:1;position:relative}.svc-card:before{content:"";z-index:0;pointer-events:none;opacity:0;background:radial-gradient(360px circle at var(--mx,50%) var(--my,0%), color-mix(in srgb, var(--c) 22%, transparent), transparent 65%);transition:opacity .4s;position:absolute;inset:0}.svc-card:after{content:"";z-index:2;border-radius:inherit;pointer-events:none;background:conic-gradient(from var(--sa), transparent 0deg, transparent 292deg, color-mix(in srgb, var(--c) 95%, transparent) 338deg, transparent 360deg);-webkit-mask-composite:xor;opacity:.55;animation:9s linear infinite serviceOrbit;animation-delay:calc(var(--i,0) * -1.5s);padding:1.5px;transition:opacity .4s;position:absolute;inset:0;-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor,source-over;mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0)}.svc-grid:not(.visible) .svc-card:after{animation-play-state:paused}.svc-card:hover{border-color:color-mix(in srgb, var(--c) 50%, var(--border));box-shadow:0 28px 50px -26px color-mix(in srgb, var(--c) 70%, transparent), 0 2px 20px #0f172a0f}.svc-card:hover:before{opacity:1}.svc-card:hover:after{opacity:1;animation-duration:3.8s}.svc-num{color:#0000;-webkit-text-stroke:1.5px color-mix(in srgb, var(--c) 38%, transparent);opacity:.75;-webkit-user-select:none;user-select:none;font-family:Syne,sans-serif;font-size:4.6rem;font-weight:800;line-height:1;transition:transform .6s cubic-bezier(.2,.8,.2,1),-webkit-text-stroke-color .4s,opacity .4s;top:14px;right:24px;position:absolute!important}.svc-card:hover .svc-num{-webkit-text-stroke-color:color-mix(in srgb, var(--c) 85%, transparent);opacity:1;transform:translate3d(0,4px,40px)scale(1.06)}.svc-icon{width:64px;height:64px;color:var(--c);background:linear-gradient(145deg, color-mix(in srgb, var(--c) 24%, transparent), color-mix(in srgb, var(--c) 8%, transparent));border:1px solid color-mix(in srgb, var(--c) 32%, transparent);box-shadow:inset 0 1px 0 #ffffff14, 0 10px 24px -12px color-mix(in srgb, var(--c) 80%, transparent);animation:5s ease-in-out infinite svcFloat;animation-delay:calc(var(--i,0) * -.8s);border-radius:18px;justify-content:center;align-items:center;margin-bottom:24px;transition:transform .5s cubic-bezier(.2,.8,.2,1),border-radius .5s;display:flex;position:relative}.svc-icon-pulse{border-radius:inherit;border:1.5px solid var(--c);opacity:0;animation:3.6s ease-out infinite svcPulse;animation-delay:calc(var(--i,0) * -.6s);z-index:0;position:absolute;inset:0}.svc-icon-svg{z-index:1;transition:transform .6s cubic-bezier(.34,1.56,.64,1);position:relative}.svc-card:hover .svc-icon{border-radius:50%;transform:translateY(-3px)scale(1.08)}.svc-card:hover .svc-icon-svg{transform:rotate(-8deg)scale(1.12)}@keyframes svcFloat{0%,to{translate:0}50%{translate:0 -5px}}@keyframes svcPulse{0%{opacity:.55;transform:scale(1)}70%,to{opacity:0;transform:scale(1.55)}}.svc-grid:not(.visible) .svc-icon,.svc-grid:not(.visible) .svc-icon-pulse{animation-play-state:paused}.svc-title{color:var(--text);margin:0 0 12px;font-family:Syne,sans-serif;font-size:1.28rem;font-weight:700;line-height:1.3;transform:translateZ(20px)}.svc-desc{color:var(--text);opacity:.8;flex:1;margin:0 0 26px;font-size:.98rem;font-weight:500;line-height:1.75}.svc-link{letter-spacing:.02em;color:var(--muted);align-self:flex-start;align-items:center;gap:8px;font-size:.88rem;font-weight:700;text-decoration:none;transition:color .3s,gap .3s;display:inline-flex}.svc-link svg{transition:transform .3s cubic-bezier(.2,.8,.2,1)}.svc-card:hover .svc-link{color:var(--c)}.svc-link:hover svg,.svc-card:hover .svc-link svg{transform:translate(5px)}.svc-bar{background:linear-gradient(90deg, var(--c), color-mix(in srgb, var(--c) 20%, transparent));transform-origin:0;opacity:.7;width:100%;height:3px;transition:transform .6s cubic-bezier(.2,.8,.2,1),opacity .4s;bottom:0;left:0;transform:scaleX(.18);z-index:3!important;position:absolute!important}.svc-card:hover .svc-bar{opacity:1;transform:scaleX(1)}.svc-cta{border:1px solid color-mix(in srgb, var(--accent) 30%, var(--border));background:linear-gradient(120deg, color-mix(in srgb, var(--accent) 12%, var(--surface)), color-mix(in srgb, var(--accent3) 8%, var(--surface)));opacity:0;border-radius:20px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:24px;margin-top:40px;padding:26px 32px;transition:opacity .8s .5s,translate .8s cubic-bezier(.2,.8,.2,1) .5s;display:flex;translate:0 28px}.svc-grid.visible~.svc-cta{opacity:1;translate:0}.svc-cta-text{flex-direction:column;flex:1;gap:4px;min-width:240px;display:flex}.svc-cta-text strong{color:var(--text);font-family:Syne,sans-serif;font-size:1.15rem}.svc-cta-text span{color:var(--muted);font-size:.95rem;line-height:1.55}.svc-cta-btn{color:#fff;background:linear-gradient(120deg, var(--accent), var(--accent2));box-shadow:0 12px 26px -12px var(--accent);border-radius:999px;align-items:center;gap:10px;padding:13px 24px;font-size:.95rem;font-weight:700;text-decoration:none;transition:transform .3s cubic-bezier(.2,.8,.2,1),box-shadow .3s;display:inline-flex;position:relative;overflow:hidden}.svc-cta-btn:before{content:"";background:linear-gradient(105deg,#0000 35%,#ffffff59 50%,#0000 65%);transition:transform .7s;position:absolute;inset:0;transform:translate(-120%)}.svc-cta-btn:hover{box-shadow:0 18px 30px -12px var(--accent);transform:translateY(-2px)}.svc-cta-btn:hover:before{transform:translate(120%)}.svc-cta-btn svg{transition:transform .3s}.svc-cta-btn:hover svg{transform:translate(4px)}@media (width<=768px){.svc-section{padding:72px 18px}.svc-lead{margin:-20px auto 36px;font-size:.98rem}.svc-card{padding:28px 24px 26px}.svc-num{font-size:3.6rem;right:18px}.svc-cta{padding:22px}.svc-cta-btn{justify-content:center;width:100%}}@media (hover:none){.svc-card{transform:none}}@media (prefers-reduced-motion:reduce){.svc-grid:not(.visible) .svc-card{opacity:1}.svc-grid.visible .svc-card{animation:none}.svc-card{transform:none}.svc-card:after,.svc-icon,.svc-icon-pulse,.svc-blob{animation:none}.svc-cta{opacity:1;transition:none;translate:none}}.hide-scrollbar::-webkit-scrollbar{display:none}.hide-scrollbar{-ms-overflow-style:none;scrollbar-width:none}.alert-box{text-align:left;border-radius:12px;align-items:center;gap:14px;padding:16px 20px;font-family:DM Sans,sans-serif;font-size:.95rem;font-weight:500;line-height:1.5;animation:.4s ease-out fadeUp;display:flex}.alert-warning{color:#b45309;background:linear-gradient(135deg,#d977061f,#d977060a);border:1px solid #d9770640}:root.dark .alert-warning{color:#facc15;background:linear-gradient(135deg,#facc1526,#facc150d);border:1px solid #facc154d}.alert-success{color:#15803d;background:linear-gradient(135deg,#16a34a1f,#16a34a0a);border:1px solid #16a34a40}:root.dark .alert-success{color:#4ade80;background:linear-gradient(135deg,#4ade8026,#4ade800d);border:1px solid #4ade804d}.alert-error{color:#b91c1c;background:linear-gradient(135deg,#dc26261f,#dc26260a);border:1px solid #dc262640}:root.dark .alert-error{color:#f87171;background:linear-gradient(135deg,#f8717126,#f871710d);border:1px solid #f871714d}.project-filter-wrap{margin-bottom:40px}@media (width<=768px){html{font-size:14.5px}section{padding:64px 20px!important}#home{padding-top:140px!important;padding-bottom:80px!important}.project-filter-wrap{margin-bottom:20px!important}.card,.edu-card{padding:24px!important}.skills-grid{grid-template-columns:repeat(auto-fill,minmax(65px,1fr))!important;gap:10px!important}.skill-card{gap:8px!important;padding:10px 6px!important}.skill-icon{width:28px!important;height:28px!important}.skill-label{font-size:.65rem!important}.section-label{margin:0 auto 16px;padding:6px 20px;font-size:.72rem}.edu-card-content{text-align:center!important;flex-direction:column!important;gap:18px!important}.edu-card-content>div:last-child{flex-direction:column;align-items:center;display:flex}}@keyframes contactInL{0%{opacity:0;transform:translate(-30px)}to{opacity:1;transform:none}}@keyframes contactInR{0%{opacity:0;transform:translate(30px)}to{opacity:1;transform:none}}@keyframes contactInUp{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}.contact-left .contact-card{opacity:0;transform:translate(-30px)}.contact-left.visible .contact-card{opacity:1;animation:.75s cubic-bezier(.2,.8,.2,1) backwards contactInL;animation-delay:calc(var(--i,0) * 90ms + .2s);transform:none}.contact-right .contact-form-card{opacity:0;transform:translate(30px)}.contact-right.visible .contact-form-card{opacity:1;animation:.8s cubic-bezier(.2,.8,.2,1) .2s backwards contactInR;transform:none}.contact-right .cf-field,.contact-right .contact-send{opacity:0}.contact-right.visible .cf-field,.contact-right.visible .contact-send{opacity:1;animation:.6s cubic-bezier(.2,.8,.2,1) backwards contactInUp;animation-delay:calc(var(--f,0) * .1s + .55s)}.contact-card,.contact-form-card{transition:transform .4s cubic-bezier(.2,.8,.2,1),border-color .4s,box-shadow .4s;position:relative;overflow:hidden}.contact-card>*,.contact-form-card>*{z-index:1;position:relative}.contact-card:before,.contact-form-card:before{content:"";pointer-events:none;opacity:0;background:radial-gradient(360px circle at var(--mx,50%) var(--my,0%), color-mix(in srgb, var(--cc,var(--accent)) 16%, transparent), transparent 65%);transition:opacity .4s;position:absolute;inset:0}.contact-card:hover:before,.contact-form-card:hover:before{opacity:1}.contact-left.visible .contact-card:hover{border-color:color-mix(in srgb, var(--cc) 55%, var(--border));box-shadow:0 18px 40px -22px color-mix(in srgb, var(--cc) 65%, transparent);transform:translate(6px)}.contact-right.visible .contact-form-card:hover{transform:none}.contact-card:after{content:"";pointer-events:none;opacity:0;background:linear-gradient(90deg, transparent, color-mix(in srgb, var(--cc) 18%, transparent), transparent);width:35%;position:absolute;top:0;bottom:0;left:0;transform:translate(-160%)skew(-20deg)}.contact-card:hover:after{animation:.9s contactSheen}@keyframes contactSheen{0%{opacity:1;transform:translate(-160%)skew(-20deg)}to{opacity:1;transform:translate(420%)skew(-20deg)}}.cc-icon{transition:transform .45s cubic-bezier(.34,1.56,.64,1);position:relative}.cc-icon:after{content:"";border:2px solid var(--cc);opacity:0;pointer-events:none;animation:3.4s ease-out infinite ccPulse;animation-delay:calc(var(--i,0) * -.8s);border-radius:14px;position:absolute;inset:0}@keyframes ccPulse{0%{opacity:.5;transform:scale(1)}70%,to{opacity:0;transform:scale(1.55)}}.contact-left:not(.visible) .cc-icon:after{animation-play-state:paused}.contact-card:hover .cc-icon{transform:scale(1.12)rotate(-6deg)}.cf-field{position:relative}.cf-field label{transition:color .25s,transform .3s cubic-bezier(.2,.8,.2,1);display:block}.cf-field:focus-within label{color:var(--accent);transform:translate(4px)}.cf-field:after{content:"";pointer-events:none;background:linear-gradient(90deg, var(--accent), var(--accent2), var(--accent3));transform-origin:0;border-radius:2px;height:2px;transition:transform .5s cubic-bezier(.2,.8,.2,1);position:absolute;bottom:0;left:12px;right:12px;transform:scaleX(0)}.cf-field:focus-within:after{transform:scaleX(1)}.contact-right .input-field{transition:border-color .25s,box-shadow .3s,background-color .25s,transform .3s cubic-bezier(.2,.8,.2,1)}.contact-right .input-field:hover{border-color:color-mix(in srgb, var(--accent) 45%, var(--border))}.contact-right .input-field:focus{box-shadow:0 0 0 4px color-mix(in srgb, var(--accent) 14%, transparent), 0 12px 26px -16px color-mix(in srgb, var(--accent) 70%, transparent);transform:translateY(-1px)}.contact-right .input-field:not(:placeholder-shown):not(:focus){border-color:color-mix(in srgb, var(--accent) 38%, var(--border))}.contact-right .input-field::placeholder{transition:opacity .25s}.contact-right .input-field:focus::placeholder{opacity:.25}.cf-invalid label{color:#ef4444}.cf-invalid .input-field{animation:.45s cfShake;border-color:#ef4444!important}@keyframes cfShake{0%,to{transform:translate(0)}20%{transform:translate(-7px)}40%{transform:translate(6px)}60%{transform:translate(-4px)}80%{transform:translate(3px)}}.contact-send{transition:all .25s,background-color .4s;position:relative;overflow:hidden}.contact-send:before{content:"";pointer-events:none;background:linear-gradient(105deg,#0000 35%,#ffffff61 50%,#0000 65%);animation:4.2s ease-in-out 1.5s infinite cfSheen;position:absolute;inset:0;transform:translate(-130%)}@keyframes cfSheen{0%,55%{transform:translate(-130%)}to{transform:translate(130%)}}.contact-send:hover:before{animation-duration:1.6s}.contact-send svg{transition:transform .35s cubic-bezier(.34,1.56,.64,1)}.contact-send:hover svg{transform:translate(3px,-3px)rotate(8deg)}.contact-send:active{transform:scale(.97)!important}.contact-send.is-sending:before{animation-duration:1s;animation-delay:0s}.contact-send.is-sent{background:#16a34a;box-shadow:0 8px 30px #16a34a73}.cf-spinner{border:2.5px solid #ffffff59;border-top-color:#fff;border-radius:50%;width:16px;height:16px;animation:.7s linear infinite spin}@media (prefers-reduced-motion:reduce){.contact-left .contact-card,.contact-right .contact-form-card,.contact-right .cf-field,.contact-right .contact-send{opacity:1;animation:none;transform:none}.cc-icon:after,.contact-send:before{animation:none}}@keyframes eduPop{0%{opacity:0;transform:scale(.55)rotate(-14deg)}to{opacity:1;transform:none}}@keyframes eduSlide{0%{opacity:0;transform:translate(24px)}to{opacity:1;transform:none}}.edu-card-x{transition:transform .3s cubic-bezier(.4,0,.2,1),border-color .3s,box-shadow .3s}.edu-card-x>*{z-index:1;position:relative}.edu-card-x:before{content:"";pointer-events:none;opacity:0;background:radial-gradient(420px circle at var(--mx,50%) var(--my,0%), color-mix(in srgb, var(--accent) 13%, transparent), transparent 65%);transition:opacity .4s;position:absolute;inset:0}.edu-card-x:hover:before{opacity:1}.edu-card-x:after{content:"";pointer-events:none;opacity:0;background:linear-gradient(90deg, transparent, color-mix(in srgb, var(--accent) 12%, transparent), transparent);width:26%;position:absolute;top:0;bottom:0;left:0;transform:translate(-160%)skew(-20deg)}.edu-card-x:hover:after{animation:1.1s contactSheen}.edu-logo-wrap{flex-shrink:0;width:104px;height:104px;transition:transform .45s cubic-bezier(.34,1.56,.64,1);position:relative}.edu-card-x:hover .edu-logo-wrap{transform:scale(1.05)}.edu-logo img{transition:transform .7s cubic-bezier(.2,.8,.2,1)}.edu-card-x:hover .edu-logo img{transform:scale(1.12)}.edu-ring{pointer-events:none;background:conic-gradient(from var(--sa), transparent 0deg, transparent 240deg, var(--accent2) 315deg, var(--accent) 350deg, transparent 360deg);-webkit-mask-composite:xor;opacity:.8;border-radius:50%;padding:2px;animation:6s linear infinite serviceOrbit;position:absolute;inset:-7px;-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor,source-over;mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0)}.edu-item:not(.visible) .edu-ring{animation-play-state:paused}.edu-item:not(.visible) .edu-logo-wrap,.edu-item:not(.visible) .edu-text>*{opacity:0}.edu-item.visible .edu-logo-wrap{animation:.85s cubic-bezier(.34,1.56,.64,1) backwards eduPop;animation-delay:calc(var(--d,0) * 1ms + .15s)}.edu-item.visible .edu-text>*{animation:.65s cubic-bezier(.2,.8,.2,1) backwards eduSlide;animation-delay:calc(var(--d,0) * 1ms + .3s)}.edu-item.visible .edu-text>:nth-child(2){animation-delay:calc(var(--d,0) * 1ms + .4s)}.edu-item.visible .edu-text>:nth-child(3){animation-delay:calc(var(--d,0) * 1ms + .5s)}@media (prefers-reduced-motion:reduce){.edu-item .edu-logo-wrap,.edu-item .edu-text>*{opacity:1!important;animation:none!important}.edu-ring{animation:none}}@keyframes heroBtnSheen{0%,58%{transform:translate(-130%)}to{transform:translate(130%)}}@keyframes heroDlBob{0%,to{transform:translateY(-1.5px)}50%{transform:translateY(2.5px)}}.hero-cta-group .hero-btn-cv,.hero-cta-group .hero-btn-contact{isolation:isolate;position:relative;overflow:hidden}.hero-cta-group .hero-btn-cv>*,.hero-cta-group .hero-btn-contact>*{z-index:1;position:relative}.hero-cta-group .hero-btn-cv:before{content:"";z-index:0;pointer-events:none;background:linear-gradient(105deg,#0000 35%,#ffffff6b 50%,#0000 65%);animation:4.4s ease-in-out 2.2s infinite heroBtnSheen;position:absolute;inset:0;transform:translate(-130%)}.hero-cta-group .hero-btn-cv:hover:before{animation-duration:1.5s;animation-delay:0s}.hero-cta-group .hero-btn-cv svg{animation:2.2s ease-in-out infinite heroDlBob}.hero-cta-group .hero-btn-cv:hover svg{animation-duration:.8s}.hero-cta-group .hero-btn-cv:hover{transform:translateY(-3px)scale(1.02);box-shadow:0 14px 38px -8px #2563eba6}.hero-cta-group .hero-btn-cv:active,.hero-cta-group .hero-btn-contact:active{transform:scale(.96)}.hero-cta-group .hero-btn-contact:before{content:"";z-index:0;border-radius:inherit;pointer-events:none;background:conic-gradient(from var(--sa), transparent 0deg, transparent 290deg, var(--accent2) 335deg, transparent 360deg);-webkit-mask-composite:xor;padding:2px;animation:5s linear infinite serviceOrbit;position:absolute;inset:0;-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor,source-over;mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0)}.hero-cta-group .hero-btn-contact:hover:before{animation-duration:2s}.hero-cta-group .hero-btn-contact{background:transparent linear-gradient(var(--accent), var(--accent)) no-repeat left center / 0% 100%;transition:background-size .5s cubic-bezier(.2,.8,.2,1),color .3s,transform .25s,box-shadow .3s}.hero-cta-group .hero-btn-contact:hover{transform:translateY(-3px)scale(1.02);box-shadow:0 14px 34px -10px #2563eb8c;background:transparent linear-gradient(var(--accent), var(--accent)) no-repeat left center / 100% 100%!important;color:#fff!important}@media (prefers-reduced-motion:reduce){.hero-cta-group .hero-btn-cv:before,.hero-cta-group .hero-btn-contact:before,.hero-cta-group .hero-btn-cv svg{animation:none}}.skills-filter{justify-content:center;margin-bottom:34px;display:flex}.skills-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px;box-shadow:0 0 8px}.skills-live .skills-grid{position:relative}@keyframes skillIn{0%{opacity:0;transform:translateY(26px)scale(.86)}to{opacity:1;transform:none}}.skills-live .skill-tile{--rx:0deg;--ry:0deg;transform:perspective(720px) rotateX(var(--rx)) rotateY(var(--ry));transition:transform .25s ease-out,border-color .35s,box-shadow .4s;position:relative;overflow:hidden}.skills-live:not(.visible) .skill-tile{opacity:0}.skills-live.visible .skill-tile{animation:.7s cubic-bezier(.2,.9,.3,1.15) backwards skillIn;animation-delay:calc(var(--d,0) * 1ms)}.skills-live .skill-tile>*{z-index:1;position:relative}.skills-live .skill-tile:hover{transform:perspective(720px) rotateX(var(--rx)) rotateY(var(--ry)) translateY(-6px);border-color:color-mix(in srgb, var(--cat) 70%, var(--border));box-shadow:0 18px 32px -16px color-mix(in srgb, var(--cat) 75%, transparent), 0 0 0 1px color-mix(in srgb, var(--cat) 55%, transparent)}.skills-live .skill-tile:before{content:"";border-radius:inherit;pointer-events:none;opacity:0;background:radial-gradient(120px circle at var(--mx,50%) var(--my,30%), color-mix(in srgb, var(--cat) 28%, transparent), transparent 70%);transition:opacity .3s;position:absolute;inset:0}.skills-live .skill-tile:hover:before{opacity:1}.skills-live .skill-tile:after{content:"";background:linear-gradient(90deg, transparent, var(--cat), transparent);height:3px;transition:transform .5s cubic-bezier(.2,.8,.2,1);position:absolute;bottom:0;left:0;right:0;transform:scaleX(0)}.skills-live .skill-tile:hover:after{transform:scaleX(1)}.skill-cat{background:var(--cat);opacity:.55;width:6px;height:6px;box-shadow:0 0 8px var(--cat);border-radius:50%;transition:opacity .3s,transform .4s cubic-bezier(.34,1.56,.64,1);top:8px;right:8px;position:absolute!important}.skills-live .skill-tile:hover .skill-cat{opacity:1;transform:scale(1.6)}.skills-live .skill-icon{transition:transform .45s cubic-bezier(.34,1.56,.64,1),filter .3s}.skills-live .skill-tile:hover .skill-icon{filter:drop-shadow(0 8px 10px color-mix(in srgb, var(--cat) 55%, transparent));transform:translateZ(0)scale(1.2)rotate(-6deg)}.skills-live .skill-label{transition:color .25s,transform .35s cubic-bezier(.34,1.56,.64,1)}.skills-live .skill-tile:hover .skill-label{color:var(--cat);transform:translateY(1px)}@keyframes skillsSweep{0%{transform:translate(-130%)skew(-18deg)}55%,to{transform:translate(520%)skew(-18deg)}}.skills-sweep{z-index:2;pointer-events:none;border-radius:16px;position:absolute;inset:0;overflow:hidden}.skills-sweep:after{content:"";background:linear-gradient(90deg,#0000,#ffffff12,#0000);width:16%;animation:9s ease-in-out 1.5s infinite skillsSweep;position:absolute;top:-10%;bottom:-10%;left:0}:root:not(.dark) .skills-sweep:after{background:linear-gradient(90deg,#0000,#2563eb17,#0000)}.skills-live:not(.visible) .skills-sweep:after{animation-play-state:paused}.skills-spot{z-index:2;pointer-events:none;opacity:0;background:radial-gradient(circle, color-mix(in srgb, var(--accent) 16%, transparent), transparent 66%);will-change:transform;border-radius:50%;width:340px;height:340px;transition:opacity .35s;position:absolute;top:0;left:0}@media (width<=768px){.skills-filter{margin-bottom:22px}.skills-live .skill-tile{overflow:visible}.skill-cat{width:5px;height:5px;top:5px;right:5px}}@media (hover:none){.skills-live .skill-tile:hover{transform:none}.skills-spot{display:none}}@media (prefers-reduced-motion:reduce){.skills-live:not(.visible) .skill-tile{opacity:1}.skills-live.visible .skill-tile,.skills-sweep:after{animation:none}}@keyframes projIn{0%{opacity:0;transform:translateY(44px)scale(.94)}to{opacity:1;transform:none}}@keyframes projShine{0%{transform:translate(-160%)skew(-20deg)}to{transform:translate(380%)skew(-20deg)}}@keyframes projLivePing{0%{opacity:.55;transform:scale(1)}75%,to{opacity:0;transform:scale(1.35,1.7)}}.project-grid:not(.visible) .project-card{opacity:0;transform:translateY(44px)}.project-grid.visible .project-card{opacity:1;animation:.8s cubic-bezier(.2,.8,.2,1) backwards projIn;animation-delay:calc(var(--i,0) * 85ms);transform:none}.project-grid.visible .project-card:hover{transform:translateY(-8px)}.project-card{position:relative}.project-card>*{z-index:1;position:relative}.project-card:before{content:"";pointer-events:none;opacity:0;z-index:2;background:radial-gradient(340px circle at var(--mx,50%) var(--my,0%), color-mix(in srgb, var(--accent) 11%, transparent), transparent 65%);transition:opacity .4s;position:absolute;inset:0}.project-card:hover:before{opacity:1}.proj-media{position:relative}.proj-img{transition:transform 1.1s cubic-bezier(.2,.8,.2,1),filter .5s}.project-card:hover .proj-img{filter:saturate(1.08)contrast(1.03);transform:scale(1.09)}.proj-media:after{content:"";pointer-events:none;background:linear-gradient(90deg,#0000,#ffffff38,#0000);width:30%;position:absolute;top:0;bottom:0;left:0;transform:translate(-160%)skew(-20deg)}.project-card:hover .proj-media:after{animation:1s projShine}.project-card .tech-badge{transition:transform .25s cubic-bezier(.34,1.56,.64,1),background-color .25s,color .25s}.project-card .tech-badge:hover{background:var(--accent);color:#fff;transform:translateY(-2px)scale(1.06)}.proj-actions .btn-primary,.proj-actions .btn-outline{transition:transform .25s cubic-bezier(.34,1.56,.64,1),box-shadow .3s,background-color .25s,color .25s}.proj-actions .btn-primary:hover,.proj-actions .btn-outline:hover{transform:translateY(-3px)scale(1.04)}.proj-actions .btn-primary:active,.proj-actions .btn-outline:active{transform:scale(.95)}.proj-actions svg{transition:transform .35s cubic-bezier(.34,1.56,.64,1)}.proj-details:hover svg{transform:translate(2px,-2px)scale(1.1)}.proj-gh:hover svg{transform:rotate(-12deg)scale(1.12)}.proj-live:hover svg{transform:scale(1.25)}.proj-live{position:relative}.proj-live:before{content:"";border-radius:inherit;z-index:-1;pointer-events:none;background:#10b981;animation:2.6s ease-out infinite projLivePing;position:absolute;inset:0}.project-grid:not(.visible) .proj-live:before{animation-play-state:paused}.filter-tab{transition:all .25s,transform .25s cubic-bezier(.34,1.56,.64,1);position:relative;overflow:hidden}.filter-tab:hover{transform:translateY(-2px)}.filter-tab:active{transform:scale(.95)}.filter-tab.active{box-shadow:0 8px 22px -8px color-mix(in srgb, var(--accent) 75%, transparent)}.filter-tab.active:after{content:"";pointer-events:none;background:linear-gradient(105deg,#0000 35%,#ffffff59 50%,#0000 65%);animation:3.8s ease-in-out infinite heroBtnSheen;position:absolute;inset:0;transform:translate(-130%)}@keyframes pmFade{0%{opacity:0}to{opacity:1}}@keyframes pmFadeOut{to{opacity:0}}@keyframes pmIn{0%{opacity:0;transform:translateY(54px)scale(.93)}to{opacity:1;transform:none}}@keyframes pmOut{to{opacity:0;transform:translateY(30px)scale(.96)}}@keyframes pmRise{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}@keyframes pmShimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes pmSheen{0%{opacity:1;transform:translate(-140%)skew(-18deg)}to{opacity:1;transform:translate(520%)skew(-18deg)}}.pm-panel{animation:.6s cubic-bezier(.2,.9,.3,1.05) both pmIn;position:relative}.pm-progress{z-index:6;background:0 0;flex-shrink:0;height:3px;margin-bottom:-3px;position:sticky;top:0}.pm-progress span{transform-origin:0;background:linear-gradient(90deg, var(--accent), var(--accent2), var(--accent3));height:100%;box-shadow:0 0 12px color-mix(in srgb, var(--accent2) 70%, transparent);transition:transform .1s linear;display:block;transform:scaleX(0)}.pm-head>:nth-child(n+2){animation:.65s cubic-bezier(.2,.8,.2,1) backwards pmRise}.pm-close{transition:transform .4s cubic-bezier(.34,1.56,.64,1),background-color .25s,color .25s}.pm-close:hover{transform:rotate(90deg)scale(1.1);color:#fff!important;background:#ef4444!important}.pm-head .btn-primary{transition:transform .25s cubic-bezier(.34,1.56,.64,1),box-shadow .3s}.pm-head .btn-primary:hover{transform:translateY(-3px)scale(1.04)}.pm-fig{opacity:0;transition:opacity .8s,transform 1s cubic-bezier(.2,.8,.2,1),border-color .4s,box-shadow .5s;transform:translateY(54px)scale(.95)}.pm-fig.in{opacity:1;transform:none}.pm-media{min-height:220px}.pm-fig.loaded .pm-media{min-height:0}.pm-skel{background:linear-gradient(100deg, transparent 25%, #ffffff14 50%, transparent 75%), var(--surface2);background-size:200% 100%;transition:opacity .5s;animation:1.5s linear infinite pmShimmer;position:absolute;inset:0}.pm-fig.loaded .pm-skel{opacity:0;animation:none}.pm-media img{opacity:0;filter:blur(14px);clip-path:inset(0 0 100%);transition:opacity .9s,filter 1.1s,transform 1.5s cubic-bezier(.2,.8,.2,1),clip-path 1.1s cubic-bezier(.2,.8,.2,1);transform:scale(1.07)}.pm-fig.loaded.in .pm-media img{opacity:1;filter:none;clip-path:inset(0);transform:none}.pm-fig.loaded.in:hover .pm-media img{transform:scale(1.03)}.pm-fig.in:hover{border-color:color-mix(in srgb, var(--accent) 50%, var(--border))!important;box-shadow:0 26px 54px -22px color-mix(in srgb, var(--accent) 55%, transparent)!important}.pm-media:after{content:"";pointer-events:none;opacity:0;background:linear-gradient(90deg,#0000,#ffffff47,#0000);width:18%;position:absolute;top:0;bottom:0;left:0}.pm-fig.loaded.in .pm-media:after{animation:1.3s .5s both pmSheen}.pm-cap{opacity:0;transition:opacity .7s .45s,transform .8s cubic-bezier(.2,.8,.2,1) .45s;transform:translateY(14px)}.pm-fig.in .pm-cap{opacity:1;transform:none}.pm-badge{transition:transform .3s cubic-bezier(.34,1.56,.64,1),background-color .3s}.pm-fig:hover .pm-badge{transform:scale(1.08);background:#38bdf838!important}@media (prefers-reduced-motion:reduce){.project-grid .project-card{opacity:1!important;animation:none!important;transform:none!important}.pm-fig,.pm-cap{opacity:1!important;transition:none!important;transform:none!important}.pm-media img{opacity:1!important;filter:none!important;clip-path:none!important;transition:none!important;transform:none!important}.modal-bg,.pm-panel,.pm-head>*,.proj-live:before,.filter-tab.active:after,.pm-skel{animation:none!important}}.pf-bar{flex-wrap:wrap;justify-content:center;gap:10px;display:flex;position:relative}.pf-bar .filter-tab{z-index:1;align-items:center;gap:8px;display:inline-flex;position:relative}.pf-bar .filter-tab.active{box-shadow:none;color:#fff;background:0 0;border-color:#0000}.pf-bar .filter-tab.active:after{display:none}.pf-pill{z-index:0;background:linear-gradient(120deg, var(--accent), var(--accent2));box-shadow:0 10px 26px -10px color-mix(in srgb, var(--accent) 80%, transparent);pointer-events:none;border-radius:50px;transition:transform .5s cubic-bezier(.34,1.3,.64,1),width .5s cubic-bezier(.34,1.3,.64,1),height .3s;position:absolute;top:0;left:0}.pf-count{text-align:center;background:color-mix(in srgb, var(--muted) 18%, transparent);border-radius:20px;min-width:20px;padding:1px 6px;font-size:.68rem;font-weight:700;transition:background-color .3s,color .3s}.pf-bar .filter-tab.active .pf-count{color:#fff;background:#ffffff40}.project-card{--rx:0deg;--ry:0deg;transform-style:preserve-3d}.project-grid.visible .project-card{transition:transform .25s ease-out,border-color .4s,box-shadow .5s}.project-grid.visible .project-card:hover{transform:perspective(1100px) rotateX(var(--rx)) rotateY(var(--ry)) translateY(-8px);border-color:color-mix(in srgb, var(--accent) 45%, var(--border));box-shadow:0 34px 60px -30px color-mix(in srgb, var(--accent) 65%, transparent)}.project-card:after{content:"";z-index:3;border-radius:inherit;pointer-events:none;background:conic-gradient(from var(--sa), transparent 0deg, transparent 270deg, var(--accent2) 320deg, var(--accent) 345deg, transparent 360deg);-webkit-mask-composite:xor;opacity:0;padding:1.5px;transition:opacity .4s;animation:4s linear infinite serviceOrbit;position:absolute;inset:0;-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor,source-over;mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0)}.project-card:hover:after{opacity:1}.project-card:before{background:radial-gradient(420px circle at var(--mx,50%) var(--my,0%), color-mix(in srgb, var(--accent2) 16%, transparent), transparent 65%)}@keyframes projBadgeIn{0%{opacity:0;transform:translateY(10px)scale(.8)}to{opacity:1;transform:none}}.project-grid.visible .project-card .tech-badge{animation:.5s cubic-bezier(.34,1.56,.64,1) backwards projBadgeIn;animation-delay:calc(var(--i,0) * 85ms + .38s + var(--b,0) * 55ms)}.proj-title span{background:linear-gradient(90deg, var(--accent), var(--accent2)) no-repeat 0 100% / 0% 2px;padding-bottom:3px;transition:background-size .55s cubic-bezier(.2,.8,.2,1)}.project-card:hover .proj-title span{background-size:100% 2px}.proj-cat{z-index:2;letter-spacing:.06em;text-transform:uppercase;color:#fff;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);opacity:.92;background:#0f172a9e;border:1px solid #ffffff2e;border-radius:50px;padding:5px 12px;font-family:Syne,sans-serif;font-size:.68rem;font-weight:700;transition:transform .4s cubic-bezier(.34,1.56,.64,1),background-color .3s;position:absolute;top:14px;left:14px;transform:translateY(-4px)}.project-card:hover .proj-cat{background:color-mix(in srgb, var(--accent) 80%, #0f172a);transform:none}.proj-overlay{z-index:1;pointer-events:none;opacity:0;background:linear-gradient(#0000,#0f172a1a 45%,#0f172ac7);justify-content:center;align-items:flex-end;padding-bottom:18px;transition:opacity .4s;display:flex;position:absolute;inset:0}.proj-peek{color:#0f172a;background:#fffffff0;border-radius:50px;align-items:center;gap:8px;padding:9px 18px;font-family:Syne,sans-serif;font-size:.8rem;font-weight:700;transition:transform .5s cubic-bezier(.34,1.56,.64,1);display:inline-flex;transform:translateY(18px)scale(.9);box-shadow:0 10px 26px -8px #00000080}.project-card:hover .proj-overlay{opacity:1}.project-card:hover .proj-peek{transform:none}.rip{border-radius:inherit;pointer-events:none;z-index:0;position:absolute;inset:0;overflow:hidden}.rip-wave{background:#ffffff73;border-radius:50%;animation:.65s ease-out forwards ripWave;position:absolute;transform:scale(0)}.btn-outline .rip-wave{background:color-mix(in srgb, var(--accent) 35%, transparent)}@keyframes ripWave{to{opacity:0;transform:scale(1)}}@keyframes pmReveal{0%{clip-path:circle(0px at var(--ox,50%) var(--oy,50%))}to{clip-path:circle(150vmax at var(--ox,50%) var(--oy,50%))}}@keyframes pmUnreveal{0%{clip-path:circle(150vmax at var(--ox,50%) var(--oy,50%))}to{clip-path:circle(0px at var(--ox,50%) var(--oy,50%))}}.modal-bg{animation:.8s cubic-bezier(.22,.9,.3,1) both pmReveal}.modal-bg.closing{animation:.46s cubic-bezier(.6,0,.4,1) forwards pmUnreveal}.pm-panel{animation:.65s cubic-bezier(.2,.9,.3,1.05) .12s both pmIn}.pm-panel.closing{animation:.3s forwards pmOut}.pm-toolbar{z-index:8;flex-shrink:0;height:0;position:sticky;top:0}.pm-toolbar-in{pointer-events:none;justify-content:space-between;align-items:center;display:flex;position:absolute;top:14px;left:16px;right:16px}.pm-toolbar-in>*{pointer-events:auto}.pm-toolbar-btns{gap:8px;display:flex}.pm-counter{letter-spacing:.06em;color:#fff;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#0f172a99;border:1px solid #ffffff29;border-radius:50px;padding:6px 14px;font-family:Syne,sans-serif;font-size:.8rem;font-weight:700}.pm-counter i{opacity:.55;font-style:normal}.pm-iconbtn{cursor:pointer;color:#fff;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#0f172a99;border:1px solid #ffffff29;border-radius:50%;justify-content:center;align-items:center;width:38px;height:38px;transition:transform .35s cubic-bezier(.34,1.56,.64,1),background-color .25s;display:inline-flex}.pm-iconbtn:hover{background:var(--accent);transform:scale(1.12)}.pm-iconbtn:active{transform:scale(.92)}.pm-iconbtn.pm-close:hover{transform:rotate(90deg)scale(1.12);color:#fff!important;background:#ef4444!important}@keyframes pmSlideNext{0%{opacity:0;transform:translate(60px)}to{opacity:1;transform:none}}@keyframes pmSlidePrev{0%{opacity:0;transform:translate(-60px)}to{opacity:1;transform:none}}.pm-dir-next{animation:.5s cubic-bezier(.2,.8,.2,1) both pmSlideNext}.pm-dir-prev{animation:.5s cubic-bezier(.2,.8,.2,1) both pmSlidePrev}.pm-banner{flex-shrink:0;height:230px;position:relative;overflow:hidden}.pm-banner-img{object-fit:cover;transform-origin:30% 40%;width:100%;height:100%;animation:18s ease-in-out infinite alternate pmKen;display:block}.pm-banner-icon{color:#1e293b;justify-content:center;align-items:center;height:100%;display:flex}.pm-banner-fade{background:linear-gradient(to bottom, #0f172a59 0%, transparent 35%, var(--surface) 100%);pointer-events:none;position:absolute;inset:0}.pm-banner-cat{letter-spacing:.08em;text-transform:uppercase;color:#fff;background:linear-gradient(120deg, var(--accent), var(--accent2));box-shadow:0 8px 20px -8px var(--accent);border-radius:50px;padding:5px 14px;font-family:Syne,sans-serif;font-size:.7rem;font-weight:700;animation:.6s cubic-bezier(.2,.8,.2,1) .35s backwards pmRise;position:absolute;bottom:18px;left:28px}@keyframes pmKen{0%{transform:scale(1.04)}to{transform:scale(1.16)translate(-1.5%,-1%)}}.pm-head{padding-top:8px}.pm-head>*{animation:.65s cubic-bezier(.2,.8,.2,1) backwards pmRise}.pm-head>:first-child{animation-delay:.2s}.pm-head>:nth-child(2){animation-delay:.28s}.pm-head>:nth-child(3){animation-delay:.36s}.pm-head>:nth-child(4){animation-delay:.44s}.pm-head>:nth-child(5){animation-delay:.52s}.pm-head>:nth-child(6){animation-delay:.6s}.pm-head>:nth-child(7){animation-delay:.68s}.pm-meta{flex-wrap:wrap;gap:8px;margin-bottom:16px;display:flex}.pm-meta>span{color:var(--muted);background:var(--surface2);border:1px solid var(--border);border-radius:50px;align-items:center;gap:6px;padding:4px 12px;font-size:.78rem;display:inline-flex}.pm-meta b{color:var(--text)}.pm-meta-live{font-weight:700;color:#10b981!important;background:#10b9811a!important;border-color:#10b98166!important}.pm-meta-live i{background:#10b981;border-radius:50%;width:7px;height:7px;animation:1.8s ease-out infinite projLivePing}.pm-zoom{z-index:2;color:#fff;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);opacity:0;background:#0f172aa6;border-radius:50%;justify-content:center;align-items:center;width:34px;height:34px;transition:opacity .3s,transform .45s cubic-bezier(.34,1.56,.64,1);display:flex;position:absolute;top:12px;right:12px;transform:scale(.6)rotate(-20deg)}.pm-media:hover .pm-zoom,.pm-media:focus-visible .pm-zoom{opacity:1;transform:none}@keyframes plFade{0%{opacity:0}to{opacity:1}}@keyframes plZoom{0%{opacity:0;filter:blur(10px);transform:scale(.82)translateY(24px)}to{opacity:1;filter:none;transform:none}}.pl-bg{z-index:600;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);cursor:zoom-out;background:#020617eb;justify-content:center;align-items:center;padding:56px 72px;animation:.3s both plFade;display:flex;position:fixed;inset:0}.pl-fig{cursor:default;flex-direction:column;align-items:center;gap:14px;max-width:100%;max-height:100%;margin:0;animation:.5s cubic-bezier(.2,.9,.3,1.05) both plZoom;display:flex}.pl-fig img{object-fit:contain;background:#fff;border-radius:12px;max-width:100%;max-height:calc(100vh - 170px);box-shadow:0 30px 80px -20px #000c}.pl-fig figcaption{color:#e2e8f0;text-align:center;align-items:center;gap:12px;font-size:.95rem;font-weight:500;display:flex}.pm-badge-lite{letter-spacing:.04em;color:#38bdf8;background:#38bdf81f;border:1px solid #38bdf840;border-radius:6px;padding:3px 10px;font-size:.74rem;font-weight:700}.pl-close{position:absolute;top:18px;right:18px}.pl-nav{margin-top:-19px;position:absolute;top:50%}.pl-prev{left:18px}.pl-next{right:18px}@media (width<=768px){.pm-banner{height:170px}.pm-banner-cat{left:20px}.pm-head{padding-left:20px!important;padding-right:20px!important}.pl-bg{padding:64px 12px 24px}.pl-nav{margin-top:0;top:auto;bottom:14px}.pm-counter{padding:5px 11px;font-size:.72rem}}@media (hover:none){.project-grid.visible .project-card:hover{transform:none}.proj-overlay{display:none}}@media (prefers-reduced-motion:reduce){.project-card:after,.pm-banner-img,.pm-meta-live i,.project-grid .project-card .tech-badge{animation:none!important}.pf-pill{transition:none}.modal-bg,.modal-bg.closing{animation:.2s both pmFade!important}.pm-dir-next,.pm-dir-prev,.pl-bg,.pl-fig,.rip-wave{animation:none!important}}.pm-cap{border-top:1px solid var(--border);background:linear-gradient(90deg, color-mix(in srgb, var(--accent) 9%, var(--surface)), var(--surface) 75%);flex-wrap:wrap;align-items:center;gap:14px;padding:16px 22px 16px 28px;display:flex;position:relative;overflow:hidden}.pm-cap:before{content:"";background:linear-gradient(to bottom, var(--accent), var(--accent2));transform-origin:top;width:4px;transition:transform .7s cubic-bezier(.2,.8,.2,1) .5s,width .3s;position:absolute;top:0;bottom:0;left:0;transform:scaleY(0)}.pm-fig.in .pm-cap:before{transform:scaleY(1)}.pm-fig:hover .pm-cap:before{width:7px}.pm-cap-badge{letter-spacing:.04em;color:var(--accent);background:color-mix(in srgb, var(--accent) 12%, transparent);border:1px solid color-mix(in srgb, var(--accent) 32%, transparent);border-radius:7px;flex-shrink:0;align-items:center;gap:6px;padding:4px 11px;font-size:.74rem;font-weight:700;transition:transform .35s cubic-bezier(.34,1.56,.64,1),background-color .3s;display:inline-flex}:root.dark .pm-cap-badge{color:#38bdf8;background:#38bdf81f;border-color:#38bdf84d}.pm-fig:hover .pm-cap-badge{transform:scale(1.08)rotate(-2deg)}.pm-cap-text{letter-spacing:.01em;color:var(--text);font-size:.98rem;font-weight:600;line-height:1.5}@keyframes pmCapText{0%{clip-path:inset(0 100% 0 0);opacity:0;transform:translate(-10px)}to{clip-path:inset(0 -5% 0 0);opacity:1;transform:none}}@keyframes pmCapBadge{0%{opacity:0;transform:scale(.5)rotate(-12deg)}to{opacity:1;transform:none}}.pm-fig:not(.in) .pm-cap-text,.pm-fig:not(.in) .pm-cap-badge{opacity:0}.pm-fig.in .pm-cap-badge{animation:.6s cubic-bezier(.34,1.56,.64,1) .55s backwards pmCapBadge}.pm-fig.in .pm-cap-text{animation:.8s cubic-bezier(.2,.8,.2,1) .7s backwards pmCapText}.cert-grid{perspective:1200px;grid-template-columns:repeat(auto-fill,minmax(min(100%,340px),1fr));gap:28px;display:grid}@keyframes certIn{0%{opacity:0;filter:blur(8px);translate:0 48px;scale:.94}to{opacity:1;filter:blur();translate:0;scale:1}}@keyframes certIconPop{0%{opacity:0;transform:scale(.3)rotate(-25deg)}to{opacity:1;transform:none}}@keyframes certFloat{0%,to{translate:0}50%{translate:0 -4px}}@keyframes certPulse{0%{opacity:.5;transform:scale(1)}70%,to{opacity:0;transform:scale(1.5)}}.cert-grid:not(.visible) .cert-card{opacity:0}.cert-grid.visible .cert-card{animation:.9s cubic-bezier(.2,.8,.2,1) backwards certIn;animation-delay:calc(var(--i,0) * .11s)}.cert-card{--rx:0deg;--ry:0deg;border:1px solid var(--border);background:linear-gradient(160deg, color-mix(in srgb, var(--accent) 6%, var(--surface)) 0%, var(--surface) 60%);color:inherit;transform:rotateX(var(--rx)) rotateY(var(--ry));transform-style:preserve-3d;border-radius:22px;flex-direction:column;padding:32px 30px 28px;text-decoration:none;transition:transform .3s ease-out,border-color .4s,box-shadow .5s;display:flex;position:relative;overflow:hidden;box-shadow:0 2px 20px #0f172a0f}.cert-card--link{cursor:pointer}.cert-card>*{z-index:1;position:relative}.cert-card:before{content:"";z-index:0;pointer-events:none;opacity:0;background:radial-gradient(360px circle at var(--mx,50%) var(--my,0%), color-mix(in srgb, var(--accent2) 18%, transparent), transparent 65%);transition:opacity .4s;position:absolute;inset:0}.cert-card:after{content:"";z-index:2;pointer-events:none;opacity:0;background:linear-gradient(90deg,#0000,#ffffff47,#0000);width:30%;position:absolute;top:0;bottom:0;left:0;transform:translate(-160%)skew(-20deg)}:root.dark .cert-card:after{background:linear-gradient(90deg,#0000,#ffffff17,#0000)}.cert-card:hover{border-color:color-mix(in srgb, var(--accent) 50%, var(--border));box-shadow:0 30px 54px -28px color-mix(in srgb, var(--accent) 70%, transparent), 0 2px 20px #0f172a0f}.cert-card:hover:before{opacity:1}.cert-card:hover:after{opacity:1;animation:1.1s projShine}.cert-card>.cert-ring{z-index:3;border-radius:inherit;pointer-events:none;background:conic-gradient(from var(--sa), transparent 0deg, transparent 275deg, var(--accent2) 325deg, var(--accent) 348deg, transparent 360deg);-webkit-mask-composite:xor;opacity:0;padding:1.5px;transition:opacity .4s;animation:4.5s linear infinite serviceOrbit;position:absolute;inset:0;-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor,source-over;mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0)}.cert-card:hover>.cert-ring{opacity:1}.cert-card>.cert-seal{width:38px;height:38px;color:var(--accent);background:color-mix(in srgb, var(--accent) 10%, transparent);border:1px solid color-mix(in srgb, var(--accent) 25%, transparent);opacity:.8;border-radius:50%;justify-content:center;align-items:center;transition:transform .8s cubic-bezier(.34,1.56,.64,1),background-color .3s,color .3s,opacity .3s;display:flex;position:absolute;top:18px;right:18px}.cert-card:hover>.cert-seal{background:var(--accent);color:#fff;opacity:1;transform:rotate(360deg)scale(1.12)}.cert-icon{border:1px solid color-mix(in srgb, var(--border) 80%, transparent);width:64px;height:64px;animation:5s ease-in-out infinite certFloat;animation-delay:calc(var(--i,0) * -.8s);background:#fff;border-radius:18px;justify-content:center;align-items:center;margin-bottom:22px;transition:transform .5s cubic-bezier(.34,1.56,.64,1),border-radius .5s;display:flex;position:relative;box-shadow:0 10px 24px -14px #0f172a73}.cert-icon img{z-index:1;object-fit:contain;width:36px;height:36px;transition:transform .5s cubic-bezier(.34,1.56,.64,1);position:relative}.cert-grid.visible .cert-icon img{animation:.7s cubic-bezier(.34,1.56,.64,1) backwards certIconPop;animation-delay:calc(var(--i,0) * .11s + .35s)}.cert-icon-pulse{border-radius:inherit;border:1.5px solid var(--accent);opacity:0;animation:3.6s ease-out infinite certPulse;animation-delay:calc(var(--i,0) * -.6s);position:absolute;inset:0}.cert-card:hover .cert-icon{border-radius:50%;transform:translateY(-3px)scale(1.08)}.cert-card:hover .cert-icon img{transform:rotate(-8deg)scale(1.1)}.cert-grid:not(.visible) .cert-icon,.cert-grid:not(.visible) .cert-icon-pulse,.cert-grid:not(.visible) .cert-card>.cert-ring{animation-play-state:paused}.cert-title{letter-spacing:.01em;color:var(--text);margin:0 0 14px;font-family:Syne,sans-serif;font-size:1.15rem;font-weight:700;line-height:1.35;transform:translateZ(18px)}.cert-meta{color:var(--muted);flex-wrap:wrap;align-items:center;gap:8px;margin-top:auto;font-size:.88rem;font-weight:500;display:flex}.cert-dot{background:var(--accent);opacity:.7;border-radius:50%;width:4px;height:4px}.cert-date{color:var(--text);opacity:.75;font-weight:700}.cert-link{opacity:0;letter-spacing:.02em;max-height:0;color:var(--accent);align-self:flex-start;align-items:center;gap:6px;margin-top:0;font-size:.84rem;font-weight:700;transition:max-height .45s,margin-top .45s,opacity .4s,transform .45s cubic-bezier(.2,.8,.2,1);display:inline-flex;overflow:hidden;transform:translateY(8px)}.cert-link svg{transition:transform .3s cubic-bezier(.34,1.56,.64,1)}.cert-card:hover .cert-link,.cert-card:focus-visible .cert-link{opacity:1;max-height:28px;margin-top:14px;transform:none}.cert-card:hover .cert-link svg{transform:translate(3px,-3px)}.cert-bar{background:linear-gradient(90deg, var(--accent), var(--accent2));transform-origin:0;opacity:.6;width:100%;height:3px;transition:transform .6s cubic-bezier(.2,.8,.2,1),opacity .4s;bottom:0;left:0;transform:scaleX(.12);z-index:3!important;position:absolute!important}.cert-card:hover .cert-bar{opacity:1;transform:scaleX(1)}@media (width<=768px){.cert-card{padding:26px 22px 24px}}@media (hover:none){.cert-card{transform:none}.cert-link{opacity:1;max-height:28px;margin-top:14px;transform:none}}@media (prefers-reduced-motion:reduce){.cert-grid:not(.visible) .cert-card{opacity:1}.cert-grid.visible .cert-card,.cert-grid.visible .cert-icon img{animation:none}.cert-card{transform:none}.cert-icon,.cert-icon-pulse,.cert-card>.cert-ring{animation:none}.pm-fig .pm-cap-text,.pm-fig .pm-cap-badge{opacity:1!important;animation:none!important}}.edu-list{padding-left:64px;position:relative}.edu-item{position:relative}@keyframes eduRail{0%,to{transform:translate(-50%,-50%)scale(1)}50%{transform:translate(-50%,-50%)scale(1.5)}}.edu-rail{left:6px;top:var(--rail-top,40px);background:color-mix(in srgb, var(--border) 85%, transparent);pointer-events:none;border-radius:2px;width:2px;position:absolute;bottom:0}.edu-rail:after{content:"";width:100%;height:var(--fill,0px);background:linear-gradient(to bottom, var(--accent), var(--accent2));box-shadow:0 0 14px color-mix(in srgb, var(--accent) 65%, transparent);border-radius:2px;transition:height .25s ease-out;position:absolute;top:0;left:0}.edu-rail:before{content:"";left:50%;top:var(--fill,0px);background:var(--accent2);width:10px;height:10px;box-shadow:0 0 0 4px color-mix(in srgb, var(--accent2) 25%, transparent), 0 0 18px var(--accent2);z-index:2;border-radius:50%;transition:top .25s ease-out;animation:1.8s ease-in-out infinite eduRail;position:absolute;transform:translate(-50%,-50%)}.edu-dot{background:var(--surface2);border:3px solid var(--bg);width:14px;height:14px;box-shadow:0 0 0 3px color-mix(in srgb, var(--border) 85%, transparent);border-radius:50%;margin-top:-7px;transition:background-color .5s,box-shadow .5s,scale .6s cubic-bezier(.34,1.56,.64,1);position:absolute;top:50%;left:-64px}.edu-item:not(.visible) .edu-dot{scale:0}.edu-item.reached .edu-dot{background:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 28%, transparent), 0 0 18px color-mix(in srgb, var(--accent) 70%, transparent)}.edu-dot:after{content:"";border:2px solid var(--accent);opacity:0;border-radius:50%;animation:3.2s ease-out infinite expRing;position:absolute;inset:-3px}.edu-item:not(.reached) .edu-dot:after{animation-play-state:paused}.edu-connector{background:linear-gradient(90deg, var(--accent), color-mix(in srgb, var(--accent2) 30%, transparent));transform-origin:0;border-radius:2px;width:50px;height:2px;margin-top:-1px;transition:transform .7s cubic-bezier(.2,.8,.2,1) .3s;position:absolute;top:50%;left:-50px;transform:scaleX(0)}.edu-item.visible .edu-connector{transform:scaleX(1)}@keyframes eduCardIn{0%{opacity:0;filter:blur(8px);transform:perspective(900px)rotateX(8deg)scale(.96)}to{opacity:1;filter:blur();transform:none}}.edu-item.visible .edu-card-x{animation:.95s cubic-bezier(.2,.8,.2,1) backwards eduCardIn;animation-delay:calc(var(--d,0) * 1ms + 80ms)}.edu-card-x{--rx:0deg;--ry:0deg;transition:transform .25s ease-out,border-color .4s,box-shadow .5s}.edu-item.visible .edu-card-x:hover{transform:perspective(1100px) rotateX(var(--rx)) rotateY(var(--ry)) translateY(-5px);border-color:color-mix(in srgb, var(--accent) 45%, var(--border))}.edu-card-x>.edu-orbit{border-radius:inherit;pointer-events:none;background:conic-gradient(from var(--sa), transparent 0deg, transparent 280deg, var(--accent2) 330deg, var(--accent) 350deg, transparent 360deg);-webkit-mask-composite:xor;opacity:0;padding:1.5px;transition:opacity .4s;animation:5s linear infinite serviceOrbit;inset:0;-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor,source-over;mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0);z-index:3!important;position:absolute!important}.edu-card-x:hover>.edu-orbit{opacity:1}@keyframes eduYear{0%{opacity:0;transform:translate(40px)}to{opacity:1;transform:none}}.edu-card-x>.edu-year{color:#0000;-webkit-text-stroke:1px color-mix(in srgb, var(--accent) 26%, transparent);pointer-events:none;-webkit-user-select:none;user-select:none;font-family:Syne,sans-serif;font-size:3.4rem;font-weight:800;line-height:1;transition:-webkit-text-stroke-color .4s,transform .6s cubic-bezier(.2,.8,.2,1);top:50%;right:36px;translate:0 -50%;z-index:0!important;position:absolute!important}.edu-item.visible .edu-year{animation:.9s cubic-bezier(.2,.8,.2,1) .5s backwards eduYear}.edu-item:not(.visible) .edu-year{opacity:0}.edu-card-x:hover>.edu-year{-webkit-text-stroke-color:color-mix(in srgb, var(--accent) 80%, transparent);transform:translate(-8px)scale(1.04)}@keyframes eduFloat{0%,to{translate:0}50%{translate:0 -4px}}@keyframes eduPulse{0%{opacity:.45;transform:scale(1)}70%,to{opacity:0;transform:scale(1.35)}}.edu-logo{animation:5s ease-in-out infinite eduFloat}.edu-pulse{border:2px solid var(--accent);opacity:0;pointer-events:none;border-radius:50%;animation:3.4s ease-out infinite eduPulse;position:absolute;inset:0}.edu-item:not(.visible) .edu-logo,.edu-item:not(.visible) .edu-pulse{animation-play-state:paused}.edu-grade{isolation:isolate;cursor:default;background:color-mix(in srgb, var(--gc) 7%, var(--surface));border:1.5px solid color-mix(in srgb, var(--gc) 75%, transparent);box-shadow:0 0 18px var(--gb), 0 4px 12px #0000001a;border-radius:9999px;align-items:center;gap:12px;padding:6px 18px 6px 7px;transition:transform .35s cubic-bezier(.34,1.56,.64,1),box-shadow .35s;display:inline-flex;position:relative;overflow:hidden}.edu-grade:hover,.edu-grade.is-hover{box-shadow:0 0 28px var(--gb), 0 8px 20px #0000002e;transform:translateY(-2px)scale(1.03)}@keyframes eduDialPulse{0%,to{opacity:.55;transform:scale(.92)}50%{opacity:1;transform:scale(1.08)}}.edu-dial{flex-shrink:0;place-items:center;width:52px;height:52px;display:grid;position:relative}.edu-dial:before{content:"";background:radial-gradient(circle, color-mix(in srgb, var(--gc) 30%, transparent), transparent 68%);z-index:-1;border-radius:50%;animation:3.2s ease-in-out infinite eduDialPulse;position:absolute;inset:-5px}.edu-dial-svg{width:52px;height:52px;filter:drop-shadow(0 0 4px var(--gb));display:block;overflow:visible;transform:rotate(-90deg)}.edu-dial-cap{filter:drop-shadow(0 0 5px var(--gc)) drop-shadow(0 0 2px #fff)}.edu-dial-val{letter-spacing:-.02em;color:var(--text);font-variant-numeric:tabular-nums;font-family:Plus Jakarta Sans,DM Sans,-apple-system,Segoe UI,sans-serif;font-size:.98rem;font-weight:800;line-height:1;transition:transform .3s;position:absolute}.edu-grade:hover .edu-dial-val{transform:scale(1.08)}.edu-grade-text{flex-direction:column;line-height:1.15;display:flex}.edu-grade-label{letter-spacing:.05em;color:var(--gc);font-size:.9rem;font-weight:800}.edu-grade-sub{color:var(--text);opacity:.88;white-space:nowrap;align-items:center;gap:7px;margin-top:3px;font-size:.74rem;font-weight:500;display:flex}.edu-grade-sub b{color:var(--gc);background:color-mix(in srgb, var(--gc) 16%, transparent);border-radius:20px;padding:1px 7px;font-size:.68rem;font-weight:700}.edu-item:not(.visible) .edu-dial:before{animation-play-state:paused}.edu-grade:after{content:"";pointer-events:none;background:linear-gradient(105deg,#0000 38%,#ffffff38 50%,#0000 62%);animation:5s ease-in-out infinite heroBtnSheen;position:absolute;inset:0;transform:translate(-130%)}.edu-item:not(.visible) .edu-grade:after{animation-play-state:paused}@media (width<=768px){.edu-list{padding-left:32px}.edu-rail{left:4px}.edu-dot{width:12px;height:12px;margin-top:-6px;left:-32px}.edu-connector{width:20px;left:-20px}.edu-card-x>.edu-year{font-size:2.2rem;top:12px;right:14px;translate:0}.edu-meta,.edu-text>div:nth-child(2){justify-content:center!important}}@media (width<=520px){.edu-card-x>.edu-year{display:none}}@media (hover:none){.edu-item.visible .edu-card-x:hover{transform:none}}@media (prefers-reduced-motion:reduce){.edu-item .edu-year,.edu-item .edu-card-x{opacity:1!important;animation:none!important}.edu-rail:before,.edu-dot:after,.edu-logo,.edu-pulse,.edu-grade:after,.edu-dial:before,.edu-card-x>.edu-orbit{animation:none}.edu-connector{transition:none;transform:none}.edu-item .edu-dot{transition:none;scale:1!important}}.ct-section{position:relative;overflow:clip}.ct-section .svc-wrap{z-index:1}@keyframes ctGrad{to{background-position:200% 0}}.ct-title{background:linear-gradient(100deg, var(--text) 0%, var(--text) 35%, var(--accent2) 50%, var(--accent) 60%, var(--text) 75%, var(--text) 100%);color:#0000;background-size:200% 100%;-webkit-background-clip:text;background-clip:text;animation:7s linear infinite ctGrad}.contact-card{--rx:0deg;--ry:0deg}.contact-left.visible .contact-card:hover{transform:perspective(900px) rotateX(var(--rx)) rotateY(var(--ry)) translateX(6px)}.contact-card{transition:transform .25s ease-out,border-color .4s,box-shadow .4s}.contact-card>.cc-ring{border-radius:inherit;pointer-events:none;background:conic-gradient(from var(--sa), transparent 0deg, transparent 285deg, var(--cc) 340deg, transparent 360deg);-webkit-mask-composite:xor;opacity:0;padding:1.5px;transition:opacity .4s;animation:4s linear infinite serviceOrbit;inset:0;-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor,source-over;mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0);z-index:3!important;position:absolute!important}.contact-card:hover>.cc-ring{opacity:1}.cc-go{opacity:0;color:var(--cc);flex-shrink:0;margin-left:auto;transition:opacity .3s,transform .4s cubic-bezier(.34,1.56,.64,1);transform:translate(-8px)}.contact-card:hover .cc-go{opacity:1;transform:none}.contact-form-card>.cf-progress{z-index:3;background:color-mix(in srgb, var(--border) 60%, transparent);height:3px;margin:0;position:absolute;top:0;left:0;right:0;overflow:hidden}.cf-progress>span{height:100%;width:calc(var(--p,0) * 100%);border-radius:inherit;background:linear-gradient(90deg, var(--accent), var(--accent2), var(--accent3));background-size:200% 100%;transition:width .6s cubic-bezier(.34,1.3,.64,1);animation:3s linear infinite ctGrad;display:block}.cf-progress-note{color:var(--muted);white-space:nowrap;font-size:.78rem}.cf-progress-note b{color:var(--accent)}.cf-label-row{justify-content:space-between;align-items:center;display:flex}.cf-tick{color:#fff;background:#16a34a;border-radius:50%;justify-content:center;align-items:center;width:20px;height:20px;margin-bottom:8px;transition:transform .5s cubic-bezier(.34,1.56,.64,1);display:inline-flex;transform:scale(0)rotate(-90deg)}.cf-ok .cf-tick{transform:scale(1)rotate(0)}.cf-count{text-align:right;color:var(--muted);margin-top:4px;font-size:.7rem;transition:color .3s;display:block}.cf-count.cf-count--ok{color:#16a34a}@keyframes cfPlane{0%{opacity:1;transform:translate(0)rotate(0)}45%{opacity:0;transform:translate(34px,-34px)rotate(12deg)}46%{opacity:0;transform:translate(-30px,26px)}to{opacity:1;transform:translate(0)rotate(0)}}.contact-send.is-sent svg{animation:.9s cubic-bezier(.5,0,.3,1) cfPlane}.cf-burst{pointer-events:none;z-index:5;width:0;height:0;position:absolute;top:50%;left:50%}.cf-burst i{background:var(--c);border-radius:2px;width:8px;height:8px;animation:1.1s cubic-bezier(.2,.8,.3,1) forwards cfConfetti;position:absolute;top:-4px;left:-4px}@keyframes cfConfetti{0%{opacity:1;transform:translate(0)rotate(0)scale(.4)}70%{opacity:1}to{transform:translate(var(--x), var(--y)) rotate(var(--r)) scale(1);opacity:0}}.cf-send-wrap{display:flex;position:relative}.cf-send-wrap>.contact-send{flex:1}@media (prefers-reduced-motion:reduce){.ct-title,.cf-progress>span,.contact-card>.cc-ring{animation:none}.ct-title{color:var(--text);background:0 0}.contact-send.is-sent svg{animation:none}.cf-burst{display:none}}@media (hover:none){.contact-left.visible .contact-card:hover{transform:none}}.contact-right .input-field{padding:11px 16px;font-size:.92rem}.cf-tick{width:18px;height:18px;margin-bottom:6px}.cf-field label{margin-bottom:6px!important}@keyframes eduMobIn{0%{opacity:0;filter:blur(5px);transform:translate(26px)}to{opacity:1;filter:blur();transform:none}}@media (width<=768px){.edu-list{padding-left:28px;gap:14px!important}.edu-rail{left:3px}.edu-dot{width:11px;height:11px;margin-top:-5px;left:-28px}.edu-connector{width:17px;left:-17px}.edu-card-x{border-radius:16px;padding:14px 16px!important}.edu-card-x .edu-card-content{text-align:left!important;flex-flow:row!important;align-items:center!important;gap:14px!important}.edu-card-x .edu-logo-wrap{width:62px;height:62px}.edu-card-x .edu-logo{border-width:1.5px!important;width:62px!important;height:62px!important;box-shadow:0 4px 12px #0000002e!important}.edu-card-x .edu-logo img{width:100%!important;height:100%!important}.edu-card-x .edu-ring{padding:1.5px;inset:-4px}.edu-card-x .edu-text{flex:1!important;align-items:flex-start!important;min-width:0!important}.edu-card-x .edu-card-content>div:last-child{align-items:flex-start}.edu-card-x .edu-title{margin-bottom:3px!important;font-size:.98rem!important;line-height:1.25!important}.edu-card-x .edu-text>div:nth-child(2){justify-content:flex-start!important;margin-bottom:6px!important}.edu-card-x .edu-school{line-height:1.3;font-size:.8rem!important}.edu-card-x .edu-meta{justify-content:flex-start!important;gap:8px 12px!important;margin-top:0!important}.edu-card-x .edu-date{font-size:.74rem!important}.edu-card-x .edu-grade{gap:10px;padding:5px 14px 5px 6px}.edu-card-x .edu-dial,.edu-card-x .edu-dial-svg{width:46px;height:46px}.edu-card-x .edu-dial-val{font-size:.88rem}.edu-card-x .edu-grade-label{font-size:.86rem}.edu-card-x .edu-grade-sub{font-size:.72rem}.edu-card-x>.edu-year{display:none}.edu-item.visible .edu-card-x{animation:.8s cubic-bezier(.2,.8,.2,1) backwards eduMobIn;animation-delay:calc(var(--d,0) * 1ms + 60ms)}}@media (width<=380px){.edu-card-x>.edu-year{display:none}}@media (width<=768px){.svc-section{padding:56px 16px 60px}.svc-lead{margin:-22px auto 26px;font-size:.88rem;line-height:1.55}.svc-grid{gap:12px}.svc-card{border-radius:16px;grid-template-columns:46px minmax(0,1fr);align-items:start;column-gap:14px;padding:16px 16px 14px;display:grid}.svc-card .svc-icon{border-radius:13px;grid-row:1/span 3;width:46px;height:46px;margin:2px 0 0}.svc-card .svc-icon-svg{width:22px;height:22px}.svc-card .svc-title{grid-column:2;margin:0 0 4px;padding-right:34px;font-size:1rem;line-height:1.25;transform:none}.svc-card .svc-desc{grid-column:2;margin:0 0 8px;font-size:.83rem;line-height:1.55}.svc-card .svc-link{grid-column:2;font-size:.78rem}.svc-card .svc-link svg{width:13px;height:13px}.svc-card .svc-num{-webkit-text-stroke-width:1px;font-size:1.9rem;top:auto;bottom:8px;right:14px}.svc-card .svc-title{padding-right:0}.svc-bar{height:2px}.svc-cta{border-radius:16px;gap:12px;margin-top:20px;padding:16px}.svc-cta-text strong{font-size:1rem}.svc-cta-text span{font-size:.82rem}.svc-cta-text{min-width:0}.svc-cta-btn{padding:11px 20px;font-size:.88rem}.cert-grid{gap:10px}.cert-card{border-radius:16px;grid-template-columns:44px minmax(0,1fr);align-items:center;column-gap:14px;display:grid;padding:13px 14px!important}.cert-card .cert-icon{border-radius:12px;grid-row:1/span 3;width:44px;height:44px;margin:0}.cert-card .cert-icon img{width:26px;height:26px}.cert-card .cert-title{grid-column:2;margin:0 0 3px;padding-right:26px;font-size:.92rem;line-height:1.25;transform:none}.cert-card .cert-meta{grid-column:2;gap:6px;margin:0;font-size:.74rem}.cert-card .cert-link{grid-column:2;font-size:.74rem;max-height:20px!important;margin-top:5px!important}.cert-card .cert-link svg{width:12px;height:12px}.cert-card>.cert-seal{width:24px;height:24px;top:10px;right:10px}.cert-card>.cert-seal svg{width:14px;height:14px}.cert-bar{height:2px}.contact-card.edu-card{border-radius:14px;padding:10px 14px!important}.contact-card .cc-icon{border-radius:10px!important;width:36px!important;height:36px!important}.contact-card .cc-icon svg{width:17px;height:17px}.contact-card>div{gap:12px!important}.contact-card>div>div:nth-child(2)>div:first-child{margin-bottom:1px!important;font-size:.62rem!important}.contact-card>div>div:nth-child(2)>div:last-child{font-size:.85rem!important}.contact-card .cc-go{width:16px;height:16px}.contact-left>div:last-child{gap:8px!important}.contact-left h3{font-size:1.15rem!important}.contact-left p{margin-bottom:14px!important;font-size:.86rem!important;line-height:1.55!important}.contact-form-card.edu-card{border-radius:16px;padding:18px 16px!important}.contact-grid{gap:22px!important}.pf-bar{gap:6px}.pf-bar .filter-tab{gap:6px;padding:6px 13px;font-size:.74rem}.pf-count{min-width:17px;padding:0 5px;font-size:.62rem}.project-grid{gap:16px!important}.project-card{border-radius:16px}.project-card .proj-media{height:165px!important}.proj-cat{padding:4px 10px;font-size:.62rem;top:10px;left:10px}.project-card>div:nth-child(2){padding:16px!important}.proj-title{margin-bottom:8px!important;font-size:1.02rem!important}.project-card>div:nth-child(2)>div:nth-child(2){gap:5px!important;margin-bottom:14px!important}.project-card .tech-badge{padding:3px 9px;font-size:.66rem}.proj-actions{gap:8px!important}.proj-actions .btn-primary,.proj-actions .btn-outline{padding:7px 14px!important;font-size:.76rem!important}}@keyframes socialPop{0%{opacity:0;transform:translateY(18px)scale(.4)rotate(-20deg)}to{opacity:.9;transform:none}}@keyframes socialRing{0%{opacity:.55;transform:scale(1)}65%,to{opacity:0;transform:scale(1.8)}}@keyframes socialBob{0%,to{translate:0}50%{translate:0 -1.6px}}@keyframes socialWiggle{0%,to{transform:rotate(0)}20%{transform:rotate(-16deg)scale(1.1)}45%{transform:rotate(13deg)scale(1.1)}70%{transform:rotate(-7deg)}}.hero-social-group .hero-social-icon{--sc:var(--accent);opacity:.9;animation:.65s cubic-bezier(.34,1.56,.64,1) backwards socialPop;animation-delay:calc(var(--i,0) * 85ms + 1.05s);transition:transform .35s cubic-bezier(.34,1.56,.64,1),background-color .25s,border-color .25s,color .25s,box-shadow .3s,opacity .25s;position:relative}.hero-social-group .hero-social-icon:before{content:"";border:1.5px solid var(--sc);opacity:0;pointer-events:none;animation:3.8s ease-out infinite socialRing;animation-delay:calc(var(--i,0) * .6s + 2s);border-radius:50%;position:absolute;inset:-1px}.hero-social-group .hero-social-icon svg{animation:4.2s ease-in-out infinite socialBob;animation-delay:calc(var(--i,0) * -.7s)}.hero-social-group .hero-social-icon:hover{opacity:1;background:var(--sc);border-color:var(--sc);color:#fff;box-shadow:0 14px 28px -8px color-mix(in srgb, var(--sc) 75%, transparent);transform:translateY(-6px)scale(1.14)}.hero-social-group .hero-social-icon:hover svg{animation:.65s socialWiggle}.hero-social-group .hero-social-icon:active{transform:translateY(-2px)scale(.94)}.hero-social-group .hero-social-icon[data-cat=email]{--sc:#ea4335}.hero-social-group .hero-social-icon[data-cat=phone]{--sc:#10b981}.hero-social-group .hero-social-icon[data-cat=whatsapp]{--sc:#25d366}.hero-social-group .hero-social-icon[data-cat=location]{--sc:#4285f4}.hero-social-group .hero-social-icon[data-cat=telegram]{--sc:#229ed9}.hero-social-group .hero-social-icon[data-cat=discord]{--sc:#5865f2}.hero-social-group .hero-social-icon[data-cat=linkedin]{--sc:#0a66c2}.hero-social-group .hero-social-icon[data-cat=facebook]{--sc:#1877f2}.hero-social-group .hero-social-icon[data-cat=instagram]{--sc:#e1306c}.hero-social-group .hero-social-icon[data-cat=youtube]{--sc:red}.hero-social-group .hero-social-icon[data-cat=leetcode]{--sc:#ffa116}.hero-social-group .hero-social-icon[data-cat=codeforces]{--sc:#318ce7}.hero-social-group .hero-social-icon[data-cat=kaggle]{--sc:#20beff}.hero-social-group .hero-social-icon[data-cat=researchgate]{--sc:#0cb}.hero-social-group .hero-social-icon[data-cat=googlescholar]{--sc:#4285f4}.hero-social-group .hero-social-icon[data-cat=website]{--sc:#38bdf8}.hero-social-group .hero-social-icon[data-cat=custom]{--sc:#94a3b8}.hero-social-group .hero-social-icon[data-cat=github],.hero-social-group .hero-social-icon[data-cat=twitter],.hero-social-group .hero-social-icon[data-cat=medium]{--sc:#e2e8f0}.hero-social-group .hero-social-icon[data-cat=github]:hover,.hero-social-group .hero-social-icon[data-cat=twitter]:hover,.hero-social-group .hero-social-icon[data-cat=medium]:hover{color:#0f172a}html:not(.dark) .hero-social-group .hero-social-icon[data-cat=github]{--sc:#24292f}html:not(.dark) .hero-social-group .hero-social-icon[data-cat=twitter]{--sc:#000}html:not(.dark) .hero-social-group .hero-social-icon[data-cat=medium]{--sc:#292929}html:not(.dark) .hero-social-group .hero-social-icon[data-cat=github]:hover,html:not(.dark) .hero-social-group .hero-social-icon[data-cat=twitter]:hover,html:not(.dark) .hero-social-group .hero-social-icon[data-cat=medium]:hover{color:#fff}.hero-social-group .hero-social-icon:after{content:attr(data-label);background:var(--text);color:var(--bg);letter-spacing:.04em;white-space:nowrap;opacity:0;pointer-events:none;border-radius:8px;padding:4px 10px;font-family:Syne,sans-serif;font-size:.68rem;font-weight:700;transition:opacity .2s,transform .3s cubic-bezier(.34,1.56,.64,1);position:absolute;bottom:calc(100% + 12px);left:50%;transform:translate(-50%,6px)scale(.9)}.hero-social-group .hero-social-icon:hover:after{opacity:1;transform:translate(-50%)scale(1)}@media (hover:none){.hero-social-group .hero-social-icon:after{display:none}}@media (prefers-reduced-motion:reduce){.hero-social-group .hero-social-icon,.hero-social-group .hero-social-icon:before,.hero-social-group .hero-social-icon svg{animation:none}}.pub-grid{grid-template-columns:repeat(auto-fill,minmax(360px,1fr));gap:28px;display:grid}@media (width<=600px){.pub-grid{grid-template-columns:1fr}}@keyframes pubCardIn{0%{opacity:0;transform:translateY(40px)scale(.97)}to{opacity:1;transform:none}}.pub-grid .pub-card{opacity:0;transform:translateY(40px)scale(.97)}.pub-grid.visible .pub-card{animation:.75s cubic-bezier(.2,.8,.2,1) both pubCardIn;animation-delay:calc(var(--i,0) * .11s + .1s)}.pub-card{transition:transform .4s cubic-bezier(.2,.8,.2,1),border-color .4s,box-shadow .4s;position:relative;overflow:hidden}.pub-card>*{z-index:1;position:relative}.pub-card:before{content:"";pointer-events:none;opacity:0;background:radial-gradient(400px circle at var(--mx,50%) var(--my,0%), color-mix(in srgb, var(--accent) 13%, transparent), transparent 70%);transition:opacity .4s;position:absolute;inset:0}.pub-card:hover:before{opacity:1}.pub-grid.visible .pub-card:hover{border-color:color-mix(in srgb, var(--accent) 55%, var(--border));box-shadow:0 22px 44px -18px color-mix(in srgb, var(--accent) 55%, transparent);transform:translateY(-7px)scale(1.015)}.pub-card:after{content:"";pointer-events:none;opacity:0;background:linear-gradient(90deg, transparent, color-mix(in srgb, var(--accent) 12%, transparent), transparent);width:30%;position:absolute;top:0;bottom:0;left:0;transform:translate(-160%)skew(-20deg)}.pub-card:hover:after{animation:1s pubSheen}@keyframes pubSheen{0%{opacity:1;transform:translate(-160%)skew(-20deg)}to{opacity:1;transform:translate(440%)skew(-20deg)}}.pub-icon{transition:transform .45s cubic-bezier(.34,1.56,.64,1)}.pub-card:hover .pub-icon{transform:scale(1.1)rotate(-5deg)}.pub-read-badge{color:var(--accent);background:#2563eb14;border:1px solid #2563eb38;border-radius:99px;align-items:center;gap:4px;padding:4px 10px;font-size:.75rem;font-weight:600;transition:background .25s,transform .25s cubic-bezier(.34,1.56,.64,1),color .25s;display:inline-flex}.pub-card:hover .pub-read-badge{background:var(--accent);color:#fff;transform:scale(1.06)}@media (prefers-reduced-motion:reduce){.pub-grid .pub-card{opacity:1;animation:none;transform:none}.pub-card:after{display:none}}
