/* DATUM · shared stylesheet for the seven pages in this folder */
:root{
  --paper:#ECE9E2; --paper-2:#E3DFD6; --paper-3:#D9D4C9;
  --ink:#15140F; --ink-2:#26241D;
  --ink-soft:rgba(21,20,15,.64); --ink-faint:rgba(21,20,15,.42);
  --line:rgba(21,20,15,.18); --line-2:rgba(21,20,15,.10);
  --terra:#B4552D; --terra-deep:#8E401F; --terra-soft:rgba(180,85,45,.14);
  --on-ink:rgba(236,233,226,.72); --on-ink-2:rgba(236,233,226,.46); --line-on-ink:rgba(236,233,226,.16);
  --grot:'Space Grotesk',system-ui,-apple-system,'Segoe UI',sans-serif;
  --serif:'Fraunces',Georgia,'Times New Roman',serif;
  --mono:'Space Mono',ui-monospace,SFMono-Regular,Menlo,monospace;
  --ease:cubic-bezier(.16,1,.3,1);
  --navh:84px; --gut:clamp(18px,4.5vw,64px); --max:1440px; --railw:0px; --edge:max(var(--gut),calc((100vw - var(--max)) / 2 + var(--gut)));
  --p:0;            /* page progress 0-1, written by the scroll loop */
}
@media(max-width:900px){:root{--navh:66px;}}
@media(min-width:1180px){:root{--railw:128px;}}

*{box-sizing:border-box;}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;}
html,body{margin:0;padding:0;background:var(--paper);color:var(--ink);overflow-x:clip;max-width:100%;}
body{font-family:var(--grot);font-size:17px;line-height:1.55;-webkit-font-smoothing:antialiased;}
a{color:inherit;text-decoration:none;touch-action:manipulation;}
button{font:inherit;color:inherit;cursor:pointer;background:none;border:0;padding:0;margin:0;touch-action:manipulation;}
summary{cursor:pointer;touch-action:manipulation;}
img,video{display:block;max-width:100%;height:auto;}
p{margin:0 0 1em;}
h1,h2,h3,h4{margin:0;font-weight:400;}
figure,blockquote,ul,ol,dl{margin:0;}
::selection{background:var(--terra);color:var(--paper);}
:focus-visible{outline:3px solid var(--terra);outline-offset:3px;}
.sr{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;}
.skip{position:absolute;left:12px;top:-64px;z-index:200;background:var(--ink);color:var(--paper);padding:10px 16px;font-weight:700;}
.skip:focus{top:12px;}
[id]{scroll-margin-top:calc(var(--navh) + 20px);}

/* ---------- type ---------- */
.eyebrow{font-family:var(--mono);font-size:11.5px;letter-spacing:.22em;text-transform:uppercase;color:var(--terra);display:block;line-height:1.6;}
.eyebrow.dim{color:var(--ink-faint);}
.h1{font-family:var(--grot);font-weight:400;font-size:clamp(38px,min(8vw,12.5svh),148px);line-height:.94;letter-spacing:-.035em;text-wrap:balance;}
.h2{font-family:var(--grot);font-weight:400;font-size:clamp(32px,4.6vw,66px);line-height:1;letter-spacing:-.03em;text-wrap:balance;}
.h3{font-family:var(--grot);font-weight:500;font-size:clamp(22px,2.2vw,30px);line-height:1.12;letter-spacing:-.02em;}
.h1 em,.h2 em,.h3 em,.statement em{font-family:var(--serif);font-style:italic;font-weight:400;letter-spacing:-.01em;color:var(--terra);}
.eyebrow + .h1,.eyebrow + .h2,.eyebrow + .h3{margin-top:18px;}
.lede{font-size:clamp(17px,1.45vw,21px);line-height:1.5;max-width:52ch;color:var(--ink);}
.prose{max-width:66ch;}
.prose p{color:var(--ink);opacity:.9;}
.prose strong{font-weight:500;color:var(--ink);}
.dim{color:var(--ink-soft);}
.small{font-size:14.5px;color:var(--ink-soft);}
.mono{font-family:var(--mono);}
.rlabel{font-family:var(--mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-faint);}
@media(hover:none),(max-width:760px){.hover-hint{display:none;}}

/* ---------- layout ---------- */
.wrap{max-width:var(--max);margin:0 auto;padding:0 calc(var(--gut) + var(--railw)) 0 var(--gut);}
.sec{padding:clamp(64px,10vh,140px) 0;}
.sec.tight{padding:clamp(44px,7vh,90px) 0;}
.split{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:clamp(28px,5vw,96px);align-items:start;}
.split.even{grid-template-columns:1fr 1fr;align-items:center;}
@media(max-width:900px){.split,.split.even{grid-template-columns:1fr;gap:32px;}}
.sticky-head{position:sticky;top:calc(var(--navh) + 28px);}
@media(max-width:900px){.sticky-head{position:static;}}

/* datum line: the section divider, a level line with its mark. Draws across on reveal. */
.datum{position:relative;height:1px;background:var(--line);margin:0;transform-origin:left;}
.datum::after{content:"";position:absolute;right:0;top:-6px;width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-top:9px solid var(--terra);opacity:.9;}
.js .datum.rv{transform:scaleX(0);transition:transform 1.4s var(--ease);}
.js .datum.rv.on{transform:none;}
.dark .datum{background:var(--line-on-ink);}
.datum.full{margin-left:calc(50% - 50vw);width:100vw;}

