*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
:root { --bg:#0e0e0e; --fg:#e8e4dc; --dim:#6a6560; --accent:#7356d6; --border:#2e2a26; --media-bg:#171717; --mono:"IBM Plex Mono","SFMono-Regular",Consolas,"Liberation Mono",monospace; --body:"IBM Plex Sans",Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif; }
html { background:var(--bg); color:var(--fg); font-family:var(--body); font-size:16px; line-height:1.5; }
body { background:var(--bg); color:var(--fg); font-family:var(--body); font-weight:300; min-height:100vh; overflow-x:hidden; }
a { color:inherit; } button { color:inherit; font:inherit; }
header { border-bottom:1px solid var(--border); padding:1.4rem 1.2rem .9rem; }
.header-top,.header-bottom { display:flex; gap:1rem; justify-content:space-between; }
.header-top { align-items:baseline; margin-bottom:.35rem; }
.header-bottom { align-items:center; margin-top:.6rem; }
.brand,.context,.nav-link,.language-link,.number,.project-meta,footer { font-family:var(--mono); }
.brand { color:var(--dim); font-size:.6rem; letter-spacing:.18em; text-decoration:none; text-transform:uppercase; }
.brand span { color:var(--accent); }
.context { color:var(--dim); font-size:.56rem; line-height:1.6; }
.primary-nav,.language-nav { align-items:center; display:flex; flex-wrap:wrap; gap:.3rem; }
.language-nav { gap:.6rem; }
.nav-link,.language-link,.draw-toggle { background:transparent; border:1px solid var(--border); color:var(--dim); cursor:pointer; font-family:var(--mono); font-size:.6rem; letter-spacing:.12em; padding:.25rem .55rem; text-decoration:none; text-transform:uppercase; transition:color .15s,border-color .15s,background-color .15s; }
.nav-link:hover,.nav-link:focus-visible,.nav-link.active,.language-link:hover,.language-link:focus-visible,.language-link.active,.draw-toggle:hover,.draw-toggle:focus-visible { border-color:var(--accent); color:var(--accent); outline:none; }
main { margin:0 auto; max-width:1080px; padding:1.4rem 1.2rem 0; }
.page-label { color:var(--dim); font-family:var(--mono); font-size:.55rem; letter-spacing:.22em; margin-bottom:1.4rem; text-transform:uppercase; }
.projects { border-bottom:1px solid var(--border); border-top:1px solid var(--border); }
.project-row { border-bottom:1px solid var(--border); display:grid; grid-template-columns:4.5rem minmax(0,.75fr) minmax(260px,1.25fr); min-height:240px; text-decoration:none; transition:background-color .6s ease,color .6s ease; }
.project-row:last-child { border-bottom:0; }
.project-row > * { padding:clamp(1rem,2.8vw,2rem); }
.project-row > * + * { border-left:1px solid var(--border); }
.number { color:var(--dim); font-size:.56rem; letter-spacing:.12em; text-transform:uppercase; transition:color .15s; }
.project-title { align-self:start; color:var(--fg); font-size:clamp(1.7rem,3.4vw,3.45rem); font-weight:300; letter-spacing:-.035em; line-height:1; transition:color .15s; }
.project-info { display:flex; flex-direction:column; justify-content:flex-end; }
.project-description { color:var(--fg); font-size:.98rem; line-height:1.72; max-width:540px; }
.project-meta { color:var(--dim); font-size:.56rem; letter-spacing:.09em; line-height:1.6; margin-top:1.5rem; text-transform:uppercase; }
.project-row:hover,.project-row:focus-visible { background:var(--media-bg); outline:none; }
.project-row:hover .project-title,.project-row:focus-visible .project-title,.project-row:hover .number,.project-row:focus-visible .number { color:var(--accent); }
.project-row:focus-visible { box-shadow:inset 0 0 0 1px var(--accent); }
.project-row.is-archive { min-height:165px; }
.detail { border-bottom:1px solid var(--border); border-top:1px solid var(--border); display:grid; grid-template-columns:minmax(0,.72fr) minmax(320px,1.28fr); min-height:calc(100vh - 150px); }
.detail-copy { display:flex; flex-direction:column; justify-content:space-between; padding:clamp(1.4rem,4vw,3.5rem) 1rem 1.4rem; }
.detail-copy h1 { color:var(--fg); font-size:clamp(2.8rem,7vw,6.8rem); font-weight:300; letter-spacing:-.05em; line-height:.92; }
.detail-visual { background:var(--media-bg); border-left:1px solid var(--border); min-height:580px; }
.detail-copy .project-meta { margin-top:1rem; }
footer { color:var(--dim); display:flex; font-size:.55rem; justify-content:space-between; letter-spacing:.1em; margin:0 auto; max-width:1080px; padding:1rem 1.2rem 2rem; text-transform:uppercase; }
@media (max-width:760px) { .header-top,.header-bottom { align-items:flex-start; flex-direction:column; } .project-row { grid-template-columns:3.4rem 1fr; min-height:0; } .project-info { border-left:1px solid var(--border); border-top:1px solid var(--border); grid-column:1/-1; min-height:150px; } .detail { grid-template-columns:1fr; } .detail-copy { min-height:480px; } .detail-visual { border-left:0; border-top:1px solid var(--border); min-height:62vh; } }
@media (max-width:560px) { header { padding-left:.85rem; padding-right:.85rem; } .primary-nav { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); width:100%; } .nav-link,.draw-toggle { min-width:0; padding-left:.25rem; padding-right:.25rem; text-align:center; } main { padding-left:.85rem; padding-right:.85rem; } .project-row { grid-template-columns:2.8rem 1fr; } .project-row > * { padding:1rem .85rem; } .project-title { font-size:clamp(1.65rem,8.5vw,2.55rem); line-height:1.02; } footer { flex-direction:column; gap:.5rem; padding-left:.85rem; padding-right:.85rem; } }
@media (prefers-reduced-motion:reduce) { .project-row,.project-title,.number { transition:none; } }

