.hero.svelte-1q37ri0{min-height:100svh;padding-top:var(--space-3xl);padding-bottom:var(--space-xl);align-items:center;display:flex;position:relative}.hero-inner.svelte-1q37ri0{gap:var(--space-lg);flex-direction:column;display:flex}.eyebrow.svelte-1q37ri0{color:var(--color-muted);align-items:center;gap:var(--space-sm);display:inline-flex}.eyebrow.svelte-1q37ri0:before{content:"";background:var(--color-accent);width:32px;height:1px;display:inline-block}.title.svelte-1q37ri0{font-family:var(--font-display);font-size:var(--fs-display);letter-spacing:-.04em;font-weight:400;line-height:.95}.line.svelte-1q37ri0{display:block;overflow:hidden}.line.svelte-1q37ri0>span:where(.svelte-1q37ri0){display:inline-block}.em.svelte-1q37ri0{color:var(--color-accent);transform-origin:0;margin-left:.2em;font-style:italic;font-weight:400;display:inline-block}.subtitle.svelte-1q37ri0{max-width:52ch;font-size:var(--fs-h3);color:var(--color-fg-soft);font-weight:300;line-height:1.4}.cta.svelte-1q37ri0{gap:var(--space-md);margin-top:var(--space-md);flex-wrap:wrap;display:flex}.btn.svelte-1q37ri0{align-items:center;gap:var(--space-xs);padding:var(--space-sm) var(--space-md);font-family:var(--font-mono);font-size:var(--fs-mono);text-transform:uppercase;letter-spacing:var(--tracking-wide);border-radius:var(--radius);transition:background var(--dur-fast) var(--ease-soft), color var(--dur-fast) var(--ease-soft), border-color var(--dur-fast) var(--ease-soft), transform var(--dur-fast) var(--ease-soft);border:1px solid #0000;display:inline-flex}.btn.primary.svelte-1q37ri0{background:var(--color-accent);color:var(--color-bg)}.btn.primary.svelte-1q37ri0:hover{background:var(--color-accent-soft);transform:translateY(-2px)}.btn.ghost.svelte-1q37ri0{border-color:var(--color-line-strong);color:var(--color-fg-soft)}.btn.ghost.svelte-1q37ri0:hover{color:var(--color-fg);border-color:var(--color-fg);transform:translateY(-2px)}.scroll-hint.svelte-1q37ri0{bottom:var(--space-xl);left:var(--gutter);align-items:center;gap:var(--space-xs);color:var(--color-muted);font-size:var(--fs-mono);text-transform:uppercase;letter-spacing:var(--tracking-wide);display:inline-flex;position:absolute}.scroll-hint.svelte-1q37ri0 .dot:where(.svelte-1q37ri0){background:var(--color-accent);border-radius:50%;width:6px;height:6px;animation:2s ease-in-out infinite svelte-1q37ri0-pulse}@keyframes svelte-1q37ri0-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(.8)}}@media (width<=768px){.hero.svelte-1q37ri0{padding-top:var(--space-2xl)}.subtitle.svelte-1q37ri0{font-size:var(--fs-body)}.scroll-hint.svelte-1q37ri0{margin-top:var(--space-lg);position:static}}.about.svelte-7hpc9t{padding-block:var(--space-3xl)}.about-inner.svelte-7hpc9t{gap:var(--space-xl);grid-template-columns:200px 1fr;align-items:start;display:grid}.meta.svelte-7hpc9t{top:var(--space-3xl);position:sticky}.eyebrow.svelte-7hpc9t{color:var(--color-muted)}.meta-line.svelte-7hpc9t{background:var(--color-line-strong);width:64px;height:1px;margin-top:var(--space-md)}.title.svelte-7hpc9t{font-family:var(--font-display);font-size:var(--fs-h1);letter-spacing:-.03em;color:var(--color-fg);margin-bottom:var(--space-xl);max-width:16ch;clip-path:inset(var(--reveal,0%) 0 0 0);line-height:1}.body.svelte-7hpc9t{gap:var(--space-md);flex-direction:column;max-width:60ch;display:flex}.body.svelte-7hpc9t p:where(.svelte-7hpc9t){font-size:var(--fs-h3);color:var(--color-fg-soft);font-weight:300;line-height:1.4}.stats.svelte-7hpc9t{gap:var(--space-md);margin-top:var(--space-2xl);padding-top:var(--space-lg);border-top:1px solid var(--color-line);grid-template-columns:repeat(3,1fr);display:grid}.stat.svelte-7hpc9t{gap:var(--space-2xs);flex-direction:column;display:flex}.stat-value.svelte-7hpc9t{font-family:var(--font-display);color:var(--color-accent);font-size:clamp(2rem,5vw,4rem);font-style:italic;line-height:1}.stat-label.svelte-7hpc9t{color:var(--color-muted)}@media (width<=900px){.about-inner.svelte-7hpc9t{gap:var(--space-lg);grid-template-columns:1fr}.meta.svelte-7hpc9t{position:static}.stats.svelte-7hpc9t{gap:var(--space-md);grid-template-columns:1fr}}.marquee.svelte-1xpng2k{width:100%;padding-block:var(--space-md);border-block:1px solid var(--color-line);overflow:hidden}.marquee.no-border.svelte-1xpng2k{border-block:none}.marquee.no-padding.svelte-1xpng2k{padding-block:0}.marquee.accent.svelte-1xpng2k{border-color:var(--color-accent)}.track.svelte-1xpng2k{gap:var(--space-2xl);will-change:transform;width:max-content;display:flex}.item.svelte-1xpng2k{font-family:var(--font-mono);letter-spacing:var(--tracking-tight);text-transform:uppercase;white-space:nowrap;color:var(--color-fg-soft);font-size:clamp(2rem,5vw,4rem);display:inline-block}.marquee.accent.svelte-1xpng2k .item:where(.svelte-1xpng2k){color:var(--color-accent);font-style:italic;font-family:var(--font-display);text-transform:none}.skills.svelte-1f1pl16{padding-block:var(--space-3xl)}.header.svelte-1f1pl16{gap:var(--space-md);margin-bottom:var(--space-xl);flex-direction:column;display:flex}.eyebrow.svelte-1f1pl16{color:var(--color-muted)}.title.svelte-1f1pl16{font-family:var(--font-display);font-size:var(--fs-h1);letter-spacing:-.03em;max-width:14ch;line-height:1}.rows.svelte-1f1pl16{margin-block:var(--space-xl);flex-direction:column;display:flex}.categories.svelte-1f1pl16{gap:var(--space-lg);margin-top:var(--space-2xl);flex-direction:column;display:flex}.cat.svelte-1f1pl16{gap:var(--space-lg);padding-block:var(--space-md);border-top:1px solid var(--color-line);grid-template-columns:220px 1fr;align-items:center;display:grid}.cat-label.svelte-1f1pl16{color:var(--color-muted);padding-top:var(--space-2xs);align-self:start}.cat-viewport.svelte-1f1pl16{width:100%;-webkit-mask-image:linear-gradient(to right, transparent 0, #000 var(--space-md), #000 calc(100% - var(--space-md)), transparent 100%);mask-image:linear-gradient(to right, transparent 0, #000 var(--space-md), #000 calc(100% - var(--space-md)), transparent 100%);-webkit-mask-image:linear-gradient(to right, transparent 0, #000 var(--space-md), #000 calc(100% - var(--space-md)), transparent 100%);overflow:hidden}.chip-group.svelte-1f1pl16{gap:var(--space-xs);padding-right:var(--space-xs);flex:none;display:flex}.chip.svelte-1f1pl16{padding:var(--space-2xs) var(--space-sm);font-size:var(--fs-small);color:var(--color-fg-soft);border:1px solid var(--color-line-strong);border-radius:var(--radius);white-space:nowrap;transition:color var(--dur-fast) var(--ease-soft), border-color var(--dur-fast) var(--ease-soft), background var(--dur-fast) var(--ease-soft);background:0 0;align-items:center;display:inline-flex}.chip.svelte-1f1pl16:hover{color:var(--color-bg);background:var(--color-accent);border-color:var(--color-accent)}@media (width<=768px){.cat.svelte-1f1pl16{gap:var(--space-sm);grid-template-columns:1fr}}.projects.svelte-1tes396{padding-block:var(--space-3xl)}.header.svelte-1tes396{gap:var(--space-md);margin-bottom:var(--space-2xl);flex-direction:column;display:flex}.eyebrow.svelte-1tes396{color:var(--color-muted)}.title.svelte-1tes396{font-family:var(--font-display);font-size:var(--fs-h1);letter-spacing:-.03em;max-width:14ch;line-height:1}.list.svelte-1tes396{border-top:1px solid var(--color-line)}.project-row.svelte-1tes396{border-bottom:1px solid var(--color-line)}.project-link.svelte-1tes396{gap:var(--space-lg);padding-block:var(--space-lg);transition:padding var(--dur-fast) var(--ease-soft);grid-template-columns:80px 1fr auto;align-items:start;display:grid}.project-link.svelte-1tes396:hover{padding-inline-start:var(--space-md)}.num.svelte-1tes396{color:var(--color-muted);padding-top:var(--space-2xs)}.content.svelte-1tes396{gap:var(--space-sm);flex-direction:column;display:flex}.project-title.svelte-1tes396{font-family:var(--font-display);font-size:var(--fs-h2);letter-spacing:-.02em;color:var(--color-fg);align-items:baseline;gap:var(--space-sm);transition:color var(--dur-fast) var(--ease-soft);line-height:1.1;display:inline-flex}.project-link.svelte-1tes396:hover .project-title:where(.svelte-1tes396){color:var(--color-accent)}.arrow.svelte-1tes396{font-family:var(--font-mono);color:var(--color-accent);transition:transform var(--dur-fast) var(--ease-soft);font-size:1.25rem}.project-link.svelte-1tes396:hover .arrow:where(.svelte-1tes396){transform:translate(4px,-4px)}.project-desc.svelte-1tes396{max-width:60ch;color:var(--color-fg-soft);font-weight:300}.tags.svelte-1tes396{gap:var(--space-xs);margin-top:var(--space-xs);flex-wrap:wrap;display:flex}.tag.svelte-1tes396{padding:2px var(--space-xs);color:var(--color-muted);border:1px solid var(--color-line);border-radius:var(--radius);font-size:.75rem}.year.svelte-1tes396{color:var(--color-muted);padding-top:var(--space-2xs)}.more.svelte-1tes396{margin-top:var(--space-xl);text-align:right}.more-link.svelte-1tes396{gap:var(--space-xs);padding-bottom:var(--space-2xs);border-bottom:1px solid var(--color-line-strong);color:var(--color-fg-soft);font-family:var(--font-mono);font-size:var(--fs-mono);text-transform:uppercase;letter-spacing:var(--tracking-wide);transition:color var(--dur-fast) var(--ease-soft), border-color var(--dur-fast) var(--ease-soft);display:inline-flex}.more-link.svelte-1tes396:hover{color:var(--color-accent);border-color:var(--color-accent)}@media (width<=768px){.project-link.svelte-1tes396{gap:var(--space-md);grid-template-columns:40px 1fr}.year.svelte-1tes396{grid-column:2;padding-top:0}.title.svelte-1tes396{max-width:100%}}.contact.svelte-wt4tt0{padding-block:var(--space-3xl);align-items:center;min-height:80vh;display:flex}.contact.svelte-wt4tt0>.container:where(.svelte-wt4tt0){width:100%}.header.svelte-wt4tt0{gap:var(--space-md);margin-bottom:var(--space-2xl);flex-direction:column;max-width:800px;display:flex}.eyebrow.svelte-wt4tt0{color:var(--color-muted)}.title.svelte-wt4tt0{font-family:var(--font-display);font-size:var(--fs-h1);letter-spacing:-.03em;color:var(--color-fg);line-height:1}.body.svelte-wt4tt0{max-width:56ch;font-size:var(--fs-h3);color:var(--color-fg-soft);font-weight:300;line-height:1.4}.email-wrap.svelte-wt4tt0{margin-block:var(--space-2xl);padding-block:var(--space-xl);border-block:1px solid var(--color-line);text-align:center;position:relative}.email.svelte-wt4tt0{align-items:center;gap:var(--space-md);font-family:var(--font-display);color:var(--color-fg);letter-spacing:-.02em;transition:color var(--dur-fast) var(--ease-soft);will-change:transform;text-align:center;font-size:clamp(1.75rem,5vw,3.5rem);font-style:italic;display:inline-flex}.email.svelte-wt4tt0:hover{color:var(--color-accent)}.email-text.svelte-wt4tt0{position:relative}.email-text.svelte-wt4tt0:after{content:"";transform-origin:100%;height:1px;transition:transform var(--dur) var(--ease);background:currentColor;position:absolute;bottom:-4px;left:0;right:0;transform:scaleX(0)}.email.svelte-wt4tt0:hover .email-text:where(.svelte-wt4tt0):after{transform-origin:0;transform:scaleX(1)}.email-arrow.svelte-wt4tt0{font-family:var(--font-mono);color:var(--color-accent);transition:transform var(--dur-fast) var(--ease-soft);font-size:1.5rem}.email.svelte-wt4tt0:hover .email-arrow:where(.svelte-wt4tt0){transform:translate(4px,-4px)}.email-meta.svelte-wt4tt0{text-align:center;color:var(--color-muted);margin-top:var(--space-md);display:block}.socials-wrap.svelte-wt4tt0{margin-top:var(--space-2xl)}.socials-label.svelte-wt4tt0{color:var(--color-muted);margin-bottom:var(--space-md)}.socials.svelte-wt4tt0{grid-template-columns:repeat(2,1fr);gap:0;display:grid}.socials.svelte-wt4tt0 li:where(.svelte-wt4tt0){border-top:1px solid var(--color-line)}.social-link.svelte-wt4tt0{gap:var(--space-md);padding:var(--space-md) 0;transition:padding var(--dur-fast) var(--ease-soft);grid-template-columns:auto 1fr auto;align-items:center;display:grid}.social-link.svelte-wt4tt0:hover{padding-inline-start:var(--space-xs)}.social-icon.svelte-wt4tt0{color:var(--color-muted);transition:color var(--dur-fast) var(--ease-soft);font-size:.5rem}.social-link.svelte-wt4tt0:hover .social-icon:where(.svelte-wt4tt0){color:var(--color-accent)}.social-label.svelte-wt4tt0{font-family:var(--font-display);font-size:var(--fs-h3);color:var(--color-fg)}.social-arrow.svelte-wt4tt0{font-family:var(--font-mono);color:var(--color-muted);transition:color var(--dur-fast) var(--ease-soft), transform var(--dur-fast) var(--ease-soft)}.social-link.svelte-wt4tt0:hover .social-arrow:where(.svelte-wt4tt0){color:var(--color-accent);transform:translate(3px,-3px)}@media (width<=600px){.socials.svelte-wt4tt0{grid-template-columns:1fr}}