/* ---------- reveals (visible by default, hidden only once JS is live) ---------- */
.js .rv{opacity:0;transform:translateY(16px);transition:opacity .9s var(--ease),transform .9s var(--ease);}
.js .rv.on{opacity:1;transform:none;}
.js .rv.d1{transition-delay:.08s}.js .rv.d2{transition-delay:.16s}.js .rv.d3{transition-delay:.24s}.js .rv.d4{transition-delay:.32s}.js .rv.d5{transition-delay:.4s}
.js .plate.rv{transform:none;opacity:1;}
.js .plate.rv img,.js .plate.rv video,.js .plate.rv picture{clip-path:inset(0 0 100% 0);transition:clip-path 1.3s var(--ease);}
.js .plate.rv.on img,.js .plate.rv.on video,.js .plate.rv.on picture{clip-path:inset(0 0 0 0);}
.js .lines .l{display:block;overflow:hidden;}
.js .lines .l span{display:block;transform:translateY(105%);transition:transform 1s var(--ease);}
.js .lines.on .l span{transform:none;}
.js .lines .l:nth-child(2) span{transition-delay:.09s}.js .lines .l:nth-child(3) span{transition-delay:.18s}

/* ---------- nav: wordmark and one word. The index is a full-screen typographic list. ---------- */
.nav{position:sticky;top:0;z-index:80;height:var(--navh);display:flex;align-items:center;justify-content:space-between;gap:18px;padding:0 var(--gut);background:var(--paper);border-bottom:1px solid transparent;transition:height .35s var(--ease),border-color .3s;}
.nav.scrolled{height:calc(var(--navh) - 14px);border-bottom-color:var(--line);}
.nav .brand,.ix .brand{display:flex;align-items:center;gap:12px;font-family:var(--grot);font-weight:700;font-size:24px;letter-spacing:.2em;white-space:nowrap;}
.nav .brand .blogo{height:34px;transition:height .35s var(--ease);}
.nav.scrolled .brand .blogo{height:28px;}
@media(max-width:480px){.nav .brand,.ix .brand{font-size:19px;letter-spacing:.16em;}.nav .brand .blogo{height:28px;}}
.ixbtn,.ixclose{display:inline-flex;align-items:center;gap:12px;font-family:var(--mono);font-size:12.5px;letter-spacing:.22em;text-transform:uppercase;color:var(--ink);padding:10px 0 10px 12px;transition:color .25s;}
.ixbtn .x,.ixclose .x{position:relative;width:18px;height:18px;flex:none;}
.ixbtn .x::before,.ixbtn .x::after,.ixclose .x::before,.ixclose .x::after{content:"";position:absolute;left:0;top:8px;width:18px;height:1.5px;background:currentColor;transition:transform .4s var(--ease);}
.ixbtn .x::after{transform:rotate(90deg);}
.ixbtn[aria-expanded="true"] .x::before{transform:rotate(45deg);}
.ixbtn[aria-expanded="true"] .x::after{transform:rotate(-45deg);}
.ixclose .x::before{transform:rotate(45deg);} .ixclose .x::after{transform:rotate(-45deg);}
@media(hover:hover) and (pointer:fine){.ixbtn:hover,.ixclose:hover{color:var(--terra);}}
.ixbtn:focus-visible,.ixclose:focus-visible{outline-offset:4px;}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;font-weight:500;font-size:15px;letter-spacing:.01em;padding:14px 22px;border:1px solid var(--ink);background:var(--ink);color:var(--paper);border-radius:3px;transition:background .25s,color .25s,border-color .25s,transform .25s var(--ease);}
.btn.ghost{background:transparent;color:var(--ink);}
.btn.paper{background:var(--paper);color:var(--ink);border-color:var(--paper);}
.btn.terra{background:var(--terra);border-color:var(--terra);color:#fff;}
.btn:focus-visible{outline:3px solid var(--terra);outline-offset:3px;}
.dark .btn:focus-visible,.btn.terra:focus-visible{outline-color:var(--paper);}
@media(hover:hover) and (pointer:fine){
  .btn:hover{background:var(--terra);border-color:var(--terra);color:#fff;transform:translateY(-1px);}
  .btn.ghost:hover{background:var(--ink);color:var(--paper);border-color:var(--ink);}
  .btn.paper:hover{background:var(--terra);border-color:var(--terra);color:#fff;}
  .btn.terra:hover{background:var(--paper);border-color:var(--paper);color:var(--ink);}
}

/* the index: full screen, paper, one large line per page; a photo follows the pointer on desktop */
.ix{position:fixed;inset:0;z-index:90;background:var(--paper);color:var(--ink);display:flex;flex-direction:column;padding:0 var(--gut) 24px;visibility:hidden;opacity:0;transition:opacity .35s var(--ease),visibility 0s .35s;overflow-y:auto;}
.ix.open{visibility:visible;opacity:1;transition:opacity .35s var(--ease),visibility 0s;}
.ixtop{flex:none;height:var(--navh);display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);position:relative;}
.ixlist{list-style:none;padding:0;margin:auto 0;position:relative;}
.ixlist li{border-bottom:1px solid var(--line);overflow:hidden;}
.ixrow{display:flex;align-items:baseline;justify-content:space-between;gap:24px;padding:clamp(8px,1.2svh,16px) 0;transform:translateY(110%);transition:transform .9s var(--ease),color .3s;}
.ix.open .ixrow{transform:none;transition-delay:calc(var(--i,0) * 55ms + 60ms);}
.ixn{font-family:var(--grot);font-weight:400;font-size:clamp(36px,min(7.6vw,8.2svh),104px);letter-spacing:-.04em;line-height:.95;transition:transform .6s var(--ease),color .3s;}
.ixd{font-family:var(--mono);font-size:11.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-faint);text-align:right;white-space:nowrap;flex:none;}
.ixrow[aria-current="page"] .ixn{color:var(--terra);}
.ixrow[aria-current="page"] .ixn::after{content:"";display:inline-block;width:0;height:0;margin-left:18px;vertical-align:middle;border-left:7px solid transparent;border-right:7px solid transparent;border-top:11px solid var(--terra);}
@media(hover:hover) and (pointer:fine){
  .ixrow:hover .ixn{transform:translateX(18px);color:var(--terra);}
  .ixrow:hover .ixd{color:var(--ink);}
}
.ixrow:focus-visible{outline:none;}
.ixrow:focus-visible .ixn{color:var(--terra);transform:translateX(18px);}
.ixfoot{flex:none;display:flex;justify-content:space-between;align-items:center;gap:16px 32px;flex-wrap:wrap;padding-top:18px;border-top:1px solid var(--line);position:relative;}
.ixmeta{font-family:var(--mono);font-size:12px;letter-spacing:.06em;color:var(--ink-soft);}
.ixmeta a{color:var(--ink);}
.ixpeek{display:none;position:fixed;left:0;top:0;width:min(26vw,420px);aspect-ratio:4/5;z-index:2;pointer-events:none;opacity:0;transform:translate(-50%,-50%) scale(.94);transition:opacity .3s,transform .5s var(--ease);background:var(--paper-3);box-shadow:0 30px 70px rgba(21,20,15,.28);will-change:transform;}
.ixpeek.show{opacity:1;}
.ixpeek img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity .45s ease;}
.ixpeek img.on{opacity:1;}
@media(hover:hover) and (pointer:fine) and (min-width:900px){.ixpeek{display:block;}}
@media(max-width:700px){.ixd{display:none;}.ixrow{padding:12px 0;}.ixn{font-size:clamp(36px,10.5vw,60px);}.ixfoot{flex-direction:column;align-items:stretch;text-align:center;}}
@media(max-height:560px){.ixn{font-size:clamp(28px,6.5svh,60px);}.ixrow{padding:6px 0;}}
body.locked{overflow:hidden;}

