:root{--proj-accent:#2563eb;--proj-accent-line:#bfdbfe;--badge-win-bg:#fef3c7;--badge-win-line:#fde68a;--badge-win-fg:#92400e;--badge-beta-bg:#f0fdfa;--badge-beta-line:#99f6e4;--badge-beta-fg:#0f766e;--status-ok:#15803d}html.dark{--proj-accent:#60a5fa;--proj-accent-line:#1e3a5f;--badge-win-bg:#2d1a00;--badge-win-line:#78350f;--badge-win-fg:#fcd34d;--badge-beta-bg:#082f2e;--badge-beta-line:#115e59;--badge-beta-fg:#5eead4;--status-ok:#4ade80}.projects-page{max-width:900px;margin:0 auto}.projects-header{margin-bottom:3rem}.projects-header h1{font-size:clamp(2rem,4vw,2.75rem);font-weight:700;margin:0 0 .5rem;color:var(--text);font-family:var(--font-headline)}.intro-text{font-size:1rem;color:var(--text-muted);margin:0;line-height:1.6}.section-label-text{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--text-faint);margin:0 0 1rem}.projects-featured{margin-bottom:3rem}.projects-grid-section{margin-bottom:3rem}.projects-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:1.25rem}.project-card{border:1px solid var(--surface-line);border-radius:6px;padding:1.25rem;display:flex;flex-direction:column;background:var(--surface-strong);transition:border-color .15s ease}.project-card:hover{border-color:var(--text-faint)}.project-header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;margin-bottom:1rem}.project-title{font-size:.9375rem;font-weight:600;margin:0 0 .25rem;color:var(--text);font-family:var(--font-metadata)}.project-subtitle{font-size:.8125rem;color:var(--text-muted);margin:0}.badge{font-size:.6875rem;font-weight:500;padding:.2rem .5rem;border-radius:4px;white-space:nowrap;border:1px solid var(--surface-line);color:var(--text-muted);background:var(--surface-muted);font-family:var(--font-metadata)}.badge--winner{background:var(--badge-win-bg);border-color:var(--badge-win-line);color:var(--badge-win-fg)}.project-description{font-size:.875rem;color:var(--text-muted);margin:0 0 1rem;line-height:1.65;flex:1}.tech-stack{display:flex;gap:.375rem;flex-wrap:wrap;margin-bottom:1rem}.tech-tag{background:var(--surface-muted);color:var(--text-faint);font-size:.6875rem;font-weight:500;padding:.2rem .5rem;border-radius:3px;font-family:var(--font-metadata);letter-spacing:.02em}.project-meta{font-size:.75rem;color:var(--text-faint);margin:0;font-family:var(--font-metadata)}.status-soon{color:var(--status-ok)}.card-footer-row{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}.badge--beta{font-size:.625rem;font-weight:500;padding:.15rem .4rem;border-radius:3px;border:1px solid var(--badge-beta-line);color:var(--badge-beta-fg);background:var(--badge-beta-bg);font-family:var(--font-metadata);letter-spacing:.03em;text-transform:uppercase}.project-link{color:var(--proj-accent);text-decoration:none;font-size:.8125rem;font-weight:500;display:inline-flex;align-items:center;gap:.25rem;border-bottom:1px solid var(--proj-accent-line);padding-bottom:1px;align-self:flex-start;transition:border-color .15s ease;font-family:var(--font-metadata)}.project-link:hover{border-color:var(--proj-accent)}.link-arrow{font-size:.8125rem}.projects-footer{border-top:1px solid var(--surface-line);margin-top:2rem;padding-top:1.75rem;color:var(--text-faint);font-size:.875rem}.projects-footer p{margin:0}.projects-footer a{color:var(--text);text-decoration:none;border-bottom:1px solid var(--surface-line)}.projects-footer a:hover{border-color:var(--text)}body:has(.projects-page) .site-footer{margin-top:2rem}@media(max-width:640px){.projects-grid{grid-template-columns:1fr}.project-header{flex-direction:column;align-items:flex-start}}