.nav{z-index:100;top:0;justify-content:space-between;align-items:center;max-width:1512px;margin:0 auto;padding:1.25rem 2.5rem;transition:bacground .4s,-webkit-backdrop-filter .4s,backdrop-filter .4s;display:flex;position:fixed;inset-inline:0}.nav--scrolled{border-bottom:1px solid var(--clr-border-default);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#080a0fd9}.nav__logo{font-family:var(--font-mono);color:var(--clr-accent-primary);text-decoration:none}.nav__logo span{color:var(--clr-text-secondary)}.nav__links{gap:2.5rem;display:flex}@media (max-width:786px){.nav__links{display:none}}.nav__links a{font-size:var(--fs-body-sm);letter-spacing:.08em;text-transform:uppercase;color:var(--clr-text-secondary);transition:color .2s;position:relative}.nav__links a:after{content:"";background:var(--clr-accent-primary);width:0;height:1px;transition:width .25s;position:absolute;bottom:-3px;left:0}@media (hover:hover){.nav__links a:hover{color:var(--clr-text-primary)}.nav__links a:hover:after{width:100%}}.nav__cta{font-family:var(--font-mono);font-size:var(--fs-label);letter-spacing:.05em;color:var(--clr-accent-primary);border:1px solid var(--clr-accent-primary);border-radius:var(--radius-sm);padding:.6rem 1.4rem;transition:background .2s,color .2s}@media (hover:hover){.nav__cta:hover{color:#fff;background:var(--clr-accent-primary)}}@media (max-width:786px){.nav__cta{display:none}}.nav__hamburger{display:none}@media (max-width:786px){.nav__hamburger{cursor:pointer;flex-direction:column;justify-content:center;align-items:center;gap:.3rem;width:36px;height:36px;transition:background .15s;display:flex}.nav__hamburger span{transform-origin:50%;background:var(--clr-text-primary);border-radius:2px;width:20px;height:1.5px;transition:transform .3s cubic-bezier(.4,0,.2,1),opacity .3s}.nav.menu-open .nav__hamburger{z-index:99;position:fixed;top:1.25rem;right:2.5rem}.nav.menu-open .nav__hamburger span:first-child{transform:translateY(6.5px)rotate(45deg)}.nav.menu-open .nav__hamburger span:nth-child(2){opacity:0;transform:scaleX(0)}.nav.menu-open .nav__hamburger span:nth-child(3){transform:translateY(-6.5px)rotate(-45deg)}.nav.menu-open .nav__links{z-index:99;visibility:visible;opacity:1;background:var(--clr-bg-primary);flex-direction:column;justify-content:center;align-items:center;gap:2rem;height:100vh;display:flex;position:fixed;inset:0}.nav.menu-open .nav__links a{letter-spacing:.05em;font-size:1.5rem}}
.hero__portrait{flex-shrink:0;align-self:center;width:clamp(260px,28vw,420px);position:relative}.hero__portrait svg{width:100%;height:auto;display:block}.hero__portrait--glow{z-index:-1;pointer-events:none;background:radial-gradient(circle at 50% 60%,#6c63ff2e,#0000 65%);position:absolute;inset:-20%}.hero__portrait-badge{font-family:var(--font-mono);font-size:var(--fs-sm);white-space:nowrap;color:#7686a6;border:1px solid var(--clr-border-default);background:var(--clr-surface-primary);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-radius:10px;align-items:center;gap:.5rem;padding:.6rem 1rem;animation:3s ease-in-out infinite floatbadge;display:flex;position:absolute;bottom:20%;left:-8%}.hero__portrait-badge--with-dot:before{content:"";background:var(--clr-success);border-radius:50%;flex-shrink:0;width:7px;height:7px}.hero__portrait-badge--rust{top:10%;right:-6%;bottom:unset;left:unset;color:var(--clr-brand-rust);animation:3s ease-in-out infinite floatbadge2}.hero__tech-stack{flex-wrap:wrap;gap:1rem;margin-bottom:3.5rem;display:flex}.hero__tech-stack-item{font-family:var(--font-mono);font-size:var(--fs-label);cursor:default;letter-spacing:.05em;color:#7686a6;border:1px solid var(--clr-border-default);background:var(--clr-surface-primary);border-radius:999px;align-items:center;padding:.45rem 1rem;transition:border-color .2s,color .2s,transform .2s;display:flex}@media (hover:hover){.hero__tech-stack-item:hover{color:var(--c,var(--clr-text-primary));border-color:var(--c,var(--clr-text-primary));transform:translateY(-2px)}}.hero__tech-stack-item:before{content:"";background:var(--c,var(--clr-accent-primary));border-radius:50%;flex-shrink:0;width:6px;height:6px;margin-right:6px}.hero{grid-template-columns:1fr auto;align-items:center;gap:3rem;min-height:100vh;padding:6rem clamp(2rem,4vw,4rem) 2rem;display:grid;position:relative}.hero__inner{max-width:640px}.hero__eyebrow{font-family:var(--font-mono);font-size:var(--fs-label);letter-spacing:.15em;text-transform:uppercase;color:var(--clr-accent-primary);align-items:center;gap:.75rem;margin-bottom:2rem;display:flex}.hero__eyebrow:before{content:"";background:var(--clr-accent-primary);width:32px;height:1px;display:block}.hero__name{font-size:var(--text-hero-title);letter-spacing:-.04em;margin-bottom:1.5rem;font-weight:700;line-height:.9}.hero__name .line{display:block}.hero__name .word{display:inline-block}.hero__name em{color:#0000;-webkit-text-stroke:1px var(--clr-text-secondary);font-style:normal}.hero__tagline{font-size:var(--text-hero-subtitle);font-weight:300;line-height:var(--line-height-relaxed);max-width:560px;color:var(--clr-text-secondary);margin-bottom:3rem}.hero__tagline strong{color:var(--clr-text-primary);font-weight:500}.hero__actions{flex-wrap:wrap;align-items:center;gap:1.25rem;display:flex}.react{--c:var(--clr-brand-react)}.flutter{--c:var(--clr-brand-flutter)}.rust{--c:var(--clr-brand-rust)}@keyframes floatbadge{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}@keyframes floatbadge2{0%,to{transform:translateY(0)}50%{transform:translateY(6px)}}@keyframes scrollpulse{0%,to{opacity:.3;transform:scaleY(1)}50%{opacity:1;transform:scaleY(1.1)}}.scroll-hint{font-family:var(--font-mono);font-size:var(--fs-xs);letter-spacing:.15rem;text-transform:uppercase;color:var(--clr-text-tertiary);flex-direction:column;align-items:center;gap:.5rem;display:flex;position:absolute;bottom:2.5rem;left:50%;transform:translate(-50%)}.scroll-hint .line{background:linear-gradient(to bottom, var(--clr-text-tertiary), transparent);width:1px;height:48px;animation:2s ease-in-out infinite scrollpulse}@media (max-width:900px){.hero{grid-template-columns:1fr;gap:2rem;min-height:auto;padding-top:5rem}.hero__portrait{order:-1;width:clamp(280px,55vw,300px);margin:0 auto}.hero__portrait-badge{font-size:var(--fs-xs);padding:.45rem .7rem;left:0}.hero__portrait-badge--rust{font-size:var(--fs-xs);top:20px;right:0;left:unset}.scroll-hint{display:none}}
.btn{font-family:var(--font-serif);cursor:pointer;align-items:center;gap:.5rem;display:inline-flex}.btn--primary{font-size:var(--fs-button-primary);color:#f0f3fa;border-radius:var(--radius-md);background:#5a52e6;border:none;padding:.9rem 2.2rem;font-weight:500;transition:transform .2s,box-shadow .2s,opacity .2s}.btn--primary:hover{transform:translateY(-2px);box-shadow:0 8px 32px #6c63ff66}.btn--secondary{font-family:var(--font-mono);font-size:var(--fs-label);letter-spacing:.05em;color:var(--clr-text-secondary);border:1px solid var(--clr-border-default);background:var(--clr-surface-primary);padding:.75rem 1.5rem;transition:transform .2s,box-shadow .2s,opacity .2s}@media (hover:hover){.btn--secondary:hover{color:var(--text-primary);border-color:var(--clr-accent-primary);transform:translateY(-2px)}}.btn--ghost{font-family:var(--font-mono);font-size:var(--fs-label);letter-spacing:.05em;color:var(--clr-text-secondary);transition:color .2s}.btn--ghost svg{transition:transform .2s}@media (hover:hover){.btn--ghost:hover{color:var(--clr-text-primary)}.btn--ghost:hover svg{transform:translate(4px)}}
.tech-grid{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1.5rem;margin-top:4rem;display:grid}.tech-grid-card{cursor:default;border:1px solid var(--clr-border-default);border-radius:var(--radius-2xl);background:var(--clr-surface-primary);--card-glow:color-mix(in srgb, var(--card-accent,var(--clr-accent-primary)) 12%, transparent);padding:2rem;transition:border-color .3s,transform .3s;position:relative;overflow:hidden}.tech-grid-card:before{content:"";opacity:0;background:radial-gradient(circle at 50% 0%, var(--card-glow,#6c63ff14), transparent 70%);transition:opacity .4s;position:absolute;inset:0}@media (hover:hover){.tech-grid-card:hover{border-color:var(--card-accent,var(--clr-accent-primary));transform:translateY(-4px)}.tech-grid-card:hover:before{opacity:1}}.tech-grid-card--react{--card-accent:var(--clr-brand-react)}.tech-grid-card--electron{--card-accent:var(--clr-brand-electron)}.tech-grid-card--flutter{--card-accent:var(--clr-brand-flutter)}.tech-grid-card--rust{--card-accent:var(--clr-brand-rust)}.tech-grid-card__icon{font-size:var(--fs-icon-tech);margin-bottom:1.5rem;display:block}.tech-grid-card__name{font-size:var(--fs-title-tech);color:var(--card-accent,var(--clr-text-primary));margin-bottom:.5rem;font-weight:600}.tech-grid-card__desc{font-size:var(--fs-body-sm);color:var(--clr-text-secondary);margin-bottom:1.5rem;font-weight:300;line-height:1.6}.tech-grid-card__badge{font-family:var(--font-mono);font-size:var(--fs-sm);letter-spacing:.08em;color:var(--clr-text-tertiary);border:1px solid var(--clr-border-default);background:#ffffff0a;border-radius:999px;padding:.3rem .8rem;display:inline-block}.tech-grid-card__badge--learning{color:var(--clr-brand-rust);border-color:var(--clr-brand-rust);background:#f74c000f}.tech-grid-card__skills{flex-wrap:wrap;gap:.4rem;margin-top:1rem;display:flex}.tech-grid-card__skills>*{font-family:var(--font-mono);font-size:var(--fs-sm);color:var(--clr-text-tertiary);border-radius:var(--radius-xs);background:var(--clr-surface-secondary);padding:.2rem .6rem}
#contact{text-align:center}.contact-inner{max-width:640px;margin:0 auto}.contact-heading{font-size:var(--text-contact-section-title);letter-spacing:-.04em;margin-bottom:1.5rem;font-weight:700;line-height:1}.contact-heading em{color:#0000;-webkit-text-stroke:1px var(--clr-text-secondary);font-style:normal}.contact-sub{font-size:var(--fs-base);color:var(--clr-text-secondary);margin-bottom:3rem;font-weight:300;line-height:1.7}.contact-links{flex-wrap:wrap;justify-content:center;gap:1rem;margin-block:2.5rem 4rem;display:flex}.contact-availability{font-family:var(--font-mono);font-size:var(--fs-label);letter-spacing:.08em;color:var(--clr-success);align-items:center;gap:.5rem;display:inline-flex;position:relative}.contact-availability:before,.contact-availability:after{content:"";background:var(--clr-success);border-radius:50%;position:absolute}.contact-availability:before{width:8px;height:8px;left:-16px}.contact-availability:after{z-index:1;opacity:.3;width:12px;height:12px;animation:2s ease-out infinite pulse-wave;left:-18px}@keyframes pulse-wave{0%{opacity:.3;transform:scale(1)}to{opacity:0;transform:scale(2.5)}}
.project-grid{grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:1.5rem;display:grid}.project-card{border:1px solid var(--clr-border-default);background:var(--clr-surface-primary);transform-style:preserve-3d;border-radius:12px;transition:transform .4s cubic-bezier(.23,1,.32,1),border-color .3s,box-shadow .4s;overflow:hidden}@media (hover:hover){.project-card:hover{border-color:var(--clr-border-hover);box-shadow:0 24px 64px #00000080}.project-card:hover .project-card__title{color:var(--clr-accent-primary)}}.project-card__title{font-size:var(--fs-title-project);margin-bottom:.6rem;font-weight:600;transition:color .2s}.project-card__desc{font-size:var(--fs-body-sm);color:var(--clr-text-secondary);font-weight:300;line-height:1.65}.project-card__thumb{background:var(--bg-base);--accent:#54c5f8;--a-dim:color-mix(in srgb, var(--accent) 12%, #07080f);--a-subtle:color-mix(in srgb, var(--accent) 6%, #07080f);--a-med:color-mix(in srgb, var(--accent) 22%, #07080f);--a-stroke:color-mix(in srgb, var(--accent) 30%, #07080f);--a-muted:color-mix(in srgb, var(--accent) 45%, #3d4a63);--a-pop:color-mix(in srgb, var(--accent) 70%, #fff);--bg-base:color-mix(in srgb, var(--accent) 4%, #07080f);--bg-card:color-mix(in srgb, var(--accent) 8%, #0a0b10);--bg-el:color-mix(in srgb, var(--accent) 14%, #0c0d14);--border-c:color-mix(in srgb, var(--accent) 18%, #0f1018);justify-content:center;align-items:center;height:200px;display:flex;position:relative;overflow:hidden}.project-card__thumb svg{width:100%;height:100%}.project-card__body{flex:1;padding:1.75rem}.project-card__footer{border-top:1px solid var(--clr-border-default);flex-direction:column;align-items:flex-start;gap:.4rem;padding:1.25rem 1.75rem;display:flex}.project-tags{flex-wrap:wrap;gap:.5rem;margin-bottom:1rem;display:flex}.project-tag{font-family:var(--font-mono);font-size:var(--fs-sm);letter-spacing:.05em;color:var(--clr-text-tertiary);background:var(--clr-surface-secondary);border-radius:3px;padding:.25rem .6rem}.project-link{font-family:var(--font-mono);font-size:var(--fs-label);letter-spacing:.05em;color:var(--clr-text-secondary);align-items:center;gap:.4rem;transition:color .2s;display:flex}.project-link svg{width:14px;height:14px}@media (hover:hover){.project-link:hover{color:var(--clr-accent-primary)}}
.about-grid{grid-template-columns:1fr 1fr;align-items:start;gap:6rem;margin-top:4rem;display:grid}@media (max-width:786px){.about-grid{grid-template-columns:1fr;gap:3rem}}.about-text{font-size:var(--fs-base);color:var(--clr-text-secondary);margin-bottom:2rem;font-weight:300;line-height:1.85}.about-text strong{color:var(--clr-text-primary);font-weight:500}.terminal{font-family:var(--font-mono);border:1px solid var(--clr-border-default);background:var(--clr-terminal-bg);border-radius:10px;overflow:hidden}.terminal__bar{border-bottom:1px solid var(--clr-border-default);background:var(--clr-surface-primary);align-items:center;gap:.5rem;padding:.75rem 1rem;display:flex}.terminal__dot{border-radius:50%;flex-shrink:0;width:10px;height:10px}.terminal__dot--red{background:var(--clr-mac-controls-red)}.terminal__dot--yellow{background:var(--clr-mac-controls-yellow)}.terminal__dot--green{background:var(--clr-mac-controls-green)}.terminal__title{font-size:var(--fs-sm);text-align:center;letter-spacing:.06em;color:var(--clr-text-tertiary);flex:1}.terminal__body{font-size:var(--fs-label);min-height:260px;color:var(--clr-terminal-body-text);padding:1.5rem;line-height:2}.terminal__line{display:none}.terminal__line .prompt{color:var(--clr-success)}.terminal__line .cmd{color:var(--clr-text-primary)}.terminal__line .key{color:var(--clr-brand-flutter)}.terminal__line .value{color:var(--clr-accent-secondary)}.terminal__line:has(>.key):has(>.value){margin-left:1.5rem}.terminal__cursor{vertical-align:text-bottom;background:var(--clr-text-primary);width:8px;height:1.2em;animation:1s step-end infinite blink;display:inline-block}@keyframes blink{0%,to{opacity:1}50%{opacity:0}}