/* ---------- right-hand level index (desktop only) ---------- */
.rail{position:fixed;top:var(--navh);right:0;bottom:0;width:var(--railw);z-index:40;display:none;pointer-events:none;padding:56px 0 40px;}
@media(min-width:1180px){.rail{display:block;}}
.rail .track{position:absolute;top:56px;bottom:40px;right:40px;width:1px;background:var(--line);}
.rail .fill{position:absolute;left:0;top:0;width:1px;height:100%;background:var(--terra);transform:scaleY(var(--p));transform-origin:50% 0;}
.rail .mark{position:absolute;left:-5px;top:calc(var(--p) * 100%);width:0;height:0;margin-top:-5px;border-top:5px solid transparent;border-bottom:5px solid transparent;border-right:9px solid var(--terra);transform:translateX(-1px);}
.rail .tick{position:absolute;right:52px;transform:translateY(-50%);font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-faint);white-space:nowrap;text-align:right;pointer-events:auto;transition:color .3s,background .3s;padding:3px 7px;background:var(--paper);border-radius:2px;}
.rail .tick::after{content:"";position:absolute;right:-12px;top:50%;width:7px;height:1px;background:var(--line);}
.rail .tick.cur{color:var(--ink);font-weight:700;}
.rail .tick.past{color:var(--ink-faint);}
@media(hover:hover) and (pointer:fine){.rail .tick:hover{color:var(--terra);}}
.rail .tick:focus-visible{outline-offset:2px;color:var(--terra);}
.rail.on-dark .track{background:var(--line-on-ink);}
.rail.on-dark .tick,.rail.on-dark .pct{background:var(--ink);}
.rail.on-terra .tick,.rail.on-terra .pct{background:var(--terra);}
.rail.on-dark .tick{color:var(--on-ink-2);}
.rail.on-dark .tick.cur{color:var(--paper);}
.rail.on-dark .tick::after{background:var(--line-on-ink);}
.rail.on-terra .track{background:rgba(236,233,226,.35);}
.rail.on-terra .fill,.rail.on-terra .mark{background:var(--paper);border-right-color:var(--paper);}
.rail.on-terra .tick{color:rgba(236,233,226,.6);}
.rail.on-terra .tick.cur{color:var(--paper);}
.rail .pct{position:absolute;right:52px;bottom:0;font-family:var(--mono);font-size:10.5px;letter-spacing:.12em;color:var(--ink-faint);background:var(--paper);padding:3px 7px;border-radius:2px;transition:background .3s;}
.rail.on-dark .pct,.rail.on-terra .pct{color:var(--on-ink-2);}

/* ---------- home hero ---------- */
.hero{padding:clamp(28px,5vh,64px) 0 0;}
.hero .h1{margin-top:20px;max-width:16ch;}
.hero .h1 .l{display:block;}
.hero-meta{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:20px 48px;align-items:end;margin-top:clamp(22px,4vh,44px);}
@media(max-width:820px){.hero-meta{grid-template-columns:1fr;}}
.hero-meta .facts{display:grid;gap:6px;justify-items:start;font-family:var(--mono);font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft);}
@media(min-width:821px){.hero-meta .facts{justify-items:end;text-align:right;}}
.hero-cta{display:flex;gap:12px;flex-wrap:wrap;margin-top:18px;}
/* the film: a full-bleed plate that opens from a slit on load */
.film{position:relative;margin-top:clamp(26px,5vh,56px);min-height:clamp(300px,62svh,820px);background:var(--paper-3);overflow:hidden;isolation:isolate;}
.film .layer{position:absolute;inset:0;}
.film .layer img,.film video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;}
.film video{opacity:0;transition:opacity 1.2s ease;}
.film video.on{opacity:1;}
.js .film.slit{clip-path:inset(49.5% 0 49.5% 0);}
.js .film.slit.open{clip-path:inset(0 0 0 0);transition:clip-path 1.5s var(--ease) .25s;}
.film .tblock{position:absolute;left:var(--edge);bottom:0;z-index:2;background:var(--paper);padding:14px 18px 12px 0;max-width:min(560px,92%);}
.film .tblock::before{content:"";position:absolute;right:100%;top:0;bottom:0;width:100vw;background:var(--paper);}
.film .tblock .t{font-family:var(--mono);font-size:11.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink);}
.film .tblock .s{font-family:var(--mono);font-size:11.5px;letter-spacing:.08em;color:var(--ink-faint);margin-top:4px;}
.film .grain{position:absolute;inset:0;z-index:1;pointer-events:none;background:linear-gradient(180deg,rgba(21,20,15,0) 70%,rgba(21,20,15,.18) 100%);}

