:root{--bg: #fafaf9;--text: #0b0b0c;--text-2: #3f3f46;--muted: #71717a;--soft: #a1a1aa;--line: rgba(10, 10, 12, .08);--glass: rgba(255, 255, 255, .62);--glass-strong: rgba(255, 255, 255, .82);--glass-line: rgba(255, 255, 255, .9);--chip: rgba(10, 10, 12, .045);--dark-btn: #0b0b0c;--dark-btn-ink: #ffffff;--accent: #2f6bff;--live: #22c55e;--shadow: 0 1px 1px rgba(0, 0, 0, .02), 0 12px 40px -18px rgba(20, 20, 40, .18);--font: "Geist", "Inter", system-ui, -apple-system, "Segoe UI", sans-serif;--radius: 22px;--wrap: 1120px;color-scheme:light}:root[data-theme=dark]{--bg: #08080a;--text: #f4f4f5;--text-2: #d4d4d8;--muted: #a1a1aa;--soft: #63636b;--line: rgba(255, 255, 255, .08);--glass: rgba(22, 22, 26, .55);--glass-strong: rgba(22, 22, 26, .78);--glass-line: rgba(255, 255, 255, .07);--chip: rgba(255, 255, 255, .06);--dark-btn: #f4f4f5;--dark-btn-ink: #0b0b0c;--accent: #7aa2ff;--shadow: 0 1px 1px rgba(0, 0, 0, .3), 0 16px 48px -20px rgba(0, 0, 0, .7);color-scheme:dark}*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:96px}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font);font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased;transition:background-color .3s,color .3s}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit}::selection{background:var(--text);color:var(--bg)}.soft{color:var(--soft)}main,.footer{position:relative;z-index:1}main{width:100%;max-width:var(--wrap);margin:0 auto;padding:0 24px}.bg{position:fixed;top:0;right:0;bottom:0;left:0;z-index:0;pointer-events:none}.fluid{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;display:block}.grain{position:absolute;top:0;right:0;bottom:0;left:0;opacity:.035;mix-blend-mode:multiply;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}:root[data-theme=dark] .grain{mix-blend-mode:screen;opacity:.025}.glass{background:var(--glass);border:1px solid var(--glass-line);border-radius:var(--radius);box-shadow:var(--shadow);backdrop-filter:blur(18px) saturate(1.2);-webkit-backdrop-filter:blur(18px) saturate(1.2)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;height:50px;padding:0 24px;border-radius:999px;border:1px solid transparent;font-size:15.5px;font-weight:500;letter-spacing:-.01em;cursor:pointer;transition:transform .2s,background .2s,border-color .2s,box-shadow .2s}.btn .ico{display:inline-flex}.btn .ico svg{width:18px;height:18px;transition:transform .2s}.btn:hover .ico svg{transform:translate(2px)}.btn-dark{background:var(--dark-btn);color:var(--dark-btn-ink);box-shadow:0 6px 20px -8px #00000073}.btn-dark:hover{transform:translateY(-1px)}.btn-glass{background:var(--glass-strong);border-color:var(--line);color:var(--text);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.btn-glass:hover{border-color:var(--soft);transform:translateY(-1px)}.btn-sm{height:40px;padding:0 18px;font-size:14px}.icon-btn{display:inline-grid;place-items:center;width:44px;height:44px;border-radius:999px;border:1px solid var(--line);background:var(--glass-strong);color:var(--text);cursor:pointer;transition:transform .2s,border-color .2s;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.icon-btn svg{width:18px;height:18px}.icon-btn:hover{transform:translateY(-1px);border-color:var(--soft)}.chips{display:flex;flex-wrap:wrap;gap:6px}.chip{font-size:13px;color:var(--text-2);padding:4px 11px;border-radius:999px;background:var(--chip)}.nav{position:fixed;top:14px;left:50%;transform:translate(-50%);z-index:30;width:calc(100% - 32px);max-width:1040px;border-radius:999px;border:1px solid transparent;transition:background .3s,border-color .3s,box-shadow .3s}.nav.scrolled,.nav.open{background:var(--glass-strong);border-color:var(--line);box-shadow:var(--shadow);backdrop-filter:blur(18px) saturate(1.3);-webkit-backdrop-filter:blur(18px) saturate(1.3)}.nav-bar{display:flex;align-items:center;justify-content:space-between;height:62px;padding:0 10px 0 12px}.brand{display:flex;align-items:center;gap:10px;font-weight:600;letter-spacing:-.02em}.avatar{display:grid;place-items:center;width:36px;height:36px;border-radius:50%;background:conic-gradient(from 200deg,#ff9ad5,#a68bff,#6fb7ff,#7ef0c1,#ffe08a,#ff9ad5);color:#0b0b0c;font-size:12.5px;font-weight:700;box-shadow:inset 0 0 0 2px #fff9}.links{display:flex;gap:4px}.links a{padding:8px 14px;border-radius:999px;font-size:14.5px;color:var(--muted);transition:color .2s,background .2s}.links a:hover{color:var(--text)}.links a.active{color:var(--text);background:var(--chip)}.nav-actions{display:flex;align-items:center;gap:8px}.nav-actions .icon-btn{width:40px;height:40px}.menu-btn{display:none!important}.mobile-links{display:none}.hero{min-height:100svh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:120px 0 72px;position:relative}.status{display:inline-flex;align-items:center;gap:10px;padding:7px 16px 7px 12px;border-radius:999px;background:var(--glass-strong);border:1px solid var(--line);font-size:13.5px;color:var(--text-2);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.live{position:relative;width:8px;height:8px;border-radius:50%;background:var(--live)}.live:after{content:"";position:absolute;top:-4px;right:-4px;bottom:-4px;left:-4px;border-radius:50%;border:2px solid var(--live);opacity:0;animation:ping 2s ease-out infinite}.hello{margin:34px 0 6px;font-size:clamp(20px,2.4vw,28px);font-weight:500;letter-spacing:-.02em}.wave{display:inline-block;transform-origin:70% 70%;animation:wave 2.6s ease-in-out 1s infinite}.hero h1{margin:0;font-size:clamp(52px,10vw,128px);font-weight:700;line-height:.98;letter-spacing:-.055em;text-wrap:balance}.tagline{max-width:620px;margin:26px auto 0;font-size:clamp(16px,1.6vw,19px);color:var(--muted);text-wrap:pretty}.hero-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:12px;margin-top:36px}.socials{display:flex;gap:10px;margin-top:18px}.stats{display:grid;grid-template-columns:repeat(4,1fr);width:100%;max-width:820px;margin:64px 0 0;border-radius:var(--radius);overflow:hidden;background:var(--line);gap:1px;border:1px solid var(--line)}.stat{display:flex;flex-direction:column-reverse;gap:2px;padding:22px 18px;text-align:left;background:var(--glass-strong);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px)}.stat dd{margin:0;font-size:30px;font-weight:600;letter-spacing:-.04em;line-height:1.1}.stat dt{font-size:13.5px;color:var(--muted)}.hint{position:absolute;bottom:22px;margin:0;font-size:12.5px;color:var(--soft);letter-spacing:.04em}.section{padding:96px 0 24px}.section-title{max-width:640px;margin-bottom:40px}.kicker{display:inline-block;font-size:13px;font-weight:500;color:var(--accent);letter-spacing:.02em;margin-bottom:10px}.section-title h2,.contact h2{margin:0;font-size:clamp(34px,5vw,56px);font-weight:700;letter-spacing:-.045em;line-height:1.04}.section-title p{margin:14px 0 0;color:var(--muted);font-size:17px}.stack{display:grid;gap:16px}.job{padding:30px 32px}.job-head{display:flex;gap:18px;align-items:flex-start}.job-title{flex:1;min-width:0}.logo{flex-shrink:0;width:52px;height:52px;border-radius:14px;object-fit:cover;display:block;box-shadow:0 0 0 1px var(--line),0 4px 12px -6px #00000040}.logo-fallback{display:grid;place-items:center;background:var(--chip);font-weight:700;font-size:20px}.job h3{margin:0;font-size:21px;font-weight:600;letter-spacing:-.025em;line-height:1.3}.job-role{margin:4px 0 0;color:var(--muted);font-size:15px}.job-when{display:flex;flex-direction:column;align-items:flex-end;gap:2px;font-size:14px;color:var(--text-2);white-space:nowrap}.job-points{margin:22px 0;padding:0;list-style:none;display:grid;gap:10px;color:var(--text-2)}.job-points li{position:relative;padding-left:20px}.job-points li:before{content:"";position:absolute;left:2px;top:.62em;width:6px;height:6px;border-radius:50%;background:var(--soft)}.edu .label{display:block;font-size:12.5px;color:var(--soft);margin-bottom:6px;letter-spacing:.02em}.edu .chips{margin-top:20px;padding-left:70px}.job-points,.job>.chips{padding-left:70px}.gpa{font-weight:600;color:var(--text)}.projects{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.project{display:flex;flex-direction:column;overflow:hidden;transition:transform .3s,box-shadow .3s}.project:hover{transform:translateY(-4px)}.project-art{position:relative;height:150px;overflow:hidden;background:linear-gradient(135deg,hsl(var(--h) 90% 92%),hsl(calc(var(--h) + 50) 90% 90%))}:root[data-theme=dark] .project-art{background:linear-gradient(135deg,hsl(var(--h) 45% 16%),hsl(calc(var(--h) + 50) 45% 13%))}.project-art span{position:absolute;border-radius:50%;filter:blur(22px);opacity:.85;transition:transform .8s cubic-bezier(.2,.7,.2,1)}.project-art span:nth-child(1){width:140px;height:140px;left:8%;top:20%;background:hsl(var(--h) 85% 68%)}.project-art span:nth-child(2){width:120px;height:120px;right:10%;top:-10%;background:hsl(calc(var(--h) + 60) 85% 70%)}.project-art span:nth-child(3){width:100px;height:100px;right:30%;bottom:-30%;background:hsl(calc(var(--h) - 50) 85% 72%)}.project:hover .project-art span:nth-child(1){transform:translate(30px,-10px) scale(1.1)}.project:hover .project-art span:nth-child(2){transform:translate(-24px,18px)}.project:hover .project-art span:nth-child(3){transform:translate(-20px,-16px) scale(1.15)}.project-body{display:flex;flex-direction:column;flex:1;padding:22px 24px 24px}.project-top{display:flex;justify-content:space-between;align-items:center;font-size:13.5px}.project-links{display:flex;gap:6px}.project-links a{display:inline-grid;place-items:center;width:32px;height:32px;border-radius:50%;background:var(--chip)}.project-links svg{width:15px;height:15px}.project h3{margin:8px 0 0;font-size:22px;font-weight:600;letter-spacing:-.03em}.project-sub{margin:2px 0 14px;color:var(--muted);font-size:14.5px}.project-text{margin:0 0 20px;color:var(--text-2);font-size:15px;flex:1}.more{display:flex;justify-content:center;margin-top:28px}.skills{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}.skill{padding:26px 28px}.skill h3{margin:0 0 16px;font-size:16px;font-weight:600;letter-spacing:-.02em}.skill .chip{font-size:14px;padding:6px 13px}.section#contact{padding-bottom:72px}.contact{padding:clamp(36px,6vw,72px) 24px;text-align:center}.contact p{max-width:520px;margin:18px auto 0;color:var(--muted);font-size:17px}.contact-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:12px;margin-top:34px}.contact-links{display:flex;flex-wrap:wrap;justify-content:center;gap:10px 28px;margin-top:30px;font-size:14.5px;color:var(--muted)}.contact-links>*{display:inline-flex;align-items:center;gap:8px}.contact-links a:hover{color:var(--text)}.contact-links svg{width:16px;height:16px}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:grid;place-items:center;padding:16px;background:#0a0a0e59;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);animation:fade .2s ease}.modal{position:relative;width:100%;max-width:480px;max-height:calc(100svh - 32px);overflow-y:auto;padding:32px;background:var(--glass-strong);animation:pop .25s cubic-bezier(.2,.8,.2,1)}.modal h3{margin:0;font-size:26px;font-weight:700;letter-spacing:-.035em}.modal-sub{margin:6px 0 22px;color:var(--muted)}.modal form{display:grid;gap:14px}.modal form>.modal-sub{margin-top:-8px;margin-bottom:4px}.modal label{display:grid;gap:6px;font-size:13.5px;font-weight:500;color:var(--text-2)}.modal input,.modal textarea{width:100%;padding:12px 14px;border-radius:12px;border:1px solid var(--line);background:var(--bg);color:var(--text);font:inherit;font-size:15.5px;outline:none;transition:border-color .2s,box-shadow .2s}.modal textarea{resize:vertical;min-height:120px}.modal input:focus,.modal textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 18%,transparent)}.modal ::placeholder{color:var(--soft)}.modal-close{position:absolute;top:16px;right:16px;width:38px;height:38px}.modal-send{margin-top:6px;width:100%}.modal-send:disabled{opacity:.6;cursor:default}.hp{position:absolute;left:-9999px;width:1px;height:1px;opacity:0}.form-error{margin:0;font-size:14px;color:#e5484d}.modal-done{text-align:center;padding:12px 0 4px}.modal-done p{color:var(--muted);margin:8px 0 24px}.done-ico{display:inline-grid;place-items:center;width:56px;height:56px;margin-bottom:14px;border-radius:50%;background:var(--chip);color:var(--live)}.done-ico svg{width:26px;height:26px}@keyframes fade{0%{opacity:0}}@keyframes pop{0%{opacity:0;transform:translateY(10px) scale(.98)}}.footer{display:flex;justify-content:space-between;gap:16px;max-width:var(--wrap);margin:0 auto;padding:26px 24px 36px;font-size:13.5px;color:var(--muted)}.footer a:hover{color:var(--text)}.reveal{opacity:0;transform:translateY(16px);transition:opacity .7s ease,transform .7s cubic-bezier(.2,.7,.2,1)}.reveal.in{opacity:1;transform:none}.hero .reveal:nth-child(2){transition-delay:.06s}.hero .reveal:nth-child(3){transition-delay:.12s}.hero .reveal:nth-child(4){transition-delay:.18s}.hero .reveal:nth-child(5){transition-delay:.24s}.hero .reveal:nth-child(6){transition-delay:.3s}.hero .reveal:nth-child(7){transition-delay:.36s}@keyframes ping{0%{transform:scale(.6);opacity:.7}to{transform:scale(1.6);opacity:0}}@keyframes wave{0%,60%,to{transform:rotate(0)}10%,30%{transform:rotate(14deg)}20%,40%{transform:rotate(-8deg)}}@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}.reveal{opacity:1;transform:none;transition:none}.wave,.live:after{animation:none}}@media (hover: none){.hint{display:none}}@media (max-width: 960px){.projects{grid-template-columns:1fr 1fr}.projects .project:last-child{grid-column:span 2}}@media (max-width: 760px){main{padding:0 16px}.links,.resume-btn{display:none!important}.menu-btn{display:inline-grid!important}.nav{top:10px;width:calc(100% - 20px);border-radius:26px}.nav-bar{height:58px}.nav.open .mobile-links{display:grid;padding:4px 12px 14px}.mobile-links a{padding:13px 8px;border-top:1px solid var(--line);font-size:16px}.hero{padding-top:110px}.stats{grid-template-columns:1fr 1fr;margin-top:48px}.stat dd{font-size:26px}.projects,.skills{grid-template-columns:1fr}.projects .project:last-child{grid-column:auto}.job{padding:24px 22px}.job-head{flex-wrap:wrap;gap:14px}.job-when{width:100%;align-items:flex-start;flex-direction:row;gap:10px}.job-points,.job>.chips,.edu .chips{padding-left:0}.logo{width:44px;height:44px;border-radius:12px}.modal{padding:26px 20px}.skill{padding:22px}.section{padding-top:72px}.contact-actions .btn{width:100%}.footer{flex-direction:column;align-items:center;padding:22px 16px 30px}}
