.theme-toggle[data-v-f9bcb835]{display:inline-flex;align-items:center;justify-content:center;padding:4px;color:var(--color-muted);transition:color .2s ease,opacity .2s ease}.theme-toggle[data-v-f9bcb835]:hover{color:var(--color-text);opacity:.6}.site-header[data-v-8c89d6f9]{padding:var(--spacing-md) 0}.header-row[data-v-8c89d6f9]{display:flex;align-items:center;justify-content:space-between}.logo[data-v-8c89d6f9]{font-size:var(--size-sm);font-family:var(--font-mono);color:var(--color-text);letter-spacing:.05em;text-transform:lowercase}.logo[data-v-8c89d6f9]:hover{opacity:.6}.nav[data-v-8c89d6f9]{display:flex;align-items:center;gap:var(--spacing-md)}.nav-link[data-v-8c89d6f9]{font-size:var(--size-sm);color:var(--color-muted);transition:color .2s ease}.nav-link[data-v-8c89d6f9]:hover{color:var(--color-text);opacity:1}.nav-link.active[data-v-8c89d6f9]{color:var(--color-text)}@media(max-width:480px){.nav[data-v-8c89d6f9]{gap:var(--spacing-sm)}.nav-link[data-v-8c89d6f9]{font-size:var(--size-xs)}}.site-footer[data-v-2e3ce0b3]{padding:var(--spacing-lg) 0}.footer-inner[data-v-2e3ce0b3]{display:flex;flex-direction:column;align-items:center;gap:var(--spacing-sm)}.footer-note[data-v-2e3ce0b3]{font-size:var(--size-sm);color:var(--color-muted)}.footer-links[data-v-2e3ce0b3]{display:flex;gap:var(--spacing)}.footer-links a[data-v-2e3ce0b3]{font-size:var(--size-sm);color:var(--color-muted)}.footer-links a[data-v-2e3ce0b3]:hover{color:var(--color-text)}.footer-copy[data-v-2e3ce0b3]{font-size:var(--size-xs);color:var(--color-light-stone)}.app[data-v-b92819ce]{min-height:100vh;display:flex;flex-direction:column}.main[data-v-b92819ce]{flex:1}.home-page[data-v-f53233e1]{padding-top:var(--spacing-xl);padding-bottom:var(--spacing-xl)}.hero[data-v-f53233e1]{margin-bottom:var(--spacing-lg)}.hero-name[data-v-f53233e1]{font-family:var(--font-serif);font-size:var(--size-3xl);font-weight:400;line-height:1.15;letter-spacing:-.03em;margin-bottom:var(--spacing-md)}.hero-tagline[data-v-f53233e1]{font-size:var(--size-md);color:var(--color-muted);line-height:1.6;margin-bottom:var(--spacing-sm)}.hero-alias[data-v-f53233e1]{font-family:var(--font-mono);font-size:var(--size-sm);color:var(--color-light-stone)}.intro[data-v-f53233e1]{margin:0}.intro-text[data-v-f53233e1]{font-size:var(--size-base);color:var(--color-text-body);line-height:1.8;max-width:480px}.selected-work[data-v-f53233e1]{padding-top:0}.work-list[data-v-f53233e1]{display:flex;flex-direction:column;gap:var(--spacing-sm);margin-bottom:var(--spacing)}.work-item[data-v-f53233e1]{display:flex;align-items:baseline;gap:.75rem;color:var(--color-text);font-size:var(--size-base);transition:opacity .2s ease}.work-item[data-v-f53233e1]:hover{opacity:.6}.work-name[data-v-f53233e1]{font-weight:500;white-space:nowrap}.work-dash[data-v-f53233e1]{color:var(--color-light-stone);flex-shrink:0}.work-desc[data-v-f53233e1]{color:var(--color-muted)}.more-link[data-v-f53233e1]{font-size:var(--size-sm);color:var(--color-muted)}.more-link[data-v-f53233e1]:hover{color:var(--color-text)}@media(max-width:640px){.hero-name[data-v-f53233e1]{font-size:var(--size-2xl)}.hero-tagline[data-v-f53233e1]{font-size:var(--size-base)}.work-item[data-v-f53233e1]{flex-direction:column;gap:.125rem}.work-dash[data-v-f53233e1]{display:none}}.project-card[data-v-8afaa6b0]{padding:var(--spacing-md) 0}.project-card+.project-card[data-v-8afaa6b0]{border-top:1px solid var(--color-border)}.project-link[data-v-8afaa6b0]{display:block;color:inherit}.project-link[data-v-8afaa6b0]:hover{opacity:1;color:inherit}.project-name[data-v-8afaa6b0]{font-size:var(--size-md);font-weight:500;color:var(--color-text);margin-bottom:.25rem;transition:opacity .2s ease}.project-link:hover .project-name[data-v-8afaa6b0]{opacity:.7}.project-desc[data-v-8afaa6b0]{font-size:var(--size-sm);color:var(--color-muted);margin-bottom:.75rem;line-height:1.6}.project-meta[data-v-8afaa6b0]{display:flex;align-items:center;gap:var(--spacing-sm);flex-wrap:wrap}.project-stars[data-v-8afaa6b0]{font-size:var(--size-xs);color:var(--color-muted);font-family:var(--font-mono)}.project-tech[data-v-8afaa6b0]{display:flex;flex-wrap:wrap;gap:.375rem}.tech-tag[data-v-8afaa6b0]{font-size:var(--size-xs);font-family:var(--font-mono);color:var(--color-muted);background:var(--color-tag-bg);padding:.125rem .4rem;border-radius:1px;letter-spacing:.02em}.projects-page[data-v-bd520ebe]{padding-top:var(--spacing-lg);padding-bottom:var(--spacing-xl)}.category-section+.category-section[data-v-bd520ebe]{margin-top:var(--spacing-lg)}.category-title[data-v-bd520ebe]{font-family:var(--font-serif);font-size:var(--size-lg);font-weight:400;color:var(--color-text);margin-bottom:var(--spacing-sm);padding-bottom:var(--spacing-sm);border-bottom:1px solid var(--color-border)}.project-list[data-v-bd520ebe]{display:flex;flex-direction:column}.about-page[data-v-160ccd56]{padding-top:var(--spacing-lg);padding-bottom:var(--spacing-xl)}.bio[data-v-160ccd56]{max-width:520px}.bio p[data-v-160ccd56]{font-size:var(--size-md);line-height:1.8;color:var(--color-text-body);margin-bottom:var(--spacing)}.skills-section[data-v-160ccd56]{margin-top:0}.skills-heading[data-v-160ccd56]{font-family:var(--font-serif);font-size:var(--size-lg);font-weight:400;margin-bottom:var(--spacing)}.skills-list[data-v-160ccd56]{display:grid;grid-template-columns:auto 1fr;gap:.375rem var(--spacing);max-width:520px}.skill-group[data-v-160ccd56]{font-family:var(--font-mono);font-size:var(--size-xs);text-transform:uppercase;letter-spacing:.08em;color:var(--color-muted);padding-top:.2em}.skill-items[data-v-160ccd56]{font-size:var(--size-sm);color:var(--color-text-body)}@media(max-width:640px){.skills-list[data-v-160ccd56]{grid-template-columns:1fr;gap:var(--spacing-xs) 0}.bio p[data-v-160ccd56]{font-size:var(--size-base)}}.contact-page[data-v-93128004]{padding-top:var(--spacing-lg);padding-bottom:var(--spacing-xl)}.contact-list[data-v-93128004]{display:flex;flex-direction:column;margin-bottom:var(--spacing-lg)}.contact-item[data-v-93128004]{display:flex;align-items:baseline;gap:var(--spacing);padding:var(--spacing-sm) 0;border-bottom:1px solid var(--color-border);color:inherit;transition:opacity .2s ease}.contact-item[data-v-93128004]:last-child{border-bottom:none}.contact-item[data-v-93128004]:hover{opacity:.7}.contact-label[data-v-93128004]{font-family:var(--font-mono);font-size:var(--size-xs);text-transform:uppercase;letter-spacing:.08em;color:var(--color-muted);min-width:5rem}.contact-value[data-v-93128004]{font-size:var(--size-sm);font-family:var(--font-mono);color:var(--color-text)}.contact-note[data-v-93128004]{font-size:var(--size-sm);color:var(--color-light-stone)}@media(max-width:640px){.contact-item[data-v-93128004]{flex-direction:column;gap:.25rem}}:root{--color-ink: #1a1a1a;--color-paper: #f7f6f4;--color-stone: #8c8c8c;--color-light-stone: #c8c6c2;--color-accent: #1a1a1a;--color-bg: var(--color-paper);--color-text: var(--color-ink);--color-text-body: #3d3d3d;--color-muted: var(--color-stone);--color-accent-soft: var(--color-light-stone);--color-tag-bg: #edecea;--color-tag-text: #555;--color-border: #e5e3e0;--font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-serif: "EB Garamond", "Noto Serif", Georgia, serif;--font-mono: "JetBrains Mono", "Fira Code", "SF Mono", monospace;--size-xs: .75rem;--size-sm: .875rem;--size-base: 1rem;--size-md: 1.125rem;--size-lg: 1.35rem;--size-xl: 1.75rem;--size-2xl: 2.5rem;--size-3xl: 3.5rem;--max-width: 640px;--spacing-xs: .5rem;--spacing-sm: 1rem;--spacing-md: 1.5rem;--spacing: 2rem;--spacing-lg: 4rem;--spacing-xl: 6rem}[data-theme=dark]{--color-paper: #111111;--color-ink: #e8e6e3;--color-text: #e8e6e3;--color-text-body: #b8b5b0;--color-muted: #706d68;--color-stone: #706d68;--color-light-stone: #333;--color-accent: #e8e6e3;--color-tag-bg: #1e1e1c;--color-tag-text: #999;--color-border: #252523;--color-bg: #111111}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:var(--font-sans);font-size:var(--size-base);line-height:1.75;color:var(--color-text-body);background-color:var(--color-bg);min-height:100vh;letter-spacing:.01em}h1,h2,h3,h4,h5,h6{color:var(--color-text);font-weight:500;line-height:1.3;letter-spacing:-.02em}h1{font-size:var(--size-2xl)}h2{font-size:var(--size-xl)}h3{font-size:var(--size-lg)}p{margin-bottom:var(--spacing-sm)}p:last-child{margin-bottom:0}a{color:var(--color-text);text-decoration:none;transition:opacity .2s ease}a:hover{opacity:.6}a:focus-visible{outline:1px solid var(--color-text);outline-offset:3px}button{font-family:inherit;font-size:inherit;color:inherit;background:none;border:none;cursor:pointer}button:focus-visible{outline:1px solid var(--color-text);outline-offset:3px}ul,ol{list-style:none}img{max-width:100%;height:auto;display:block}code{font-family:var(--font-mono);font-size:.875em;background:var(--color-tag-bg);padding:.15em .4em;border-radius:2px;color:var(--color-text)}hr{border:none;border-top:1px solid var(--color-border);margin:var(--spacing) 0}.container{max-width:var(--max-width);margin:0 auto;padding:0 var(--spacing)}.page{padding:var(--spacing-lg) 0}.section-label{font-family:var(--font-mono);font-size:var(--size-xs);text-transform:uppercase;letter-spacing:.1em;color:var(--color-muted);margin-bottom:var(--spacing-sm)}.page-title{font-family:var(--font-serif);font-size:var(--size-2xl);font-weight:400;letter-spacing:-.02em;margin-bottom:var(--spacing-lg);color:var(--color-text)}.divider{width:100%;height:1px;background:var(--color-border);border:none;margin:var(--spacing-lg) 0}@media(max-width:640px){:root{--size-2xl: 2rem;--size-xl: 1.5rem;--spacing-lg: 3rem;--spacing-xl: 4rem}.container{padding:0 var(--spacing-sm)}}
