*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}body{margin:0;min-height:100vh;font-family:var(--font-sans);font-size:1rem;line-height:1.6;color:var(--color-text);background:var(--color-bg);background-image:var(--color-bg-gradient);transition:color .35s ease,background .35s ease}#matrix-rain{position:fixed;top:0;right:0;bottom:0;left:0;z-index:0;pointer-events:none;opacity:0;transition:opacity .5s ease}[data-theme=matrix] #matrix-rain{opacity:.12}@media(prefers-reduced-motion:reduce){[data-theme=matrix] #matrix-rain{opacity:0;display:none}}.site-wrap{position:relative;z-index:1}a{color:var(--color-link);text-decoration:none}a:hover{text-decoration:underline}a:focus-visible{outline:2px solid var(--color-accent);outline-offset:3px}.container{width:min(100% - 2rem,72rem);margin-inline:auto;padding-inline:1rem}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}:root{--font-sans: system-ui, "Segoe UI", Roboto, Ubuntu, Cantarell, sans-serif;--font-mono: ui-monospace, "Cascadia Code", "Fira Code", "SF Mono", monospace;--radius-sm: 6px;--radius-md: 10px;--shadow-soft: 0 8px 32px rgba(0, 0, 0, .35)}:root,[data-theme=nebula]{--color-bg: #04070f;--color-bg-gradient: radial-gradient(ellipse 110% 75% at 18% 12%, rgba(99, 102, 241, .16), transparent 58%), radial-gradient(ellipse 95% 70% at 88% 18%, rgba(56, 189, 248, .14), transparent 55%), radial-gradient(ellipse 85% 55% at 48% 95%, rgba(139, 92, 246, .12), transparent 62%), radial-gradient(ellipse 70% 45% at 8% 58%, rgba(14, 165, 233, .08), transparent 55%), radial-gradient(ellipse 60% 50% at 72% 62%, rgba(236, 72, 153, .06), transparent 58%), linear-gradient(180deg, #020617 0%, #0a1228 42%, #0f172a 100%);--color-surface: rgba(15, 23, 42, .75);--color-surface-border: rgba(56, 189, 248, .22);--color-text: #e8f4fc;--color-text-muted: #94a3b8;--color-accent: #38bdf8;--color-accent-dim: rgba(56, 189, 248, .15);--color-link: #7dd3fc;--color-header-bg: rgba(7, 11, 20, .85);--font-ui: var(--font-sans);--github-chart-surface: #0a1228;--github-chart-border: rgba(56, 189, 248, .3)}[data-theme=matrix]{--color-bg: #020805;--color-bg-gradient: radial-gradient(ellipse 100% 60% at 50% 0%, rgba(34, 197, 94, .08), transparent 55%), linear-gradient(180deg, #020805 0%, #051a0d 100%);--color-surface: rgba(6, 26, 14, .85);--color-surface-border: rgba(34, 197, 94, .35);--color-text: #dcfce7;--color-text-muted: #86efac;--color-accent: #22c55e;--color-accent-dim: rgba(34, 197, 94, .12);--color-link: #4ade80;--color-header-bg: rgba(2, 8, 5, .92);--font-ui: var(--font-mono);--github-chart-surface: #030d08;--github-chart-border: rgba(34, 197, 94, .38)}[data-theme=terminal]{--color-bg: #0c0a06;--color-bg-gradient: radial-gradient(ellipse 90% 50% at 50% 0%, rgba(251, 191, 36, .06), transparent 50%), linear-gradient(180deg, #0c0a06 0%, #1a1510 100%);--color-surface: rgba(28, 25, 20, .9);--color-surface-border: rgba(251, 191, 36, .28);--color-text: #fef3c7;--color-text-muted: #d6d3d1;--color-accent: #fbbf24;--color-accent-dim: rgba(251, 191, 36, .12);--color-link: #fcd34d;--color-header-bg: rgba(12, 10, 6, .92);--font-ui: var(--font-mono);--github-chart-surface: #12100c;--github-chart-border: rgba(251, 191, 36, .32)}[data-theme=paper]{--color-bg: #f8fafc;--color-bg-gradient: linear-gradient(180deg, #f8fafc 0%, #e2e8f0 100%);--color-surface: #ffffff;--color-surface-border: rgba(15, 23, 42, .12);--color-text: #0f172a;--color-text-muted: #475569;--color-accent: #0369a1;--color-accent-dim: rgba(3, 105, 161, .08);--color-link: #0284c7;--color-header-bg: rgba(248, 250, 252, .95);--font-ui: var(--font-sans);--github-chart-surface: #ffffff;--github-chart-border: rgba(15, 23, 42, .12)}body{font-family:var(--font-ui)}html[data-theme=nebula] body:before,html:not([data-theme]) body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:0;opacity:.48;background-image:radial-gradient(1px 1px at 12% 18%,rgba(255,255,255,.5) 50%,transparent 50%),radial-gradient(1px 1px at 84% 12%,rgba(255,255,255,.38) 50%,transparent 50%),radial-gradient(1px 1px at 73% 58%,rgba(196,181,253,.45) 50%,transparent 50%),radial-gradient(1px 1px at 22% 72%,rgba(255,255,255,.32) 50%,transparent 50%),radial-gradient(1px 1px at 48% 38%,rgba(186,230,253,.35) 50%,transparent 50%),radial-gradient(1.5px 1.5px at 91% 76%,rgba(165,243,252,.55) 50%,transparent 50%),radial-gradient(1px 1px at 6% 62%,rgba(255,255,255,.3) 50%,transparent 50%),radial-gradient(1px 1px at 55% 88%,rgba(199,210,254,.38) 50%,transparent 50%),radial-gradient(1px 1px at 33% 44%,rgba(255,255,255,.22) 50%,transparent 50%),radial-gradient(1px 1px at 67% 28%,rgba(224,231,255,.28) 50%,transparent 50%);background-repeat:no-repeat;background-size:100% 100%}html[data-theme=nebula] body:after,html:not([data-theme]) body:after{content:"";position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:0;opacity:.55;background-image:radial-gradient(ellipse 55% 35% at 22% 28%,rgba(99,102,241,.2),transparent 70%),radial-gradient(ellipse 45% 38% at 78% 22%,rgba(56,189,248,.16),transparent 72%),radial-gradient(ellipse 50% 40% at 50% 88%,rgba(139,92,246,.14),transparent 75%),radial-gradient(ellipse 35% 28% at 12% 70%,rgba(14,165,233,.1),transparent 70%),linear-gradient(52deg,transparent 47%,rgba(56,189,248,.14) 49%,transparent 51%),linear-gradient(-28deg,transparent 48%,rgba(129,140,248,.1) 50%,transparent 52%),linear-gradient(118deg,transparent 44%,rgba(59,130,246,.08) 50%,transparent 56%);background-size:100% 100%,100% 100%,100% 100%,100% 100%,280px 180px,340px 220px,400px 200px;background-position:0 0,0 0,0 0,0 0,15% 20%,70% 55%,40% 80%;background-repeat:no-repeat}@media(prefers-reduced-motion:reduce){html[data-theme=nebula] body:before,html:not([data-theme]) body:before{opacity:.28}html[data-theme=nebula] body:after,html:not([data-theme]) body:after{opacity:.22}}html[data-theme=paper] body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:0;background-image:repeating-linear-gradient(transparent 0,transparent calc(1.5rem - 1px),rgba(15,23,42,.07) calc(1.5rem - 1px),rgba(15,23,42,.07) 1.5rem),linear-gradient(90deg,transparent 0,transparent calc(2.25rem - 2px),rgba(185,28,28,.32) calc(2.25rem - 2px),rgba(185,28,28,.32) calc(2.25rem - 1px),transparent calc(2.25rem - 1px));background-repeat:repeat,no-repeat}.site-header{position:sticky;top:0;z-index:100;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:var(--color-header-bg);border-bottom:1px solid var(--color-surface-border)}.site-header__inner{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:.75rem 1rem;padding:.75rem 0}@media(min-width:52rem){.site-header__inner{flex-wrap:nowrap;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;column-gap:.75rem}.site-header__actions{flex-wrap:nowrap;min-width:0;justify-self:end}.site-nav{flex-wrap:nowrap;justify-content:center;justify-self:center;min-width:0;gap:.35rem .5rem}.site-nav a{font-size:.82rem;white-space:nowrap}[data-theme=matrix] .site-nav a,[data-theme=terminal] .site-nav a{font-size:.74rem;letter-spacing:-.03em;padding:.1em 0}.site-logo{justify-self:start;white-space:nowrap}.theme-switcher{flex-wrap:nowrap;min-width:0}.theme-buttons{flex-wrap:nowrap}}.site-logo{font-weight:700;font-size:1.05rem;letter-spacing:.02em;color:var(--color-text)}.site-logo:hover{text-decoration:none;color:var(--color-accent)}.site-nav{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem 1rem}.site-nav a{font-size:.9rem;font-weight:500;color:var(--color-text-muted)}.site-nav a:hover{color:var(--color-accent)}.site-header__actions{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.social-links{display:flex;align-items:center;gap:.5rem}.social-links a{display:flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;border-radius:var(--radius-sm);color:var(--color-text-muted);border:1px solid var(--color-surface-border);background:var(--color-accent-dim)}.social-links a:hover{color:var(--color-accent);text-decoration:none;border-color:var(--color-accent)}.social-links svg{width:1.1rem;height:1.1rem}.theme-switcher{display:flex;align-items:center;gap:.35rem;flex-wrap:wrap}.theme-switcher__hint{font-size:.7rem;max-width:14rem;line-height:1.3;color:var(--color-text-muted);margin:0}@media(max-width:1279px){.theme-switcher__hint{display:none}}.theme-buttons{display:flex;gap:.25rem;flex-wrap:wrap}.theme-btn{font-family:var(--font-ui);font-size:.7rem;padding:.35rem .5rem;border-radius:var(--radius-sm);border:1px solid var(--color-surface-border);background:var(--color-surface);color:var(--color-text-muted);cursor:pointer;transition:border-color .2s,color .2s,background .2s;min-width:0;flex-shrink:1}[data-theme=matrix] .theme-btn,[data-theme=terminal] .theme-btn{font-size:.65rem;padding:.3rem .4rem;letter-spacing:-.02em}.theme-btn:hover{color:var(--color-accent);border-color:var(--color-accent)}.theme-btn[aria-pressed=true]{color:var(--color-bg);background:var(--color-accent);border-color:var(--color-accent)}[data-theme=paper] .theme-btn[aria-pressed=true]{color:#fff}.nav-toggle{display:none;padding:.4rem .6rem;font-size:.85rem;border:1px solid var(--color-surface-border);background:var(--color-surface);color:var(--color-text);border-radius:var(--radius-sm);cursor:pointer}@media(max-width:52rem){.nav-toggle{display:block}.site-nav{display:none;width:100%;flex-direction:column;align-items:flex-start;padding:.5rem 0}.site-nav.is-open{display:flex}.site-header__inner{flex-wrap:wrap}}.section{padding:clamp(3rem,8vw,5rem) 0;opacity:0;transform:translateY(1.5rem);transition:opacity .65s ease,transform .65s ease}.section.is-visible{opacity:1;transform:translateY(0)}@media(prefers-reduced-motion:reduce){.section{opacity:1;transform:none;transition:none}}.section__title{font-size:clamp(1.5rem,4vw,2rem);font-weight:700;margin:0 0 .5rem;letter-spacing:.02em;color:var(--color-text)}.section__lead{font-size:1rem;color:var(--color-text-muted);max-width:42rem;margin:0 0 1.5rem}.hero{padding:clamp(4rem,12vw,7rem) 0 clamp(3rem,8vw,5rem);text-align:center}.hero__heading{margin:0 0 1rem}.hero__name{font-size:clamp(2.35rem,6.5vw,3.55rem);font-weight:800;line-height:1.1;margin:0 0 calc(.35rem + 20px);background:linear-gradient(135deg,var(--color-text) 0%,var(--color-accent) 100%);-webkit-background-clip:text;background-clip:text;color:transparent}.hero__title{font-size:clamp(1.55rem,4.5vw,2.45rem);font-weight:800;line-height:1.15;margin:0;background:linear-gradient(135deg,var(--color-text) 0%,var(--color-accent) 100%);-webkit-background-clip:text;background-clip:text;color:transparent}:root .hero__name,[data-theme=nebula] .hero__name{background:linear-gradient(135deg,#f8fafc,#a5f3fc 42%,#c4b5fd);-webkit-background-clip:text;background-clip:text}:root .hero__title,[data-theme=nebula] .hero__title{background:linear-gradient(135deg,#bae6fd,#38bdf8 48%,#6366f1);-webkit-background-clip:text;background-clip:text}[data-theme=matrix] .hero__name{background:linear-gradient(135deg,#ecfdf5,#6ee7b7 45%,#34d399);-webkit-background-clip:text;background-clip:text}[data-theme=matrix] .hero__title{background:linear-gradient(135deg,#bbf7d0,#22c55e 55%,#15803d);-webkit-background-clip:text;background-clip:text}[data-theme=terminal] .hero__name{background:linear-gradient(135deg,#fffbeb,#fde68a 40%,#fbbf24);-webkit-background-clip:text;background-clip:text}[data-theme=terminal] .hero__title{background:linear-gradient(135deg,#fef3c7,#f59e0b,#b45309);-webkit-background-clip:text;background-clip:text}[data-theme=paper] .hero__name{background:linear-gradient(135deg,#020617,#0c4a6e 55%,#0369a1);-webkit-background-clip:text;background-clip:text}[data-theme=paper] .hero__title{background:linear-gradient(135deg,#1e293b,#0ea5e9,#0284c7);-webkit-background-clip:text;background-clip:text}.hero__subtitle{font-size:1.1rem;color:var(--color-text-muted);max-width:36rem;margin:0 auto 1.5rem}.hero__cta{display:inline-flex;flex-wrap:wrap;gap:.75rem;justify-content:center}.btn{display:inline-flex;align-items:center;justify-content:center;padding:.65rem 1.25rem;font-family:var(--font-ui);font-size:.9rem;font-weight:600;border-radius:var(--radius-md);border:1px solid var(--color-accent);background:var(--color-accent);color:var(--color-bg);cursor:pointer;transition:opacity .2s,transform .2s}.btn:hover{text-decoration:none;opacity:.92;transform:translateY(-1px)}.btn--ghost{background:transparent;color:var(--color-accent)}.projects-grid{display:grid;gap:1.25rem;grid-template-columns:repeat(auto-fill,minmax(min(100%,20rem),1fr))}.project-card{padding:1.25rem;border-radius:var(--radius-md);border:1px solid var(--color-surface-border);background:var(--color-surface);box-shadow:var(--shadow-soft);transition:border-color .25s,transform .25s}.project-card:hover{border-color:var(--color-accent);transform:translateY(-2px)}.project-card__title{font-size:1.05rem;margin:0 0 .5rem;color:var(--color-text)}.project-card__summary{font-size:.9rem;color:var(--color-text-muted);margin:0 0 .75rem}.project-card__tags{display:flex;flex-wrap:wrap;gap:.35rem;margin-bottom:.75rem}.tag{font-size:.7rem;padding:.2rem .45rem;border-radius:4px;background:var(--color-accent-dim);color:var(--color-accent);border:1px solid var(--color-surface-border)}.project-card__links{display:flex;flex-wrap:wrap;gap:.75rem;font-size:.85rem;align-items:baseline}.project-card__primary{font-weight:600;color:var(--color-accent);text-decoration:none}.project-card__primary:hover{text-decoration:underline;color:var(--color-link)}.badge-private{font-size:.65rem;text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-muted)}.project-card__invalid-url{font-size:.85rem;color:var(--color-text-muted)}.skills-list{display:flex;flex-wrap:wrap;gap:.5rem;list-style:none;padding:0;margin:0}.skills-list li{padding:.4rem .75rem;border-radius:var(--radius-sm);border:1px solid var(--color-surface-border);background:var(--color-surface);font-size:.85rem;color:var(--color-text-muted)}.github-chart-wrap{margin-top:.75rem;overflow-x:auto;border-radius:var(--radius-sm);padding:.5rem;background:var(--github-chart-surface, var(--color-surface));border:1px solid var(--github-chart-border, var(--color-surface-border));width:fit-content;max-width:100%}.github-chart-wrap a{display:inline-block;text-decoration:none}.github-chart-wrap a:focus-visible{outline:2px solid var(--color-accent);outline-offset:4px;border-radius:var(--radius-sm)}.github-chart-wrap img{max-width:100%;height:auto;display:block;border-radius:calc(var(--radius-sm) - 2px)}.github-activity-note{margin-top:.75rem;font-size:.88rem;color:var(--color-text-muted);line-height:1.5}.github-activity-note a{color:var(--color-link)}[data-theme=paper] .github-chart-wrap img{filter:none}[data-theme=nebula] .github-chart-wrap img{filter:invert(1) hue-rotate(180deg) brightness(1.06) contrast(1.05)}[data-theme=matrix] .github-chart-wrap img{filter:invert(1) hue-rotate(168deg) brightness(1.05) contrast(1.06) saturate(1.05)}[data-theme=terminal] .github-chart-wrap img{filter:invert(1) hue-rotate(188deg) brightness(1.04) contrast(1.05)}.section--map{overflow:hidden}.constellation-wrap{display:block}.constellation-canvas-wrap{position:relative;border-radius:var(--radius-md);border:1px solid var(--color-surface-border);background:var(--color-surface);overflow:hidden;min-height:min(56vh,448px)}#constellation-canvas{display:block;width:100%;height:auto;vertical-align:middle;cursor:crosshair}.contact-grid{display:grid;gap:1rem;max-width:32rem}.contact-item{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;border-radius:var(--radius-md);border:1px solid var(--color-surface-border);background:var(--color-surface)}.contact-item__label{flex:0 0 6.5rem;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-muted)}.contact-item a{font-weight:500}@media(max-width:30rem){.contact-item{flex-direction:column;align-items:flex-start}.contact-item__label{flex-basis:auto}}.site-footer{padding:2rem 0;border-top:1px solid var(--color-surface-border);margin-top:2rem}.site-footer__inner{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:1rem;font-size:.85rem;color:var(--color-text-muted)}.site-footer .social-links a{width:2rem;height:2rem}