/* ---------- the flood: scroll-driven terracotta fill ---------- */
.flood{position:relative;isolation:isolate;--f:0;overflow:hidden;background:var(--paper);}
.flood .pour{position:absolute;inset:0;background:var(--terra);transform:scaleY(var(--f));transform-origin:50% 100%;z-index:0;will-change:transform;}
.flood .under,.flood .over{position:relative;}
.flood .under{z-index:1;}
.flood .over{position:absolute;inset:0;z-index:2;padding:inherit;color:var(--paper);clip-path:inset(calc((1 - var(--f)) * 100%) 0 0 0);pointer-events:none;}
.flood .over .eyebrow{color:var(--paper);}
.flood .over em,.flood .over .h2 em{color:var(--paper);}
.flood .over .dim{color:rgba(236,233,226,.78);}
.flood .over .datum{background:rgba(236,233,226,.35);}
.flood .over .datum::after{border-top-color:var(--paper);}
.flood .over .btn{visibility:hidden;}
.statement{font-family:var(--grot);font-weight:400;font-size:clamp(28px,4vw,58px);line-height:1.1;letter-spacing:-.03em;max-width:22ch;margin:0;text-wrap:balance;}
.flood .sub{max-width:46ch;margin:28px 0 0;font-size:clamp(16px,1.3vw,19px);line-height:1.55;}
.flood .fmeta{display:flex;flex-wrap:wrap;gap:10px 40px;margin-top:40px;font-family:var(--mono);font-size:12px;letter-spacing:.1em;text-transform:uppercase;}
.flood .fmeta span{color:var(--ink-soft);}
.flood .over .fmeta span{color:rgba(236,233,226,.78);}

/* ---------- project index (home) ---------- */
.pidx{border-top:1px solid var(--line);}
.prow{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(0,1fr) minmax(0,.9fr) 70px 40px;gap:16px;align-items:center;padding:clamp(20px,2.8vw,32px) var(--edge);padding-right:calc(var(--edge) + var(--railw));border-bottom:1px solid var(--line);position:relative;transition:color .3s;}
.prow::before{content:"";position:absolute;left:0;top:0;bottom:0;width:0;background:var(--terra);transition:width .5s var(--ease);}
.prow .nm{font-size:clamp(24px,3.2vw,46px);font-weight:400;letter-spacing:-.03em;line-height:1;transition:transform .5s var(--ease),color .3s;}
.prow .ty,.prow .lo{font-family:var(--mono);font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft);}
.prow .yr{font-family:var(--mono);font-size:12px;color:var(--ink-faint);text-align:right;}
.prow .ar{justify-self:end;font-size:20px;opacity:0;transform:translateX(-8px);transition:opacity .3s,transform .4s var(--ease);}
.prow .m-thumb{display:none;}
@media(hover:hover) and (pointer:fine){
  .prow:hover::before{width:6px;}
  .prow:hover .nm{transform:translateX(14px);color:var(--terra);}
  .prow:hover .ar{opacity:1;transform:none;}
}
.prow:focus-visible{outline-offset:-3px;}
.prow:focus-visible .nm{color:var(--terra);}
@media(max-width:760px){
  .prow{grid-template-columns:1fr auto;row-gap:6px;padding-left:var(--edge);}
  .prow .nm{grid-column:1/-1;}
  .prow .ty{grid-column:1;}
  .prow .lo{grid-column:1;}
  .prow .yr{grid-column:2;grid-row:2;}
  .prow .ar{display:none;}
  .prow .m-thumb{display:block;grid-column:1/-1;width:100%;aspect-ratio:16/10;object-fit:cover;margin-top:8px;background:var(--paper-3);}
}
/* the cursor-following preview */
.peek{position:fixed;left:0;top:0;width:330px;height:420px;z-index:70;pointer-events:none;opacity:0;transform:translate(-50%,-50%) rotate(0deg) scale(.94);transition:opacity .3s,transform .5s var(--ease);will-change:transform;background:var(--paper-3);box-shadow:0 30px 70px rgba(21,20,15,.28);}
.peek.show{opacity:1;}
.peek img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity .45s ease;}
.peek img.on{opacity:1;}
.peek .cap{position:absolute;left:0;right:0;bottom:0;padding:10px 12px;background:var(--paper);font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink);display:flex;justify-content:space-between;gap:10px;}
.peek .cap span:last-child{color:var(--terra);}
.pidx-foot{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;padding-top:22px;padding-bottom:22px;}
.arrow{display:inline-flex;align-items:center;gap:8px;font-weight:500;color:var(--ink);font-size:15.5px;border-bottom:1px solid var(--line);padding-bottom:2px;}
.arrow::after{content:"→";transition:transform .3s var(--ease);color:var(--terra);}
@media(hover:hover) and (pointer:fine){.arrow:hover{color:var(--terra);border-color:var(--terra);}.arrow:hover::after{transform:translateX(5px);}}
.dark .arrow{color:var(--paper);border-color:var(--line-on-ink);}

/* ---------- dark, textured sections ---------- */
.dark{position:relative;background:var(--ink);color:var(--paper);overflow:hidden;}
.dark > *{position:relative;z-index:1;}
.dark .texbg{position:absolute;inset:-5% 0;z-index:0;pointer-events:none;}
.dark .texbg img{width:100%;height:100%;object-fit:cover;opacity:.22;filter:saturate(.6);}
.dark .texbg::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,var(--ink) 0%,rgba(21,20,15,.35) 22%,rgba(21,20,15,.35) 78%,var(--ink) 100%);}
@media(hover:hover) and (pointer:fine){
  .dark .texbg{will-change:transform;}
  .dark.play .texbg{animation:drift 70s ease-in-out infinite alternate;}
  @keyframes drift{from{transform:translate3d(0,-1.6%,0) scale(1.05);}to{transform:translate3d(0,1.6%,0) scale(1.05);}}
}
.dark .eyebrow{color:var(--terra);}
.dark .dim,.dark .small{color:var(--on-ink);}
.dark .prose p{color:var(--paper);opacity:.88;}
.dark .h2 em{color:var(--terra);}

