*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg: #0b0f1e;--surface: rgba(255,255,255,.04);--border: rgba(255,255,255,.07);--accent: #4a9eff;--accent2: #38bdf8;--green: #4ade80;--text: #f1f5f9;--muted: #94a3b8;--dim: #5a6780}html{scroll-behavior:smooth}body{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:var(--bg);color:var(--text);min-height:100vh;overflow-x:hidden;line-height:1.65;transition:background .4s ease}#bg-canvas{position:fixed;top:0;right:0;bottom:0;left:0;width:100%;height:100%;z-index:0;pointer-events:none}#root{position:relative;z-index:1}.container{max-width:740px;margin:0 auto;padding:0 28px}#scroll-progress{position:fixed;top:0;left:0;height:2px;width:0%;background:linear-gradient(90deg,var(--accent),var(--accent2));z-index:100;pointer-events:none;transition:width .08s linear}.hero{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:100px 28px 80px;position:relative}.hero-greeting{font-size:.85rem;font-weight:500;letter-spacing:.18em;text-transform:uppercase;color:var(--dim);margin-bottom:14px}.hero-name{font-size:clamp(2.8rem,9vw,5.5rem);font-weight:700;letter-spacing:-.02em;line-height:1.05;background:linear-gradient(135deg,#fff 15%,var(--accent) 55%,var(--accent2) 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;margin-bottom:18px}.hero-title{font-size:clamp(1.05rem,3vw,1.35rem);font-weight:400;color:var(--muted);margin-bottom:28px}.hero-title:after{content:"|";margin-left:2px;color:var(--accent);animation:cursorBlink 1s step-end infinite}.hero-badge{display:inline-flex;align-items:center;gap:7px;font-size:.82rem;color:var(--dim);background:var(--surface);border:1px solid var(--border);padding:6px 16px;border-radius:24px;margin-bottom:44px}.cta-btn{display:inline-block;padding:13px 30px;background:linear-gradient(135deg,var(--accent),var(--accent2));color:#fff;font-size:.9rem;font-weight:600;text-decoration:none;border-radius:8px;letter-spacing:.01em;transition:opacity .2s,transform .2s}.cta-btn:hover{opacity:.82;transform:translateY(-2px)}.scroll-hint{position:absolute;bottom:36px;left:50%;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;gap:6px;color:var(--dim)}.scroll-hint span{font-size:.7rem;letter-spacing:.12em;text-transform:uppercase}.scroll-arrow{width:1px;height:36px;background:linear-gradient(to bottom,var(--dim),transparent);animation:scrollPulse 2s ease-in-out infinite}.section{padding:84px 0;border-top:1px solid var(--border);opacity:0;transform:translateY(22px);transition:opacity .7s ease,transform .7s ease;will-change:opacity,transform}.section.in-view{opacity:1;transform:none}.section-label{font-size:.7rem;font-weight:600;letter-spacing:.2em;text-transform:uppercase;color:var(--accent);margin-bottom:36px}.about-text{font-size:1.08rem;line-height:1.85;color:var(--muted);max-width:600px}.stats-row{display:flex;gap:48px;margin-top:40px;flex-wrap:wrap}.stat-num{font-size:2.2rem;font-weight:700;color:var(--accent);line-height:1;margin-bottom:5px}.stat-lbl{font-size:.8rem;color:var(--dim)}.timeline{position:relative;padding-left:20px}.timeline:before{content:"";position:absolute;left:0;top:8px;width:1px;height:calc(100% - 8px);background:linear-gradient(to bottom,var(--accent) 0%,transparent 100%)}.tl-item{position:relative;margin-bottom:20px}.tl-item:last-child{margin-bottom:0}.tl-dot{position:absolute;left:-24px;top:14px;width:8px;height:8px;border-radius:50%;background:var(--accent);border:2px solid var(--bg)}.tl-dot.live{box-shadow:0 0 0 3px #4a9eff33,0 0 10px #4a9eff66}.tl-card{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:18px 22px;transition:border-color .25s}.tl-card:hover{border-color:#4a9eff47}.tl-top{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-bottom:4px}.tl-role{font-size:.97rem;font-weight:600;color:var(--text)}.badge{font-size:.67rem;font-weight:600;letter-spacing:.06em;padding:2px 8px;border-radius:4px}.badge-ft{background:#4a9eff24;color:var(--accent)}.badge-c{background:#38bdf81c;color:var(--accent2)}.live-pill{margin-left:auto;display:flex;align-items:center;gap:5px;font-size:.67rem;font-weight:500;color:var(--green)}.live-dot{width:6px;height:6px;border-radius:50%;background:var(--green);box-shadow:0 0 6px var(--green);animation:livePulse 2s ease-in-out infinite}.tl-company{font-size:.88rem;font-weight:500;color:var(--muted);margin-bottom:5px}.tl-meta{font-size:.78rem;color:var(--dim);line-height:1.6}.tl-note{font-size:.74rem;color:#3d5066;margin-top:5px;font-style:italic}.skills-grid{display:flex;flex-wrap:wrap;gap:10px}.skill-tag{font-size:.83rem;padding:8px 16px;background:var(--surface);border:1px solid var(--border);border-radius:6px;color:var(--muted);cursor:default;transition:border-color .2s,color .2s,background .2s}.skill-tag:hover{border-color:var(--accent);color:var(--accent);background:#4a9eff0f}.projects-grid{display:grid;gap:14px}.project-card{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:20px 22px;transition:border-color .25s}.project-card:hover{border-color:#4a9eff47}.project-card.nda{opacity:.5}.project-card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px}.project-name{font-size:.97rem;font-weight:600;color:var(--text);display:flex;align-items:center;gap:8px}.nda-label{font-size:.63rem;font-weight:600;letter-spacing:.08em;color:var(--dim);background:#ffffff0a;border:1px solid var(--border);padding:2px 7px;border-radius:4px}.project-live-link{font-size:.78rem;color:var(--accent);text-decoration:none;display:flex;align-items:center;gap:4px;flex-shrink:0}.project-live-link:hover{opacity:.75}.project-company{font-size:.82rem;color:var(--dim);margin-bottom:8px}.project-desc{font-size:.88rem;color:var(--muted);line-height:1.65;margin-bottom:13px}.project-tags{display:flex;flex-wrap:wrap;gap:7px}.project-tag{font-size:.74rem;padding:3px 10px;background:#4a9eff12;border:1px solid rgba(74,158,255,.14);border-radius:4px;color:var(--accent)}.contact-wrap{text-align:center}.contact-sub{font-size:1rem;color:var(--muted);margin-bottom:28px}.footer{padding:40px 0;border-top:1px solid var(--border);text-align:center}.footer p{font-size:.78rem;color:var(--dim)}@keyframes fadeUp{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}@keyframes nameReveal{0%{opacity:0;clip-path:inset(0 100% 0 0);transform:translate(-14px)}to{opacity:1;clip-path:inset(0 0% 0 0);transform:none}}@keyframes scrollHintFade{0%{opacity:0;transform:translate(-50%) translateY(10px)}to{opacity:1;transform:translate(-50%) translateY(0)}}@keyframes scrollPulse{0%,to{opacity:.3;transform:scaleY(1)}50%{opacity:.7;transform:scaleY(1.1)}}@keyframes cursorBlink{0%,to{opacity:1}50%{opacity:0}}@keyframes livePulse{0%,to{box-shadow:0 0 4px var(--green)}50%{box-shadow:0 0 10px var(--green)}}.hero-greeting{animation:fadeUp .55s cubic-bezier(.16,1,.3,1) .05s both}.hero-name{animation:nameReveal .85s cubic-bezier(.16,1,.3,1) .2s both}.hero-title{animation:fadeUp .55s cubic-bezier(.16,1,.3,1) .45s both}.hero-badge-wrap{animation:fadeUp .5s cubic-bezier(.16,1,.3,1) .6s both}.hero-cta-wrap{animation:fadeUp .5s cubic-bezier(.16,1,.3,1) .75s both}.scroll-hint{animation:scrollHintFade .45s ease 1s both}@media (max-width: 520px){.stats-row{gap:28px}.section{padding:60px 0}.hero{padding:80px 20px 60px}}
