/* Project catalogue — isolated from the WebGL hero and legacy case-study styles. */
.project-surface{--project-ink:var(--text,#153b45);--project-muted:#47646c;--project-line:#a9c5cd;--project-panel:var(--surface,#e5f0f2);--project-accent:var(--accent,#245e70);color:var(--project-ink)}
body.force-dark .project-surface{--project-ink:#edf0f1;--project-muted:#aab5b9;--project-line:#495258;--project-panel:#30363b;--project-accent:#a5cbd3}
@media(prefers-color-scheme:dark){body:not(.force-light) .project-surface{--project-ink:#edf0f1;--project-muted:#aab5b9;--project-line:#495258;--project-panel:#30363b;--project-accent:#a5cbd3}}
.project-toolbar{display:flex;justify-content:space-between;align-items:center;gap:20px;flex-wrap:wrap;margin:24px 0}.project-filters,.project-controls{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.project-surface button,.project-filter{font:12px/1.3 ui-monospace,monospace;border:1px solid var(--project-line);border-radius:30px;background:transparent;color:inherit;padding:10px 15px;cursor:pointer}.project-surface button[aria-pressed=true]{background:var(--project-ink);color:var(--project-panel);border-color:var(--project-ink)}.project-surface button:disabled{opacity:.4;cursor:default}.project-surface a:focus-visible,.project-surface button:focus-visible,.project-surface input:focus-visible,.project-track:focus-visible{outline:3px solid var(--project-accent);outline-offset:4px}.project-track{display:flex;gap:22px;overflow-x:auto;scroll-snap-type:x mandatory;scroll-padding:2px;padding:3px 2px 17px;scrollbar-width:thin;scrollbar-color:var(--project-line) transparent;overscroll-behavior-x:contain}.project-card{flex:0 0 calc((100% - 44px)/3);min-width:0;scroll-snap-align:start;border:1px solid var(--project-line);border-radius:16px;overflow:hidden;background:var(--project-panel);display:flex;box-shadow:0 3px 2px #102d3503,0 14px 24px #102d3505}.project-card>a{display:flex;flex-direction:column;text-decoration:none;color:inherit;width:100%;transition:background .2s}.project-cover{aspect-ratio:16/9;overflow:hidden;background:#cad9dc;position:relative}.project-cover img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .3s}.project-cover.is-contain img{object-fit:contain}.project-card:hover .project-cover img{transform:scale(1.025)}.project-card-copy{padding:21px;display:flex;flex-direction:column;flex:1}.project-category{font:10px/1.5 ui-monospace,monospace;text-transform:uppercase;letter-spacing:.1em;color:var(--project-muted)}.project-card h3{font:23px/1.16 Georgia,serif;letter-spacing:-.025em;margin:12px 0;min-height:2.32em}.project-card p{font:14px/1.65 -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--project-muted);margin:0 0 18px}.project-tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:auto}.project-tags span{font:10px/1.5 ui-monospace,monospace;border:1px solid var(--project-line);padding:3px 7px;border-radius:5px}.project-card-link{font:12px/1.5 ui-monospace,monospace;margin-top:21px;color:var(--project-accent)}.project-footer{display:flex;justify-content:space-between;gap:15px;align-items:center;margin-top:10px;font:12px/1.5 ui-monospace,monospace;color:var(--project-muted)}.project-footer a{color:var(--project-ink);text-underline-offset:5px}.project-note-list{display:grid;grid-template-columns:1fr 1fr;gap:0 38px;margin-top:28px}.project-note{display:grid;grid-template-columns:32px 1fr 24px;gap:12px;align-items:center;padding:22px 0;border-top:1px solid var(--project-line);text-decoration:none;color:inherit}.project-note-number,.project-note-category{font:10px/1.5 ui-monospace,monospace;color:var(--project-muted)}.project-note-title{display:block;font:17px/1.45 -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}.project-note-category{display:block;margin-top:6px}.project-note:hover .project-note-title{text-decoration:underline;text-underline-offset:4px}.project-index-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}.project-index-grid .project-card{min-width:0}.project-search{display:block;width:100%;max-width:520px}.project-search>span{display:block;font:12px ui-monospace,monospace;margin-bottom:10px}.project-search input{width:100%;padding:15px 18px;color:var(--project-ink);background:var(--project-panel);border:1px solid var(--project-line);border-radius:12px;font:inherit;font-size:16px;line-height:1.5}.project-empty{padding:35px 0;color:var(--project-muted)}.project-count{font:12px ui-monospace,monospace;color:var(--project-muted);margin:0 0 22px}.project-index-page{margin:0;background:#d4e5e9;font:16px/1.7 -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}.project-index-page.force-dark{background:#272b2e}.project-index-shell{max-width:1220px;margin:auto;padding:0 36px}.project-index-nav{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:26px 0;border-bottom:1px solid var(--project-line)}.project-index-nav a{color:inherit;text-decoration:none}.project-index-header{padding:65px 0 32px}.project-index-header h1{font:clamp(46px,8vw,88px)/1.04 Georgia,serif;letter-spacing:-.05em;margin:14px 0 25px}.project-index-header p{max-width:650px;font-size:18px;color:var(--project-muted)}.project-index-footer{padding:45px 0;margin-top:50px;border-top:1px solid var(--project-line);font-size:12px;color:var(--project-muted)}.project-index-footer a{color:inherit}.project-surface [hidden]{display:none!important}
@media(prefers-color-scheme:dark){.project-index-page:not(.force-light){background:#272b2e}}
@media(max-width:1000px){.project-card{flex-basis:calc((100% - 22px)/2)}.project-index-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:620px){.project-card{flex-basis:87%}.project-track{gap:14px}.project-toolbar{gap:14px}.project-filters{gap:6px}.project-surface button{padding:9px 11px}.project-card h3{font-size:22px}.project-note-list,.project-index-grid{grid-template-columns:1fr}.project-note{padding:18px 0}.project-index-shell{padding:0 20px}.project-index-header{padding-top:40px}.project-index-header p{font-size:16px}.project-footer{align-items:flex-start}}
@media(prefers-reduced-motion:reduce){.project-card>a,.project-cover img{transition:none}.project-card:hover .project-cover img{transform:none}}