/* stages: a genuine sequence, drawn as level lines */
.stages{display:grid;gap:0;}
.stage{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.6fr);gap:14px 32px;padding:22px 0;border-top:1px solid var(--line-on-ink);position:relative;}
.stage::before{content:"";position:absolute;left:0;top:-1px;width:0;height:1px;background:var(--terra);transition:width 1.2s var(--ease);}
.stage.on::before{width:100%;}
.stage h3{font-size:clamp(19px,1.8vw,24px);font-weight:500;letter-spacing:-.015em;line-height:1.15;}
.stage .when{display:block;font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--on-ink-2);margin-top:8px;}
.stage p{margin:0;color:var(--on-ink);font-size:15.5px;line-height:1.6;max-width:56ch;}
@media(max-width:640px){.stage{grid-template-columns:1fr;gap:8px;}}
.light .stage{border-top-color:var(--line);}
.light .stage .when{color:var(--ink-faint);}
.light .stage p{color:var(--ink-soft);}

/* ---------- service strip (home): three plates, edge to edge ---------- */
.svc-strip{display:grid;grid-template-columns:repeat(3,1fr);gap:0;width:100%;}
.svc{position:relative;display:block;aspect-ratio:4/5;overflow:hidden;background:var(--paper-3);color:var(--paper);isolation:isolate;}
.svc img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform 1.4s var(--ease);}
.svc::before{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(21,20,15,0) 45%,rgba(21,20,15,.72) 100%);z-index:1;}
.svc .wash{position:absolute;inset:0;background:var(--terra);transform:scaleY(0);transform-origin:50% 100%;transition:transform .7s var(--ease);z-index:2;opacity:.94;}
.svc .cap{position:absolute;left:0;right:0;bottom:0;padding:clamp(18px,2.4vw,32px);z-index:3;}
.svc .cap .t{display:block;font-size:clamp(24px,2.6vw,38px);letter-spacing:-.03em;line-height:1;}
.svc .cap .k{display:block;font-family:var(--mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:rgba(236,233,226,.75);margin-bottom:12px;}
.svc .cap .d{display:block;margin-top:12px;font-size:15px;line-height:1.5;max-width:34ch;color:rgba(236,233,226,.9);opacity:0;transform:translateY(8px);transition:opacity .4s,transform .6s var(--ease);}
.svc .cap .go{display:inline-block;margin-top:14px;font-family:var(--mono);font-size:11px;letter-spacing:.16em;text-transform:uppercase;border-bottom:1px solid rgba(236,233,226,.5);padding-bottom:3px;}
@media(hover:hover) and (pointer:fine){
  .svc:hover .wash{transform:scaleY(1);}
  .svc:hover .cap .d{opacity:1;transform:none;}
  .svc:hover img{transform:scale(1.03);}
}
.svc:focus-visible{outline-offset:-4px;outline-color:var(--paper);}
.svc:focus-visible .wash{transform:scaleY(1);}
.svc:focus-visible .cap .d{opacity:1;transform:none;}
@media(hover:none),(max-width:820px){.svc .cap .d{opacity:1;transform:none;}}
@media(max-width:820px){.svc-strip{grid-template-columns:1fr;}.svc{aspect-ratio:16/10;}.svc::before{background:linear-gradient(180deg,rgba(21,20,15,0) 20%,rgba(21,20,15,.78) 100%);}}

/* ---------- journal ---------- */
.journal{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(20px,3vw,40px);}
@media(max-width:900px){.journal{grid-template-columns:1fr;}}
.note{border-top:1px solid var(--line);padding-top:18px;}
.note .ph{aspect-ratio:3/2;overflow:hidden;background:var(--paper-3);margin-bottom:18px;}
.note .ph img{width:100%;height:100%;object-fit:cover;}
.note .when{font-family:var(--mono);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-faint);}
.note h3{font-size:clamp(20px,1.9vw,25px);font-weight:500;letter-spacing:-.02em;line-height:1.15;margin:10px 0 10px;}
.note p{margin:0;color:var(--ink-soft);font-size:15.5px;line-height:1.6;}

/* ---------- contact strip ---------- */
.cstrip{background:var(--paper-2);border-top:1px solid var(--line);}
.cstrip .h2{max-width:16ch;}
.cstrip .lede{margin-top:24px;}
.cstrip .btns{display:flex;gap:12px;flex-wrap:wrap;margin-top:30px;}
.deets{display:grid;grid-template-columns:repeat(3,auto);justify-content:start;gap:16px clamp(28px,4vw,64px);margin-top:48px;padding-top:26px;border-top:1px solid var(--line);}
@media(max-width:700px){.deets{grid-template-columns:1fr;}}
.deets .k{display:block;font-family:var(--mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-faint);margin-bottom:6px;}
.deets .v{font-size:15.5px;line-height:1.5;}

/* ---------- footer ---------- */
.foot{background:var(--ink);color:var(--paper);padding:clamp(56px,8vh,90px) 0 28px;}
.foot.dark .texbg img{opacity:.16;}
.foot.dark .texbg::after{background:linear-gradient(180deg,var(--ink) 0%,rgba(21,20,15,.5) 40%,rgba(21,20,15,.7) 100%);}
.foot .fmark{display:flex;align-items:flex-end;gap:18px;flex-wrap:wrap;}
.foot .fmark .blogo{height:clamp(44px,7vw,92px);}
.foot .fword{font-family:var(--grot);font-weight:700;font-size:clamp(44px,9vw,132px);letter-spacing:.14em;line-height:.9;}
.foot .ft{font-family:var(--mono);font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--terra);margin:18px 0 44px;}
.foot .fg{display:grid;grid-template-columns:1.3fr 1fr 1fr 1fr;gap:32px;font-size:15px;color:var(--on-ink);}
@media(max-width:900px){.foot .fg{grid-template-columns:1fr 1fr;}}
@media(max-width:520px){.foot .fg{grid-template-columns:1fr;}}
.foot h4{font-family:var(--mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--paper);margin-bottom:12px;font-weight:400;}
.foot ul{list-style:none;padding:0;display:grid;gap:8px;}
.foot a{color:var(--on-ink);}
@media(hover:hover) and (pointer:fine){.foot a:hover{color:var(--terra);}}
.foot .fcred{font-family:var(--mono);font-size:11px;letter-spacing:.06em;color:var(--on-ink-2);margin-top:44px;padding-top:22px;border-top:1px solid var(--line-on-ink);display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;}
.foot .fcred a{color:var(--on-ink);}

