.nav{position:fixed;top:0;left:0;right:0;z-index:50;padding:var(--space-4) var(--space-6);transition:background .3s,box-shadow .3s}.nav--scrolled{background:color-mix(in srgb,var(--bg-primary) 90%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:0 1px 0 var(--border)}.nav-inner{max-width:var(--max-width);margin:0 auto;display:flex;align-items:center;justify-content:space-between;min-height:41px}.nav-logo{font-size:var(--text-lg);font-weight:700;transition:transform .3s cubic-bezier(0,0,.2,1)}.nav-logo-icon{display:inline-block;width:.8em;height:.8em;margin-left:.4em;vertical-align:middle;opacity:0;transform:translate(-4px) rotateY(0);transition:opacity .3s cubic-bezier(0,0,.2,1),transform .3s cubic-bezier(0,0,.2,1)}@media(hover:hover){.nav-logo:hover{transform:rotate(-2deg)}.nav-logo:hover .nav-logo-icon{opacity:1;transform:translate(0) rotateY(180deg)}}.nav-links{display:flex;align-items:center;gap:var(--space-8);list-style:none}.nav-links a{font-size:var(--text-sm);font-weight:500;color:var(--text-secondary);transition:color .2s;position:relative}.nav-links a.active{color:var(--text-primary)}@media(hover:hover){.nav-links a:hover{color:var(--text-primary)}}.nav-links a:active{color:var(--accent)}.nav-links a.active:after{content:"";position:absolute;bottom:-4px;left:0;right:0;height:2px;background:var(--accent);border-radius:1px}.nav-links .nav-resume{display:inline-flex;align-items:center;padding:var(--space-2) var(--space-4);border:1px solid var(--accent);border-radius:var(--radius);color:var(--accent)}@media(hover:hover){.nav-resume:hover{background:color-mix(in srgb,var(--accent) 10%,transparent)}}.nav-resume:active{background:color-mix(in srgb,var(--accent) 20%,transparent)}.nav-toggle{display:none;flex-direction:column;gap:var(--space-1);background:none;border:none;cursor:pointer;padding:var(--space-3);margin:calc(-1 * var(--space-2)) 0;justify-content:center;align-items:center}.nav-toggle span{display:block;width:24px;height:2px;background:var(--text-primary);border-radius:2px;transition:transform .3s,opacity .3s}.nav-toggle--open span:nth-child(1){transform:translateY(6px) rotate(45deg)}.nav-toggle--open span:nth-child(2){opacity:0}.nav-toggle--open span:nth-child(3){transform:translateY(-6px) rotate(-45deg)}@media(max-width:900px){.nav-links{gap:var(--space-4)}}@media(max-width:640px){.nav-toggle{display:flex}.nav-links{display:flex;flex-direction:column;position:absolute;top:100%;left:0;right:0;background:color-mix(in srgb,var(--bg-primary) 95%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);padding:var(--space-6);gap:var(--space-4);border-bottom:1px solid var(--border);opacity:0;visibility:hidden;transform:translateY(-8px);transition:opacity .3s cubic-bezier(0,0,.2,1),visibility .3s,transform .3s cubic-bezier(0,0,.2,1);pointer-events:none}.nav-links--open{opacity:1;visibility:visible;transform:translateY(0);pointer-events:auto}.nav-links a{display:flex;align-items:center;min-height:44px}}.hero{position:relative;min-height:100vh;display:flex;align-items:flex-start;justify-content:center;overflow:clip}.hero-canvas{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0}.hero-content{position:relative;z-index:1;text-align:center;padding:15vh var(--space-6) 0;max-width:700px}.hero-content{opacity:0;animation:hero-enter .3s cubic-bezier(0,0,.2,1) forwards}@keyframes hero-enter{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.hero-name{font-size:clamp(var(--text-2xl),5vw + 1rem,var(--text-4xl));font-weight:700;line-height:1.25;padding-bottom:.15em;margin-bottom:var(--space-3);overflow:visible}.hero-title{font-size:clamp(var(--text-lg),2vw + .5rem,var(--text-xl));font-weight:400;color:var(--text-secondary);margin-bottom:var(--space-4)}.hero-tagline{font-size:clamp(var(--text-sm),1vw + .5rem,var(--text-base));color:var(--text-secondary);max-width:500px;margin:0 auto var(--space-8);line-height:1.7}.hero-cta{display:flex;gap:var(--space-4);justify-content:center;flex-wrap:wrap}.btn{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:var(--space-3) var(--space-6);border-radius:var(--radius);font-size:var(--text-sm);font-weight:500;transition:background .2s,border-color .2s,color .2s,transform .2s;cursor:pointer}.btn--primary{background:var(--accent);color:var(--bg-primary)}@media(hover:hover){.btn--primary:hover{background:var(--accent-hover);transform:translateY(-1px)}}.btn--primary:active{transform:translateY(0);background:var(--accent)}.btn--outline{border:1px solid var(--border);background:color-mix(in srgb,var(--bg-primary) 80%,transparent);color:var(--text-primary)}@media(hover:hover){.btn--outline:hover{border-color:var(--accent);color:var(--accent);transform:translateY(-1px)}}.btn--outline:active{transform:translateY(0)}.hero-scroll{position:absolute;bottom:var(--space-8);left:50%;transform:translate(-50%);z-index:1;color:var(--text-secondary);opacity:0;animation:hero-scroll-fade 1s 2s cubic-bezier(0,0,.2,1) forwards}@media(hover:hover){.hero-scroll:hover{color:var(--accent)}}@keyframes hero-scroll-fade{to{opacity:.6}}.section-heading{font-size:var(--text-2xl);font-weight:700;margin-bottom:var(--space-12);text-align:center}.tech-badge{display:inline-flex;align-items:center;min-height:44px;padding:var(--space-1) var(--space-3);background:color-mix(in srgb,var(--accent) 15%,transparent);color:var(--accent-hover);border-radius:var(--radius);font-size:var(--text-xs);font-weight:500;white-space:nowrap;border:none;cursor:pointer;transition:background .2s,color .2s,transform .2s}@media(hover:hover){.tech-badge:hover{background:color-mix(in srgb,var(--accent) 30%,transparent)}}.tech-badge:active{transform:scale(.97)}.tech-badge--active{background:var(--accent);color:var(--bg-primary)}.project-card{display:flex;flex-direction:column;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;transition:border-color .2s,opacity .3s}@media(hover:hover){.project-card:hover{border-color:var(--accent)}}.project-card-thumb{aspect-ratio:16 / 10;position:relative;overflow:hidden}.project-card-img{width:100%;height:100%;object-fit:cover;transition:transform .3s cubic-bezier(0,0,.2,1)}@media(hover:hover){.project-card:hover .project-card-img{transform:scale(1.03)}}.project-card-placeholder{width:100%;height:100%;display:flex;align-items:center;justify-content:center}.project-card-initials{font-size:var(--text-2xl);font-weight:700;color:color-mix(in srgb,var(--text-primary) 15%,transparent);letter-spacing:.1em;text-transform:uppercase}.project-card-type{position:absolute;top:var(--space-3);right:var(--space-3);padding:var(--space-1) var(--space-2);background:color-mix(in srgb,var(--bg-primary) 70%,transparent);border:1px solid var(--border);border-radius:999px;font-size:var(--text-xs);font-weight:500;color:var(--text-secondary)}.project-card-wip{position:absolute;top:12px;left:-32px;width:130px;padding:var(--space-1) 0;background:var(--accent);color:var(--bg-primary);font-size:var(--text-xs);font-weight:600;text-align:center;transform:rotate(-35deg);letter-spacing:.04em}.project-card-body{padding:var(--space-4);display:flex;flex-direction:column;flex:1}.project-card-title{font-size:var(--text-base);font-weight:600;margin-bottom:var(--space-2)}.project-card-desc{font-size:var(--text-sm);color:var(--text-secondary);line-height:1.6;margin-bottom:var(--space-4);white-space:pre-line}.project-card-toggle{background:none;border:none;color:var(--accent-hover);font-size:var(--text-sm);font-weight:500;cursor:pointer;padding:0;transition:color .2s}@media(hover:hover){.project-card-toggle:hover{color:var(--text-primary)}}.project-card-toggle:active{color:var(--accent)}.project-card-stack{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-bottom:var(--space-4)}.project-card-links{display:flex;gap:var(--space-3);margin-top:auto}.project-link{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-4);min-height:44px;border:1px solid var(--border);border-radius:var(--radius);font-size:var(--text-sm);font-weight:500;color:var(--text-secondary);transition:border-color .2s,color .2s,transform .2s}@media(hover:hover){.project-link:hover{border-color:var(--accent);color:var(--accent)}}.project-link:active{transform:scale(.97)}.filter-pill{display:flex;align-items:center;gap:var(--space-2);margin-bottom:var(--space-4);padding:var(--space-1) var(--space-3);background:color-mix(in srgb,var(--accent) 15%,transparent);border-radius:var(--radius);font-size:var(--text-sm);color:var(--accent-hover);width:fit-content}.filter-pill button{background:none;border:none;color:var(--text-secondary);cursor:pointer;font-size:1.2em;line-height:1;min-height:44px;min-width:44px;display:inline-flex;align-items:center;justify-content:center;padding:0 var(--space-1)}@media(hover:hover){.filter-pill button:hover{color:var(--text-primary)}}.filter-pill button:active{color:var(--accent)}.project-card--dimmed{opacity:.25}.projects-grid{display:flex;flex-wrap:wrap;gap:var(--space-6);justify-content:center}.project-card{width:calc((100% - 2 * var(--space-6)) / 3)}@media(max-width:900px){.project-card{width:calc((100% - var(--space-6)) / 2)}}@media(max-width:540px){.project-card{width:100%}}.about-bio{max-width:750px;margin:0 auto var(--space-12)}.about-bio p{color:var(--text-secondary);font-size:var(--text-base);line-height:1.8;margin-bottom:var(--space-4)}.about-subtitle{font-size:var(--text-lg);font-weight:600;text-align:center;margin-bottom:var(--space-6);color:var(--text-primary)}.skills-inline{max-width:750px;margin:0 auto var(--space-12);display:flex;flex-direction:column;gap:var(--space-4)}.skill-row{text-align:center;padding-bottom:var(--space-4);border-bottom:1px solid var(--border)}.skill-row:last-child{padding-bottom:0;border-bottom:none}.skill-label{font-size:var(--text-xs);font-weight:600;color:var(--text-primary);text-transform:uppercase;letter-spacing:.05em;display:block;margin-bottom:var(--space-1)}.skill-items{font-size:var(--text-sm);color:var(--text-secondary);line-height:1.6}.edu-timeline{max-width:500px;margin:0 auto;display:flex;flex-direction:column;gap:var(--space-6);position:relative;padding-left:var(--space-6)}.edu-timeline:before{content:"";position:absolute;left:5px;top:4px;bottom:4px;width:1px;background:var(--border)}.edu-entry{display:flex;gap:var(--space-4);position:relative}.edu-marker{position:absolute;left:calc(-1 * var(--space-6) + 1px);top:6px;width:9px;height:9px;border-radius:50%;background:var(--accent);flex-shrink:0}.edu-content{flex:1}.edu-degree{font-size:var(--text-base);font-weight:600;margin-bottom:var(--space-1)}.edu-focus{font-size:var(--text-sm);color:var(--text-primary);margin-bottom:var(--space-2)}.edu-school{font-size:var(--text-sm);color:var(--text-secondary);margin-bottom:var(--space-1)}.edu-detail{font-size:var(--text-xs);color:var(--text-secondary);line-height:1.5}#contact{padding-top:var(--space-12);padding-bottom:var(--space-12)}.contact-subtitle{text-align:center;color:var(--text-secondary);font-size:var(--text-base);margin-top:calc(-1 * var(--space-6));margin-bottom:var(--space-8)}.contact-links{display:flex;justify-content:center;gap:var(--space-4);flex-wrap:wrap}.contact-btn{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-6);min-height:44px;border:1px solid var(--border);border-radius:var(--radius);font-size:var(--text-sm);font-weight:500;color:var(--text-secondary);transition:border-color .2s,color .2s,transform .2s}@media(hover:hover){.contact-btn:hover{border-color:var(--accent);color:var(--accent);transform:translateY(-2px)}}.contact-btn:active{transform:translateY(0)}:root{--bg-primary: #0e1225;--bg-secondary: #1a2236;--bg-card: #1a2236;--border: #2f3b52;--text-primary: #edf1f8;--text-secondary: #8f9db4;--accent: #7578f5;--accent-hover: #9094f8;--radius: 8px;--max-width: 1200px;--font-body: "Inter", -apple-system, BlinkMacSystemFont, sans-serif;--font-display: "Sora", sans-serif;--text-xs: .75rem;--text-sm: .875rem;--text-base: 1rem;--text-lg: 1.25rem;--text-xl: 1.563rem;--text-2xl: 1.953rem;--text-3xl: 2.441rem;--text-4xl: 3.052rem;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-6: 1.5rem;--space-8: 2rem;--space-12: 3rem;--space-16: 4rem;--space-20: 5rem}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth}body{font-family:var(--font-body);background:var(--bg-primary);color:var(--text-primary);font-size:var(--text-base);line-height:1.6;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}img{max-width:100%;display:block}:focus:not(:focus-visible){outline:none}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.skip-link{position:absolute;left:-9999px;top:var(--space-16);z-index:100;padding:var(--space-2) var(--space-4);background:var(--accent);color:var(--bg-primary);border-radius:var(--radius);font-size:var(--text-sm);font-weight:500}.skip-link:focus{left:var(--space-4)}.display-text{color:var(--accent);font-family:var(--font-display)}.section{padding:var(--space-20) var(--space-6);max-width:var(--max-width);margin:0 auto}.footer{text-align:center;padding:var(--space-8) var(--space-6);border-top:1px solid var(--border);color:var(--text-secondary);font-size:var(--text-sm)}.footer-link{display:inline-block;margin-top:var(--space-2);color:var(--text-secondary);transition:color .2s}@media(hover:hover){.footer-link:hover{color:var(--accent)}}@media(max-width:640px){.section{padding:var(--space-12) var(--space-4)}}.reveal{opacity:0;transform:translateY(20px);transition:opacity .5s cubic-bezier(0,0,.2,1),transform .5s cubic-bezier(0,0,.2,1)}.reveal.revealed{opacity:1;transform:translateY(0)}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}.reveal{opacity:1;transform:none}}
