:root{
  --bg:#15100c;          /* walnut black */
  --surface:#1f1814;     /* smoked timber */
  --surface-2:#2a211b;
  --line:#3a2e25;
  --muted:#8f7f6d;       /* tobacco */
  --text:#e8dfd1;        /* bone */
  --text-2:#cbbfae;
  --amber:#c9965a;       /* the light through the slats */
  --mulberry:#5a2340;
  --danger:#c46a5a;
  --display:"Gloock", "Bodoni 72", "Didot", Georgia, serif;
  --body:"Hanken Grotesk", "Helvetica Neue", Arial, sans-serif;
  color-scheme:dark;
  box-sizing:border-box;
}
*,*::before,*::after{ box-sizing:inherit; }
html{ background:var(--bg); }
body{
  margin:0; background:var(--bg); color:var(--text);
  font-family:var(--body); font-weight:300; font-size:17px; line-height:1.6;
  -webkit-font-smoothing:antialiased;
}
body::after{
  content:""; position:fixed; inset:0; pointer-events:none; z-index:100; opacity:.06; mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");
}
img{ max-width:100%; display:block; }
a{ color:inherit; text-decoration:none; }
:focus-visible{ outline:1px solid var(--amber); outline-offset:4px; }
::selection{ background:var(--mulberry); color:var(--text); }

.site-frame{ container-type:inline-size; container-name:site; --gutter:clamp(20px,4cqi,56px); --vh:100vh; }
@supports (height:100svh){ .site-frame{ --vh:100svh; } }
main{ min-height:var(--vh); }

/* ---------- header ---------- */
.site-head{
  position:fixed; top:0; left:0; right:0; z-index:50;
  padding:calc(env(safe-area-inset-top,0px) + 22px) var(--gutter) 22px;
  display:flex; align-items:baseline; justify-content:space-between; gap:24px;
  transition:background .6s ease;
}
.site-head.solid{ background:rgba(21,16,12,.92); backdrop-filter:blur(6px); -webkit-backdrop-filter:blur(6px); }
.wordmark{ white-space:nowrap; font-family:var(--display); font-size:26px; line-height:1; transition:opacity .6s ease; }
body.on-home .site-head:not(.solid) .wordmark{ opacity:0; pointer-events:none; }
.nav{ display:flex; gap:clamp(18px,3cqi,40px); font-size:15px; font-weight:400; }
.nav a{ color:var(--muted); transition:color .3s; padding:4px 0; }
.nav a:hover, .nav a[aria-current="page"]{ color:var(--text); }
.nav a[aria-current="page"]{ box-shadow:0 1px 0 var(--amber); }

.page{ padding:140px var(--gutter) 120px; }

/* ---------- home ---------- */
.hero{ position:relative; height:var(--vh); min-height:480px; overflow:hidden; background:var(--bg); }
.hero-media{ position:absolute; inset:-1.5%; }
.hero-media img, .hero-media video{ width:100%; height:100%; object-fit:cover; filter:brightness(.68) saturate(.92); }
.hero-media.drift img{ animation:drift 26s ease-in-out infinite alternate; transform-origin:60% 40%; }
@keyframes drift{ from{ transform:scale(1) translate(0,0); } to{ transform:scale(1.05) translate(-1%,-.8%); } }
@media (prefers-reduced-motion: reduce){ .hero-media.drift img{ animation:none; } }
.hero::after{
  content:""; position:absolute; inset:0; pointer-events:none;
  background:
    radial-gradient(ellipse 70% 62% at 64% 40%, transparent 18%, rgba(21,16,12,.6) 62%, rgba(21,16,12,.95) 100%),
    linear-gradient(to bottom, rgba(21,16,12,.55), transparent 22%, transparent 48%, var(--bg) 100%);
}
.hero-name{
  position:absolute; z-index:2; left:var(--gutter); right:var(--gutter); bottom:clamp(28px,5cqi,72px);
  font-family:var(--display); font-weight:400; margin:0;
  font-size:clamp(64px,13.5cqi,232px); line-height:.86; letter-spacing:-.02em;
  opacity:0; transform:translateY(12px); animation:rise 1.8s .3s cubic-bezier(.2,.7,.2,1) forwards;
}
@keyframes rise{ to{ opacity:1; transform:none; } }
@media (prefers-reduced-motion: reduce){ .hero-name{ animation:none; opacity:1; transform:none; } }

.hang{ padding:clamp(80px,12cqi,180px) var(--gutter) 60px; display:grid; grid-template-columns:repeat(12,1fr); column-gap:var(--gutter); row-gap:clamp(90px,12cqi,170px); align-items:start; }
.hang figure{ margin:0; }
.hang figure:nth-child(4n+1){ grid-column:1 / span 6; }
.hang figure:nth-child(4n+2){ grid-column:9 / span 4; margin-top:clamp(120px,18cqi,300px); }
.hang figure:nth-child(4n+3){ grid-column:2 / span 5; }
.hang figure:nth-child(4n+4){ grid-column:7 / span 6; margin-top:clamp(60px,10cqi,180px); }
.hang .more{ grid-column:1 / -1; justify-self:start; }