/* ---------- inner page hero (service, studio, contact, projects) ---------- */
.phero{padding:clamp(28px,5vh,60px) 0 0;}
.phero .h1{margin-top:18px;max-width:14ch;}
.phero .lede{margin-top:24px;}
.phero .plate{margin-top:clamp(26px,5vh,52px);}
.plate{position:relative;background:var(--paper-3);overflow:hidden;}
.plate.wide{margin-left:calc(50% - 50vw);width:100vw;min-height:clamp(260px,56svh,720px);}
.plate.wide img,.plate.wide video,.plate.wide picture{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;}
.plate.wide picture img{position:static;}
.plate .tblock{position:absolute;left:var(--edge);bottom:0;z-index:2;background:var(--paper);padding:12px 18px 10px 0;}
.plate .tblock::before{content:"";position:absolute;right:100%;top:0;bottom:0;width:100vw;background:var(--paper);}
.plate .tblock .t{font-family:var(--mono);font-size:11.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink);}
.plate .tblock .s{font-family:var(--mono);font-size:11.5px;letter-spacing:.08em;color:var(--ink-faint);margin-top:4px;}
.plate video{opacity:0;transition:opacity 1.2s ease;}
.plate video.on{opacity:1;}
.thesis{padding:clamp(56px,9vh,120px) 0;}

/* lists */
.list{list-style:none;padding:0;display:grid;gap:0;}
.list li{padding:16px 0;border-top:1px solid var(--line);display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.5fr);gap:8px 28px;font-size:15.5px;line-height:1.55;color:var(--ink-soft);}
.list li b{font-weight:500;color:var(--ink);font-size:17px;}
.list li:last-child{border-bottom:1px solid var(--line);}
@media(max-width:640px){.list li{grid-template-columns:1fr;gap:4px;}}
.list.plain li{display:block;}
.list.plain li b{display:block;margin-bottom:4px;}

/* fee bands */
.fees{border-top:1px solid var(--line);}
.fee{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,2fr) auto;gap:8px 28px;padding:20px 0;border-bottom:1px solid var(--line);align-items:baseline;}
.fee .n{font-size:clamp(18px,1.7vw,22px);font-weight:500;letter-spacing:-.015em;}
.fee .d{font-size:15px;color:var(--ink-soft);line-height:1.55;max-width:58ch;}
.fee .f{font-family:var(--mono);font-size:14px;letter-spacing:.02em;white-space:nowrap;text-align:right;}
.fee .f small{display:block;font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-faint);margin-bottom:4px;white-space:normal;}
@media(max-width:760px){.fee{grid-template-columns:1fr;}.fee .f{text-align:left;}}
.fee-note{font-size:14.5px;color:var(--ink-soft);max-width:70ch;margin-top:18px;line-height:1.6;}

/* project cards (service pages) */
.pcards{display:grid;grid-template-columns:1fr 1fr;gap:clamp(18px,2.5vw,36px);}
@media(max-width:760px){.pcards{grid-template-columns:1fr;}}
.pcard{display:block;position:relative;}
.pcard .ph{aspect-ratio:4/3;overflow:hidden;background:var(--paper-3);}
.pcard .ph img{width:100%;height:100%;object-fit:cover;transition:transform 1.2s var(--ease);}
.pcard .meta{display:flex;justify-content:space-between;gap:14px;align-items:baseline;padding:14px 0 0;border-top:1px solid var(--line);margin-top:14px;}
.pcard .meta .t{font-size:clamp(20px,2vw,26px);letter-spacing:-.02em;font-weight:500;transition:color .3s;}
.pcard .meta .k{flex:none;font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-faint);text-align:right;}
@media(hover:hover) and (pointer:fine){.pcard:hover .ph img{transform:scale(1.03);}.pcard:hover .meta .t{color:var(--terra);}}
.pcard:focus-visible .meta .t{color:var(--terra);}

/* faq */
.faq details{border-top:1px solid var(--line);}
.faq details:last-child{border-bottom:1px solid var(--line);}
.faq summary{list-style:none;display:flex;justify-content:space-between;align-items:center;gap:18px;padding:18px 0;font-size:clamp(18px,1.7vw,22px);font-weight:500;letter-spacing:-.015em;line-height:1.25;}
.faq summary::-webkit-details-marker{display:none;}
.faq summary::after{content:"+";font-family:var(--mono);font-size:22px;color:var(--terra);flex:none;transition:transform .3s var(--ease);}
.faq details[open] summary::after{transform:rotate(45deg);}
.faq details p{margin:0 0 20px;color:var(--ink-soft);max-width:66ch;font-size:15.5px;line-height:1.6;}
.faq summary:focus-visible{outline-offset:-3px;}

/* quote */
.quote{border-left:2px solid var(--terra);padding:6px 0 6px 24px;max-width:56ch;}
.quote blockquote{font-size:clamp(20px,2vw,27px);letter-spacing:-.02em;line-height:1.3;}
.quote .by{font-family:var(--mono);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-faint);margin-top:14px;}

