.page-header.svelte-rqn88j{margin-bottom:3rem;padding-bottom:1.5rem;border-bottom:1px solid var(--border)}.page-header.svelte-rqn88j h1:where(.svelte-rqn88j){font-size:2.25rem;letter-spacing:-.04em;margin-bottom:.5rem}.page-header.svelte-rqn88j p:where(.svelte-rqn88j){color:var(--text-muted);font-size:1rem}.project-grid.svelte-rqn88j{list-style:none;display:grid;grid-template-columns:1fr;gap:1.5rem}@media(min-width:560px){.project-grid.svelte-rqn88j{grid-template-columns:repeat(2,1fr)}}.project-card.svelte-rqn88j{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;display:flex;flex-direction:column;transition:border-color var(--t),transform var(--t),box-shadow var(--t)}.project-card.svelte-rqn88j:hover{border-color:var(--accent);transform:translateY(-2px);box-shadow:0 8px 24px #0000004d}.card-link-overlay.svelte-rqn88j{display:flex;flex-direction:column;flex:1;text-decoration:none;color:inherit}.card-image.svelte-rqn88j{aspect-ratio:16 / 9;overflow:hidden;border-bottom:1px solid var(--border);background:var(--surface-2)}.card-image.svelte-rqn88j img:where(.svelte-rqn88j){width:100%;height:100%;object-fit:cover;display:block;transition:transform .4s var(--ease)}.project-card.svelte-rqn88j:hover .card-image:where(.svelte-rqn88j) img:where(.svelte-rqn88j){transform:scale(1.03)}.card-body.svelte-rqn88j{padding:1.25rem;display:flex;flex-direction:column;gap:.5rem;flex:1}.card-meta.svelte-rqn88j{display:flex;align-items:center;gap:.5rem}.tags.svelte-rqn88j{display:flex;gap:.3rem;flex-wrap:wrap}.tag.svelte-rqn88j{font-family:var(--font-mono);font-size:.7rem;color:var(--accent);background:var(--accent-glow);padding:.15rem .5rem;border-radius:999px}.card-title.svelte-rqn88j{font-size:1.05rem;font-weight:600;letter-spacing:-.02em;color:var(--text);margin:0}.card-desc.svelte-rqn88j{font-size:.875rem;color:var(--text-muted);line-height:1.55;flex:1;margin:0}.card-link.svelte-rqn88j{font-family:var(--font-mono);font-size:.78rem;color:var(--accent);text-decoration:none;margin-top:.25rem;transition:opacity var(--t)}.card-link.svelte-rqn88j:hover{opacity:.75}.empty.svelte-rqn88j{color:var(--text-muted);font-style:italic}
