*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--color-bg: #09090b;--color-surface: rgba(255, 255, 255, .03);--color-surface-hover: rgba(255, 255, 255, .055);--color-border: rgba(255, 255, 255, .08);--color-border-hover: rgba(255, 255, 255, .16);--color-text: #fafafa;--color-text-muted: #a1a1aa;--color-text-subtle: #52525b;--color-accent: #34d399;--color-accent-hover: #6ee7b7;--color-accent-muted: rgba(52, 211, 153, .15);--font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono: "JetBrains Mono", "Fira Code", "SF Mono", Consolas, monospace;--text-xs: .75rem;--text-sm: .8125rem;--text-base: .9375rem;--text-lg: 1.125rem;--text-xl: 1.25rem;--text-2xl: 1.5rem;--text-3xl: 2rem;--text-4xl: 2.75rem;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-8: 2rem;--space-10: 2.5rem;--space-12: 3rem;--space-16: 4rem;--space-20: 5rem;--transition-fast: .15s ease;--transition-base: .2s ease;--transition-slow: .35s ease;--radius-sm: 6px;--radius-md: 10px;--z-canvas: 0;--z-overlay: 10;--z-header: 20;--z-skip: 100}html{font-size:16px;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{font-family:var(--font-sans);font-size:var(--text-base);line-height:1.6;color:var(--color-text);background-color:var(--color-bg);overflow-x:hidden;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{color:inherit;text-decoration:none}a:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}h1,h2,h3,h4,h5,h6{font-weight:500;line-height:1.2;letter-spacing:-.02em}ul,ol{list-style:none}img{max-width:100%;height:auto}@keyframes blink{0%,50%{opacity:1}51%,to{opacity:0}}.typing,.typed{display:inline}.prompt-line~*{opacity:0;transform:translateY(8px);transition:opacity .5s ease,transform .5s ease}.content-ready .prompt-line~*{opacity:1;transform:translateY(0)}.hero .prompt-line~.hero-title,.hero .prompt-line~.hero-role,.hero .prompt-line~.hero-bio{opacity:0;transform:translateY(8px);transition:opacity .5s ease,transform .5s ease}.hero.content-ready .hero-title{opacity:1;transform:translateY(0);transition-delay:.05s}.hero.content-ready .hero-role{opacity:1;transform:translateY(0);transition-delay:.12s}.hero.content-ready .hero-bio{opacity:1;transform:translateY(0);transition-delay:.2s}.work .prompt-line~.project-grid,.work .prompt-line~.view-all{opacity:0;transform:translateY(8px);transition:opacity .5s ease,transform .5s ease}.work.content-ready .project-grid{opacity:1;transform:translateY(0);transition-delay:.05s}.work.content-ready .view-all{opacity:1;transform:translateY(0);transition-delay:.12s}.gl-canvas{position:fixed;top:0;right:0;bottom:0;left:0;width:100%;height:100%;z-index:var(--z-canvas);display:block}.overlay{position:relative;z-index:var(--z-overlay);min-height:100vh;display:flex;flex-direction:column;pointer-events:none}.overlay>*{pointer-events:auto}.skip-link{position:fixed;top:-100px;left:var(--space-4);z-index:var(--z-skip);padding:var(--space-2) var(--space-4);background:var(--color-accent);color:var(--color-bg);font-weight:600;border-radius:var(--radius-sm);transition:top var(--transition-fast)}.skip-link:focus{top:var(--space-4)}.header{position:fixed;top:0;left:0;right:0;z-index:var(--z-header);padding:var(--space-5) var(--space-8);background:linear-gradient(to bottom,#09090beb,#09090b00)}.nav{display:flex;justify-content:flex-end;align-items:center;max-width:960px;margin:0 auto}.nav-links{display:flex;gap:var(--space-6)}.nav-links li{display:flex}.nav-links a[data-route=home]{min-width:48px}.nav-links a[data-route=projects]{min-width:64px}.nav-links a[data-route=about]{min-width:48px}.nav-links a[data-route=contact]{min-width:60px}.nav-links a{display:inline-flex;justify-content:center;align-items:center;font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-text-subtle);letter-spacing:.04em;padding:var(--space-2) 0;transition:color var(--transition-base);cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.nav-links a:hover,.nav-links a.active{color:var(--color-text)}.main{flex:1;display:flex;flex-direction:column;padding-top:72px}.content{max-width:720px;width:100%;margin:0 auto;padding:var(--space-8) var(--space-6)}.prompt-line{display:inline-flex;align-items:center;gap:var(--space-2);font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-text-subtle);margin-bottom:var(--space-6);min-height:1.2em}.prompt{color:var(--color-accent);opacity:.5}.command{color:var(--color-text-muted)}.hero{padding:var(--space-16) 0 var(--space-12);min-height:300px}.hero .prompt-line{margin-bottom:var(--space-4)}.hero-title{font-size:var(--text-4xl);font-weight:600;letter-spacing:-.035em;line-height:1.08;margin-bottom:var(--space-3);min-height:1.1em}.hero-role{font-family:var(--font-mono);font-size:var(--text-sm);color:var(--color-accent);margin-bottom:var(--space-5);min-height:1.4em}.hero-bio{font-size:var(--text-sm);color:var(--color-text-muted);max-width:48ch;line-height:1.75;min-height:3.5em}.work{padding:var(--space-4) 0 var(--space-16)}.work .prompt-line{margin-bottom:var(--space-6)}.project-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-5);margin-bottom:var(--space-6)}.project-card{position:relative;display:flex;flex-direction:column;padding:var(--space-6);border:1px solid var(--color-border);border-radius:var(--radius-md);transition:border-color var(--transition-base),transform var(--transition-base),background-color var(--transition-base);color:inherit}.project-card:hover{border-color:var(--color-border-hover);background-color:var(--color-surface);transform:translateY(-2px)}.project-card:after{content:"↗";position:absolute;top:var(--space-5);right:var(--space-5);font-size:var(--text-sm);color:var(--color-text-subtle);transition:color var(--transition-base),transform var(--transition-base)}.project-card:hover:after{color:var(--color-accent);transform:translate(2px,-2px)}.project-number{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-text-subtle);margin-bottom:var(--space-5)}.project-name{font-size:var(--text-base);font-weight:500;margin-bottom:var(--space-2)}.project-desc{font-size:var(--text-sm);color:var(--color-text-muted);line-height:1.65;margin-bottom:var(--space-5);flex:1}.project-tags{display:flex;flex-wrap:wrap;gap:var(--space-2)}.tag{font-family:var(--font-mono);font-size:.6875rem;color:var(--color-text-muted);padding:3px var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius-sm)}.view-all{display:inline-block;font-family:var(--font-mono);font-size:var(--text-sm);color:var(--color-text-subtle);transition:color var(--transition-base)}.view-all:hover{color:var(--color-text)}.page{padding:var(--space-12) 0 var(--space-16)}.page-title{font-size:var(--text-2xl);font-weight:500;letter-spacing:-.02em;margin-bottom:var(--space-8)}.project-list{display:flex;flex-direction:column;gap:var(--space-10)}.project-entry{padding:var(--space-8);border:1px solid var(--color-border);border-radius:var(--radius-md)}.project-entry-header{display:flex;align-items:baseline;gap:var(--space-4);margin-bottom:var(--space-4)}.project-index{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-text-subtle)}.project-entry-title{font-size:var(--text-xl);font-weight:500}.project-entry-summary{font-size:var(--text-sm);color:var(--color-text-muted);margin-bottom:var(--space-6);padding-bottom:var(--space-6);border-bottom:1px solid var(--color-border);line-height:1.7}.project-entry-body{margin-bottom:var(--space-6)}.project-description{font-size:var(--text-sm);color:var(--color-text-muted);line-height:1.75;margin-bottom:var(--space-6)}.project-features h4{font-size:var(--text-sm);font-weight:500;margin-bottom:var(--space-3);color:var(--color-text)}.project-features ul{padding-left:var(--space-5);margin-bottom:var(--space-6)}.project-features li{position:relative;font-size:var(--text-sm);color:var(--color-text-muted);line-height:1.7;margin-bottom:var(--space-2)}.project-features li:before{content:"—";position:absolute;left:calc(-1 * var(--space-5));color:var(--color-text-subtle)}.project-meta{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-bottom:var(--space-5)}.project-outcome{font-size:var(--text-sm);color:var(--color-accent);margin-bottom:var(--space-6);opacity:.85}.project-actions{display:flex;gap:var(--space-3)}.about-page{max-width:640px}.about-header{margin-bottom:var(--space-10);padding-bottom:var(--space-8);border-bottom:1px solid var(--color-border)}.about-name{font-size:var(--text-3xl);font-weight:600;letter-spacing:-.03em;margin-bottom:var(--space-2)}.about-role{font-family:var(--font-mono);font-size:var(--text-sm);color:var(--color-accent)}.about-body{display:flex;flex-direction:column;gap:var(--space-10)}.about-section h2{font-size:var(--text-xs);font-weight:500;color:var(--color-text-subtle);text-transform:uppercase;letter-spacing:.1em;margin-bottom:var(--space-4)}.about-section p{font-size:var(--text-sm);color:var(--color-text-muted);line-height:1.8}.about-section p+p{margin-top:var(--space-3)}.skills-grid{display:flex;flex-wrap:wrap;gap:var(--space-2)}.skill{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-text-muted);padding:var(--space-1) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-sm);transition:border-color var(--transition-fast),color var(--transition-fast)}.skill:hover{border-color:var(--color-border-hover);color:var(--color-text)}.connect-links{display:flex;flex-direction:column;gap:var(--space-1)}.connect-link{display:flex;align-items:center;gap:var(--space-4);padding:var(--space-3) 0;font-size:var(--text-sm);color:var(--color-text-muted);transition:color var(--transition-fast)}.connect-link:hover{color:var(--color-text)}.connect-link:hover .connect-value{color:var(--color-accent)}.connect-label{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-text-subtle);min-width:72px;text-transform:uppercase;letter-spacing:.06em}.connect-value{transition:color var(--transition-fast)}.contact-grid{display:grid;gap:var(--space-4)}@media (min-width: 640px){.contact-grid{grid-template-columns:repeat(3,1fr)}}.contact-item{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-5);border:1px solid var(--color-border);border-radius:var(--radius-md);transition:border-color var(--transition-base),background-color var(--transition-base);color:inherit}.contact-item:hover{border-color:var(--color-border-hover);background-color:var(--color-surface)}.contact-type{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-text-subtle);text-transform:uppercase;letter-spacing:.08em}.contact-value{font-size:var(--text-sm);color:var(--color-text);word-break:break-all}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-text-muted);border:1px solid var(--color-border);border-radius:var(--radius-sm);transition:all var(--transition-base);cursor:pointer;text-decoration:none}.btn:hover{border-color:var(--color-border-hover);color:var(--color-text)}.btn-primary{background:var(--color-accent-muted);border-color:#34d39940;color:var(--color-accent)}.btn-primary:hover{background:#34d39938;color:var(--color-accent-hover)}.btn-disabled{opacity:.3;cursor:not-allowed;pointer-events:none}.footer{padding:var(--space-8);text-align:center;background:linear-gradient(to top,#09090beb,#09090b00);margin-top:auto}.footer-links{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--space-3)}.footer-links .btn{min-width:120px}.scrambling{color:var(--color-accent)}.nav-links a:hover{text-shadow:0 0 16px rgba(52,211,153,.2)}body.no-webgl{background:var(--color-bg)}body.no-webgl .overlay{pointer-events:auto}.webgl-notice{margin-top:var(--space-6);padding:var(--space-4);font-size:var(--text-sm);color:var(--color-text-muted);border:1px solid var(--color-border);border-radius:var(--radius-md)}@media (max-width: 768px){.header{padding:var(--space-4) var(--space-4)}.nav-links{gap:var(--space-4)}.nav-links a{font-size:.7rem}.content{padding:var(--space-6) var(--space-4)}.hero{padding:var(--space-10) 0 var(--space-8)}.hero-title{font-size:var(--text-2xl)}.project-grid{grid-template-columns:1fr}.project-entry{padding:var(--space-5)}.footer-links{flex-direction:column;align-items:center}.footer-links .btn{width:100%;max-width:240px}}@media (max-width: 480px){.nav-links{gap:var(--space-3)}.nav-links a{font-size:.65rem;padding:var(--space-1) 0}.hero-title{font-size:var(--text-xl)}}
