:root{--ink:#0b0b0a;--paper:#cfcec7;--muted:#77766f;--line:#242422}*{box-sizing:border-box}html{background:var(--ink);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}body{background:var(--ink);color:var(--paper);text-transform:uppercase;letter-spacing:.045em;-webkit-font-smoothing:antialiased;margin:0;font-family:ui-monospace,SFMono-Regular,Cascadia Mono,Consolas,Liberation Mono,monospace;font-size:10px;line-height:1.2}main{min-height:100svh;padding:0 12px}h2{font:inherit;margin:0}.project-grid{background:var(--line);border-bottom:1px solid var(--line);grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;display:grid}.project{background:var(--ink);min-width:0;padding:12px}.project-image{aspect-ratio:1;background-image:linear-gradient(#0808071a,#0808071a),url(/images/project-atlas.png);background-position:calc(var(--frame) * 25%) center;filter:saturate(.58)brightness(.72)contrast(1.08);background-repeat:no-repeat;background-size:500%;width:100%;transition:filter .5s cubic-bezier(.2,.8,.2,1),transform .7s cubic-bezier(.2,.8,.2,1);position:relative;overflow:hidden}.project-image:after{content:"";pointer-events:none;border:1px solid #ffffff0b;position:absolute;inset:0}.project:hover .project-image{filter:saturate(.95)brightness(.94)contrast(1.03);transform:scale(.995)}.project-meta{color:var(--muted);grid-template-columns:28px minmax(0,1fr);align-items:baseline;gap:10px;padding-top:9px;font-size:9px;display:grid}.project-meta h2{color:var(--paper);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.site-footer{min-height:112px;color:var(--paper);justify-content:space-between;align-items:flex-end;padding:12px 0;font-size:9px;display:flex}.site-footer img{opacity:.9;width:20px;height:auto;display:block}@media (max-width:900px){.project-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:560px){main{padding:0 8px}.project-grid{grid-template-columns:1fr}.project{padding:8px 0 12px}.project-meta{padding:8px 1px 0}}@media (prefers-reduced-motion:reduce){.project-image{transition:none}}
