@charset "utf-8";
/* ── self-hosted fonts (no third-party request, no layout shift) ────────── */
@font-face{font-family:"Inter";font-style:normal;font-weight:300;font-display:swap;src:url(/assets/fonts/inter-latin-300-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
@font-face{font-family:"Inter";font-style:normal;font-weight:400;font-display:swap;src:url(/assets/fonts/inter-latin-400-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
@font-face{font-family:"Inter";font-style:normal;font-weight:500;font-display:swap;src:url(/assets/fonts/inter-latin-500-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
@font-face{font-family:"Cormorant Garamond";font-style:normal;font-weight:300;font-display:swap;src:url(/assets/fonts/cormorant-garamond-latin-300-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
@font-face{font-family:"Cormorant Garamond";font-style:normal;font-weight:400;font-display:swap;src:url(/assets/fonts/cormorant-garamond-latin-400-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
@font-face{font-family:"Cormorant Garamond";font-style:normal;font-weight:500;font-display:swap;src:url(/assets/fonts/cormorant-garamond-latin-500-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
@font-face{font-family:"Cormorant Garamond";font-style:italic;font-weight:300;font-display:swap;src:url(/assets/fonts/cormorant-garamond-latin-300-italic.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
@font-face{font-family:"Cormorant Garamond";font-style:italic;font-weight:400;font-display:swap;src:url(/assets/fonts/cormorant-garamond-latin-400-italic.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
/* =============================================================================
   Siara Mencía — design system
   Derived from the work itself: hairline blackwork on warm paper, wide margins,
   nothing that competes with the artwork.
   ========================================================================== */


/* ── brand faces ─────────────────────────────────────────────────────────
   Bodoni 72 Smallcaps Book (body) is self-hosted from the file supplied by the
   studio. `local()` comes first so anyone who already has it installed uses
   their own copy and downloads nothing.

   Carilliantine Solid (display) has NOT been supplied and is not available as
   a licensed web font. No lookalike has been substituted: it resolves to the
   existing Cormorant Garamond until a file arrives. To activate it, drop
   carilliantine-solid.woff2 into /assets/fonts and delete the comment marker
   on its url() line below.                                                  */
@font-face{
  font-family:"Carilliantine Solid"; font-style:normal; font-weight:400; font-display:swap;
  src:local("Carilliantine Solid"), local("Carilliantine-Solid"), local("Carilliantine");
  /* , url(/assets/fonts/carilliantine-solid.woff2) format("woff2") */
}
@font-face{
  font-family:"Bodoni 72 Small Caps"; font-style:normal; font-weight:400; font-display:swap;
  src:local("Bodoni 72 Smallcaps Book"), local("BodoniSvtyTwoSCITCTT-Book"),
      url(/assets/fonts/bodoni-72-smallcaps-book.woff2) format("woff2"),
      url(/assets/fonts/bodoni-72-smallcaps-book.woff)  format("woff");
}

/* ── tokens ─────────────────────────────────────────────────────────────── */
:root{
  /* surfaces */
  --paper:      #F2EEE7;
  --paper-warm: #EAE4D9;
  --paper-cool: #E9E7E2;
  --night:      #100E0B;
  --night-2:    #1C1814;

  /* ink */
  --ink:        #16130F;
  --ink-soft:   #4C463C;
  --ink-faint:  #6A6154;
  --rule:       #D8D0C2;
  --rule-soft:  #E4DDD1;

  /* accents — sparingly. pulled from the sepia placement study. */
  --clay:       #8F4F2C;
  --clay-deep:  #7A4526;
  --ochre:      #8B6F38;

  /* on-night */
  --night-ink:  #F0EBE2;
  --night-soft: #A79E90;
  --night-rule: #332D26;

  /* type */
  /* Requested faces first; the previous stack remains as the fallback so the
     site never silently renders an unrelated decorative substitute. */
  --display: "Carilliantine Solid", "Cormorant Garamond", "Iowan Old Style", Palatino, Georgia, serif;
  --sans: "Bodoni 72 Small Caps", "Bodoni 72 Smallcaps", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;

  /* scale */
  --step--1: clamp(.78rem, .76rem + .1vw, .84rem);
  --step-0:  clamp(1rem, .97rem + .15vw, 1.08rem);
  --step-1:  clamp(1.2rem, 1.12rem + .4vw, 1.5rem);
  --step-2:  clamp(1.5rem, 1.32rem + .9vw, 2.2rem);
  --step-3:  clamp(2rem, 1.6rem + 2vw, 3.4rem);
  --step-4:  clamp(2.6rem, 1.8rem + 4vw, 5.6rem);
  --step-5:  clamp(3.2rem, 1.9rem + 6.4vw, 8rem);

  --gutter: clamp(1.25rem, 4vw, 4rem);
  --maxw: 82rem;
  --measure: 34rem;

  --ease: cubic-bezier(.22,.61,.36,1);
  --dur: .5s;

  --header-h: 60px;
  --stickybar-h: 0px;
}
@media (min-width: 900px){ :root{ --header-h: 76px; } }

/* ── reset ──────────────────────────────────────────────────────────────── */
*,*::before,*::after{ box-sizing:border-box; }
html{ -webkit-text-size-adjust:100%; scroll-behavior:smooth; }
@media (prefers-reduced-motion: reduce){
  html{ scroll-behavior:auto; }
  *,*::before,*::after{ animation-duration:.001ms !important; animation-iteration-count:1 !important; transition-duration:.001ms !important; }
}
body{
  margin:0; background:var(--paper); color:var(--ink);
  font-family:var(--sans); font-size:var(--step-0); line-height:1.6;
  font-synthesis-weight:none; -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
img,video{ max-width:100%; height:auto; display:block; }
h1,h2,h3,h4{ margin:0; font-weight:400; line-height:1.05; letter-spacing:-.015em; }
p{ margin:0 0 1em; }
p:last-child{ margin-bottom:0; }
a{ color:inherit; }
button{ font:inherit; color:inherit; }
ul,ol{ margin:0; padding:0; list-style:none; }
:focus-visible{ outline:2px solid var(--clay); outline-offset:3px; border-radius:2px; }
::selection{ background:var(--ink); color:var(--paper); }

/* ── helpers ────────────────────────────────────────────────────────────── */
.wrap{ width:100%; max-width:var(--maxw); margin-inline:auto; padding-inline:var(--gutter); }
.wrap--narrow{ max-width:56rem; }
.visually-hidden{
  position:absolute!important; width:1px; height:1px; padding:0; margin:-1px;
  overflow:hidden; clip:rect(0 0 0 0); clip-path:inset(50%); white-space:nowrap; border:0;
}
.skip-link{
  position:absolute; left:var(--gutter); top:-100px; z-index:200;
  background:var(--ink); color:var(--paper); padding:.7rem 1.1rem; border-radius:2px;
  font-size:var(--step--1);
}
.skip-link:focus{ top:.6rem; }

.eyebrow{
  font-size:.68rem; letter-spacing:.22em; text-transform:uppercase;
  color:var(--ink-faint); font-weight:500; margin:0 0 1.1rem;
}
.display{ font-family:var(--display); font-weight:300; letter-spacing:-.01em; line-height:1.02; }
.display em{ font-style:italic; }
.lede{ font-size:var(--step-1); line-height:1.45; color:var(--ink-soft); max-width:var(--measure); font-weight:300; }
.measure{ max-width:var(--measure); }
.rule{ border:0; border-top:1px solid var(--rule); margin:0; }
.dot-rule{ display:flex; align-items:center; gap:.75rem; color:var(--rule); }
.dot-rule::before,.dot-rule::after{ content:""; flex:1; height:1px; background:var(--rule); }
.dot-rule::after{ flex:1; }

section{ position:relative; }
.section{ padding-block:clamp(3.5rem, 9vw, 8rem); }
.section--tight{ padding-block:clamp(2.5rem, 6vw, 5rem); }

/* ── buttons ────────────────────────────────────────────────────────────── */
.btn{
  --btn-bg:var(--ink); --btn-fg:var(--paper); --btn-bd:var(--ink);
  display:inline-flex; align-items:center; justify-content:center; gap:.6em;
  min-height:52px; padding:.85em 1.6em;
  background:var(--btn-bg); color:var(--btn-fg); border:1px solid var(--btn-bd);
  border-radius:999px; text-decoration:none; cursor:pointer;
  font-size:var(--step--1); font-weight:500; letter-spacing:.09em; text-transform:uppercase;
  transition:background var(--dur) var(--ease), color var(--dur) var(--ease),
             border-color var(--dur) var(--ease), transform .25s var(--ease);
}
.btn:hover{ transform:translateY(-1px); }
.btn--ghost{ --btn-bg:transparent; --btn-fg:var(--ink); --btn-bd:var(--rule); }
.btn--ghost:hover{ --btn-bd:var(--ink); }
.btn--onnight{ --btn-bg:var(--night-ink); --btn-fg:var(--night); --btn-bd:var(--night-ink); }
.btn--ghost-onnight{ --btn-bg:transparent; --btn-fg:var(--night-ink); --btn-bd:var(--night-rule); }
.btn--ghost-onnight:hover{ --btn-bd:var(--night-ink); }
.btn--sm{ min-height:42px; padding:.6em 1.2em; font-size:.72rem; }
.btn--block{ width:100%; }
.btn[aria-disabled="true"], .btn:disabled{ opacity:.4; cursor:not-allowed; transform:none; }

.link-underline{
  text-decoration:none; background-image:linear-gradient(var(--ink),var(--ink));
  background-size:100% 1px; background-position:0 100%; background-repeat:no-repeat;
  padding-bottom:.15em; transition:background-size .4s var(--ease);
}
.link-underline:hover{ background-size:0% 1px; background-position:100% 100%; }

/* config-not-set marker */
.unset-note{
  display:block; margin-top:.5rem; font-size:.7rem; letter-spacing:.06em;
  color:var(--clay-deep); text-transform:uppercase;
}

/* ── header ─────────────────────────────────────────────────────────────── */
.hdr{
  position:sticky; top:0; z-index:100;
  background:color-mix(in srgb, var(--paper) 88%, transparent);
  backdrop-filter:blur(14px) saturate(1.2); -webkit-backdrop-filter:blur(14px) saturate(1.2);
  border-bottom:1px solid var(--rule-soft);
}
.hdr__in{ display:flex; align-items:center; gap:1rem; min-height:var(--header-h); }
.hdr__brand{ text-decoration:none; display:flex; flex-direction:column; line-height:1; margin-right:auto; }
.hdr__brand b{ font-family:var(--display); font-weight:400; font-size:1.32rem; letter-spacing:.005em; }
.hdr__brand span{ font-size:.6rem; letter-spacing:.19em; text-transform:uppercase; color:var(--ink-faint); margin-top:.35rem; }
.hdr__nav{ display:none; }
@media (min-width:1000px){
  .hdr__nav{ display:flex; align-items:center; gap:1.9rem; }
  .hdr__nav a{
    text-decoration:none; font-size:.74rem; letter-spacing:.14em; text-transform:uppercase;
    color:var(--ink-soft); position:relative; padding-block:.4rem;
  }
  .hdr__nav a::after{
    content:""; position:absolute; left:0; right:0; bottom:0; height:1px; background:var(--ink);
    transform:scaleX(0); transform-origin:left; transition:transform .4s var(--ease);
  }
  .hdr__nav a:hover::after,.hdr__nav a[aria-current="page"]::after{ transform:scaleX(1); }
  .hdr__nav a[aria-current="page"]{ color:var(--ink); }
}
.hdr__social{ display:none; gap:.65rem; align-items:center; }
@media (min-width:1000px){ .hdr__social{ display:flex; } }
.icon-link{
  display:grid; place-items:center; width:38px; height:38px; border-radius:50%;
  border:1px solid transparent; color:var(--ink-soft); text-decoration:none;
  transition:border-color .3s var(--ease), color .3s var(--ease);
}
.icon-link:hover{ border-color:var(--rule); color:var(--ink); }
.icon-link svg{ width:18px; height:18px; }
.hdr__cta{ display:none; }
@media (min-width:1000px){ .hdr__cta{ display:inline-flex; } }

.burger{
  display:grid; place-items:center; width:44px; height:44px; margin-left:auto;
  background:none; border:1px solid var(--rule); border-radius:999px; cursor:pointer;
}
@media (min-width:1000px){ .burger{ display:none; } }
.burger span{ display:block; width:16px; height:1px; background:var(--ink); position:relative; transition:.35s var(--ease); }
.burger span::before,.burger span::after{ content:""; position:absolute; left:0; width:16px; height:1px; background:var(--ink); transition:.35s var(--ease); }
.burger span::before{ top:-5px; } .burger span::after{ top:5px; }
.burger[aria-expanded="true"] span{ background:transparent; }
.burger[aria-expanded="true"] span::before{ top:0; transform:rotate(45deg); }
.burger[aria-expanded="true"] span::after{ top:0; transform:rotate(-45deg); }

/* mobile menu */
.mnav{
  position:fixed; inset:var(--header-h) 0 0; z-index:99; background:var(--paper);
  display:flex; flex-direction:column; padding:2rem var(--gutter) 3rem;
  transform:translateY(-8px); opacity:0; visibility:hidden; pointer-events:none;
  transition:opacity .35s var(--ease), transform .35s var(--ease), visibility .35s;
  overflow-y:auto;
}
.mnav[data-open="true"]{ opacity:1; transform:none; visibility:visible; pointer-events:auto; }
.mnav a.mnav__item{
  display:block; text-decoration:none; font-family:var(--display); font-weight:300;
  font-size:clamp(2rem,9vw,2.9rem); line-height:1.25; padding:.28em 0;
  border-bottom:1px solid var(--rule-soft);
}
.mnav a.mnav__item[aria-current="page"]{ color:var(--clay); }
.mnav__foot{ margin-top:auto; padding-top:2rem; display:flex; flex-direction:column; gap:1.2rem; }
.mnav__socials{ display:flex; gap:.5rem; }

/* sticky mobile CTA */
.stickycta{
  position:fixed; left:0; right:0; bottom:0; z-index:98;
  padding:.7rem var(--gutter) calc(.7rem + env(safe-area-inset-bottom));
  background:color-mix(in srgb, var(--paper) 92%, transparent);
  backdrop-filter:blur(14px); -webkit-backdrop-filter:blur(14px);
  border-top:1px solid var(--rule-soft);
  transform:translateY(110%); transition:transform .45s var(--ease);
}
.stickycta[data-show="true"]{ transform:none; }
@media (min-width:1000px){ .stickycta{ display:none; } }
body.has-stickycta{ padding-bottom:0; }

/* ── hero ───────────────────────────────────────────────────────────────── */
.hero{ padding-top:clamp(2rem,5vw,4rem); padding-bottom:clamp(2.5rem,6vw,5rem); }
.hero__grid{ display:grid; gap:clamp(1.75rem,4vw,3.5rem); }
@media (min-width:900px){
  .hero__grid{ grid-template-columns:1.05fr .95fr; align-items:center; }
}
.hero__title{ font-family:var(--display); font-weight:300; font-size:var(--step-5); line-height:.92; letter-spacing:-.025em; }
.hero__title em{ font-style:italic; }
.hero__sub{ margin-top:1.4rem; font-size:var(--step-1); line-height:1.4; font-weight:300; color:var(--ink-soft); max-width:26ch; }
.hero__meta{ margin-top:2rem; display:flex; flex-wrap:wrap; gap:.7rem; }
.hero__note{ margin-top:1.5rem; font-size:var(--step--1); color:var(--ink-faint); max-width:38ch; }
.hero__fig{ position:relative; }
.hero__fig img{ width:100%; border-radius:2px; }
.hero__fig figcaption{
  position:absolute; left:0; bottom:-1.9rem; font-size:.66rem; letter-spacing:.16em;
  text-transform:uppercase; color:var(--ink-faint);
}

/* frame treatment for photographs */
.frame{ position:relative; overflow:hidden; background:var(--paper-warm); }
.frame img{ width:100%; transition:transform 1.1s var(--ease), filter .6s var(--ease); }
a.frame:hover img, button.frame:hover img{ transform:scale(1.028); }
.frame--tall{ aspect-ratio:3/4; } .frame--tall img{ height:100%; object-fit:cover; }
.frame--port{ aspect-ratio:2/3; } .frame--port img{ height:100%; object-fit:cover; }
.frame--sq{ aspect-ratio:1/1; }   .frame--sq img{ height:100%; object-fit:cover; }
.frame--free img{ height:auto; }

/* ── section heads ──────────────────────────────────────────────────────── */
.shead{ display:flex; flex-wrap:wrap; align-items:end; justify-content:space-between; gap:1.5rem; margin-bottom:clamp(1.75rem,4vw,3rem); }
.shead h2{ font-family:var(--display); font-weight:300; font-size:var(--step-3); }
.shead p{ color:var(--ink-soft); max-width:44ch; margin:0; }

/* ── editorial gallery ──────────────────────────────────────────────────── */
.gal{ display:grid; gap:clamp(.75rem,2vw,1.5rem); grid-template-columns:repeat(2,1fr); }
@media (min-width:820px){ .gal{ grid-template-columns:repeat(12,1fr); gap:clamp(1rem,2.2vw,2rem); } }
.gal__item{ position:relative; grid-column:span 1; }
@media (min-width:820px){
  .gal__item{ grid-column:span 4; }
  .gal__item[data-span="6"]{ grid-column:span 6; }
  .gal__item[data-span="5"]{ grid-column:span 5; }
  .gal__item[data-span="7"]{ grid-column:span 7; }
  .gal__item[data-span="8"]{ grid-column:span 8; }
  .gal__item[data-offset="1"]{ grid-column-start:2; }
  .gal__item[data-push="down"]{ margin-top:clamp(2rem,6vw,6rem); }
}
.gal__btn{ display:block; width:100%; padding:0; border:0; background:none; cursor:zoom-in; text-align:left; }
.gal__cap{
  display:flex; justify-content:space-between; gap:1rem; margin-top:.7rem;
  font-size:.68rem; letter-spacing:.13em; text-transform:uppercase; color:var(--ink-faint);
}
.gal__cap b{ font-weight:500; color:var(--ink-soft); }

/* ── about ──────────────────────────────────────────────────────────────── */
.about{ display:grid; gap:clamp(1.75rem,4vw,3.5rem); }
@media (min-width:900px){ .about{ grid-template-columns:.85fr 1.15fr; align-items:center; } }
.about__body p{ font-family:var(--display); font-size:var(--step-2); line-height:1.32; font-weight:300; }

/* ── video ──────────────────────────────────────────────────────────────── */
.filmsec{ background:var(--night); color:var(--night-ink); }
.filmsec .eyebrow{ color:var(--night-soft); }
.filmsec h2{ font-family:var(--display); font-weight:300; font-size:var(--step-3); }
.filmsec p{ color:var(--night-soft); }
.film{ display:grid; gap:clamp(1.75rem,4vw,3.5rem); align-items:center; }
@media (min-width:900px){ .film{ grid-template-columns:.8fr 1.2fr; } }
.film__player{
  position:relative; background:var(--night-2); border-radius:2px; overflow:hidden;
  aspect-ratio:9/16; max-height:min(80vh,760px); margin-inline:auto; width:100%;
}
@media (min-width:900px){ .film__player{ max-width:430px; margin-inline:0 auto; } }
.film__player video,.film__player img{ width:100%; height:100%; object-fit:cover; }
.film__play{
  position:absolute; inset:0; display:grid; place-items:center; cursor:pointer;
  background:linear-gradient(180deg,rgba(16,14,11,.15),rgba(16,14,11,.5)); border:0;
  transition:opacity .4s var(--ease);
}
.film__play span{
  display:grid; place-items:center; width:74px; height:74px; border-radius:50%;
  border:1px solid rgba(240,235,226,.55); background:rgba(16,14,11,.28);
  backdrop-filter:blur(4px); color:var(--night-ink);
  transition:background .35s var(--ease), transform .35s var(--ease);
}
.film__play:hover span{ background:rgba(16,14,11,.55); transform:scale(1.06); }
.film__player[data-playing="true"] .film__play{ opacity:0; pointer-events:none; }
.film__cap{ margin-top:1rem; font-size:.66rem; letter-spacing:.16em; text-transform:uppercase; color:var(--night-soft); }

/* Width, set from the panel. "full" is the default and adds nothing. */
.film--narrow{ max-width:46rem; margin-inline:auto; }
.film--wide{ max-width:none; }

/* An externally hosted video sits in a 16:9 box rather than the cropped
   player, because the host controls its own chrome. */
.film__player--embed{ position:relative; aspect-ratio:16/9; }
.film__player--embed iframe{
  position:absolute; inset:0; width:100%; height:100%; border:0; display:block;
}

/* ── process ────────────────────────────────────────────────────────────── */
.steps{ display:grid; gap:1px; background:var(--rule); border-block:1px solid var(--rule); }
@media (min-width:700px){ .steps{ grid-template-columns:repeat(3,1fr); } }
@media (min-width:1100px){ .steps{ grid-template-columns:repeat(6,1fr); } }
.step{ background:var(--paper); padding:1.6rem 1.3rem 1.9rem; }
.step b{ display:block; font-family:var(--display); font-size:1.6rem; color:var(--ink-faint); font-weight:300; }
.step h3{ margin:.5rem 0 .5rem; font-size:.76rem; letter-spacing:.16em; text-transform:uppercase; }
.step p{ font-size:var(--step--1); color:var(--ink-soft); line-height:1.55; }

.rulecard{
  background:var(--paper-warm); border:1px solid var(--rule); border-radius:2px;
  padding:clamp(1.6rem,4vw,3rem);
}
.rulecard .note{ font-size:var(--step--1); color:var(--ink-soft); max-width:52ch; }

/* ── pathway cards ──────────────────────────────────────────────────────── */
.paths{ display:grid; gap:clamp(.85rem,2vw,1.25rem); }
@media (min-width:760px){ .paths{ grid-template-columns:repeat(2,1fr); } }
@media (min-width:1150px){ .paths{ grid-template-columns:repeat(4,1fr); } }
.path{
  display:flex; flex-direction:column; gap:.75rem; text-decoration:none;
  background:var(--paper-warm); border:1px solid var(--rule); border-radius:2px;
  padding:clamp(1.3rem,2.5vw,1.8rem); min-height:100%;
  transition:border-color .4s var(--ease), background .4s var(--ease), transform .4s var(--ease);
}
.path:hover{ border-color:var(--ink); transform:translateY(-3px); }
.path b{ font-size:.66rem; letter-spacing:.2em; text-transform:uppercase; color:var(--ink-faint); font-weight:500; }
.path h3{ font-family:var(--display); font-size:var(--step-1); font-weight:400; line-height:1.15; }
.path p{ font-size:var(--step--1); color:var(--ink-soft); line-height:1.55; margin:0; }
.path__go{ margin-top:auto; padding-top:.9rem; font-size:.68rem; letter-spacing:.14em; text-transform:uppercase; display:flex; align-items:center; gap:.5rem; }

/* ── flash grid ─────────────────────────────────────────────────────────── */
.filters{ display:flex; flex-wrap:wrap; gap:.5rem; margin-bottom:2rem; }
.chip{
  display:inline-flex; align-items:center; gap:.45rem; min-height:40px; padding:.4rem 1rem;
  border:1px solid var(--rule); border-radius:999px; background:transparent; cursor:pointer;
  font-size:.72rem; letter-spacing:.1em; text-transform:uppercase; color:var(--ink-soft);
  transition:.3s var(--ease);
}
.chip:hover{ border-color:var(--ink-faint); }
.chip[aria-pressed="true"]{ background:var(--ink); border-color:var(--ink); color:var(--paper); }

.flashgrid{ display:grid; gap:clamp(1.25rem,3vw,2.5rem); grid-template-columns:1fr; }
@media (min-width:640px){ .flashgrid{ grid-template-columns:repeat(2,1fr); } }
@media (min-width:1100px){ .flashgrid{ grid-template-columns:repeat(3,1fr); } }
.flashcard{ display:flex; flex-direction:column; }
.flashcard[hidden]{ display:none; }
.flashcard__media{ position:relative; background:var(--paper-cool); border:1px solid var(--rule-soft); }
.flashcard__media img{ width:100%; }
.flashcard--sold .flashcard__media img{ filter:grayscale(1) opacity(.45); }
.badges{ position:absolute; left:.7rem; top:.7rem; display:flex; flex-wrap:wrap; gap:.35rem; }
.badge{
  font-size:.6rem; letter-spacing:.14em; text-transform:uppercase; font-weight:500;
  padding:.32rem .6rem; border-radius:999px; background:var(--paper); border:1px solid var(--rule); color:var(--ink-soft);
}
.badge--available{ background:var(--ink); color:var(--paper); border-color:var(--ink); }
.badge--combinable{ background:var(--clay); color:#fff; border-color:var(--clay); }
.badge--sold{ background:transparent; color:var(--ink-faint); }
.flashcard__body{ padding-top:1rem; display:flex; flex-direction:column; gap:.55rem; flex:1; }
.flashcard__id{ font-size:.64rem; letter-spacing:.18em; color:var(--ink-faint); text-transform:uppercase; }
.flashcard h3{ font-family:var(--display); font-size:var(--step-1); font-weight:400; }
.flashcard p{ font-size:var(--step--1); color:var(--ink-soft); margin:0; line-height:1.55; }
.flashcard__cta{ margin-top:auto; padding-top:1rem; display:flex; flex-wrap:wrap; gap:.5rem; }

/* ── inspiration ────────────────────────────────────────────────────────── */
.insp{ display:grid; gap:clamp(3rem,8vw,7rem); }
.insp__entry{ display:grid; gap:clamp(1.25rem,3vw,2.75rem); align-items:start; }
@media (min-width:860px){
  .insp__entry{ grid-template-columns:1fr 1fr; }
  .insp__entry:nth-child(even) .insp__fig{ order:2; }
}
.insp__fig{ background:var(--paper-cool); border:1px solid var(--rule-soft); padding:clamp(.75rem,2vw,1.5rem); }
.insp__kind{ font-size:.64rem; letter-spacing:.2em; text-transform:uppercase; color:var(--clay); }
.insp__entry h2{ font-family:var(--display); font-size:var(--step-2); font-weight:300; margin:.6rem 0 1rem; }
.insp__entry p{ color:var(--ink-soft); max-width:46ch; }
.todo-flag{
  display:inline-block; margin-top:.5rem; font-size:.62rem; letter-spacing:.12em; text-transform:uppercase;
  color:var(--clay-deep); border:1px dashed var(--clay); border-radius:2px; padding:.25rem .5rem;
}

/* ── footer ─────────────────────────────────────────────────────────────── */
.ftr{ background:var(--night); color:var(--night-ink); padding-block:clamp(3rem,7vw,6rem) 2.5rem; margin-top:0; }
.ftr__top{ display:grid; gap:2.5rem; }
@media (min-width:860px){ .ftr__top{ grid-template-columns:1.4fr 1fr 1fr; } }
.ftr h2{ font-family:var(--display); font-weight:300; font-size:var(--step-3); line-height:1; }
.ftr__col h3{ font-size:.66rem; letter-spacing:.2em; text-transform:uppercase; color:var(--night-soft); margin-bottom:1rem; }
.ftr__col li{ margin-bottom:.55rem; }
.ftr__col a{ text-decoration:none; color:var(--night-ink); font-size:var(--step--1); }
.ftr__col a:hover{ color:#fff; text-decoration:underline; text-underline-offset:3px; }
.ftr__col address{ font-style:normal; color:var(--night-soft); font-size:var(--step--1); line-height:1.7; }
.ftr__socials{ display:flex; gap:.5rem; margin-top:1.4rem; }
.ftr .icon-link{ color:var(--night-soft); }
.ftr .icon-link:hover{ color:var(--night-ink); border-color:var(--night-rule); }
.ftr__bot{
  margin-top:clamp(2.5rem,6vw,4.5rem); padding-top:1.5rem; border-top:1px solid var(--night-rule);
  display:flex; flex-wrap:wrap; gap:1rem; justify-content:space-between;
  font-size:.68rem; letter-spacing:.08em; color:var(--night-soft);
}

/* ── lightbox ───────────────────────────────────────────────────────────── */
.lbox{
  position:fixed; inset:0; z-index:200; background:rgba(16,14,11,.94);
  display:grid; grid-template-rows:auto 1fr auto; padding:1rem;
  opacity:0; visibility:hidden; transition:opacity .3s var(--ease), visibility .3s;
}
.lbox[data-open="true"]{ opacity:1; visibility:visible; }
.lbox__bar{ display:flex; justify-content:space-between; align-items:center; gap:.75rem; color:var(--night-soft); font-size:.7rem; letter-spacing:.14em; text-transform:uppercase; }
.lbox__zoom{ display:flex; align-items:center; gap:.2rem; margin-left:auto; }
.lbox__zoom button{
  min-width:38px; min-height:38px; border:1px solid var(--night-rule); background:transparent;
  border-radius:2px; color:var(--night-ink); cursor:pointer; font-size:1rem; line-height:1;
}
.lbox__zoom button:hover{ background:rgba(255,255,255,.08); }
.lbox__zoom .lbox__fit{ font-size:.64rem; letter-spacing:.1em; text-transform:uppercase; padding-inline:.6rem; }
.lbox__zoom [data-lb-level]{ min-width:3.4rem; text-align:center; font-variant-numeric:tabular-nums; letter-spacing:.04em; }
@media (max-width:560px){ .lbox__zoom [data-lb-level]{ display:none; } .lbox__zoom button{ min-width:34px; min-height:34px; } }

/* The stage is a grid row sized 1fr. Without min-height:0 it refuses to shrink
   below its content, so the image's max-height:100% resolved against an
   over-tall box and the picture was cropped by overflow:hidden. */
.lbox__stage{
  position:relative; min-height:0; min-width:0; overflow:hidden;
  display:grid; place-items:center; padding:.75rem 0;
  touch-action:none; overscroll-behavior:contain;
}
.lbox__stage img{
  /* min-*:0 matters — a replaced element in a grid gets min-height:auto, which
     resolves to its intrinsic height and beats max-height, so tall photos
     overflowed the stage and were cropped. */
  min-width:0; min-height:0;
  max-width:100%; max-height:100%; width:auto; height:auto;
  object-fit:contain; user-select:none; -webkit-user-drag:none;
  transform-origin:center center; will-change:transform;
  cursor:zoom-in;
}
.lbox__stage[data-zoomed="true"] img{ cursor:grab; }
.lbox__stage[data-panning="true"] img{ cursor:grabbing; }
.lbox__foot{ display:flex; justify-content:center; align-items:center; gap:1rem; color:var(--night-soft); font-size:var(--step--1); }
.lbox__x,.lbox__nav{
  display:grid; place-items:center; width:46px; height:46px; border-radius:50%;
  background:transparent; border:1px solid var(--night-rule); color:var(--night-ink); cursor:pointer;
}
.lbox__x:hover,.lbox__nav:hover{ background:rgba(255,255,255,.08); }
.lbox__cap{ text-align:center; max-width:52ch; }

/* ── forms / intake ─────────────────────────────────────────────────────── */
.intake{ padding-block:clamp(2rem,5vw,4rem) clamp(4rem,10vw,8rem); }
.progress{ position:sticky; top:var(--header-h); z-index:50; background:var(--paper); padding-block:1rem; border-bottom:1px solid var(--rule-soft); margin-bottom:clamp(2rem,5vw,3.5rem); }
.progress__row{ display:flex; align-items:center; justify-content:space-between; gap:1rem; margin-bottom:.7rem; }
.progress__label{ font-size:.68rem; letter-spacing:.16em; text-transform:uppercase; color:var(--ink-faint); }
.progress__track{ height:2px; background:var(--rule); position:relative; overflow:hidden; }
.progress__bar{ position:absolute; inset:0 auto 0 0; width:0%; background:var(--ink); transition:width .5s var(--ease); }

fieldset{ border:0; margin:0; padding:0; min-width:0; }
legend{ padding:0; }
.step-panel{ max-width:44rem; }
.step-panel[hidden]{ display:none; }
.q{ margin-bottom:clamp(2rem,4vw,3rem); }
.q > legend, .q__title{
  display:block; font-family:var(--display); font-size:var(--step-2); font-weight:300;
  line-height:1.2; margin-bottom:.5rem;
}
.q__hint{ font-size:var(--step--1); color:var(--ink-soft); margin-bottom:1.1rem; max-width:52ch; }
.q__hint strong{ color:var(--ink); font-weight:500; }
.req{ color:var(--clay); }
.optional{ font-size:.66rem; letter-spacing:.14em; text-transform:uppercase; color:var(--ink-faint); margin-left:.6rem; vertical-align:middle; }

label{ display:block; }
.field{ margin-bottom:1.25rem; }
.field > label,.lbl{ font-size:.7rem; letter-spacing:.13em; text-transform:uppercase; color:var(--ink-soft); margin-bottom:.5rem; display:block; }
.input,textarea,select{
  width:100%; min-height:54px; padding:.85rem 1rem; font:inherit; color:var(--ink);
  background:var(--paper-warm); border:1px solid var(--rule); border-radius:2px;
  transition:border-color .3s var(--ease), background .3s var(--ease);
}
textarea{ min-height:120px; resize:vertical; line-height:1.55; }
.input:hover,textarea:hover,select:hover{ border-color:var(--ink-faint); }
.input:focus,textarea:focus,select:focus{ outline:none; border-color:var(--ink); background:var(--paper); box-shadow:0 0 0 3px color-mix(in srgb,var(--ink) 10%,transparent); }
.input[aria-invalid="true"],textarea[aria-invalid="true"]{ border-color:var(--clay); background:color-mix(in srgb,var(--clay) 5%,var(--paper-warm)); }
.err{ display:none; margin-top:.45rem; font-size:var(--step--1); color:var(--clay-deep); }
.err[data-show="true"]{ display:block; }

/* option grids */
.opts{ display:grid; gap:.6rem; grid-template-columns:1fr; }
@media (min-width:560px){ .opts--2{ grid-template-columns:repeat(2,1fr); } }
@media (min-width:560px){ .opts--3{ grid-template-columns:repeat(3,1fr); } }
@media (min-width:820px){ .opts--4{ grid-template-columns:repeat(4,1fr); } }
.opts--pills{ display:flex; flex-wrap:wrap; gap:.55rem; grid-template-columns:none; }

.opt{ position:relative; }
.opt input{ position:absolute; opacity:0; width:1px; height:1px; }
.opt span{
  display:flex; align-items:center; gap:.7rem; min-height:56px; padding:.9rem 1.1rem;
  border:1px solid var(--rule); border-radius:2px; background:var(--paper-warm); cursor:pointer;
  font-size:var(--step-0); line-height:1.35;
  transition:border-color .25s var(--ease), background .25s var(--ease), color .25s var(--ease);
}
.opt span::before{
  content:""; flex:none; width:18px; height:18px; border:1px solid var(--ink-faint);
  border-radius:50%; transition:.25s var(--ease);
}
.opt--check span::before{ border-radius:2px; }
.opt input:hover + span{ border-color:var(--ink-faint); }
.opt input:focus-visible + span{ outline:2px solid var(--clay); outline-offset:2px; }
.opt input:checked + span{ border-color:var(--ink); background:var(--paper); }
.opt input:checked + span::before{ background:var(--ink); border-color:var(--ink); box-shadow:inset 0 0 0 3px var(--paper); }
.opt small{ display:block; color:var(--ink-faint); font-size:.78rem; margin-top:.15rem; }

.opts--pills .opt span{ min-height:44px; padding:.5rem 1rem; border-radius:999px; font-size:var(--step--1); }
.opts--pills .opt span::before{ display:none; }
.opts--pills .opt input:checked + span{ background:var(--ink); color:var(--paper); border-color:var(--ink); }

/* choose-a-piece picker */
.picker{ display:grid; gap:.75rem; grid-template-columns:repeat(2,1fr); }
@media (min-width:700px){ .picker{ grid-template-columns:repeat(3,1fr); } }
@media (min-width:1000px){ .picker{ grid-template-columns:repeat(4,1fr); } }
.pick{ position:relative; }
.pick input{ position:absolute; opacity:0; width:1px; height:1px; }
.pick span{ display:block; cursor:pointer; }
.pick figure{ margin:0; border:1px solid var(--rule); background:var(--paper-cool); position:relative; transition:.25s var(--ease); }
.pick img{ width:100%; aspect-ratio:3/4; object-fit:contain; padding:.4rem; }
.pick figcaption{ padding:.55rem .6rem .7rem; font-size:.68rem; letter-spacing:.08em; color:var(--ink-soft); border-top:1px solid var(--rule-soft); }
.pick figcaption b{ display:block; font-size:.62rem; letter-spacing:.16em; text-transform:uppercase; color:var(--ink-faint); margin-bottom:.2rem; }
.pick input:checked + span figure{ border-color:var(--ink); box-shadow:0 0 0 2px var(--ink); }
.pick input:focus-visible + span figure{ outline:2px solid var(--clay); outline-offset:3px; }
.pick__tick{
  position:absolute; right:.5rem; top:.5rem; width:26px; height:26px; border-radius:50%;
  border:1px solid var(--rule); background:var(--paper); display:grid; place-items:center;
  opacity:0; transform:scale(.7); transition:.25s var(--ease); color:var(--paper);
}
.pick input:checked + span .pick__tick{ opacity:1; transform:none; background:var(--ink); border-color:var(--ink); }
.pick__tick svg{ width:13px; height:13px; }

/* file input */
.filedrop{
  border:1px dashed var(--rule); border-radius:2px; background:var(--paper-warm);
  padding:1.6rem 1.2rem; text-align:center; transition:.3s var(--ease);
}
.filedrop:hover,.filedrop[data-over="true"]{ border-color:var(--ink); background:var(--paper); }
.filedrop input[type=file]{ position:absolute; opacity:0; width:1px; height:1px; }
.filedrop label{ cursor:pointer; font-size:var(--step--1); }
.filedrop b{ display:block; font-size:var(--step-0); margin-bottom:.3rem; }
.filelist{ margin-top:.9rem; display:grid; gap:.4rem; font-size:var(--step--1); color:var(--ink-soft); }
.filelist li{ display:flex; gap:.6rem; align-items:center; }
.filelist code{ font-family:var(--sans); }

/* nav buttons */
.stepnav{
  display:flex; gap:.75rem; align-items:center; margin-top:clamp(2rem,4vw,3rem);
  padding-top:1.5rem; border-top:1px solid var(--rule);
}
.stepnav .spacer{ flex:1; }
.stepnav__count{ font-size:.68rem; letter-spacing:.14em; text-transform:uppercase; color:var(--ink-faint); }
.saved-note{ font-size:.68rem; color:var(--ink-faint); letter-spacing:.06em; }

/* summary / confirmation */
.confirm{ max-width:46rem; }
.confirm__mark{ width:54px; height:54px; border-radius:50%; border:1px solid var(--ink); display:grid; place-items:center; margin-bottom:1.5rem; }
.summary{ border-block:1px solid var(--rule); margin:2rem 0; }
.summary dl{ margin:0; display:grid; }
.summary .row{ display:grid; gap:.3rem; padding:.9rem 0; border-bottom:1px solid var(--rule-soft); }
@media (min-width:620px){ .summary .row{ grid-template-columns:13rem 1fr; gap:1.5rem; align-items:baseline; } }
.summary .row:last-child{ border-bottom:0; }
.summary dt{ font-size:.68rem; letter-spacing:.14em; text-transform:uppercase; color:var(--ink-faint); }
.summary dd{ margin:0; color:var(--ink); }
.next-card{ background:var(--paper-warm); border:1px solid var(--rule); border-radius:2px; padding:clamp(1.5rem,4vw,2.5rem); }
.next-card h3{ font-family:var(--display); font-size:var(--step-2); font-weight:300; margin-bottom:.8rem; }
.next-card ol{ counter-reset:n; display:grid; gap:.8rem; margin:1.4rem 0; }
.next-card ol li{ counter-increment:n; display:flex; gap:.9rem; font-size:var(--step--1); color:var(--ink-soft); }
.next-card ol li::before{
  content:counter(n,decimal-leading-zero); flex:none; font-family:var(--display);
  font-size:.95rem; color:var(--ink-faint); width:1.8rem;
}
.formstatus{ margin-top:1.25rem; font-size:var(--step--1); }
.formstatus[data-kind="error"]{ color:var(--clay-deep); }

/* generic prose */
.prose h2{ font-family:var(--display); font-weight:300; font-size:var(--step-2); margin:2.5rem 0 1rem; }
.prose h3{ font-size:.78rem; letter-spacing:.16em; text-transform:uppercase; margin:2rem 0 .7rem; }
.prose p,.prose li{ color:var(--ink-soft); max-width:var(--measure); }
.prose ul{ list-style:disc; padding-left:1.2rem; margin-bottom:1em; }
.prose li{ margin-bottom:.4rem; }

/* reveal on scroll */
[data-reveal]{ opacity:0; transform:translateY(14px); transition:opacity .8s var(--ease), transform .8s var(--ease); }
[data-reveal].is-in{ opacity:1; transform:none; }
@media (prefers-reduced-motion: reduce){ [data-reveal]{ opacity:1; transform:none; } }

@media print{ .hdr,.stickycta,.ftr,.lbox{ display:none !important; } }

/* ── fixes: <picture> wrappers + inline icon sizing ─────────────────────── */
picture{ display:block; }
.frame picture,.frame > picture{ display:block; width:100%; height:100%; }
.frame--tall picture,.frame--port picture,.frame--sq picture{ height:100%; }
.hero__fig picture{ height:100%; }
.hero__fig img{ object-position:center 18%; }
.pick figure picture{ display:block; }
.flashcard__media picture,.insp__fig picture,.gal__btn picture{ height:auto; }

svg{ vertical-align:middle; }
.btn svg,.path__go svg,.link-underline svg,.shead svg,.rulecard svg,.gal__cap svg{
  width:1.05em; height:1.05em; flex:none;
}
.film__play span svg{ width:22px; height:22px; }
.confirm__mark svg{ width:22px; height:22px; }
.icon-link svg{ width:18px; height:18px; }
.stepnav svg,.filters svg{ width:1.05em; height:1.05em; }

/* ── hero figure sizing ─────────────────────────────────────────────────── */
.hero__fig{ aspect-ratio:4/5; }
.hero__fig img{ height:100%; width:100%; object-fit:cover; object-position:center 16%; }
@media (min-width:900px){
  .hero__fig{ aspect-ratio:auto; height:min(74vh,700px); }
}

/* ── fixes round 2 ──────────────────────────────────────────────────────── */
/* option rows: stack label + hint instead of flexing them side by side */
.opt span{
  display:block; position:relative;
  min-height:56px; padding:.95rem 1.1rem .95rem 3rem;
}
.opt span::before{
  content:""; position:absolute; left:1.05rem; top:1.25rem;
  width:18px; height:18px; border:1px solid var(--ink-faint); border-radius:50%;
  transition:.25s var(--ease);
}
.opt small{ display:block; color:var(--ink-faint); font-size:.82rem; margin-top:.25rem; line-height:1.45; }
.opts--pills .opt span{ padding:.55rem 1.05rem; min-height:44px; }

/* flash plates: one consistent aspect so the grid reads as a set */
.flashcard__media{ aspect-ratio:3/4; display:grid; place-items:center; overflow:hidden; }
.flashcard__media .gal__btn{ height:100%; width:100%; }
.flashcard__media picture{ height:100%; width:100%; display:block; }
.flashcard__media img{ height:100%; width:100%; object-fit:contain; }
.badges{ right:.7rem; }
.flashcard__cta{ align-items:center; }

/* tighter mobile hero so the photograph reaches the fold */
@media (max-width:899px){
  .hero{ padding-top:1.5rem; }
  .hero__sub{ margin-top:1rem; }
  .hero__meta{ margin-top:1.4rem; gap:.6rem; }
  .hero__meta .btn{ flex:1 1 auto; }
  .hero__note{ margin-top:1.1rem; }
}

/* no-JS notice */
.nojs{
  border:1px solid var(--clay); border-radius:2px; background:color-mix(in srgb,var(--clay) 6%,var(--paper));
  padding:1.25rem 1.4rem; margin-bottom:2rem;
}
.nojs p{ font-size:var(--step--1); color:var(--ink-soft); }

.flashcard h2,.flashcard h3{ font-family:var(--display); font-size:var(--step-1); font-weight:400; }

/* intake heading collapses after step 1 but stays in the document */
[data-intro]{ transition:padding .35s var(--ease); }
[data-intro].is-compact{ padding-block:1.4rem .25rem; }
[data-intro].is-compact .eyebrow{ display:none; }
[data-intro].is-compact h1{ font-size:var(--step-1) !important; color:var(--ink-faint); }
[data-intro].is-compact h1 br{ display:none; }
[data-intro].is-compact [data-intro-lede]{ display:none; }

/* [hidden] must win over component display rules */
[hidden]{ display:none !important; }
.brk{ display:block; }
[data-intro].is-compact .brk{ display:inline; }
[data-intro].is-compact h1{ line-height:1.3; }
.stepnav{ flex-wrap:wrap; }
.stepnav__count{ order:3; width:100%; text-align:center; padding-top:.5rem; }
@media (min-width:560px){
  .stepnav__count{ order:0; width:auto; padding-top:0; }
}

/* ── inspiration: categories, entries, empty states ─────────────────────── */
.insp-cats{ display:grid; gap:clamp(2.5rem,6vw,4.5rem); }
.insp-cat{ display:grid; gap:1.25rem; }
.insp-cat__head{ display:grid; gap:.5rem; padding-bottom:1rem; border-bottom:1px solid var(--rule); }
.insp-cat__head h2{ font-family:var(--display); font-weight:300; font-size:var(--step-2); }
.insp-cat__head p{ color:var(--ink-soft); max-width:56ch; margin:0; font-size:var(--step--1); }

.insp-empty{
  border:1px dashed var(--rule-2, var(--rule)); border-radius:2px;
  background:var(--paper-warm); padding:clamp(1.5rem,4vw,2.25rem);
  display:grid; gap:.4rem; place-items:start;
}
.insp-empty__label{
  font-size:.64rem; letter-spacing:.18em; text-transform:uppercase; color:var(--ink-faint);
  border:1px solid var(--rule); border-radius:999px; padding:.28rem .65rem; background:var(--paper);
}
.insp-empty p{ color:var(--ink-faint); font-size:var(--step--1); margin:0; max-width:48ch; }

.insp-list{ display:grid; gap:clamp(1.5rem,4vw,2.5rem); }
@media (min-width:760px){ .insp-list{ grid-template-columns:repeat(2,1fr); } }
.insp-entry{ display:grid; gap:1rem; align-content:start; }
.insp-entry__fig{ background:var(--paper-cool); border:1px solid var(--rule-soft); padding:clamp(.6rem,1.5vw,1.1rem); }
.insp-entry__body h3{ font-family:var(--display); font-weight:400; font-size:var(--step-1); }
.insp-entry__by{ font-size:var(--step--1); color:var(--ink); margin:.3rem 0 0; }
.insp-entry__meta{ font-size:.7rem; letter-spacing:.12em; text-transform:uppercase; color:var(--ink-faint); margin:.35rem 0 .7rem; }
.insp-entry__body p{ color:var(--ink-soft); font-size:var(--step--1); }

/* two-column rhythm so the placeholder sections don't read as six identical bars */
@media (min-width:900px){
  .insp-cat{ grid-template-columns:minmax(0,5fr) minmax(0,7fr); gap:clamp(2rem,4vw,3.5rem); align-items:start; }
  .insp-cat__head{ border-bottom:0; padding-bottom:0; position:sticky; top:calc(var(--header-h) + 1.5rem); }
  .insp-cat__head::after{ content:""; display:block; width:2.5rem; height:1px; background:var(--rule); margin-top:.25rem; }
  .insp-list{ grid-template-columns:1fr; }
}
@media (min-width:1200px){ .insp-list{ grid-template-columns:repeat(2,1fr); } }
.insp-empty{ min-height:8.5rem; align-content:center; }

/* ── booking policy disclosure ──────────────────────────────────────────── */
.policy{ margin-top:1.5rem; border-top:1px solid var(--rule); }
.policy > summary{
  list-style:none; cursor:pointer; display:flex; align-items:center; gap:.6rem;
  padding:.95rem 0 .85rem; min-height:48px;
  font-size:.7rem; letter-spacing:.14em; text-transform:uppercase; color:var(--ink-soft);
}
.policy > summary::-webkit-details-marker{ display:none; }
.policy > summary::after{
  content:""; flex:none; width:9px; height:9px; margin-left:auto;
  border-right:1px solid currentColor; border-bottom:1px solid currentColor;
  transform:rotate(45deg) translate(-2px,-2px); transition:transform .3s var(--ease);
}
.policy[open] > summary::after{ transform:rotate(-135deg) translate(-3px,-3px); }
.policy > summary:hover{ color:var(--ink); }
.policy > summary:focus-visible{ outline:2px solid var(--clay); outline-offset:3px; border-radius:2px; }
.policy__body{ padding-bottom:.5rem; }
.policy__intro{ font-size:var(--step--1); color:var(--ink-faint); margin:0 0 1rem; }
.policy__list{ margin:0; display:grid; gap:.05rem; }
.policy__list > div{ display:grid; gap:.2rem; padding:.7rem 0; border-top:1px solid var(--rule-soft); }
.policy__list > div:first-child{ border-top:0; padding-top:0; }
@media (min-width:620px){
  .policy__list > div{ grid-template-columns:11rem 1fr; gap:1.5rem; align-items:baseline; }
}
.policy__list dt{ font-size:.68rem; letter-spacing:.13em; text-transform:uppercase; color:var(--ink-faint); }
.policy__list dd{ margin:0; font-size:var(--step--1); color:var(--ink-soft); line-height:1.55; max-width:56ch; }

/* ── flash picker: open-sheet control ───────────────────────────────────── */
.pick{ display:flex; flex-direction:column; }
.pick > label{ display:block; cursor:pointer; }
.pick__open{
  margin-top:.4rem; width:100%; min-height:40px; padding:.45rem .7rem;
  background:var(--paper-warm); border:1px solid var(--rule); border-radius:2px; cursor:pointer;
  font-size:.66rem; letter-spacing:.09em; text-transform:uppercase; color:var(--ink-soft);
  display:flex; align-items:center; justify-content:center; gap:.45rem; text-align:center;
  transition:border-color .25s var(--ease), color .25s var(--ease);
}
.pick__open:hover{ border-color:var(--ink); color:var(--ink); }
.pick__count{
  background:var(--ink); color:var(--paper); border-radius:999px;
  padding:.15rem .45rem; font-size:.6rem; letter-spacing:.06em; white-space:nowrap;
}

/* ── sheet inspector ────────────────────────────────────────────────────── */
.sheet{
  position:fixed; inset:0; z-index:210; background:var(--paper);
  display:grid; grid-template-rows:auto 1fr auto;
}
.sheet__bar{
  display:flex; align-items:center; gap:.75rem;
  padding:.7rem var(--gutter); border-bottom:1px solid var(--rule); background:var(--paper);
}
.sheet__meta{ min-width:0; margin-right:auto; }
.sheet__id{ font-size:.6rem; letter-spacing:.18em; text-transform:uppercase; color:var(--ink-faint); display:block; }
.sheet__bar h2{ font-family:var(--display); font-weight:400; font-size:var(--step-1); line-height:1.1;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.sheet__zoom{ display:flex; align-items:center; gap:.2rem; }
.sheet__zoom button{
  min-width:38px; min-height:38px; border:1px solid var(--rule); background:var(--paper-warm);
  border-radius:2px; cursor:pointer; font-size:1rem; line-height:1; color:var(--ink);
}
.sheet__zoom button:hover{ border-color:var(--ink); }
.sheet__zoom .sheet__fit{ font-size:.64rem; letter-spacing:.1em; text-transform:uppercase; padding-inline:.6rem; }
.sheet__zoom [data-zoom-level]{
  font-size:.64rem; letter-spacing:.06em; color:var(--ink-faint);
  min-width:3.2rem; text-align:center; font-variant-numeric:tabular-nums;
}
@media (max-width:520px){ .sheet__zoom [data-zoom-level]{ display:none; } }
.sheet__close{
  display:grid; place-items:center; width:40px; height:40px; border-radius:50%;
  background:transparent; border:1px solid var(--rule); cursor:pointer; color:var(--ink);
}
.sheet__close:hover{ border-color:var(--ink); }
.sheet__close svg{ width:16px; height:16px; }

.sheet__stage{ overflow:auto; background:var(--paper-cool); -webkit-overflow-scrolling:touch; padding:1rem; }
.sheet__canvas{ position:relative; width:100%; margin-inline:auto; transition:width .25s var(--ease); }
.sheet__canvas img{ width:100%; display:block; user-select:none; }
.sheet__spots{ position:absolute; inset:0; }
.spot{
  position:absolute; margin:0; padding:0; cursor:pointer;
  background:transparent; border:1px solid transparent; border-radius:3px;
  transition:background .18s var(--ease), border-color .18s var(--ease);
}
.spot:hover{ background:color-mix(in srgb, var(--clay) 12%, transparent); border-color:var(--clay); }
.spot:focus-visible{ outline:2px solid var(--clay); outline-offset:1px; }
.spot[aria-pressed="true"]{
  background:color-mix(in srgb, var(--ink) 14%, transparent);
  border-color:var(--ink); border-width:2px;
}
.spot__tag{
  position:absolute; left:0; top:0; transform:translateY(-100%);
  background:var(--ink); color:var(--paper); font-size:.52rem; letter-spacing:.08em;
  padding:.12rem .3rem; border-radius:2px 2px 0 0; white-space:nowrap;
  opacity:0; transition:opacity .18s var(--ease); pointer-events:none;
}
.spot:hover .spot__tag,.spot:focus-visible .spot__tag,.spot[aria-pressed="true"] .spot__tag{ opacity:1; }

.sheet__foot{
  border-top:1px solid var(--rule); background:var(--paper);
  padding:.9rem var(--gutter) calc(.9rem + env(safe-area-inset-bottom));
  display:grid; gap:.7rem; max-height:52vh; overflow-y:auto;
}
.sheet__hint{ font-size:var(--step--1); color:var(--ink-soft); margin:0; max-width:60ch; }
.sheet__chosen{ display:flex; flex-wrap:wrap; gap:.4rem; }
.chosen-chip{
  display:inline-flex; align-items:center; gap:.45rem; min-height:36px; padding:.3rem .5rem .3rem .6rem;
  background:var(--ink); color:var(--paper); border:0; border-radius:999px; cursor:pointer;
  font-size:.7rem; letter-spacing:.04em;
}
.chosen-chip b{ font-weight:500; letter-spacing:.1em; font-size:.62rem; }
.chosen-chip span{ opacity:.72; }
.chosen-chip i{ font-style:normal; font-size:.95rem; line-height:1; opacity:.75; }
.chosen-chip:hover i{ opacity:1; }
.sheet__manual{ margin:0; }
.sheet__any span{ min-height:48px; }

/* inspector: keep the artwork the dominant thing on a phone */
.sheet__foot{ max-height:42vh; gap:.55rem; }
.sheet__any span{ min-height:auto; padding:.6rem 1rem .6rem 2.6rem; font-size:var(--step--1); }
.sheet__any span::before{ top:.85rem; left:.9rem; width:16px; height:16px; }
.sheet__stage{ min-height:0; }
.sheet__canvas{ width:100%; }

/* inspector must never force horizontal page scroll on a phone */
.sheet{ max-inline-size:100vw; overflow:hidden; }
.sheet__bar{ padding-inline:1rem; min-width:0; }
.sheet__meta{ min-width:0; flex:1 1 auto; }
@media (max-width:560px){
  .sheet__bar{ padding-inline:.7rem; gap:.4rem; }
  .sheet__bar h2{ font-size:1.02rem; }
  .sheet__zoom button{ min-width:34px; min-height:34px; }
  .sheet__zoom .sheet__fit{ padding-inline:.45rem; }
  .sheet__close{ width:34px; height:34px; }
  .sheet__stage{ padding:.6rem; }
  .sheet__foot{ padding-inline:1rem; }
}

/* ── preparation / consent / aftercare ──────────────────────────────────── */
.care-group{ margin-top:.5rem; }
.care-group > .eyebrow{ margin-bottom:.25rem; }
.care-list{ list-style:none; display:grid; gap:.45rem; margin:0; padding:0; }
.care-list li{
  position:relative; padding-left:1.1rem; font-family:var(--sans); font-size:var(--step--1);
  color:var(--ink-soft); line-height:1.55; max-width:56ch;
}
.care-list li::before{
  content:""; position:absolute; left:0; top:.62em; width:5px; height:1px; background:var(--ink-faint);
}

/* gallery: stop long caption text from blowing out the grid tracks on phones */
.gal{ grid-template-columns:repeat(2,minmax(0,1fr)); }
@media (min-width:820px){ .gal{ grid-template-columns:repeat(12,minmax(0,1fr)); } }
.gal__item{ min-width:0; }
.gal__cap{ flex-wrap:wrap; row-gap:.2rem; }
.gal__cap b,.gal__cap span{ min-width:0; overflow-wrap:anywhere; }

/* long unbroken tokens (URLs, placeholder keys) must never widen the page */
.lede,.q__hint,.prose p,.policy__intro,.it-body,.summary dd,.insp-cat__head p{ overflow-wrap:anywhere; }

.confirm__nocta{ font-size:var(--step--1); color:var(--ink-soft); margin:0 0 .4rem; width:100%; }

/* ── homepage pass: bio in hero, bare video, header email on mobile ─────── */
.hero__bio{
  margin-top:1.3rem; max-width:38ch;
  font-size:var(--step-1); line-height:1.45; font-weight:300; color:var(--ink-soft);
}
@media (max-width:899px){ .hero__bio{ margin-top:1rem; font-size:var(--step-0); } }

/* video stands on its own — no editorial column beside it */
.filmsec--bare{ padding-block:clamp(2.5rem,6vw,4.5rem); }
.film--bare{ display:block; }
.film--bare .film__player{
  margin-inline:auto; width:100%; max-width:430px;
  max-height:min(78vh,760px);
}

/* the email + Instagram icons must be tappable on a phone, not only in the menu */
.hdr__social{ display:flex; }
@media (max-width:999px){
  .hdr__social{ gap:.15rem; margin-left:auto; }
  .hdr__social .icon-link{ width:40px; height:40px; }
  .hdr__social .icon-link svg{ width:19px; height:19px; }
  .burger{ margin-left:.25rem; }
}
@media (max-width:380px){
  .hdr__brand span{ display:none; }
  .hdr__social .icon-link{ width:36px; height:36px; }
}

/* tighten the homepage after the section removals */
.hero{ padding-bottom:clamp(1.25rem,2.5vw,2.25rem); }
@media (min-width:900px){ .hero__fig{ height:min(66vh,620px); } }
.filmsec--bare{ padding-block:clamp(2rem,5vw,3.5rem); }
.film--bare .film__player{ max-height:min(70vh,640px); }

/* ── content pass: hero bio, single-line section head, new portrait crop ─── */
.hero__bio{ margin-top:1.2rem; max-width:46ch; display:grid; gap:.7rem; }
.hero__bio p{
  /* Normal body text: same weight and colour as the site's other long-form copy.
     No emphasis of any kind. */
  margin:0; font-size:var(--step-0); line-height:1.6;
  font-weight:400; font-style:normal; color:var(--ink-soft);
}
@media (min-width:1200px){ .hero__bio p{ font-size:1.02rem; } }
.hero__fig img{ object-position:center 12%; }
.shead--single{ display:block; margin-bottom:clamp(1.5rem,3.5vw,2.25rem); }
.shead--single h2{ max-width:20ch; }

/* ── mobile navigation: whole menu visible on open, no scrolling to find it ─ */
.mnav{
  inset:var(--header-h) 0 auto 0;
  height:auto; max-height:calc(100dvh - var(--header-h));
  padding:1.1rem var(--gutter) calc(1.4rem + env(safe-area-inset-bottom));
  border-bottom:1px solid var(--rule);
  box-shadow:0 18px 40px -28px rgba(19,17,14,.5);
  overscroll-behavior:contain;
}
.mnav a.mnav__item{
  font-size:clamp(1.2rem, 5vw, 1.6rem);
  line-height:1.2;
  padding:.62rem 0;
  display:flex; align-items:center; justify-content:space-between; gap:1rem;
}
.mnav a.mnav__item:last-of-type{ border-bottom:0; }
.mnav__foot{
  margin-top:1rem; padding-top:1rem; border-top:1px solid var(--rule-soft);
  flex-direction:row; align-items:center; justify-content:space-between; gap:1rem;
}
.mnav__foot .btn{ width:auto; flex:1 1 auto; min-height:46px; }
.mnav__socials{ flex:none; }
@media (max-height:620px){
  .mnav{ padding-block:.75rem 1rem; }
  .mnav a.mnav__item{ font-size:1.12rem; padding:.45rem 0; }
  .mnav__foot{ margin-top:.6rem; padding-top:.6rem; }
}

/* ── metric fit for the small-caps body face ─────────────────────────────
   Bodoni 72 Smallcaps sets noticeably wider than Inter at the same size, so
   the uppercase micro-labels were wrapping. Tracking is trimmed to restore
   the original line counts. Sizes, weights and hierarchy are unchanged. */
.eyebrow,.progress__label,.summary dt,.policy__list dt,.flashcard__id,
.gal__cap,.optional,.saved-note,.stepnav__count,.pick figcaption b,
.insp__kind,.insp-empty__label,.sheet__id,.film__cap,.ftr__col h3,
.hdr__brand span,.step h3,.field > label,.lbl,.badge,.chip,.btn,
.hdr__nav a,.mnav__foot .btn,.path b,.path__go,.todo-flag,.unset-note{
  letter-spacing:.07em;
}
.eyebrow,.progress__label{ letter-spacing:.11em; }
.hdr__brand span{ letter-spacing:.1em; }
.badge,.flashcard__id,.insp-empty__label,.sheet__id{ letter-spacing:.08em; }
.progress__row{ gap:.75rem; }