/* ================= projects page ================= */
.filters{position:sticky;top:calc(var(--navh) - 14px);z-index:60;background:var(--paper);border-top:1px solid var(--line);border-bottom:1px solid var(--line);}
.filters .in{display:flex;align-items:center;gap:6px;overflow-x:auto;scrollbar-width:none;padding-top:10px;padding-bottom:10px;}
.filters .in::-webkit-scrollbar{display:none;}
.fbtn{flex:none;font-family:var(--mono);font-size:11.5px;letter-spacing:.14em;text-transform:uppercase;padding:9px 13px;border:1px solid transparent;border-radius:3px;color:var(--ink-soft);transition:color .2s,border-color .2s,background .2s;}
.fbtn[aria-pressed="true"]{color:var(--paper);background:var(--ink);border-color:var(--ink);}
@media(hover:hover) and (pointer:fine){.fbtn:hover{color:var(--terra);border-color:var(--line);}.fbtn[aria-pressed="true"]:hover{color:var(--paper);}}
.fcount{margin-left:auto;flex:none;font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-faint);padding-left:12px;}
.pgrid{display:grid;grid-template-columns:repeat(12,1fr);gap:clamp(14px,2vw,28px);margin-top:clamp(28px,4vh,44px);}
.tile{display:block;position:relative;grid-column:span 4;transition:opacity .45s var(--ease),transform .45s var(--ease);}
.tile.big{grid-column:span 8;}
.tile.mid{grid-column:span 6;}
.tile .ph{overflow:hidden;background:var(--paper-3);aspect-ratio:4/3;}
.tile.big .ph{aspect-ratio:16/10;}
.tile.tall .ph{aspect-ratio:4/5;}
.tile .ph img{width:100%;height:100%;object-fit:cover;transition:transform 1.2s var(--ease);}
.tile .meta{display:block;padding-top:12px;}
.tile .meta .t{font-size:clamp(19px,1.8vw,26px);letter-spacing:-.02em;font-weight:500;transition:color .3s;}
.tile .meta .k{display:block;margin-top:5px;font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-faint);}
.tile.hide{opacity:0;transform:scale(.97);pointer-events:none;}
.tile.gone{display:none;}
@media(hover:hover) and (pointer:fine){.tile:hover .ph img{transform:scale(1.03);}.tile:hover .meta .t{color:var(--terra);}}
.tile:focus-visible{outline-offset:4px;}
@media(max-width:1000px){.tile,.tile.big,.tile.mid{grid-column:span 6;}.tile.big .ph{aspect-ratio:4/3;}}
@media(max-width:620px){.tile,.tile.big,.tile.mid{grid-column:span 12;}.tile.tall .ph{aspect-ratio:4/3;}}
.pempty{display:none;padding:40px 0;color:var(--ink-soft);}
.pempty.show{display:block;}

/* project detail dialog */
.pdlg{border:0;padding:0;margin:0;max-width:none;max-height:none;width:100vw;height:100svh;background:transparent;color:var(--ink);}
.pdlg::backdrop{background:rgba(21,20,15,.72);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);}
.pdlg .box{position:absolute;inset:0;overflow:auto;background:var(--paper);overscroll-behavior:contain;}
@media(min-width:900px){.pdlg .box{left:auto;width:min(880px,92vw);border-left:1px solid var(--line);}}
.js .pdlg[open] .box{animation:slidein .55s var(--ease);}
@keyframes slidein{from{transform:translateX(40px);opacity:0;}to{transform:none;opacity:1;}}
.pdlg .top{position:sticky;top:0;z-index:2;display:flex;justify-content:space-between;align-items:center;gap:12px;padding:14px clamp(18px,3vw,40px);background:var(--paper);border-bottom:1px solid var(--line);}
.pdlg .top .k{font-family:var(--mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-faint);}
.pdlg .top .nav2{display:flex;gap:6px;}
.pdlg .top button{width:42px;height:42px;border:1px solid var(--line);border-radius:3px;font-size:18px;line-height:1;transition:border-color .2s,background .2s,color .2s;}
@media(hover:hover) and (pointer:fine){.pdlg .top button:hover{border-color:var(--terra);color:var(--terra);}}
.pdlg .body{padding:clamp(18px,3vw,40px) clamp(18px,3vw,40px) 56px;}
.pdlg .hero-ph{aspect-ratio:3/2;overflow:hidden;background:var(--paper-3);}
.pdlg .hero-ph img{width:100%;height:100%;object-fit:cover;}
.pdlg h2{font-size:clamp(30px,4vw,54px);letter-spacing:-.03em;line-height:1;margin-top:22px;}
.pdlg .facts{display:grid;grid-template-columns:repeat(2,1fr);gap:14px 24px;margin:24px 0 28px;padding:18px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);}
@media(min-width:640px){.pdlg .facts{grid-template-columns:repeat(4,1fr);}}
.pdlg .facts .k{display:block;font-family:var(--mono);font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-faint);margin-bottom:5px;}
.pdlg .facts .v{font-size:15px;line-height:1.4;}
.pdlg .acct p{max-width:64ch;color:var(--ink);opacity:.9;font-size:16px;line-height:1.6;}
.pdlg .set{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:28px;}
@media(max-width:560px){.pdlg .set{grid-template-columns:1fr;}}
.pdlg .set figure{margin:0;}
.pdlg .set .ph{aspect-ratio:4/5;overflow:hidden;background:var(--paper-3);}
.pdlg .set .ph img{width:100%;height:100%;object-fit:cover;}
.pdlg .set figcaption{font-family:var(--mono);font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-faint);margin-top:8px;}
.pdlg .cta{margin-top:32px;display:flex;gap:12px;flex-wrap:wrap;align-items:center;}