.work-link{ display:block; }
.work-link img{ width:100%; height:auto; background:var(--surface); transition:filter .5s ease; }
.work-link:hover img{ filter:brightness(1.07); }
.caption{ margin-top:16px; }
.caption .t{ font-family:var(--display); font-size:21px; line-height:1.25; }
.caption .m{ color:var(--muted); font-size:14px; line-height:1.5; margin-top:4px; }
.sold{ color:var(--amber); }

.text-link{ font-family:var(--display); font-size:clamp(28px,3.4cqi,44px); line-height:1.1; border-bottom:1px solid var(--line); padding-bottom:6px; transition:border-color .3s; }
.text-link:hover{ border-color:var(--amber); }
.text-link.small{ font-size:inherit; font-family:inherit; }

/* ---------- work ---------- */
.collection{ margin-bottom:clamp(110px,14cqi,200px); scroll-margin-top:100px; }
.collection-head{ display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:var(--gutter); align-items:end; margin-bottom:clamp(48px,6cqi,80px); }
.collection-head h2, .big{ font-family:var(--display); font-weight:400; font-size:clamp(44px,7cqi,110px); line-height:.92; letter-spacing:-.015em; margin:0; }
.collection-head .sub{ color:var(--muted); font-size:15px; margin-top:14px; }
.collection-head .statement{ max-width:52ch; margin:0; color:var(--text-2); }
.wall{ display:grid; grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr)); column-gap:var(--gutter); row-gap:clamp(70px,8cqi,110px); align-items:end; }
.wall figure{ margin:0; display:flex; flex-direction:column; }
.wall .frame{ height:clamp(260px,34cqi,460px); display:flex; align-items:flex-end; justify-content:flex-start; }
.wall .frame img{ height:var(--h,100%); width:auto; max-width:100%; object-fit:contain; background:transparent; }
.scale-note{ color:var(--muted); font-size:14px; margin:-30px 0 60px; }
.empty{ color:var(--muted); max-width:36em; }

/* ---------- about ---------- */
.about{ display:grid; grid-template-columns:minmax(0,5fr) minmax(0,7fr); gap:var(--gutter); }
.about h1, .contact h1{ font-family:var(--display); font-weight:400; font-size:clamp(52px,8cqi,128px); line-height:.9; letter-spacing:-.02em; margin:0; }
.bio p{ font-size:clamp(18px,1.6cqi,21px); line-height:1.65; margin:0 0 1.2em; max-width:38em; }
.bio p:first-child{ font-family:var(--display); font-size:clamp(24px,2.3cqi,32px); line-height:1.3; }
.cv{ grid-column:2; margin-top:90px; }
.cv section{ border-top:1px solid var(--line); padding:26px 0 34px; display:grid; grid-template-columns:minmax(0,3fr) minmax(0,9fr); gap:24px; }
.cv h2{ font-family:var(--display); font-weight:400; font-size:22px; margin:0; line-height:1.2; }
.cv ul{ list-style:none; margin:0; padding:0; }
.cv li{ display:grid; grid-template-columns:80px 1fr; gap:16px; padding:3px 0; }
.cv li .y{ color:var(--muted); font-variant-numeric:tabular-nums; }

/* ---------- contact ---------- */
.contact{ display:grid; grid-template-columns:minmax(0,5fr) minmax(0,7fr); gap:var(--gutter); }
.contact h1{ margin-bottom:40px; }
.contact .lede{ font-size:clamp(18px,1.6cqi,21px); max-width:30em; margin:0 0 44px; }
.details dt{ color:var(--muted); font-size:14px; margin-top:22px; }
.details dd{ margin:2px 0 0; font-size:18px; }
.details dd.addr{ white-space:pre-line; }
.details a{ border-bottom:1px solid var(--line); }
.details a:hover{ border-color:var(--amber); }
.enquiry{ display:grid; gap:22px; max-width:640px; padding-top:8px; align-content:start; }
.field label{ display:block; color:var(--muted); font-size:14px; margin-bottom:6px; }
.field input, .field select, .field textarea{
  width:100%; background:transparent; color:var(--text); font:inherit; font-weight:300;
  border:0; border-bottom:1px solid var(--line); padding:10px 0; border-radius:0;
}
.field select{ appearance:none; -webkit-appearance:none; background-image:linear-gradient(45deg,transparent 50%,var(--muted) 50%),linear-gradient(135deg,var(--muted) 50%,transparent 50%); background-position:calc(100% - 12px) 55%, calc(100% - 7px) 55%; background-size:5px 5px; background-repeat:no-repeat; }
.field select option{ background:var(--surface); }
.field textarea{ min-height:140px; resize:vertical; }
.field input:focus, .field select:focus, .field textarea:focus{ outline:none; border-color:var(--amber); }
.two{ display:grid; grid-template-columns:1fr 1fr; gap:22px; }
.hp{ position:absolute; left:-9999px; width:1px; height:1px; overflow:hidden; }
.btn{
  display:inline-block; font:inherit; font-weight:400; font-size:15px; color:var(--bg); background:var(--text);
  border:0; padding:13px 26px; cursor:pointer; justify-self:start; transition:background .3s;
}
.btn:hover{ background:var(--amber); }
.note{ font-size:16px; color:var(--muted); }
.note.ok{ color:var(--amber); font-size:clamp(18px,1.6cqi,21px); }

