:root{--font-family-sans:-apple-system, system-ui, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";--font-family-mono:"SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace;--color-ink-strong:#211922;--color-ink-base:#211922;--color-ink-muted:#62625b;--color-ink-subtle:#91918c;--color-accent:#e60023;--color-accent-soft:#e5e5e0;--color-surface-canvas:#fff;--color-surface-panel:#fff;--color-surface-soft:#e5e5e0;--color-surface-dark:#33332e;--color-border-strong:#c8c8c1;--color-border-subtle:#e5e5e0;--color-border-soft:#f6f6f3;--color-focus:#435ee5;--space-1:.25rem;--space-2:.5rem;--space-3:1rem;--space-4:1.5rem;--space-5:2rem;--space-6:3rem;--space-8:5rem;--space-10:6.25rem;--radius-sm:12px;--radius-md:16px;--radius-lg:20px;--radius-xl:28px;--radius-hero:40px;--border-thin:1px;--layout-max-width:72rem;--content-measure:46rem;--font-size-label:.75rem;--font-size-body:1rem;--font-size-section:1.75rem;--font-size-title:clamp(2.75rem, 7vw, 4.375rem);--font-size-heading-1:clamp(1.7rem, 3vw, 2.3rem);--font-size-heading-2:1.5rem;--font-size-heading-3:1.1875rem;color:var(--color-ink-base);background:var(--color-surface-canvas);font-family:var(--font-family-sans);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--color-surface-canvas);min-width:20rem;margin:0}#app{min-height:100vh}body,button,input,textarea,select{font-family:var(--font-family-sans)}a{color:inherit;-webkit-text-decoration-color:var(--color-border-strong);text-decoration-color:var(--color-border-strong);text-decoration-thickness:var(--border-thin);text-underline-offset:.2em}a:hover{-webkit-text-decoration-color:var(--color-accent);text-decoration-color:var(--color-accent)}h1,h2,h3,h4,h5,h6{color:var(--color-ink-strong);margin:0;font-weight:700;line-height:1.2}p,ul,ol,dl,figure,pre{margin:0}img{max-width:100%}.app-shell{max-width:var(--layout-max-width);padding:var(--space-6) var(--space-4) var(--space-10);margin:0 auto}.site-chrome{justify-content:space-between;align-items:end;gap:var(--space-3);padding-bottom:var(--space-4);border-bottom:var(--border-thin) solid var(--color-border-subtle);flex-wrap:wrap;display:flex}.site-brand{flex-direction:column;gap:2px;display:flex}.site-brand__name{color:var(--color-ink-strong);letter-spacing:-.01em;font-size:1.125rem;font-weight:700;text-decoration:none}.site-brand__label{color:var(--color-ink-subtle);font-size:var(--font-size-label);letter-spacing:.04em}.site-github{color:var(--color-ink-subtle);transition:color .15s}.site-github:hover{color:var(--color-ink-strong)}.section-nav{padding:var(--space-4) 0;flex-wrap:wrap;gap:8px;display:flex}.section-nav__pill{border-radius:var(--radius-md);background:var(--color-surface-soft);color:var(--color-ink-strong);align-items:center;padding:8px 16px;font-size:.875rem;font-weight:500;text-decoration:none;transition:background-color .15s;display:inline-flex}.section-nav__pill:hover{background:var(--color-border-strong)}.section-group{padding:var(--space-6) 0 var(--space-5);border-top:var(--border-thin) solid var(--color-border-subtle)}.section-group:first-of-type{padding-top:var(--space-4);border-top:none}.section-group__title{font-size:var(--font-size-section);letter-spacing:-.05em;margin-bottom:var(--space-4);font-weight:700}.section-group__title a{color:inherit;text-decoration:none}.section-group__title a:hover{text-decoration:underline;-webkit-text-decoration-color:var(--color-accent);text-decoration-color:var(--color-accent);text-underline-offset:.15em}.section-group__subtitle{font-size:var(--font-size-heading-3);color:var(--color-ink-muted);margin:var(--space-5) 0 var(--space-3);font-weight:700}.project-grid{grid-template-columns:repeat(3,1fr);gap:16px;display:grid}.project-grid--sparse{grid-template-columns:repeat(2,1fr);max-width:66%}.project-card{background:var(--color-surface-panel);border:var(--border-thin) solid var(--color-border-subtle);border-radius:var(--radius-lg);flex-direction:column;transition:border-color .15s;display:flex;overflow:hidden}.project-card:hover{border-color:var(--color-border-strong)}.project-card__image-link{line-height:0;display:block}.project-card__image{aspect-ratio:16/10;object-fit:cover;filter:grayscale();width:100%;transition:filter .3s;display:block}.project-card:hover .project-card__image{filter:grayscale(0%)}.project-card__body{padding:var(--space-3);flex-direction:column;flex:1;gap:8px;display:flex}.project-card__title{color:var(--color-ink-strong);font-size:.875rem;font-weight:700}.project-card__title a{color:inherit;text-decoration:none}.project-card__title a:hover{text-decoration:underline;-webkit-text-decoration-color:var(--color-accent);text-decoration-color:var(--color-accent)}.project-card__summary{font-size:var(--font-size-label);color:var(--color-ink-muted);-webkit-line-clamp:4;-webkit-box-orient:vertical;flex:1;line-height:1.5;display:-webkit-box;overflow:hidden}.project-card__links{flex-wrap:wrap;gap:6px;margin-top:4px;display:flex}.link-pill{border-radius:var(--radius-md);background:var(--color-surface-soft);color:var(--color-ink-strong);font-size:var(--font-size-label);align-items:center;padding:4px 12px;font-weight:500;text-decoration:none;transition:background-color .15s;display:inline-flex}.link-pill:hover{background:var(--color-border-strong);text-decoration:none}.link-pill--primary{background:var(--color-accent);color:#fff}.link-pill--primary:hover{background:#cc001f}.detail-breadcrumbs{gap:var(--space-2);padding:var(--space-4) 0 0;color:var(--color-ink-subtle);font-size:var(--font-size-label);letter-spacing:.06em;flex-wrap:wrap;align-items:center;display:flex}.detail-breadcrumbs a{text-decoration:none}.detail-breadcrumbs a:hover{color:var(--color-ink-strong)}.detail-breadcrumbs__sep{color:var(--color-border-strong)}.detail-page{gap:var(--space-4);display:grid}.detail-body--page{gap:var(--space-4);padding:var(--space-5) var(--space-4);background:var(--color-surface-panel);border:var(--border-thin) solid var(--color-border-subtle);border-radius:var(--radius-lg);display:grid}.detail-content{max-width:var(--content-measure);padding:var(--space-5) 0}.detail-body{gap:var(--space-4);display:grid}.detail-body>*,.detail-body li>*{margin:0}.detail-body h1{font-size:var(--font-size-title);letter-spacing:-.03em}.detail-body h2{font-size:var(--font-size-heading-1)}.detail-body h3{font-size:var(--font-size-heading-2)}.detail-body h4,.detail-body h5,.detail-body h6{font-size:var(--font-size-heading-3)}.detail-body p,.detail-body ul,.detail-body ol,.detail-body table,.detail-body blockquote{color:var(--color-ink-muted);line-height:1.9}.detail-body ul,.detail-body ol{gap:var(--space-2);padding-left:var(--space-4);display:grid}.detail-body li{margin-left:var(--space-2)}.detail-body img{border-radius:var(--radius-md);width:auto;max-width:100%;height:auto;display:block}.detail-body pre{padding:var(--space-3);background:var(--color-border-soft);border:var(--border-thin) solid var(--color-border-subtle);border-radius:var(--radius-md);color:var(--color-ink-base);line-height:1.7;overflow-x:auto}.detail-body code{font-family:var(--font-family-mono)}.detail-body p code,.detail-body li code,.detail-body h1 code,.detail-body h2 code,.detail-body h3 code,.detail-body h4 code,.detail-body h5 code,.detail-body h6 code{background:var(--color-border-soft);border:var(--border-thin) solid var(--color-border-subtle);border-radius:var(--radius-sm);padding:2px 6px}.detail-body table{border-collapse:collapse;width:100%}.detail-body th,.detail-body td{padding:var(--space-2) var(--space-3);border:var(--border-thin) solid var(--color-border-subtle);text-align:left;vertical-align:top}.detail-body thead th{color:var(--color-ink-strong);background:var(--color-border-soft)}.detail-body hr{width:100%;height:var(--border-thin);background:var(--color-border-subtle);border:0}.detail-body blockquote{padding-left:var(--space-3);border-left:2px solid var(--color-border-strong)}.empty-state{color:var(--color-ink-subtle);font-size:var(--font-size-label);line-height:1.8}.page-hero{gap:var(--space-3);padding:var(--space-6) 0 var(--space-5);display:grid}.page-hero--detail{padding-bottom:var(--space-4)}h1{font-size:var(--font-size-title);letter-spacing:-.03em}.description{max-width:var(--content-measure);color:var(--color-ink-muted);font-size:var(--font-size-body);line-height:1.9}@media (width<=768px){.project-grid{grid-template-columns:repeat(2,1fr)}.project-grid--sparse{grid-template-columns:repeat(2,1fr);max-width:100%}}@media (width<=576px){.project-grid{grid-template-columns:1fr}.project-grid--sparse{grid-template-columns:1fr;max-width:100%}}@media (width<=40rem){.app-shell{padding-top:var(--space-5);padding-bottom:var(--space-8)}.detail-body--page{padding:var(--space-3)}}
