:root{
  --paper:#EBEAE6; --paper-2:#E2E0DA; --ink:#191814; --ink-2:#54534D; --gray:#928F88; --line:#D4D2CB;
  --display:'Newsreader', Georgia, 'Times New Roman', serif;
  --text:'Hanken Grotesk','Helvetica Neue', Helvetica, system-ui, sans-serif;
  --mono:'IBM Plex Mono', ui-monospace, 'SFMono-Regular', Menlo, monospace;
  --fs-display: clamp(2.1rem, 4.6vw, 3.4rem);
  --fs-title: clamp(1.45rem, 2.8vw, 2.05rem);
  --fs-lede: clamp(1.06rem, 1.4vw, 1.2rem);
  --fs-body: 1.0625rem;
  --fs-small: .9rem;
  --fs-meta: .8125rem;
  --fs-micro: .6875rem;
  --meta-tt: none; --meta-ls:.02em;
  --s1:.5rem; --s2:1rem; --s3:1.5rem; --s4:2rem; --s5:3rem; --s6:4.5rem; --s7:7rem; --s8:10rem;
  --pad: clamp(20px, 5vw, 64px);
}
*{ box-sizing:border-box; }
html{ -webkit-text-size-adjust:100%; }
body{
  margin:0; background:var(--paper); color:var(--ink);
  font-family:var(--text); font-size:var(--fs-body); line-height:1.5;
  -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility;
}
img{ display:block; max-width:100%; }
button{ font:inherit; color:inherit; background:none; border:0; margin:0; padding:0; cursor:pointer; }
a{ color:inherit; text-decoration:none; }
*:focus{ outline:none; }
*:focus-visible{ outline:2px solid var(--ink); outline-offset:3px; }
::selection{ background:var(--ink); color:var(--paper); }
@media (prefers-reduced-motion: reduce){ *{ transition:none !important; animation:none !important; } }

#app{ min-height:100vh; display:flex; flex-direction:column; background:var(--paper); }

/* ---- typographic helpers ---- */
.mono{
  font-family:var(--mono); font-size:var(--fs-meta);
  letter-spacing:var(--meta-ls); text-transform:var(--meta-tt);
}
.mono--micro{
  font-family:var(--mono); font-size:var(--fs-micro);
  letter-spacing:.12em; text-transform:uppercase;
}
.gray{ color:var(--gray); }
.ink{ color:var(--ink); }

/* ---- nav ---- */
.nav{
  position:sticky; top:0; z-index:30;
  display:flex; align-items:center; justify-content:space-between; gap:16px;
  padding:14px var(--pad); background:var(--paper);
}
.nav__brand{ letter-spacing:.06em; color:var(--ink); }
.nav__links{ display:flex; gap:clamp(16px,3vw,32px); }
.nav__link{ letter-spacing:.04em; color:var(--gray); transition:color .3s ease; }
.nav__link.is-active{ color:var(--ink); }

main{ flex:1 0 auto; }

/* ---- footer ---- */
.footer{
  flex:0 0 auto; padding: var(--s6) var(--pad) var(--s5);
  display:flex; justify-content:space-between; gap:16px; flex-wrap:wrap;
  font-size:var(--fs-micro); letter-spacing:var(--meta-ls);
  text-transform:var(--meta-tt); color:var(--gray);
}

/* ---- figure / image placeholder ---- */
.figure{ position:relative; width:100%; overflow:hidden; background:var(--tone, var(--paper-2)); }
.figure__ph{
  position:absolute; inset:0;
  background:
    radial-gradient(125% 130% at 50% 36%, rgba(0,0,0,0) 44%, rgba(0,0,0,.13)),
    repeating-linear-gradient(135deg, rgba(0,0,0,.012) 0 1px, rgba(0,0,0,0) 1px 8px),
    var(--tone, var(--paper-2));
}
.figure__label{
  position:absolute; left:50%; top:50%; transform:translate(-50%,-50%);
  font-family:var(--mono); font-size:var(--fs-micro); letter-spacing:.12em;
  color:rgba(0,0,0,.24); text-transform:uppercase;
}
.figure__img{
  position:absolute; inset:0; width:100%; height:100%; object-fit:cover;
  opacity:0; transition:opacity .6s ease;
}
.figure__img.is-loaded{ opacity:1; }

/* ---- fade-in ---- */
.fade{ opacity:0; transform:translateY(10px); transition:opacity .9s ease, transform .9s ease; }
.fade.is-in{ opacity:1; transform:none; }

/* ---- home / index ---- */
.hero{ position:relative; width:100%; height:min(84vh,900px); overflow:hidden; }
.hero .figure__img{ position:absolute; inset:0; }
.caption{ padding: var(--s3) var(--pad) 0; }
.caption p{ margin:0; }

.index{ padding: var(--s7) var(--pad) var(--s5); }
.index__eyebrow{ margin:0 0 var(--s4); }
.series-list{ display:flex; flex-direction:column; }
.series-row{ display:block; width:100%; text-align:left; padding: var(--s5) 0; }
.series-row__inner{ display:flex; gap:clamp(20px,4vw,56px); align-items:flex-start; flex-wrap:wrap; }
.series-row__idx{ flex:0 0 auto; width:56px; font-family:var(--mono); font-size:var(--fs-title); color:var(--gray); line-height:1; }
.series-row__body{ flex:1 1 320px; min-width:0; }
.series-row__title{ font-family:var(--display); font-weight:400; font-size:var(--fs-title); letter-spacing:-.01em; margin:0 0 var(--s1); }
.series-row__meta{ margin:0; }
.series-row__thumbs{ display:flex; gap:10px; margin-top:var(--s3); overflow:hidden; }
.thumb{ position:relative; height:112px; flex:0 0 auto; overflow:hidden; background:var(--tone); }

