:root{--bg: #0a0a0f;--bg-card: #14141c;--border: #26262f;--text: #eaeaf0;--muted: #8b8b9a;--accent: #7c9aff;--accent-2: #ff7ce0;--accent-3: #4ee6c8;--radius: 14px}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:Inter,-apple-system,BlinkMacSystemFont,sans-serif;line-height:1.6;overflow-x:hidden}h1,h2,h3,.brand{font-family:Space Grotesk,Inter,sans-serif}a{color:inherit}button{font-family:inherit}.mesh{position:fixed;top:0;right:0;bottom:0;left:0;z-index:-2;background:radial-gradient(circle at 15% 20%,rgba(124,154,255,.2),transparent 40%),radial-gradient(circle at 85% 15%,rgba(255,124,224,.16),transparent 40%),radial-gradient(circle at 50% 80%,rgba(78,230,200,.14),transparent 45%),var(--bg);animation:meshDrift 22s ease-in-out infinite alternate}@keyframes meshDrift{0%{background-position:0% 0%,100% 0%,50% 100%;filter:hue-rotate(0deg)}to{background-position:8% 5%,92% 8%,55% 92%;filter:hue-rotate(18deg)}}.grain{position:fixed;top:0;right:0;bottom:0;left:0;z-index:-1;opacity:.035;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}.topnav{display:flex;justify-content:space-between;align-items:center;padding:1.5rem clamp(1.25rem,5vw,4rem);position:relative;z-index:5}.brand{font-weight:700;letter-spacing:.08em;font-size:1.1rem;border:1px solid var(--border);border-radius:8px;padding:.3rem .6rem}.navlinks{display:flex;align-items:center;gap:clamp(1rem,3vw,2rem);font-size:.92rem}.navlinks a{display:inline-flex;align-items:center;gap:.4rem;text-decoration:none;color:var(--muted);transition:color .2s ease;position:relative}.navlinks a svg{opacity:.75;transition:opacity .2s ease}.navlinks a:hover{color:var(--text)}.navlinks a:hover svg{opacity:1}.navlinks a[data-nav].active{color:var(--text)}.navlinks a[data-nav].active svg{opacity:1}.navlinks a[data-nav].active:after{content:"";position:absolute;left:0;right:0;bottom:-6px;height:2px;border-radius:2px;background:linear-gradient(90deg,var(--accent),var(--accent-2))}.navlinks a.nav-highlight{color:var(--accent-3);border:1px solid rgba(78,230,200,.35);background:#4ee6c814;border-radius:999px;padding:.35rem .8rem}.navlinks a.nav-highlight svg{opacity:1}.navlinks a.nav-highlight:hover{color:var(--text);border-color:var(--accent-3);background:#4ee6c824}.navlinks a.nav-highlight.active:after{display:none}.resume-btn{color:var(--text)!important;border:1px solid var(--border);border-radius:999px;padding:.45rem 1rem}.resume-btn:hover{border-color:var(--accent)}.hero{position:relative;min-height:92vh;display:flex;flex-direction:column;justify-content:space-between}.hero-scene{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0}.hero-scene canvas{display:block}.hero-content{position:relative;z-index:2;margin:auto;text-align:center;max-width:720px;padding:2rem 1.5rem}.eyebrow{text-transform:uppercase;letter-spacing:.3em;font-size:.75rem;color:var(--accent);margin-bottom:1rem}.glow-text{font-size:clamp(3rem,9vw,6rem);font-weight:700;margin:0 0 1.25rem;background:linear-gradient(100deg,#fff 20%,var(--accent) 55%,var(--accent-2) 80%);background-size:200% auto;-webkit-background-clip:text;background-clip:text;color:transparent;animation:shine 6s linear infinite;will-change:background-position;transform:translateZ(0)}@keyframes shine{to{background-position:200% center}}.tagline{color:var(--muted);font-size:clamp(1rem,2vw,1.2rem);max-width:560px;margin:0 auto 2.25rem}.cta-row{display:flex;flex-wrap:wrap;gap:.9rem;justify-content:center}.btn{text-decoration:none;font-weight:500;font-size:.95rem;padding:.75rem 1.5rem;border-radius:999px;border:none;cursor:pointer;transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease;display:inline-block}.btn:hover{transform:translateY(-2px)}.btn-primary{background:linear-gradient(100deg,var(--accent),var(--accent-2));color:#0a0a0f;font-weight:600}.btn-primary:hover{box-shadow:0 8px 30px -8px #7c9aff99}.btn-ghost{background:transparent;border:1px solid var(--border);color:var(--text)}.btn-ghost:hover{border-color:var(--accent)}.scroll-cue{position:relative;z-index:2;margin:0 auto 2.5rem;width:22px;height:36px;border:1.5px solid var(--border);border-radius:999px}.scroll-cue span{position:absolute;top:6px;left:50%;width:4px;height:4px;margin-left:-2px;border-radius:50%;background:var(--accent);animation:cueDrop 1.8s ease-in-out infinite}@keyframes cueDrop{0%{transform:translateY(0);opacity:1}70%{opacity:0}to{transform:translateY(16px);opacity:0}}.section{max-width:1100px;margin:0 auto;padding:7rem 1.5rem 2rem}.section h2{font-size:clamp(1.6rem,3vw,2.1rem);margin-bottom:2.25rem;position:relative;display:inline-block}.section h2:after{content:"";position:absolute;left:0;bottom:-.5rem;width:2.5rem;height:3px;border-radius:2px;background:linear-gradient(90deg,var(--accent),var(--accent-2))}.grid{display:grid;gap:1.25rem}.projects-grid{grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}.contact-grid{grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}.projects-grid,.contact-grid{perspective:1000px}.card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:1.5rem;position:relative;overflow:hidden;transform-style:preserve-3d;transform:translateY(0) rotateX(var(--rx, 0deg)) rotateY(var(--ry, 0deg));transition:border-color .25s ease,transform .12s ease-out;will-change:transform}.card:hover{border-color:#3a3a48}.spotlight:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(280px circle at var(--x, 50%) var(--y, 50%),rgba(124,154,255,.14),transparent 70%);opacity:0;transition:opacity .3s ease;pointer-events:none}.spotlight:hover:before{opacity:1}.card-top{display:flex;align-items:baseline;justify-content:space-between;gap:.75rem}.card h3{margin:0 0 .75rem;font-size:1.15rem}.card p{color:var(--muted);font-size:.94rem;margin:0 0 1rem}.card-link{text-decoration:none;color:var(--muted);font-size:1.1rem;transition:color .2s ease}.card-link:hover{color:var(--accent)}.tags{list-style:none;display:flex;flex-wrap:wrap;gap:.5rem;padding:0;margin:0}.tags li{font-size:.75rem;color:var(--accent-3);background:#4ee6c814;border:1px solid rgba(78,230,200,.25);border-radius:999px;padding:.25rem .7rem}.skills-columns{columns:2;column-gap:1.25rem;perspective:1000px}@media (max-width: 760px){.skills-columns{columns:1}}.skill-cluster{break-inside:avoid;margin-bottom:1.25rem;padding:0;cursor:default}.skill-cluster.is-open{border-top-color:var(--cluster-accent, var(--accent))}.skill-cluster-header{width:100%;display:flex;align-items:flex-start;gap:1rem;background:none;border:none;color:inherit;font:inherit;text-align:left;cursor:pointer;padding:1.5rem}.skill-cluster-index{font-variant-numeric:tabular-nums;font-family:Space Grotesk,sans-serif;font-size:.85rem;font-weight:700;color:var(--cluster-accent, var(--accent));padding-top:.15rem}.skill-cluster-heading{flex:1;min-width:0}.skill-cluster-heading h3{margin:0 0 .3rem;font-size:1.1rem}.skill-cluster-heading p{margin:0;color:var(--muted);font-size:.88rem}.skill-cluster-chevron{display:flex;color:var(--muted);padding-top:.15rem;transition:transform .3s ease}.skill-cluster.is-open .skill-cluster-chevron{transform:rotate(180deg)}.skill-cluster-preview{padding:0 1.5rem 1.5rem;margin-top:-.5rem}.skill-cluster-preview .more{color:var(--muted);background:none;border-color:var(--border)}.skill-cluster-body{display:grid;grid-template-rows:0fr;transition:grid-template-rows .4s ease}.skill-cluster-body.is-open{grid-template-rows:1fr}.skill-cluster-body-inner{overflow:hidden;min-height:0}.skill-group{padding:0 1.5rem 1.5rem;display:flex;flex-direction:column;gap:.6rem}.skill-group+.skill-group{padding-top:.2rem;margin-top:.2rem;border-top:1px solid var(--border)}.skill-group h4{margin:0;font-size:.85rem;font-weight:600;color:var(--cluster-accent, var(--accent))}.edu-block{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:1.75rem}.edu-row{display:flex;justify-content:space-between;gap:1rem;padding:.35rem 0;flex-wrap:wrap}.edu-row.muted{color:var(--muted);font-size:.92rem}.edu-school{font-weight:600;font-size:1.05rem}.edu-loc{color:var(--muted);font-size:.92rem}.section-intro{color:var(--muted);max-width:640px;margin:-1.25rem 0 2.25rem}.contact-actions{display:flex;flex-wrap:wrap;gap:.6rem;margin-top:.25rem}.contact-actions .btn{font-size:.88rem;padding:.6rem 1.1rem}footer{text-align:center;padding:3.5rem 1.5rem 3rem;color:var(--muted);font-size:.88rem}footer a{color:var(--muted);text-decoration:underline;text-underline-offset:3px}footer a:hover{color:var(--text)}.reveal{opacity:0;transform:translateY(18px);transition:opacity .7s ease var(--stagger, 0s),transform .7s ease var(--stagger, 0s)}.reveal.in-view{opacity:1;transform:translateY(0)}@media (prefers-reduced-motion: reduce){.mesh,.glow-text,.scroll-cue span{animation:none!important}.reveal{opacity:1!important;transform:none!important;transition:none!important}.card{transform:none!important}.skill-cluster-body,.skill-cluster-chevron{transition:none!important}}@media (max-width: 640px){.topnav{flex-wrap:wrap;row-gap:.75rem}.navlinks{gap:.75rem;font-size:.85rem;flex-wrap:wrap;row-gap:.5rem}.hero{min-height:88vh}}@media (max-width: 420px){.navlinks{gap:.6rem;font-size:.8rem}.resume-btn{padding:.4rem .85rem}}