/* ---------- footer ---------- */
.site-foot{ padding:60px var(--gutter) calc(env(safe-area-inset-bottom,0px) + 50px); display:flex; justify-content:space-between; gap:20px; flex-wrap:wrap; color:var(--muted); font-size:14px; border-top:1px solid var(--line); }
.site-foot a:hover{ color:var(--text); }

/* ---------- work detail page ---------- */
.detail-page main{ min-height:0; }
.detail-page .site-frame{ min-height:var(--vh); display:flex; flex-direction:column; }
.detail-page main{ flex:1; display:flex; flex-direction:column; }
.detail{ flex:1; display:grid; grid-template-columns:minmax(0,8fr) minmax(0,4fr); gap:var(--gutter); padding:calc(env(safe-area-inset-top,0px) + 90px) var(--gutter) 90px; }
.detail .stage{ display:flex; align-items:center; justify-content:center; min-height:calc(var(--vh) * .7); }
.detail .stage img{ max-height:calc(var(--vh) * .8); width:auto; object-fit:contain; }
.thumbs{ display:flex; gap:10px; margin-top:18px; flex-wrap:wrap; justify-content:center; }
.thumbs button{ padding:0; border:0; background:none; cursor:pointer; opacity:.5; transition:opacity .3s; }
.thumbs button[aria-pressed="true"], .thumbs button:hover{ opacity:1; }
.thumbs img{ height:64px; width:auto; }
.detail .info{ align-self:end; padding-bottom:6cqi; }
.detail h1{ font-family:var(--display); font-weight:400; font-size:clamp(36px,4cqi,60px); line-height:1; margin:0 0 22px; }
.detail .info p{ margin:0; color:var(--text-2); }
.detail .info .from{ color:var(--muted); margin-top:18px; font-size:15px; }
.detail .info .sold-line{ color:var(--amber); margin-top:10px; }
.detail .actions{ margin-top:34px; }
.close{ position:fixed; top:calc(env(safe-area-inset-top,0px) + 18px); right:var(--gutter); z-index:20; color:var(--text); font-size:15px; padding:8px 0; }
.close:hover{ color:var(--amber); }
.pager{ position:fixed; bottom:calc(env(safe-area-inset-bottom,0px) + 24px); left:var(--gutter); z-index:20; display:flex; gap:24px; font-size:15px; }
.pager a{ color:var(--muted); padding:6px 0; }
.pager a:hover{ color:var(--text); }
.pager .enq{ display:none; }

/* ---------- small screens (phones) ---------- */
@container site (max-width: 720px){
  .wordmark{ font-size:21px; }
  .nav{ gap:16px; font-size:14px; }
  .hang{ grid-template-columns:1fr; }
  .hang figure:nth-child(n){ grid-column:1; margin-top:0; }
  .hang figure:nth-child(even){ width:72%; justify-self:end; }
  .collection-head, .about, .contact{ grid-template-columns:1fr; }
  .cv{ grid-column:1; }
  .cv section{ grid-template-columns:1fr; gap:10px; }
  .wall .frame{ height:auto; }
  .wall .frame img{ height:auto; width:var(--w,100%); }
  .two{ grid-template-columns:1fr; }

  /* a work fits on one screen: image shrinks, bar with Previous · Enquire · Next */
  .detail-page .site-frame{ height:var(--vh); min-height:0; overflow:hidden; }
  .detail-page main{ min-height:0; }
  .detail{ display:flex; flex-direction:column; gap:14px; min-height:0; padding:calc(env(safe-area-inset-top,0px) + 60px) var(--gutter) 14px; }
  .detail-media{ flex:1; min-height:0; display:flex; flex-direction:column; }
  .detail .stage{ flex:1; min-height:0; }
  .detail .stage img{ max-height:100%; max-width:100%; }
  .thumbs{ margin-top:10px; flex-wrap:nowrap; overflow-x:auto; justify-content:flex-start; }
  .thumbs img{ height:40px; }
  .detail .info{ flex:none; align-self:stretch; padding-bottom:0; }
  .detail h1{ font-size:28px; margin-bottom:8px; }
  .detail .info p{ font-size:15px; line-height:1.45; }
  .detail .info .from{ margin-top:6px; font-size:14px; }
  .detail .actions{ display:none; }
  .pager{ position:static; flex:none; justify-content:space-between; align-items:center; padding:12px var(--gutter) calc(env(safe-area-inset-bottom,0px) + 12px); border-top:1px solid var(--line); }
  .pager .enq{ display:inline-block; color:var(--text); }
  .pager .enq:hover{ color:var(--amber); }
}