/* ---- series ---- */
.series{ padding: var(--s4) var(--pad) var(--s7); }
.series__header{ max-width:min(680px,92vw); margin: var(--s6) auto; text-align:center; }
.series__label{ margin:0 0 var(--s3); }
.series__title{ font-family:var(--display); font-weight:400; font-size:var(--fs-display); letter-spacing:-.015em; margin:0 0 var(--s3); }
.series__statement{ font-family:var(--text); font-size:var(--fs-lede); color:var(--ink-2); line-height:1.55; margin:0; text-wrap:pretty; }
.frames{ display:flex; flex-direction:column; gap:var(--s7); }
.frame{ margin:0 auto; }
.frame__meta{ display:flex; justify-content:space-between; align-items:baseline; gap:16px; flex-wrap:wrap; margin-top:var(--s2); }
.frame__meta p{ margin:0; }
.link-cta{ font-family:var(--mono); font-size:var(--fs-meta); letter-spacing:var(--meta-ls); text-transform:var(--meta-tt); color:var(--ink); }

/* ---- back link ---- */
.back{ font-family:var(--mono); font-size:var(--fs-meta); letter-spacing:var(--meta-ls); text-transform:var(--meta-tt); color:var(--gray); }

/* ---- prints ---- */
.prints{ padding: var(--s4) var(--pad) var(--s7); }
.prints__header{ max-width:min(720px,92vw); margin: var(--s5) 0 var(--s6); }
.prints__title{ font-family:var(--display); font-weight:400; font-size:var(--fs-title); letter-spacing:-.01em; margin:0 0 var(--s2); }
.prints__sub{ margin:0 0 var(--s3); }
.prints__intro{ font-family:var(--text); font-size:var(--fs-lede); color:var(--ink-2); line-height:1.55; margin:0; max-width:50ch; text-wrap:pretty; }
.prints__grid{ display:grid; grid-template-columns:repeat(auto-fill, minmax(260px, 1fr)); gap:clamp(28px,3.5vw,56px); }
.print-card{ display:block; width:100%; text-align:left; }
.print-card__body{ margin-top:var(--s2); }
.print-card__body p{ margin:0; }
.print-card__edition{ margin-top:var(--s1) !important; }
.print-card__price{ font-family:var(--mono); font-size:var(--fs-meta); letter-spacing:var(--meta-ls); color:var(--ink); margin-top:2px !important; }

/* ---- print detail ---- */
.print{ padding: var(--s4) var(--pad) var(--s7); }
.print__layout{ display:flex; flex-wrap:wrap; gap:clamp(32px,5vw,80px); margin-top:var(--s5); align-items:flex-start; }
.print__media{ flex:1 1 460px; min-width:0; position:sticky; top:84px; align-self:flex-start; }
.print__info{ flex:1 1 320px; max-width:420px; }
.print__placeyear{ font-family:var(--mono); font-size:var(--fs-small); letter-spacing:var(--meta-ls); text-transform:var(--meta-tt); color:var(--gray); margin:0; }
.print__block{ margin-top:var(--s4); }
.print__block--lead{ margin-top:var(--s5); }
.print__block-label{ font-family:var(--mono); font-size:var(--fs-micro); letter-spacing:.12em; text-transform:uppercase; color:var(--gray); margin:0 0 var(--s1); }
.print__block-label--wide{ margin:0 0 var(--s2); }
.print__value{ margin:0; font-size:var(--fs-body); }
.size-row{ display:flex; justify-content:space-between; align-items:baseline; gap:20px; padding:7px 0; }
.size-row__label{ font-size:var(--fs-body); white-space:nowrap; }
.size-row__price{ font-family:var(--mono); font-size:var(--fs-meta); color:var(--gray); white-space:nowrap; }
.buy{
  margin-top:var(--s5); display:inline-flex; align-items:center; gap:10px;
  padding:14px 24px; border:1px solid var(--ink);
  font-family:var(--mono); font-size:var(--fs-meta); letter-spacing:.06em;
  text-transform:uppercase; color:var(--ink); transition:background .3s ease, color .3s ease;
}
.buy:hover{ background:var(--ink); color:var(--paper); }
.print__note{ margin-top:var(--s4); font-size:var(--fs-small); color:var(--gray); line-height:1.55; max-width:42ch; }
.print__note + .print__note{ margin-top:var(--s2); }

/* ---- about ---- */
.about{ padding: var(--s4) var(--pad) var(--s7); }
.about__inner{ max-width:min(680px,92vw); margin: var(--s6) auto 0; }
.about__eyebrow{ margin:0 0 var(--s3); }
.about__name{ font-family:var(--display); font-weight:400; font-size:var(--fs-display); letter-spacing:-.015em; margin:0 0 var(--s4); }
.about__statement{ font-family:var(--text); font-size:var(--fs-lede); color:var(--ink-2); line-height:1.6; margin:0 0 var(--s4); text-wrap:pretty; }
.about__bio{ font-size:var(--fs-body); line-height:1.65; color:var(--ink-2); margin:0 0 var(--s3); text-wrap:pretty; }
.about__bio--last{ margin:0 0 var(--s6); }
.about__rows{ display:flex; flex-direction:column; gap:var(--s3); }
.about-row{ display:flex; gap:clamp(16px,4vw,40px); align-items:baseline; flex-wrap:wrap; }
.about-row__label{ flex:0 0 120px; font-family:var(--mono); font-size:var(--fs-micro); letter-spacing:.12em; text-transform:uppercase; color:var(--gray); }
.about-row__value{ flex:1 1 220px; font-size:var(--fs-body); color:var(--ink); }
