*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg-0: #0a0a14;--bg-1: #0f0f1c;--bg-2: #161629;--accent-1: #7c5cff;--accent-2: #00d4ff;--accent-grad: linear-gradient(135deg, var(--accent-1), var(--accent-2));--text-0: #f5f5fa;--text-muted: #a0a0b8;--radius: 14px;--radius-sm: 8px;--border-subtle: 1px solid rgba(255, 255, 255, .08);--ease-out: cubic-bezier(.16, 1, .3, 1);--dur-fast: .2s;--dur-med: .6s;--dur-slow: 1.2s;--font-sans: system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono: "JetBrains Mono", "Fira Code", monospace}html,body{font-family:var(--font-sans);color:var(--text-0);background:var(--bg-0);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;min-width:320px}img,svg{display:block;max-width:100%}a{color:inherit;text-decoration:none}button{font-family:inherit;cursor:pointer;border:none;background:none}ul,ol{list-style:none}html{scroll-behavior:smooth}body{min-height:100vh;background:linear-gradient(180deg,var(--bg-0) 0%,var(--bg-1) 100%);scroll-snap-type:y proximity;overflow-x:hidden;overflow-y:auto}#root{width:100%}.app{position:relative;width:100%;min-height:100vh}.bg-orbs{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:0;overflow:hidden}.bg-orbs__orb{position:absolute;border-radius:50%;filter:blur(80px);opacity:.18}.bg-orbs__orb--1{width:600px;height:600px;background:var(--accent-1);top:-10%;left:-15%;animation:orbFloat1 22s ease-in-out infinite}.bg-orbs__orb--2{width:500px;height:500px;background:var(--accent-2);bottom:5%;right:-10%;animation:orbFloat2 28s ease-in-out infinite}@keyframes orbFloat1{0%,to{transform:translate(0) rotate(0)}33%{transform:translate(60px,40px) rotate(15deg)}66%{transform:translate(-40px,80px) rotate(-10deg)}}@keyframes orbFloat2{0%,to{transform:translate(0) rotate(0)}40%{transform:translate(-70px,-50px) rotate(-20deg)}70%{transform:translate(50px,60px) rotate(12deg)}}section{position:relative;z-index:1;min-height:100vh;scroll-snap-align:start;display:flex;flex-direction:column;justify-content:center;padding:6rem 2rem}.gradient-text{background:var(--accent-grad);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;animation:hueShift 8s linear infinite}@keyframes hueShift{0%{filter:hue-rotate(0deg)}to{filter:hue-rotate(30deg)}}.skip-link{position:absolute;left:-9999px;top:1rem;padding:.5rem 1rem;background:var(--accent-1);color:#fff;border-radius:var(--radius-sm);font-weight:600;z-index:9999}.skip-link:focus{left:1rem}:focus-visible{outline:2px solid var(--accent-1);outline-offset:3px;border-radius:4px}@media (max-width: 1024px){section{padding:5rem 1.5rem}}@media (max-width: 768px){section{padding:4rem 1.25rem}}@media (max-width: 480px){section{padding:3rem 1rem}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}body{scroll-snap-type:none}.hero__cursor-glow{background:radial-gradient(circle at 50% 50%,rgba(124,92,255,.12),transparent 50%)}}.hero{position:relative;justify-content:center;align-items:flex-start;padding-top:0;padding-bottom:0;overflow:hidden;--mx: 50%;--my: 50%}.hero__cursor-glow{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background:radial-gradient(ellipse at var(--mx, 50%) var(--my, 50%),rgba(124,92,255,.2),transparent 50%);transition:background .06s linear;z-index:0}.hero__inner{position:relative;z-index:1;width:100%;max-width:860px;margin:0 auto;display:flex;flex-direction:column;gap:1.8rem}.hero__badge{display:inline-flex;align-items:center;gap:.5rem;padding:.3rem .9rem;border-radius:100px;background:#00d4641a;border:1px solid rgba(0,212,100,.3);font-size:.78rem;font-weight:500;color:#4ade80;width:fit-content;animation:fadeInUp .6s var(--ease-out) both}.hero__badge-dot{width:6px;height:6px;border-radius:50%;background:#4ade80;animation:pulse 2s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(1.4)}}.hero__headline{animation:fadeInUp .7s .1s var(--ease-out) both}.hero__h1{display:flex;flex-direction:column;gap:.1em}.hero__h1-line{font-size:clamp(3rem,7.5vw,5.8rem);font-weight:800;letter-spacing:-.03em;line-height:1;color:var(--text-0);display:block}.hero__h1-line--accent{background:var(--accent-grad);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}@keyframes fadeInUp{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}.hero__identity{display:flex;align-items:center;gap:.75rem;animation:fadeInUp .7s .2s var(--ease-out) both}.hero__name{font-size:1rem;font-weight:600;color:var(--text-muted)}.hero__sep{color:var(--text-muted);opacity:.4}.hero__chip{display:inline-flex;align-items:center;padding:.25rem .75rem;border-radius:100px;background:#7c5cff1f;border:1px solid rgba(124,92,255,.3)}.hero__chip-text{font-size:.8rem;font-weight:600;background:var(--accent-grad);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}.hero__bio{font-size:1rem;color:var(--text-muted);line-height:1.7;max-width:560px;animation:fadeInUp .7s .3s var(--ease-out) both}.hero__tagline{font-size:1.1rem;color:var(--text-0);font-style:italic;opacity:.7;min-height:1.6rem;animation:fadeInUp .7s .35s var(--ease-out) both}.hero__cursor{display:inline-block;color:var(--accent-1);font-style:normal;animation:blink .9s step-end infinite;margin-left:1px}@keyframes blink{0%,to{opacity:1}50%{opacity:0}}.hero__stats{display:flex;gap:2rem;animation:fadeInUp .7s .4s var(--ease-out) both}.hero__stat{display:flex;flex-direction:column;gap:.15rem;padding-right:2rem;border-right:1px solid rgba(255,255,255,.08)}.hero__stat:last-child{border-right:none}.hero__stat-value{font-size:1.5rem;font-weight:700;background:var(--accent-grad);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;line-height:1}.hero__stat-label{font-size:.72rem;color:var(--text-muted);letter-spacing:.05em;text-transform:uppercase}.hero__ctas{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap;animation:fadeInUp .7s .5s var(--ease-out) both}.hero__cta{display:inline-flex;align-items:center;gap:.4rem;padding:.75rem 1.8rem;border-radius:var(--radius);font-size:.95rem;font-weight:600;cursor:pointer;transition:transform var(--dur-fast),box-shadow var(--dur-fast),opacity var(--dur-fast);text-decoration:none}.hero__cta--primary{background:var(--accent-grad);color:#fff;border:none}.hero__cta--primary:hover{transform:translateY(-2px);box-shadow:0 8px 30px #7c5cff66}.hero__cta--secondary{background:transparent;color:var(--text-0);border:var(--border-subtle);background:#ffffff0d}.hero__cta--secondary:hover{background:#ffffff1a;transform:translateY(-2px)}.hero__link{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;color:var(--text-muted);background:#ffffff0d;border:var(--border-subtle);transition:color var(--dur-fast),background var(--dur-fast)}.hero__link:hover{color:var(--text-0);background:#ffffff1a}@media (max-width: 768px){.hero{padding-top:7rem}.hero__stats{gap:1.2rem}.hero__stat{padding-right:1.2rem}}@media (max-width: 480px){.hero{padding-top:5rem}.hero__ctas{flex-direction:column;align-items:flex-start}.hero__cta{width:100%;justify-content:center}}.projects{align-items:center}.projects__inner{width:100%;max-width:1100px;margin:0 auto}.projects__heading{font-size:clamp(1.8rem,4vw,2.6rem);font-weight:700;text-transform:uppercase;letter-spacing:.08em;margin-bottom:.5rem;text-align:center}.projects__sub{text-align:center;color:var(--text-muted);font-size:.9rem;margin-bottom:3rem}.projects__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem}.pj-card{background:var(--bg-2);border:var(--border-subtle);border-radius:var(--radius);padding:1.5rem;text-align:left;display:flex;flex-direction:column;gap:.75rem;cursor:pointer;position:relative;overflow:hidden;transition:transform var(--dur-fast) var(--ease-out),box-shadow var(--dur-fast) var(--ease-out),border-color var(--dur-fast);animation:cardIn var(--dur-med) var(--ease-out) both;animation-delay:calc(var(--i, 0) * 80ms)}.pj-card:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:var(--radius);padding:1px;background:var(--accent-grad);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;opacity:0;transition:opacity var(--dur-fast);pointer-events:none}.pj-card:hover{transform:translateY(-4px);box-shadow:0 16px 40px #7c5cff33}.pj-card:hover:before{opacity:.8}@keyframes cardIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.pj-card__index{font-size:.72rem;font-weight:700;letter-spacing:.1em;background:var(--accent-grad);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}.pj-card__title{font-size:1rem;font-weight:600;color:var(--text-0);line-height:1.3}.pj-card__tagline{font-size:.83rem;color:var(--text-muted);line-height:1.5;flex:1}.pj-card__stack{display:flex;flex-wrap:wrap;gap:.35rem}.pj-card__pill{font-size:.7rem;font-weight:500;color:var(--accent-2);background:#00d4ff14;border:1px solid rgba(0,212,255,.2);border-radius:100px;padding:.15rem .5rem}.pj-card__pill--more{color:var(--text-muted);background:#ffffff0d;border-color:#ffffff1a}.pj-card__cta{font-size:.78rem;color:var(--accent-1);font-weight:500;margin-top:auto}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000bf;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);z-index:200;display:flex;align-items:center;justify-content:center;padding:1rem;animation:overlayIn .2s ease both}@keyframes overlayIn{0%{opacity:0}to{opacity:1}}.modal{background:var(--bg-1);border:var(--border-subtle);border-radius:var(--radius);padding:2rem;width:100%;max-width:680px;max-height:88vh;overflow-y:auto;position:relative;display:flex;flex-direction:column;gap:1.5rem;animation:modalIn .25s var(--ease-out) both}@keyframes modalIn{0%{opacity:0;transform:translateY(20px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}.modal__close{position:absolute;top:1rem;right:1rem;width:32px;height:32px;border-radius:50%;background:#ffffff14;color:var(--text-muted);font-size:.85rem;display:flex;align-items:center;justify-content:center;transition:background var(--dur-fast),color var(--dur-fast);cursor:pointer;border:none}.modal__close:hover{background:#ffffff26;color:var(--text-0)}.modal__header{padding-right:2rem}.modal__title{font-size:1.4rem;font-weight:700;color:var(--text-0);margin-bottom:.4rem}.modal__tagline{font-size:.9rem;color:var(--text-muted)}.modal__row{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.modal__section{display:flex;flex-direction:column;gap:.4rem}.modal__label{font-size:.72rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;background:var(--accent-grad);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}.modal__text{font-size:.88rem;color:var(--text-muted);line-height:1.65}.modal__flow{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem}.modal__flow-item{display:flex;align-items:center;gap:.4rem}.modal__flow-step{display:flex;align-items:center;gap:.4rem;background:#00d4ff12;border:1px solid rgba(0,212,255,.18);border-radius:var(--radius-sm);padding:.35rem .7rem}.modal__flow-num{font-size:.65rem;font-weight:700;color:var(--accent-2);background:#00d4ff26;border-radius:50%;width:16px;height:16px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.modal__flow-text{font-size:.8rem;color:var(--text-0);white-space:nowrap}.modal__flow-arrow{color:var(--accent-1);font-size:.85rem;opacity:.7}.modal__competencies{display:flex;flex-direction:column;gap:.6rem}.modal__competency{background:#7c5cff12;border:1px solid rgba(124,92,255,.2);border-radius:var(--radius-sm);padding:.6rem .9rem;display:flex;flex-direction:column;gap:.2rem}.modal__competency-label{font-size:.82rem;font-weight:600;color:var(--accent-1)}.modal__competency-detail{font-size:.8rem;color:var(--text-muted);line-height:1.5}.modal__stack{display:flex;flex-wrap:wrap;gap:.4rem}.modal__pill{font-size:.75rem;font-weight:500;color:var(--accent-2);background:#00d4ff14;border:1px solid rgba(0,212,255,.2);border-radius:100px;padding:.2rem .65rem}.modal__links{display:flex;gap:.75rem}.modal__btn{display:inline-flex;align-items:center;gap:.4rem;padding:.5rem 1.2rem;border-radius:var(--radius-sm);font-size:.85rem;font-weight:500;transition:opacity var(--dur-fast)}.modal__btn--github{background:#ffffff14;color:var(--text-0);border:var(--border-subtle)}.modal__btn--github:hover{opacity:.8}.modal__btn--demo{background:var(--accent-grad);color:#fff}.modal__btn--demo:hover{opacity:.88}@media (max-width: 900px){.projects__grid{grid-template-columns:repeat(2,1fr)}}@media (max-width: 560px){.projects__grid,.modal__row{grid-template-columns:1fr}.modal{padding:1.5rem}}.skills{align-items:center}.skills__inner{width:100%;max-width:1000px;margin:0 auto}.skills__header{text-align:center;margin-bottom:3.5rem}.skills__heading{font-size:clamp(1.8rem,4vw,2.6rem);font-weight:700;text-transform:uppercase;letter-spacing:.08em;margin-bottom:.75rem}.skills__sub{font-size:.9rem;color:var(--text-muted);line-height:1.6}.skills__grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1.25rem}.skill-card{background:var(--bg-2);border:var(--border-subtle);border-radius:var(--radius);padding:1.75rem;display:flex;flex-direction:column;gap:.75rem;position:relative;overflow:hidden;opacity:0;transform:translateY(20px);transition:opacity var(--dur-med) var(--ease-out),transform var(--dur-med) var(--ease-out),box-shadow var(--dur-fast),border-color var(--dur-fast);transition-delay:calc(var(--i, 0) * .1s)}.skill-card:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:var(--radius);padding:1px;background:var(--accent-grad);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;opacity:0;transition:opacity var(--dur-fast);pointer-events:none}.skill-card--visible{opacity:1;transform:translateY(0)}.skill-card:hover{box-shadow:0 12px 32px #7c5cff26}.skill-card:hover:before{opacity:.6}.skill-card__icon{font-size:1.6rem;line-height:1}.skill-card__title{font-size:1.05rem;font-weight:700;color:var(--text-0);line-height:1.3}.skill-card__desc{font-size:.85rem;color:var(--text-muted);line-height:1.65;flex:1}.skill-card__tags{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:.25rem}.skill-card__tag{font-size:.72rem;font-weight:500;color:var(--accent-1);background:#7c5cff1a;border:1px solid rgba(124,92,255,.25);border-radius:100px;padding:.2rem .6rem}@media (max-width: 640px){.skills__grid{grid-template-columns:1fr}}.contact{align-items:center;text-align:center}.contact__inner{width:100%;max-width:600px;margin:0 auto;display:flex;flex-direction:column;align-items:center;gap:1.5rem}.contact__heading{font-size:clamp(2rem,5vw,3.2rem);font-weight:700}.contact__body{font-size:1.05rem;color:var(--text-muted);line-height:1.6;max-width:480px}.contact__cta{display:inline-flex;align-items:center;gap:.4rem;padding:.85rem 2.2rem;border-radius:var(--radius);background:var(--accent-grad);color:#fff;font-size:1rem;font-weight:600;letter-spacing:.02em;transition:box-shadow var(--dur-fast),opacity var(--dur-fast)}.contact__cta:hover{box-shadow:0 0 30px #7c5cff73;opacity:.92}.contact__links{display:flex;gap:1.5rem;align-items:center}.contact__link{display:inline-flex;align-items:center;gap:.4rem;font-size:.9rem;color:var(--text-muted);transition:color var(--dur-fast)}.contact__link:hover{color:var(--text-0)}.contact__footer{margin-top:2rem;font-size:.8rem;color:var(--text-muted);opacity:.6}.nav-dots{position:fixed;right:1.5rem;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;gap:.75rem;z-index:100}.nav-dots__dot{width:8px;height:8px;border-radius:50%;background:#ffffff40;border:1px solid rgba(255,255,255,.2);padding:0;transition:transform var(--dur-fast) var(--ease-out),background var(--dur-fast);cursor:pointer}.nav-dots__dot[aria-pressed=true]{background:var(--accent-1);transform:scale(1.5);border-color:var(--accent-1)}.nav-dots__dot:hover{background:#ffffff80}@media (max-width: 767px){.nav-dots{display:none}}
