:root { --wall: #f7f7f4; --black: #11100e; --milk: #f7f7f4; --text: #11100e; --line: rgba(17,16,14,.22); --terracotta:#b65b43; }
*,*::before,*::after { box-sizing:border-box; }
html, body { min-height:100%; }
body.gallery-home,body.collection-index,body.about-index { margin:0; background:var(--wall); color:var(--text); font-family:'IBM Plex Mono',monospace; text-transform:lowercase; }
body.gallery-home { font-size:12px; background:#242220; color:#f3f1eb; --line:rgba(243,241,235,.22); }
.gallery-home .gallery-interior { background:#242220; }
.gallery-home .gallery-header { background:rgba(36,34,32,.94); color:#f3f1eb; }
body.collection-index,body.about-index { background:#242220; color:#f3f1eb; --wall:#242220; --text:#f3f1eb; --line:rgba(243,241,235,.22); }
.collection-index .gallery-header,.about-index .gallery-header { background:rgba(36,34,32,.94); color:#f3f1eb; }
.threshold { position:fixed; inset:0; z-index:1000; width:100%; height:100%; padding:0; border:0; background:#090704; cursor:pointer; transition:opacity 1.8s cubic-bezier(.22,.61,.36,1),filter 1.8s ease,transform 2.2s ease; }
.threshold img { width:100%; height:100%; object-fit:cover; display:block; }
.threshold.leaving { opacity:0; filter:blur(14px); transform:scale(1.025); pointer-events:none; }
.threshold.gone { display:none; }
.gallery-interior { opacity:0; min-height:100vh; background:var(--wall); transition:opacity 1.4s ease .25s; }
.gallery-interior.entered { opacity:1; }
.gallery-header { position:sticky; top:0; z-index:20; display:grid; grid-template-columns:1fr auto; align-items:center; gap:clamp(20px,4vw,70px); margin:0; padding:24px clamp(22px,4vw,64px); border-bottom:1px solid var(--line); background:rgba(247,247,244,.94); color:var(--text); backdrop-filter:blur(16px); }
.gallery-header .wordmark.gnum { font-family:'Cormorant Garamond','Playfair Display',Georgia,serif; font-size:clamp(1.65rem,2.4vw,2.3rem); font-style:normal; font-weight:500; line-height:1; letter-spacing:.005em; text-decoration:none; text-transform:none; white-space:nowrap; }
.gnum .e { color:#d94a3d; display:inline-block; animation:gnum-e-cycle 6s linear infinite !important; }
@keyframes gnum-e-cycle { 0%,100%{color:#d94a3d} 25%{color:#f5c945} 50%{color:#3fa15a} 75%{color:#3a7fc8} }
.gallery-header nav { display:flex; gap:clamp(14px,2.5vw,38px); align-items:center; }
.gallery-header nav a,.gallery-menu { color:inherit; background:none; border:0; border-bottom:1px solid transparent; padding:5px 0; font:400 .73rem/1.2 'IBM Plex Mono',monospace; text-decoration:none; cursor:pointer; }
.gallery-header nav a:hover,.gallery-header nav a:focus-visible,.gallery-menu:hover { border-color:currentColor; }
.house-menu { position:fixed; inset:0 0 0 auto; z-index:40; width:min(520px,100%); padding:34px clamp(26px,6vw,72px); background:var(--black); color:var(--milk); transform:translateX(100%); transition:transform .6s cubic-bezier(.76,0,.24,1); }
.house-menu.open { transform:none; }
.house-menu nav { display:flex; flex-direction:column; margin-top:15vh; }
.house-menu nav a { padding:15px 0; border-bottom:1px solid rgba(244,238,228,.25); color:inherit; font-size:clamp(1.15rem,3vw,2rem); text-decoration:none; }
.menu-close { float:right; background:none; border:0; color:inherit; font:inherit; cursor:pointer; }
.poster-room { min-height:calc(100vh - 84px); padding:clamp(70px,10vw,150px) clamp(24px,7vw,120px); display:grid; grid-template-columns:repeat(12,1fr); grid-template-rows:repeat(8,minmax(48px,7vh)); gap:clamp(18px,3vw,46px); }
.poster { position:relative; display:block; overflow:hidden; background:#d7c3a5; box-shadow:0 22px 45px rgba(38,22,10,.16); text-decoration:none; }
.poster img { width:100%; height:100%; object-fit:cover; filter:saturate(.92); transition:transform .8s cubic-bezier(.2,.7,.2,1),filter .6s ease; }
.poster:hover img { transform:scale(1.025); filter:saturate(1.05); }
.poster span { position:absolute; left:0; right:0; bottom:0; display:flex; justify-content:space-between; align-items:end; gap:10px; padding:14px 16px; background:linear-gradient(transparent,rgba(10,7,4,.78)); color:white; }
.poster b { font-weight:400; font-size:.8rem; }.poster small { font-size:.58rem; }
.poster-tall { grid-column:1/5; grid-row:1/7; }.poster-wide { grid-column:7/13; grid-row:1/5; }.poster-square { grid-column:5/9; grid-row:5/9; }.poster-slim { grid-column:10/13; grid-row:6/9; }
.editorial-layer { background:var(--milk); display:grid; grid-template-columns:1fr 1fr; gap:1px; padding:1px; }
.editorial-column { display:grid; grid-template-rows:minmax(430px,62vh) minmax(260px,36vh); gap:1px; background:rgba(17,16,14,.25); }
.feature-panel,.house-card { background:var(--milk); padding:clamp(34px,7vw,110px); display:flex; flex-direction:column; align-items:flex-start; justify-content:space-between; }
.feature-panel h2,.house-card h3 { max-width:15ch; font-family:'IBM Plex Mono',monospace; font-style:normal; font-weight:300; font-size:clamp(1.8rem,4vw,4.2rem); line-height:1.05; }
.feature-panel p { max-width:38ch; font-size:.82rem; }
.feature-panel a,.house-card a { color:inherit; font-size:.72rem; text-underline-offset:5px; }
.micro { font-size:.62rem; letter-spacing:.12em; }
.house-card { background:#171411; color:var(--milk); }.mission-card { background:var(--terracotta); }
.gallery-footer { display:grid; grid-template-columns:1fr auto auto auto; gap:32px; padding:30px clamp(22px,4vw,64px); background:var(--black); color:var(--milk); font-size:.62rem; }
.gallery-footer a { color:inherit; }
.currently-viewing { min-height:calc(100vh - 84px); display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:clamp(42px,8vw,130px); align-content:start; padding:clamp(72px,10vw,150px) clamp(24px,7vw,110px) clamp(110px,15vw,220px); }
.viewing-label { grid-column:1/-1; display:flex; align-items:center; gap:10px; margin:0 0 clamp(34px,5vw,68px); font-size:1rem; font-weight:300; line-height:1.3; letter-spacing:0; }
.open-dot { width:7px; height:7px; flex:0 0 7px; border-radius:50%; background:#d94a3d; animation:open-dot-cycle 6s linear infinite,open-dot-pulse 1.8s ease-in-out infinite; }
@keyframes open-dot-cycle { 0%,100%{background:#d94a3d} 25%{background:#f5c945} 50%{background:#3fa15a} 75%{background:#3a7fc8} }
@keyframes open-dot-pulse { 0%,100%{opacity:.38;transform:scale(.78)} 50%{opacity:1;transform:scale(1)} }
.viewing-group { display:block; min-width:0; padding:24px 0 clamp(70px,9vw,130px); border-top:1px solid var(--line); }
.viewing-group h2 { margin:0 0 clamp(42px,6vw,82px); font:400 .9em/1.5 'IBM Plex Mono',monospace; }
.viewing-group nav { display:flex; flex-direction:column; align-items:stretch; gap:clamp(32px,4vw,56px); }
.viewing-group a { display:flex; flex-direction:column; gap:8px; color:inherit; font-weight:300; text-decoration:none; }
.work-name { font-size:1em; line-height:1.45; }
.work-note { opacity:0; transform:translateY(3px); font-size:.85em; line-height:1.6; transition:opacity .35s ease,transform .35s ease; }
.viewing-group a:hover .work-note,.viewing-group a:focus-visible .work-note { opacity:.58; transform:none; }
.gallery-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:clamp(70px,10vw,160px) clamp(42px,7vw,110px); padding:clamp(90px,12vw,180px) clamp(32px,8vw,150px); background:var(--wall); }
.gallery-work { color:inherit; text-decoration:none; min-width:0; }
.gallery-work figure { margin:0; display:grid; gap:18px; }
.gallery-work img { width:100%; height:min(58vw,680px); object-fit:contain; background:#fff; display:block; }
.gallery-work figcaption { display:flex; justify-content:space-between; gap:24px; padding-top:12px; border-top:1px solid var(--line); font-size:.72rem; }
.gallery-work figcaption small { font-size:.62rem; }
.collection-cover { min-width:0; display:grid; grid-template-rows:auto auto; color:var(--text); text-decoration:none; background:transparent !important; border:0; }
.collection-cover .p-top { display:none; }
.collection-cover .p-art { position:relative; aspect-ratio:1; background-size:cover; background-position:center; opacity:1; transition:transform .5s ease; }
.collection-cover .p-art::after { display:none; }
.collection-cover .p-title { display:flex; justify-content:space-between; gap:20px; padding:14px 0 0; border-top:1px solid var(--line); margin-top:14px; font-family:'IBM Plex Mono',monospace; font-size:.72rem; font-weight:400; line-height:1.3; letter-spacing:0; }
.collection-cover .p-title small { margin-left:auto; font:inherit; font-size:.62rem; opacity:.65; text-align:right; }
.collection-cover:hover .p-art { transform:scale(1.025); }
.collection-cover.p-llfl { background:#2f5a3a; color:#f4ecd6; }.collection-cover.p-aog { background:#0e0906; color:#e8dcbf; }.collection-cover.p-wnge { background:#0047ab; color:#f4ecd6; }.collection-cover.p-r3s { background:#2a0d12; color:#f2e0c4; }
.collection-cover.p-r3s .p-art { background-size:contain; background-repeat:no-repeat; background-position:center 30%; background-color:#160607; }
.archive-list { list-style-position:inside; margin:0; padding:clamp(100px,15vw,220px) clamp(28px,8vw,150px); min-height:calc(100vh - 150px); background:var(--wall); }
.archive-list li { padding:22px 0; border-bottom:1px solid var(--line); font-size:clamp(1.2rem,2.6vw,2.4rem); }
.collection-room { margin:0; min-height:100vh; background:#242220; color:#f3f1eb; font:12px/1.6 'IBM Plex Mono',monospace; text-transform:lowercase; }
.collection-room-main { min-height:calc(100vh - 84px); display:grid; grid-template-columns:minmax(0,1.4fr) minmax(220px,.6fr); gap:clamp(42px,8vw,130px); align-items:center; padding:clamp(60px,9vw,130px) clamp(24px,7vw,110px); }
.collection-room-main figure { margin:0; }
.collection-room-main img { width:100%; max-height:72vh; object-fit:contain; }
.collection-room-copy { align-self:end; padding-bottom:2vh; border-top:1px solid var(--line); }
.collection-room-copy h1 { margin:18px 0 8px; font:300 1rem/1.4 'IBM Plex Mono',monospace; }
.collection-room-copy p,.collection-room-copy a { color:inherit; font-size:.68rem; }
.collection-room-copy p { opacity:.58; }
.memoir-page { margin:0; min-height:100vh; background:#242220; color:#f3f1eb; font:12px/1.6 'IBM Plex Mono',monospace; text-transform:lowercase; }
.memoir-main { min-height:calc(100vh - 84px); display:flex; flex-direction:column; justify-content:space-between; padding:clamp(60px,10vw,150px) clamp(24px,7vw,110px) clamp(50px,7vw,100px); }
.memoir-main h1 { max-width:18ch; margin:0; font:300 clamp(1.25rem,2vw,1.8rem)/1.25 'IBM Plex Mono',monospace; letter-spacing:-.03em; }
.memoir-kicker,.memoir-footer { margin:0; color:rgba(243,241,235,.58); font-size:.65rem; }
.memoir-entry { min-height:calc(100vh - 84px); padding:clamp(60px,10vw,150px) clamp(24px,7vw,110px) clamp(90px,12vw,170px); }
.memoir-entry header { margin-bottom:clamp(80px,13vw,210px); }
.memoir-entry header h1 { max-width:18ch; margin:16px 0 0; font:300 clamp(1.15rem,1.8vw,1.65rem)/1.3 'IBM Plex Mono',monospace; letter-spacing:-.03em; }
.memoir-thread { width:min(100%,620px); margin:0 auto; display:grid; gap:clamp(28px,4vw,52px); }
.memoir-message { display:grid; gap:8px; max-width:78%; font-size:.82rem; line-height:1.55; }
.memoir-message.from-kemi { justify-self:end; text-align:right; }
.memoir-message.from-dami { justify-self:start; }
.memoir-message .memoir-who { color:rgba(243,241,235,.38); font-size:.58rem; }
.memoir-message p { margin:0; }
.memoir-source { display:grid; gap:10px; padding:16px 0; border-block:1px solid var(--line); color:inherit; text-align:left; text-decoration:none; }
.memoir-source small { color:rgba(243,241,235,.42); font-size:.58rem; }
.memoir-source strong { font:400 .72rem/1.45 'IBM Plex Mono',monospace; }
.memoir-closing { margin:clamp(90px,14vw,220px) 0 0; color:rgba(243,241,235,.58); font:300 clamp(1rem,1.5vw,1.3rem)/1.4 'IBM Plex Mono',monospace; text-align:center; }
.memoir-closing span { color:#f3f1eb; }
.storefront-room-main { min-height:calc(100vh - 84px); padding:clamp(48px,7vw,92px) clamp(24px,5vw,76px) clamp(70px,9vw,130px); }
.storefront-room-head { display:flex; align-items:end; justify-content:space-between; gap:30px; margin-bottom:clamp(42px,6vw,78px); padding-bottom:18px; border-bottom:1px solid var(--line); }
.storefront-room-head h1 { margin:0; font:300 1rem/1.4 'IBM Plex Mono',monospace; }
.storefront-room-head a,.room-refresh { color:inherit; background:none; border:0; padding:0; font:400 .65rem/1.4 'IBM Plex Mono',monospace; text-decoration:underline; text-underline-offset:5px; cursor:pointer; }
.storefront-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:clamp(28px,3.2vw,52px); opacity:1; transition:opacity .65s ease,filter .65s ease; }
.storefront-grid.changing { opacity:0; filter:blur(5px); }
.store-work { min-width:0; }
.store-work figure { margin:0 0 18px; aspect-ratio:4/5; background:#f7f7f4; overflow:hidden; }
.store-work img { width:100%; height:100%; object-fit:contain; display:block; }
.store-work-info { border-top:1px solid var(--line); padding-top:13px; }
.store-work h2 { min-height:3em; margin:0 0 16px; font:300 .72rem/1.5 'IBM Plex Mono',monospace; }
.work-formats { display:flex; flex-direction:column; align-items:flex-start; gap:5px; min-height:47px; }
.work-format { border:0; border-bottom:1px solid transparent; padding:0; background:none; color:inherit; opacity:.42; font:400 .58rem/1.5 'IBM Plex Mono',monospace; cursor:pointer; }
.work-format.selected { border-color:currentColor; opacity:1; }
.work-purchase { display:flex; justify-content:space-between; align-items:center; gap:12px; margin-top:18px; font-size:.65rem; }
.work-purchase button { border:1px solid var(--line); padding:7px 11px; background:none; color:inherit; font:400 .6rem/1 'IBM Plex Mono',monospace; cursor:pointer; }
.work-purchase button:hover,.work-purchase button:focus-visible { background:#f3f1eb; color:#242220; }
.work-purchase button:disabled { opacity:.35; cursor:wait; }
.purchase-status { min-height:1.4em; margin:8px 0 0; opacity:.55; font-size:.55rem; }
.storefront-room-foot { display:flex; justify-content:flex-end; margin-top:clamp(50px,7vw,90px); }
.experiment-room-main { min-height:calc(100vh - 84px); display:flex; flex-direction:column; justify-content:space-between; padding:clamp(80px,12vw,180px) clamp(24px,7vw,110px); }
.experiment-room-main h1 { margin:0 0 14px; font:300 1rem/1.4 'IBM Plex Mono',monospace; }
.experiment-room-main p,.experiment-room-main a { color:inherit; font-size:.68rem; }
.experiment-room-main p { opacity:.58; }
.ponder-room-main { min-height:calc(100vh - 84px); display:grid; grid-template-columns:minmax(120px,.35fr) minmax(0,1fr); gap:clamp(36px,7vw,110px); align-items:start; padding:clamp(55px,8vw,110px) clamp(24px,7vw,110px) clamp(80px,10vw,140px); }
.ponder-room-main header h1 { margin:0 0 8px; font:300 1rem/1.4 'IBM Plex Mono',monospace; }
.ponder-room-main header p { margin:0; opacity:.58; font-size:.68rem; }
.ponder-work { width:min(100%,760px); justify-self:center; }
.ponder-work figure { margin:0; }
.ponder-work img { display:block; width:100%; max-height:72vh; object-fit:contain; }
.ponder-work footer { display:grid; grid-template-columns:1fr auto; gap:18px 32px; margin-top:14px; padding-top:12px; border-top:1px solid var(--line); font-size:.68rem; }
.ponder-work footer > div:first-child { display:flex; flex-direction:column; gap:4px; }
.ponder-work footer small { font:inherit; opacity:.58; }
.ponder-purchase { display:flex; align-items:center; gap:18px; font-size:.6rem; }
.ponder-purchase button { border:1px solid var(--line); padding:7px 11px; background:none; color:inherit; font:400 .6rem/1 'IBM Plex Mono',monospace; cursor:pointer; }
.ponder-purchase button:hover,.ponder-purchase button:focus-visible { background:#f3f1eb; color:#242220; }
.ponder-purchase button:disabled { opacity:.35; cursor:wait; }
.ponder-work .purchase-status { grid-column:1/-1; text-align:right; }
.ponder-back { grid-column:2; color:inherit; justify-self:end; font-size:.62rem; }
@media(max-width:760px){
  .gallery-header { grid-template-columns:1fr auto; }.gallery-header nav { display:none; }
  .poster-room { min-height:auto; grid-template-columns:1fr 1fr; grid-template-rows:repeat(2,42vh); padding:72px 20px; gap:18px; }
  .poster-tall,.poster-wide,.poster-square,.poster-slim { grid-column:auto; grid-row:auto; }
  .editorial-layer { grid-template-columns:1fr; }.editorial-column { grid-template-rows:minmax(410px,70vh) minmax(230px,38vh); }
  .gallery-footer { grid-template-columns:1fr 1fr; }
  .gallery-grid { grid-template-columns:1fr; gap:80px; padding:80px 22px; }
  .gallery-work img { height:65vh; }
  .currently-viewing { grid-template-columns:repeat(2,minmax(0,1fr)); gap:18px; padding-left:18px; padding-right:18px; }
  .viewing-label { margin-bottom:38px; }
  .viewing-group { padding:20px 0 80px; }
  .viewing-group nav { gap:28px; }
  .viewing-group a { grid-template-columns:1fr; gap:8px; }
  .viewing-group h2 { font-size:.72em; }
  .work-name { font-size:.82em; overflow-wrap:anywhere; }
  .work-note { font-size:.68em; }
  .work-note { opacity:.52; transform:none; }
  .collection-room-main { grid-template-columns:1fr; align-items:start; padding:54px 22px 90px; }
  .collection-room-copy { align-self:auto; }
  .memoir-message { max-width:88%; }
  .storefront-room-main { padding:44px 18px 70px; }
  .storefront-room-head { align-items:flex-start; }
  .storefront-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:54px 16px; }
  .store-work h2 { font-size:.64rem; }
  .work-format { font-size:.52rem; }
  .ponder-room-main { grid-template-columns:1fr; padding:50px 22px 80px; }
  .ponder-work { justify-self:stretch; }
  .ponder-work footer { grid-template-columns:1fr; }
  .ponder-purchase { align-items:flex-start; justify-content:space-between; }
  .ponder-work .purchase-status { text-align:left; }
  .ponder-back { grid-column:1; }
}
@media(prefers-reduced-motion:reduce){.threshold{transition:opacity .3s}.threshold.leaving{filter:none;transform:none}.storefront-grid{transition:none}}