body.cash-hole { --bg:#fff; --fg:#171717; --dim:#746e67; --accent:#ef3340; --border:#d8d1c7; --media-bg:#ef3340; }
.cash-hole header { border-top:4px solid var(--accent); }
.cash-hole main { max-width:1380px; padding-top:1.4rem; }
.cash-hole .page-label { color:var(--accent); }
.cash-hero { border:1px solid var(--fg); display:grid; grid-template-columns:minmax(0,.72fr) minmax(340px,1.28fr); min-height:min(800px,calc(100vh - 150px)); }
.cash-title { display:flex; flex-direction:column; justify-content:space-between; padding:clamp(2rem,5vw,5rem) clamp(1rem,4vw,3.5rem) 2rem; }
.cash-title h1 { color:var(--fg); font-size:clamp(3rem,7vw,7rem); font-weight:300; letter-spacing:-.075em; line-height:.9; white-space:nowrap; }
.cash-kicker { color:var(--accent); font-family:var(--mono); font-size:.6rem; letter-spacing:.18em; text-transform:uppercase; }
.cash-visual { background:var(--accent); border-left:1px solid var(--fg); min-height:620px; overflow:hidden; }
.cash-visual img { display:block; height:100%; min-height:620px; object-fit:cover; object-position:center; width:100%; }
.cash-appeal { border-bottom:1px solid var(--fg); border-left:1px solid var(--fg); border-right:1px solid var(--fg); padding:clamp(3rem,7vw,7rem) clamp(1rem,6vw,6rem); }
.cash-appeal p { color:var(--fg); font-size:clamp(2rem,4.8vw,5rem); font-weight:300; letter-spacing:-.045em; line-height:1.06; max-width:1080px; }
.cash-appeal p::first-line { color:var(--accent); }
.cash-text { border-bottom:1px solid var(--fg); border-left:1px solid var(--fg); border-right:1px solid var(--fg); display:grid; grid-template-columns:minmax(150px,.32fr) 1fr; }
.cash-text > * { padding:clamp(1.5rem,4vw,4rem); }
.cash-copy { border-left:1px solid var(--fg); }
.cash-copy p { font-size:clamp(1.05rem,1.7vw,1.4rem); line-height:1.65; margin:0; max-width:760px; }
.cash-copy p + p { margin-top:1.5rem; }
.cash-gallery { background:var(--fg); border-bottom:1px solid var(--fg); border-left:1px solid var(--fg); border-right:1px solid var(--fg); display:grid; gap:1px; grid-template-columns:repeat(2,minmax(0,1fr)); }
.cash-gallery figure { background:#fff; margin:0; min-width:0; }
.cash-gallery img { display:block; height:auto; width:100%; }
.cash-hole footer { max-width:1380px; }

@media (min-width:621px) { .cash-gallery figure img { height:100%; object-fit:cover; } }

@media (max-width:760px) {
  .cash-hero { grid-template-columns:1fr; min-height:0; }
  .cash-title { min-height:500px; }
  .cash-visual { border-left:0; border-top:1px solid var(--fg); min-height:65vh; }
  .cash-visual img { min-height:65vh; }
  .cash-text { grid-template-columns:1fr; }
  .cash-copy { border-left:0; border-top:1px solid var(--fg); }
}

@media (max-width:620px) { .cash-gallery { grid-template-columns:1fr; } }

body.abri-page { --bg:#c8cccd; --fg:#101317; --dim:#62696e; --accent:#58a9f7; --border:#92999c; --media-bg:#0f1216; }
.abri-page header { background:rgba(207,211,212,.96); border-top:4px solid var(--accent); }
.abri-page main { max-width:1380px; padding-top:1.4rem; }
.abri-page .page-label { color:var(--fg); }
.abri-hero { background:#d5d8d9; border:1px solid var(--fg); display:grid; grid-template-columns:minmax(0,.78fr) minmax(360px,1.22fr); min-height:min(820px,calc(100vh - 150px)); }
.abri-title { display:flex; flex-direction:column; justify-content:space-between; padding:clamp(2rem,5vw,5rem) clamp(1rem,4vw,3.5rem) 2rem; }
.abri-title h1 { color:var(--fg); font-size:clamp(3.6rem,7.6vw,7.8rem); font-weight:300; letter-spacing:-.075em; line-height:.9; white-space:nowrap; }
.abri-kicker { color:var(--accent); font-family:var(--mono); font-size:.6rem; letter-spacing:.18em; text-transform:uppercase; }
.abri-cover { background:var(--fg); border-left:1px solid var(--fg); margin:0; min-height:620px; overflow:hidden; }
.abri-cover img { display:block; height:100%; min-height:620px; object-fit:cover; width:100%; }
.abri-statement { background:var(--fg); border-left:1px solid var(--fg); border-right:1px solid var(--fg); color:#f2f5f6; display:grid; gap:clamp(2rem,5vw,6rem); grid-template-columns:minmax(0,.9fr) minmax(280px,1.1fr); padding:clamp(3rem,7vw,7.5rem) clamp(1rem,6vw,6rem); }
.abri-lead { color:var(--accent); font-size:clamp(2.2rem,4.5vw,4.8rem); font-weight:300; letter-spacing:-.045em; line-height:1.04; }
.abri-body { align-self:end; font-size:clamp(1.05rem,1.65vw,1.45rem); line-height:1.65; max-width:680px; }
.abri-sequence { background:var(--fg); border:1px solid var(--fg); display:grid; gap:1px; grid-template-columns:repeat(12,minmax(0,1fr)); }
.abri-frame { background:#d1d5d6; margin:0; min-height:0; overflow:hidden; }
.abri-frame img { display:block; height:100%; object-fit:cover; width:100%; }
.abri-frame:nth-child(1) { aspect-ratio:7 / 8; grid-column:span 7; }
.abri-frame:nth-child(2) { aspect-ratio:5 / 8; grid-column:span 5; }
.abri-frame:nth-child(3) { aspect-ratio:5 / 7; grid-column:span 5; }
.abri-frame:nth-child(4) { aspect-ratio:7 / 7; grid-column:span 7; }
.abri-frame:nth-child(5) { aspect-ratio:16 / 9; grid-column:1 / -1; }
.abri-frame:nth-child(6),.abri-frame:nth-child(7) { aspect-ratio:4 / 3; grid-column:span 6; }
.abri-frame:nth-child(8) { aspect-ratio:3 / 4; grid-column:span 4; }
.abri-frame:nth-child(9) { aspect-ratio:8 / 5; grid-column:span 8; }
.abri-frame:nth-child(10),.abri-frame:nth-child(11),.abri-frame:nth-child(12) { aspect-ratio:3 / 4; grid-column:span 4; }
.abri-frame:nth-child(13) { aspect-ratio:16 / 9; grid-column:1 / -1; }
.abri-frame:nth-child(14) { aspect-ratio:5 / 7; grid-column:span 5; }
.abri-frame:nth-child(15) { aspect-ratio:7 / 7; grid-column:span 7; }
.abri-frame:nth-child(16) { aspect-ratio:8 / 5; grid-column:span 8; }
.abri-frame:nth-child(17) { aspect-ratio:4 / 5; grid-column:span 4; }
.abri-page footer { max-width:1380px; }

@media (max-width:760px) {
  .abri-hero { grid-template-columns:1fr; min-height:0; }
  .abri-title { min-height:440px; }
  .abri-title h1 { font-size:clamp(3.2rem,18vw,5.6rem); }
  .abri-cover { border-left:0; border-top:1px solid var(--fg); min-height:70vh; }
  .abri-cover img { min-height:70vh; }
  .abri-statement { grid-template-columns:1fr; }
}

@media (max-width:620px) {
  .abri-sequence { grid-template-columns:1fr; }
  .abri-frame:nth-child(n) { aspect-ratio:auto; grid-column:1; }
  .abri-frame img { height:auto; object-fit:contain; }
}