/* ================= studio page ================= */
.people{display:flex;flex-wrap:wrap;justify-content:center;gap:28px 22px;}
.person{flex:0 1 calc((100% - 88px)/5);min-width:150px;max-width:260px;}
@media(max-width:1000px){.person{flex:0 1 calc((100% - 44px)/3);}}
@media(max-width:600px){.person{flex:0 1 calc((100% - 22px)/2);}}
.person .ph{aspect-ratio:1;overflow:hidden;background:var(--paper-3);}
.person .ph img{width:100%;height:100%;object-fit:cover;filter:saturate(.85);}
.person .pn{font-size:18px;font-weight:500;letter-spacing:-.015em;margin-top:12px;}
.person .pr{font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--terra);margin-top:4px;}
.person p{margin:8px 0 0;font-size:14px;color:var(--ink-soft);line-height:1.5;}
.tools{display:grid;grid-template-columns:repeat(2,1fr);gap:14px;}
@media(max-width:700px){.tools{grid-template-columns:1fr;}}
.tool{border:1px solid var(--line);padding:20px;border-radius:3px;}
.tool b{display:block;font-weight:500;font-size:17px;margin-bottom:6px;}
.tool p{margin:0;font-size:14.5px;color:var(--ink-soft);line-height:1.55;}
.trio{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;}
@media(max-width:700px){.trio{grid-template-columns:1fr;}}
.trio .ph{aspect-ratio:4/5;overflow:hidden;background:var(--paper-3);}
.trio .ph img{width:100%;height:100%;object-fit:cover;}

/* ================= contact page ================= */
.cgrid{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:clamp(32px,6vw,96px);align-items:start;}
@media(max-width:900px){.cgrid{grid-template-columns:1fr;}}
.form{display:grid;gap:18px;}
.field{display:grid;gap:7px;}
.field label{font-family:var(--mono);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-soft);}
.field input,.field select,.field textarea{width:100%;padding:13px 14px;background:transparent;border:1px solid var(--line);border-radius:3px;color:var(--ink);font-family:inherit;font-size:16px;line-height:1.4;}
.field select{appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--ink-soft) 50%),linear-gradient(135deg,var(--ink-soft) 50%,transparent 50%);background-position:calc(100% - 20px) 50%,calc(100% - 14px) 50%;background-size:6px 6px;background-repeat:no-repeat;padding-right:38px;}
.field textarea{min-height:130px;resize:vertical;}
.field input:focus-visible,.field select:focus-visible,.field textarea:focus-visible{outline:2px solid var(--terra);outline-offset:0;border-color:var(--terra);}
.field .err{display:none;font-size:13px;color:var(--terra-deep);}
.field.bad .err{display:block;}
.field.bad input,.field.bad select,.field.bad textarea{border-color:var(--terra);}
.field .fh{font-size:12.5px;color:var(--ink-faint);line-height:1.4;}
.frow{display:grid;grid-template-columns:1fr 1fr;gap:18px;}
@media(max-width:600px){.frow{grid-template-columns:1fr;}}
.done{border:1px solid var(--terra);border-radius:3px;padding:clamp(24px,3vw,36px);}
.done .mark{width:46px;height:46px;position:relative;margin-bottom:18px;}
.done .mark::before{content:"";position:absolute;inset:0;border:1.5px solid var(--terra);border-radius:50%;}
.done .mark::after{content:"";position:absolute;left:16px;top:11px;width:10px;height:18px;border:solid var(--terra);border-width:0 1.5px 1.5px 0;transform:rotate(45deg);}
.hours{display:grid;}
.hours .r{display:flex;justify-content:space-between;gap:16px;padding:10px 0;border-bottom:1px solid var(--line);font-size:15px;}
.hours .r .d{font-family:var(--mono);font-size:11.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft);}
.hours .r.today .d,.hours .r.today span{color:var(--terra);}
.addr{font-size:clamp(20px,2vw,26px);letter-spacing:-.02em;line-height:1.35;}
.bring{list-style:none;padding:0;display:grid;gap:10px;}
.bring li{position:relative;padding-left:22px;font-size:15.5px;color:var(--ink-soft);line-height:1.5;}
.bring li::before{content:"";position:absolute;left:0;top:9px;width:0;height:0;border-top:4px solid transparent;border-bottom:4px solid transparent;border-left:7px solid var(--terra);}
.bring li b{color:var(--ink);font-weight:500;}
.cphoto{aspect-ratio:4/5;overflow:hidden;background:var(--paper-3);}
.cphoto img{width:100%;height:100%;object-fit:cover;}

/* ---------- reduced motion ---------- */
@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto;}
  .js .rv,.js .plate.rv img,.js .plate.rv picture,.js .plate.rv video,.js .lines .l span,.js .datum.rv{opacity:1;transform:none;clip-path:none;transition:none;}
  .js .film.slit,.js .film.slit.open{clip-path:none;transition:none;}
  .dark .texbg{animation:none!important;}
  .ix,.ix.open,.ixrow,.ix.open .ixrow,.ixpeek,.js .pdlg[open] .box,.peek,.svc .wash,.svc img,.tile,.tile .ph img,.pcard .ph img,.stage::before,.btn,.prow .nm,.prow::before{transition:none;animation:none;opacity:1;transform:none;}
  .flood .pour{transform:scaleY(1);}
  .flood .over{clip-path:none;}
}
.blogo{width:auto;display:block;flex:none;object-fit:contain;}
.dark .bring li{color:var(--on-ink);}
.dark .bring li b{color:var(--paper);}
/* filtered project grid: a uniform, centred set so a short list never leaves an orphan on the left */
.pgrid{--pg:clamp(14px,2vw,28px);gap:var(--pg);}
.pgrid.filtered{display:flex;flex-wrap:wrap;justify-content:center;}
.pgrid.filtered .tile,.pgrid.filtered .tile.big,.pgrid.filtered .tile.mid{flex:0 1 calc((100% - 2 * var(--pg))/3);}
.pgrid.filtered .tile .ph,.pgrid.filtered .tile.big .ph,.pgrid.filtered .tile.tall .ph{aspect-ratio:4/3;}
@media(max-width:1000px){.pgrid.filtered .tile,.pgrid.filtered .tile.big,.pgrid.filtered .tile.mid{flex:0 1 calc((100% - var(--pg))/2);}}
@media(max-width:620px){.pgrid.filtered .tile,.pgrid.filtered .tile.big,.pgrid.filtered .tile.mid{flex:0 1 100%;}}
