/* LAMASSU — first-iteration theme tokens (brand kit + design system) */
:root {
  --obsidian: #0D0D0F;
  --black-slate: #1F2426;
  --deep-slate: #30383B;
  --antique-gold: #BB9A57;
  --ancient-gold: #A6782D;
  --bronze-text: #74501E;
  --ivory: #E6E1D6;
  --warm-white: #FCFAF5;
  --warm-ivory: #F7F3EA;
  --stone: #E6DED0;
  --sand: #CBBEAA;
  --lapis: #1E3A8A;
  --lapis-ds: #284B78;
  --text-secondary: #565B5C;
  --text-muted: #6A6F70;
  --white: #FFFFFF;
  --font-display: "Cinzel", "Trajan Pro", Georgia, serif;
  --font-body: "Montserrat", "Avenir Next", Arial, sans-serif;
  --max: 1120px;
  --gutter: 1.25rem;
  --content-inset: var(--gutter);
  --header-h: 4.25rem;
  --radius: 0;
  --ease: 180ms ease;
}

*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; overflow-x: clip; }
body {
  margin: 0;
  font-family: var(--font-body);
  font-size: 16px;
  line-height: 1.6;
  color: var(--black-slate);
  background: var(--warm-white);
  -webkit-font-smoothing: antialiased;
  overflow-x: clip;
}
img { max-width: 100%; height: auto; display: block; }
a { color: var(--lapis-ds); text-decoration: none; }
a:hover { text-decoration: underline; }
button, input, select, textarea { font: inherit; }
h1, h2, h3, h4 {
  font-family: var(--font-display);
  font-weight: 500;
  letter-spacing: 0.06em;
  line-height: 1.2;
  text-transform: uppercase;
  margin: 0 0 0.75rem;
  color: var(--black-slate);
}
p { margin: 0 0 1rem; color: var(--text-secondary); }
.container { width: 100%; max-width: none; margin-inline: 0; padding-inline: var(--gutter); box-sizing: border-box; }
.content-column { width: 100%; max-width: none; margin-inline: 0; padding-inline: var(--gutter); box-sizing: border-box; }
.eyebrow {
  font-family: var(--font-body);
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--ancient-gold);
  margin: 0 0 0.75rem;
}
.placeholder-note {
  display: inline-block;
  font-size: 0.7rem;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--bronze-text);
  border: 1px solid var(--sand);
  padding: 0.15rem 0.45rem;
  margin-bottom: 0.75rem;
  background: var(--warm-ivory);
}
.stand-in-badge {
  display: inline-block;
  font-size: 0.65rem;
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--warm-white);
  background: rgba(13, 13, 15, 0.72);
  padding: 0.35rem 0.55rem;
  position: absolute;
  left: 0.75rem;
  bottom: 0.75rem;
  z-index: 2;
}
.media-frame { position: relative; overflow: hidden; background: var(--stone); }
.media-frame img { width: 100%; height: 100%; object-fit: cover; }

/* Buttons */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  min-height: 2.75rem;
  padding: 0.7rem 1.35rem;
  font-family: var(--font-body);
  font-size: 0.8rem;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  text-decoration: none !important;
  border: 1px solid transparent;
  cursor: pointer;
  transition: background var(--ease), color var(--ease), border-color var(--ease);
}
.btn--primary { background: var(--black-slate); color: var(--warm-white); border-color: var(--black-slate); }
.btn--primary:hover { background: var(--deep-slate); }
.btn--secondary { background: transparent; color: var(--black-slate); border-color: var(--black-slate); }
.btn--secondary:hover { background: var(--black-slate); color: var(--warm-white); }
.btn--light { background: var(--warm-white); color: var(--obsidian); border-color: var(--warm-white); }
.btn--light:hover { background: var(--ivory); }
.btn--ghost-light { background: transparent; color: var(--warm-white); border-color: var(--warm-white); }
.btn--ghost-light:hover { background: rgba(255,255,255,0.08); }
.btn-row { display: flex; flex-wrap: wrap; gap: 0.75rem; margin-top: 1.5rem; }

/* Header */
.site-header {
  position: sticky;
  top: 0;
  z-index: 100;
  background: var(--warm-white);
  border-bottom: 1px solid var(--stone);
}
.site-header__inner {
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: 1rem;
  min-height: var(--header-h);
}
.site-logo { display: flex; align-items: center; text-decoration: none !important; }
.site-logo img {
  height: 28px;
  width: auto;
  max-height: 32px;
  object-fit: contain;
  mix-blend-mode: normal;
}
.site-nav { display: none; justify-content: center; gap: 1.5rem; }
.site-nav a {
  font-size: 0.78rem;
  font-weight: 500;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--black-slate);
  text-decoration: none !important;
}
.site-nav a:hover { color: var(--lapis-ds); }
.site-utils { display: flex; align-items: center; gap: 0.85rem; }
.icon-btn {
  background: none;
  border: 0;
  padding: 0.35rem;
  color: var(--black-slate);
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  text-decoration: none !important;
}
.icon-btn svg { width: 20px; height: 20px; }
.cart-count { font-size: 0.75rem; color: var(--text-muted); }
.menu-toggle {
  display: inline-flex;
  position: relative;
  width: 40px;
  height: 40px;
  align-items: center;
  justify-content: center;
}
.menu-icon { width: 22px; height: 22px; display: block; }
.menu-icon--close { display: none; }
.menu-toggle[aria-expanded="true"] .menu-icon--open { display: none; }
.menu-toggle[aria-expanded="true"] .menu-icon--close { display: block; }
.mobile-nav {
  display: none;
  border-top: 1px solid var(--stone);
  padding: 0.75rem var(--gutter) 1rem;
  background: var(--warm-white);
}
.mobile-nav.is-open { display: block; }
.mobile-nav > a,
.mobile-nav__parent {
  display: block;
  width: 100%;
  padding: 0.6rem 0;
  font-size: 0.85rem;
  font-weight: 500;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--black-slate);
  text-decoration: none !important;
  border-bottom: 1px solid var(--stone);
  background: transparent;
  border-left: 0;
  border-right: 0;
  border-top: 0;
  text-align: left;
  font-family: inherit;
  cursor: pointer;
}
.mobile-nav__parent {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
}
.mobile-nav__parent--sub {
  font-size: 0.78rem;
  padding-left: 0.75rem;
  letter-spacing: 0.05em;
}
.mobile-nav__mark {
  font-size: 1.1rem;
  line-height: 1;
  color: var(--bronze-text);
  font-weight: 400;
  min-width: 1rem;
  text-align: center;
}
.mobile-nav__sub {
  padding: 0.15rem 0 0.35rem;
  border-bottom: 1px solid var(--stone);
}
.mobile-nav__leaf {
  display: block;
  padding: 0.45rem 0 0.45rem 1.35rem;
  font-size: 0.72rem;
  font-weight: 500;
  letter-spacing: 0.04em;
  text-transform: none;
  color: var(--text-muted);
  text-decoration: none !important;
  border-bottom: 0;
}
.mobile-nav__soon {
  display: block;
  padding: 0.35rem 0 0.5rem 1.35rem;
  font-size: 0.7rem;
  color: var(--text-muted);
  letter-spacing: 0.02em;
}
.mobile-nav__group > .mobile-nav__group .mobile-nav__sub {
  border-bottom: 0;
  padding-left: 0.25rem;
}
/* Mobile menu tap targets: at least 44px tall */
.mobile-nav > a,
.mobile-nav__parent,
.mobile-nav__leaf {
  display: flex;
  align-items: center;
  min-height: 44px;
  box-sizing: border-box;
}
.mobile-nav__parent { justify-content: space-between; }
.mobile-nav__sub[hidden] { display: none !important; }
@media (max-width: 899px) {
  .menu-toggle { width: 44px; height: 44px; }
}
/* Mobile: logo left, utils flush right (nav is display:none so drop the empty 1fr middle col) */
@media (max-width: 899px) {
  .site-header__inner {
    grid-template-columns: 1fr auto;
  }
  .site-utils {
    justify-self: end;
    justify-content: flex-end;
    gap: 0.35rem;
    margin-left: auto;
  }
  .site-logo img { height: 32px; width: auto; object-fit: contain; }
  .icon-btn { padding: 0.4rem; }
  .icon-btn svg { width: 22px; height: 22px; }
}

@media (min-width: 900px) {
  .site-nav { display: flex; flex-wrap: wrap; justify-content: center; gap: 0.55rem 1.35rem; }
  .site-nav a { font-size: 0.72rem; letter-spacing: 0.04em; }
  .menu-toggle { display: none; }
  .mobile-nav { display: none !important; }
  .site-utils { justify-content: flex-end; }
}

/* Sections */
.section { padding: 4rem 0; }
.section--tight { padding: 3rem 0; }
.section--ivory { background: var(--warm-ivory); }
.section--white { background: var(--warm-white); }
.section--obsidian { background: var(--obsidian); color: var(--warm-white); }
.section--obsidian h1,
.section--obsidian h2,
.section--obsidian h3 { color: var(--warm-white); }
.section--obsidian p { color: rgba(252, 250, 245, 0.78); }
.section-title { text-align: center; max-width: 40rem; margin: 0 auto 2.5rem; }
.section-title p { margin-top: 0.75rem; }
@media (min-width: 900px) {
  .section-title {
    text-align: left;
    max-width: none;
    margin-left: 0;
    margin-right: 0;
  }
  .page-hero,
  .shop-hero {
    text-align: left;
  }
  .shop-hero .shop-lede {
    margin-left: 0;
    margin-right: 0;
  }
}

/* Hero */
.editorial-hero {
  display: grid;
  grid-template-columns: 1fr;
  min-height: 28rem;
  background: var(--warm-ivory);
}
.editorial-hero__copy {
  padding: 3rem var(--gutter);
  display: flex;
  flex-direction: column;
  justify-content: center;
}
.editorial-hero__copy h1 { font-size: clamp(1.75rem, 4vw, 2.75rem); max-width: 14ch; }
.editorial-hero__media { min-height: 18rem; }
@media (min-width: 900px) {
  .editorial-hero { grid-template-columns: 1fr 1fr; }
  .editorial-hero__copy { padding: 4rem 3rem 4rem var(--content-inset); }
  .editorial-hero__media { min-height: 100%; }
}

/* Image with text */
.iwt {
  display: grid;
  grid-template-columns: 1fr;
  gap: 0;
  align-items: stretch;
}
.iwt__copy { padding: 3rem var(--gutter); display: flex; flex-direction: column; justify-content: center; background: var(--warm-white); }
.iwt__media { min-height: 16rem; }
@media (min-width: 900px) {
  .iwt {
    grid-template-columns: 1fr 1fr;
    width: 100%;
    max-width: none;
    margin-inline: 0;
    padding-inline: var(--gutter);
    box-sizing: border-box;
  }
  .iwt--media-left .iwt__media { order: -1; }
  .iwt__copy { padding: 4rem 3rem; }
}

/* Game of Ur band */
.gou-band {
  display: grid;
  grid-template-columns: 1fr;
}
.gou-band__copy { padding: 3rem var(--gutter); display: flex; flex-direction: column; justify-content: center; }
.gou-band__media { min-height: 16rem; }
.gou-band .heat { color: var(--antique-gold); font-weight: 500; }
@media (min-width: 900px) {
  .gou-band {
    grid-template-columns: 1fr 1fr;
    width: 100%;
    max-width: none;
    margin-inline: 0;
    padding-inline: var(--gutter);
    box-sizing: border-box;
  }
  .gou-band__copy { padding: 4rem 3rem; }
}

/* Edition cards */
.edition-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1.5rem;
}
@media (min-width: 700px) {
  .edition-grid { grid-template-columns: 1fr 1fr; }
}
.edition-card {
  background: var(--warm-white);
  border: 1px solid var(--stone);
  display: flex;
  flex-direction: column;
}
.edition-card__media { aspect-ratio: 4/3; }
.edition-card__body { padding: 1.5rem; flex: 1; display: flex; flex-direction: column; }
.edition-card__body h3 { font-size: 1.1rem; }
.edition-card__body .peer-label {
  font-size: 0.7rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--bronze-text);
  font-weight: 600;
  margin-bottom: 0.35rem;
}
.edition-card__body .btn { margin-top: auto; align-self: flex-start; }

/* Craft */
.craft {
  display: grid;
  grid-template-columns: 1fr;
  gap: 2rem;
  align-items: center;
}
/* Mockup mosaic: tall left + two stacked right */
.craft__mosaic {
  display: grid;
  grid-template-columns: 1.15fr 0.85fr;
  grid-template-rows: 1fr 1fr;
  gap: 0.4rem; /* thin white gutters matching mockup */
  min-height: 22rem;
  background: var(--warm-white);
}
.craft__mosaic-tall {
  grid-row: 1 / span 2;
  grid-column: 1;
}
.craft__mosaic .media-frame {
  width: 100%;
  height: 100%;
  min-height: 0;
  border: 0;
  box-shadow: none;
}
.craft__mosaic .media-frame img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.craft__mosaic-tall .media-frame { aspect-ratio: auto; min-height: 100%; }
.craft__mosaic-top .media-frame,
.craft__mosaic-bot .media-frame { aspect-ratio: 1; }
@media (max-width: 699px) {
  .craft__mosaic {
    grid-template-columns: 1fr 1fr;
    grid-template-rows: auto auto;
    min-height: 0;
  }
  .craft__mosaic-tall {
    grid-row: 1;
    grid-column: 1 / span 2;
  }
  .craft__mosaic-tall .media-frame { aspect-ratio: 16 / 10; }
}
@media (min-width: 900px) {
  .craft { grid-template-columns: 1.15fr 0.85fr; gap: 3rem; }
}

.resource-card__label {
  font-size: 0.68rem;
  font-weight: 600;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--bronze-text);
  margin: 0 0 0.35rem;
}
.resource-card__body h3 { text-transform: none; letter-spacing: 0.02em; font-size: 1.15rem; }
.resource-card__body a {
  display: inline-block;
  margin-top: 0.75rem;
  color: var(--black-slate);
  text-decoration: none !important;
  font-size: 1.1rem;
}

/* Resource cards */
.resource-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1.25rem;
}
@media (min-width: 700px) {
  .resource-grid { grid-template-columns: repeat(3, 1fr); }
  /* Founder round 4: one card left (game-of-ur.html "Explore the Game of Ur"): a single centred wide card, no empty columns */
  .resource-grid--single { grid-template-columns: 1fr; max-width: 52rem; margin: 0 auto; }
  .resource-grid--single .resource-card { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); align-items: center; }
  .resource-grid--single .resource-card__media { height: 100%; min-height: 12rem; }
}
.shop-tag-clear { font-size: 0.85rem; white-space: nowrap; }
.shop-tag-clear[hidden] { display: none; }
.resource-card {
  background: var(--warm-white);
  border: 1px solid var(--stone);
  overflow: hidden;
}
.resource-card__media { aspect-ratio: 16/10; }
.resource-card__body { padding: 1.25rem; }
.resource-card h3 { font-size: 0.95rem; margin-bottom: 0.5rem; }

/* Trust */
.trust-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 2rem;
  text-align: center;
  margin-top: 2rem;
}
@media (min-width: 700px) {
  .trust-grid { grid-template-columns: repeat(3, 1fr); }
}
.trust-item svg { width: 36px; height: 36px; margin: 0 auto 0.75rem; color: var(--ancient-gold); }
.trust-item h3 { font-size: 0.85rem; margin-bottom: 0.5rem; }
.trust-item p { font-size: 0.9rem; margin: 0; }

/* CTA + newsletter */
.cta-band {
  display: grid;
  grid-template-columns: 1fr;
  gap: 2rem;
  align-items: center;
}
@media (min-width: 900px) {
  .cta-band { grid-template-columns: 1fr 0.8fr 1fr; gap: 2.5rem; }
}
.newsletter-form { display: flex; flex-direction: column; gap: 0.75rem; }
.newsletter-form input[type="email"] {
  min-height: 2.75rem;
  padding: 0.65rem 0.9rem;
  border: 1px solid var(--sand);
  background: transparent;
  color: var(--warm-white);
}
.newsletter-form input::placeholder { color: rgba(252,250,245,0.5); }
.newsletter-form .btn { width: 100%; }

/* Footer */
.site-footer {
  background: var(--obsidian);
  color: rgba(252,250,245,0.75);
  padding: 3rem 0 1.5rem;
  border-top: 2px solid var(--antique-gold);
}
.site-footer a { color: rgba(252,250,245,0.85); text-decoration: none !important; }
.site-footer a:hover { color: var(--antique-gold); }
.footer-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1.35rem;
  margin-bottom: 1.5rem;
}
@media (min-width: 800px) {
  .footer-grid {
    grid-template-columns: repeat(3, 1fr);
    gap: 2rem;
    margin-bottom: 2.5rem;
    text-align: left;
  }
}
.footer-col h4 {
  font-family: var(--font-body);
  font-size: 0.72rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--antique-gold);
  margin-bottom: 0.65rem;
}
.footer-col ul { list-style: none; margin: 0; padding: 0; }
.footer-col li { margin-bottom: 0.35rem; }
.footer-col a { font-size: 0.82rem; }
.footer-mail {
  max-width: 22rem;
  margin: 0 auto 1.5rem;
  text-align: center;
  padding-top: 0.5rem;
}
.footer-mail h4 {
  font-family: var(--font-display);
  font-size: 1.05rem;
  font-weight: 500;
  color: var(--antique-gold);
  margin-bottom: 0.4rem;
  letter-spacing: 0.02em;
  text-transform: none;
}
.footer-mail > p {
  font-size: 0.8rem;
  color: rgba(252,250,245,0.6);
  margin-bottom: 0.85rem;
}
.footer-mail .newsletter-form--footer {
  margin-top: 0;
  max-width: none;
}
@media (min-width: 800px) {
  .footer-mail {
    margin-left: 0;
    margin-right: 0;
    text-align: left;
    max-width: 24rem;
  }
}
/* Mobile: stacked, centered, no wrap sprawl (assyriangifts refs) */
@media (max-width: 799px) {
  .site-footer { padding: 2.25rem 0 1.25rem; }
  .footer-grid {
    text-align: center;
    gap: 1.25rem;
  }
  .footer-col h4 { margin-bottom: 0.5rem; }
  .footer-col ul {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.35rem;
  }
  .footer-col li { margin-bottom: 0; }
  .footer-bottom {
    flex-direction: column;
    align-items: center;
    text-align: center;
    gap: 0.35rem;
  }
}
.footer-bottom {
  border-top: 1px solid rgba(187,154,87,0.25);
  padding-top: 1.25rem;
  font-size: 0.75rem;
  color: rgba(252,250,245,0.5);
  display: flex;
  flex-wrap: wrap;
  gap: 1rem;
  justify-content: space-between;
}

/* PDP (static edition pages: gallery + buy as direct grid children; dynamic product.html uses .pdp-top inside) */
.pdp:not(:has(> .pdp-top)) {
  display: grid;
  grid-template-columns: 1fr;
  gap: 2rem;
  padding: 2.5rem 0 4rem;
}
@media (min-width: 900px) {
  .pdp:not(:has(> .pdp-top)) { grid-template-columns: 1.1fr 0.9fr; gap: 3rem; align-items: start; }
}
.pdp-gallery { display: grid; gap: 0.75rem; }
.pdp-gallery__main { aspect-ratio: 4/3; }
.pdp-thumbs { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0.5rem; }
.pdp-thumbs .media-frame { aspect-ratio: 1; cursor: pointer; border: 1px solid transparent; }
.pdp-thumbs .media-frame.is-active { border-color: var(--ancient-gold); }
.price-lock {
  display: inline-block;
  margin: 0.75rem 0 1.25rem;
  padding: 0.65rem 0.9rem;
  background: var(--warm-ivory);
  border: 1px dashed var(--sand);
  font-size: 0.85rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  color: var(--bronze-text);
}
.fit-list { list-style: none; padding: 0; margin: 1rem 0 1.5rem; }
.fit-list li {
  padding: 0.55rem 0;
  border-bottom: 1px solid var(--stone);
  font-size: 0.92rem;
  color: var(--text-secondary);
}
.fit-list strong { color: var(--black-slate); font-weight: 600; }
.spec-note { font-size: 0.8rem; color: var(--text-muted); margin-top: 1rem; }

/* Page heroes */
.page-hero { padding: 3rem 0 1.5rem; text-align: center; }
.shop-hero {
  padding: 1.25rem 0 1rem;
  text-align: center;
}
.shop-hero .eyebrow { margin-bottom: 0.35rem; }
.shop-hero h1 { margin-bottom: 0.4rem; font-size: clamp(1.6rem, 3vw, 2.1rem); }
.shop-hero .shop-lede {
  margin: 0 auto 1rem;
  max-width: 36rem;
  font-size: 0.95rem;
  color: var(--text-secondary);
}
.shop-hero .shop-toolbar { margin-top: 0.75rem; }
.shop-hero .shop-filters { margin-top: 0.75rem; }
.catalogue-heading {
  margin: 0 0 1.25rem;
  text-align: left;
}
.catalogue-heading h2 {
  margin: 0;
  font-size: clamp(1.1rem, 2vw, 1.35rem);
  letter-spacing: 0.08em;
}
.catalogue-heading p {
  margin: 0.35rem 0 0;
  font-size: 0.9rem;
  color: var(--text-secondary);
}
#catalogue.section--shop-results {
  padding: 1.75rem 0 3rem;
}
.faq-list details {
  border-bottom: 1px solid var(--stone);
  padding: 1rem 0;
}
.faq-list summary {
  cursor: pointer;
  font-weight: 600;
  color: var(--black-slate);
  letter-spacing: 0.02em;
}
.faq-list p { margin: 0.75rem 0 0; }

.visually-hidden {
  position: absolute !important;
  width: 1px; height: 1px;
  padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0,0,0,0);
  border: 0;
}

/* Shop */
.shop-toolbar {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem;
  align-items: flex-start;
  justify-content: center;
  margin-top: 1.5rem;
}
.shop-search {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  flex: 1 1 18rem;
  max-width: 28rem;
}
.shop-search input[type="search"] {
  flex: 1 1 12rem;
  min-height: 2.75rem;
  padding: 0.65rem 0.9rem;
  border: 1px solid var(--sand);
  background: var(--warm-white);
  color: var(--black-slate);
}
.category-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1.25rem;
}
@media (min-width: 700px) {
  .category-grid { grid-template-columns: 1fr 1fr; }
}
.category-card {
  display: block;
  padding: 1.5rem;
  border: 1px solid var(--stone);
  background: var(--warm-white);
  color: inherit;
  text-decoration: none !important;
  min-height: 10rem;
}
.category-card:hover { border-color: var(--antique-gold); }
.category-card h3 { font-size: 1rem; }
.category-card p { font-size: 0.9rem; }
.empty-state {
  display: inline-block;
  margin-top: 0.75rem;
  font-size: 0.7rem;
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--bronze-text);
  border: 1px dashed var(--sand);
  padding: 0.35rem 0.55rem;
  background: var(--warm-ivory);
}

/* Forms */
.stub-form {
  display: grid;
  gap: 0.65rem;
  margin-top: 2rem;
  padding: 1.5rem;
  border: 1px solid var(--stone);
  background: var(--warm-ivory);
}
.stub-form label { font-size: 0.8rem; font-weight: 600; letter-spacing: 0.04em; color: var(--black-slate); }
.stub-form input,
.stub-form select,
.stub-form textarea {
  min-height: 2.75rem;
  padding: 0.65rem 0.9rem;
  border: 1px solid var(--sand);
  background: var(--warm-white);
  color: var(--black-slate);
  width: 100%;
}
.stub-form textarea { min-height: 8rem; resize: vertical; }
.stub-form .btn { justify-self: start; margin-top: 0.5rem; }
.form-note {
  font-size: 0.85rem;
  margin: 0.35rem 0 0;
  color: var(--antique-gold);
  min-height: 1.2em;
}
.form-note.is-success { color: var(--ancient-gold); font-weight: 600; }

.newsletter-form--footer {
  margin-top: 1.25rem;
  max-width: 18rem;
}
.newsletter-form--footer input[type="email"] {
  border-color: rgba(187,154,87,0.45);
}

/* FAQ groups + authenticity */
.faq-group-title {
  font-size: 1rem;
  margin: 2.5rem 0 0.75rem;
  padding-top: 1.25rem;
  border-top: 1px solid var(--stone);
}
.auth-block {
  padding: 1.25rem 0;
  border-bottom: 1px solid var(--stone);
}
.auth-block h2 { font-size: 1rem; }

@media (min-width: 700px) {
  .resource-grid--two { grid-template-columns: repeat(3, 1fr); }
}

.founder-note {
  font-size: 0.8rem;
  color: var(--bronze-text);
  border-left: 2px solid var(--sand);
  padding: 0.5rem 0.75rem;
  margin: 0.75rem 0 0;
  background: var(--warm-ivory);
}
.pending-nabu {
  display: inline-block;
  font-size: 0.7rem;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: #6b3a1f;
  border: 1px solid #c4a484;
  padding: 0.2rem 0.5rem;
  margin: 0 0 1rem;
  background: #f6ebe0;
}
.auth-block .pending-nabu { margin-bottom: 0.5rem; }
.coming-later {
  font-size: 0.75rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--bronze-text);
  opacity: 0.85;
}

.hero-lead { font-size: 1.125rem; line-height: 1.65; max-width: 36rem; }
.hero-close { margin-top: 0.75rem; max-width: 36rem; }

/* Hash / sticky-header landing clearance */
#search,
#catalogue,
.shop-toolbar,
.shop-filters,
#CatalogueHeading,
#ShopSearch {
  scroll-margin-top: calc(var(--header-h) + 1.5rem);
}
#catalogue {
  /* Extra air so first product row isn’t tight under sticky header */
  scroll-margin-top: calc(var(--header-h) + 1.75rem);
}
@media (max-width: 899px) {
  #search,
  #catalogue,
  .shop-toolbar,
  .shop-filters,
  #CatalogueHeading,
  #ShopSearch {
    scroll-margin-top: calc(var(--header-h) + 0.75rem);
  }
  #catalogue {
    scroll-margin-top: calc(var(--header-h) + 1rem);
  }
}

/* Sample catalogue banner */
.sample-banner {
  background: var(--obsidian);
  color: var(--antique-gold);
  text-align: center;
  padding: 0.65rem var(--gutter);
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  border-bottom: 1px solid rgba(187,154,87,0.35);
}
.sample-banner span { color: rgba(252,250,245,0.85); font-weight: 500; letter-spacing: 0.06em; }

/* Product grid */
.product-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.75rem;
}
@media (min-width: 600px) {
  .product-grid { gap: 1.15rem; }
}
@media (min-width: 900px) {
  .product-grid { grid-template-columns: repeat(3, 1fr); gap: 1.5rem; }
}

@media (max-width: 899px) {
  .product-card__media { aspect-ratio: 1; }
  .product-card__body { padding: 0.65rem 0.7rem 0.8rem; gap: 0.2rem; }
  .product-card h3 { font-size: 0.78rem; letter-spacing: 0.04em; }
  .product-card__cat { font-size: 0.58rem; }
  .product-card__price { font-size: 0.85rem; margin-top: 0.35rem; }
  .product-card__price .sample-tag { font-size: 0.55rem; }

  .shop-hero { padding: 0.75rem 0 0.65rem; }
  .shop-hero .eyebrow,
  .shop-hero .shop-lede { display: none; }
  .shop-hero h1 { font-size: 1.45rem; margin-bottom: 0.35rem; }
  .shop-hero .shop-toolbar { margin-top: 0.45rem; }
  .shop-hero .shop-filters { margin-top: 0.45rem; }
  .shop-hero .btn { padding: 0.5rem 0.75rem; font-size: 0.7rem; }

  .shop-toolbar {
    flex-direction: column;
    align-items: stretch;
    gap: 0.45rem;
  }
  .shop-toolbar-actions {
    display: flex;
    gap: 0.45rem;
    width: 100%;
  }
  .shop-toolbar-actions .btn {
    flex: 1;
    justify-content: center;
    text-align: center;
  }
  .shop-search {
    display: flex;
    flex-direction: row;
    flex-wrap: nowrap;
    align-items: center;
    gap: 0.45rem;
    width: 100%;
    max-width: none;
    flex: none;
  }
  .shop-search input[type="search"] {
    flex: 1 1 auto;
    min-width: 0;
    min-height: 2.5rem;
    height: 2.5rem;
    padding: 0.45rem 0.75rem;
  }
  .shop-search .btn {
    flex: 0 0 auto;
    width: auto;
    min-height: 2.5rem;
    height: 2.5rem;
    padding: 0 0.9rem;
    writing-mode: horizontal-tb;
    white-space: nowrap;
  }
  .shop-filters {
    justify-content: flex-start;
    flex-wrap: wrap;
    gap: 0.35rem;
  }
  .shop-filters button {
    padding: 0.35rem 0.55rem;
    font-size: 0.65rem;
  }
  #catalogue.section--shop-results { padding: 0.55rem 0 2.5rem; }
  .catalogue-heading { margin-bottom: 0.5rem; }
  .catalogue-heading h2 { font-size: 1rem; }
  /* 2026-10-08 (Ramen, B-048): the category ledes show on phones too (were hidden here) */
  .catalogue-heading p { font-size: 0.82rem; line-height: 1.45; margin-top: 0.2rem; }
  .page-hero:not(.shop-hero) { padding: 1.75rem 0 1rem; }

  /* 8) Home hero + Featured (gou) band — phone/tablet, no overflow */
  .editorial-hero { min-height: 0; }
  .editorial-hero__copy { padding: 2rem var(--gutter) 1.25rem; }
  .editorial-hero__copy h1 {
    max-width: none;
    font-size: clamp(1.45rem, 6.5vw, 2.1rem);
  }
  .hero-lead { font-size: 1rem; }
  .editorial-hero__media {
    min-height: 12rem;
    max-height: min(42vh, 22rem);
  }
  .editorial-hero .btn-row { gap: 0.5rem; margin-top: 1rem; }
  .editorial-hero .btn {
    flex: 1 1 calc(50% - 0.5rem);
    min-width: 0;
    padding-inline: 0.85rem;
  }
  .gou-band__media {
    min-height: 11rem;
    max-height: min(40vh, 20rem);
  }
  .gou-band__copy { padding: 1.75rem var(--gutter) 2rem; }
  .gou-band__copy h2 { font-size: clamp(1.2rem, 5vw, 1.7rem); }
  .gou-band .btn-row { gap: 0.5rem; }
  .gou-band .btn { flex: 1 1 100%; min-width: 0; }
  .section { padding: 3rem 0; }
  .section--tight { padding: 2.25rem 0; }
  .edition-tease__card .media-frame { max-height: 14rem; }
}

/* Tablet (768-class): keep Featured CTAs readable, media capped */
@media (min-width: 600px) and (max-width: 899px) {
  .editorial-hero__media { max-height: min(46vh, 26rem); }
  .gou-band__media { max-height: min(44vh, 24rem); }
  .gou-band .btn { flex: 1 1 calc(50% - 0.5rem); }
}

.product-card {
  background: transparent;
  border: 0;
  display: flex;
  flex-direction: column;
  text-decoration: none !important;
  color: inherit;
}
.product-card:hover { border: 0; opacity: 0.92; }
.product-card__media {
  aspect-ratio: 1;
  background: #f3efe6;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  border: 0;
}
.product-card__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
}
.product-card__body {
  padding: 0.7rem 0 0.25rem;
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
}
.product-card__cat { display: none; }
.product-card h3 {
  font-family: var(--font-body);
  font-size: 0.82rem;
  font-weight: 600;
  margin: 0;
  text-transform: none;
  letter-spacing: 0.01em;
  line-height: 1.35;
  color: var(--black-slate);
}
.product-card__price {
  margin-top: 0.15rem;
  padding-top: 0;
  font-size: 0.8rem;
  font-weight: 500;
  font-style: italic;
  color: var(--black-slate);
}
.product-card__price .sample-tag { display: none; }
.product-card.is-hidden { display: none; }

.shop-filters {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  justify-content: center;
  margin: 1.25rem 0 0.5rem;
}
.shop-filters button,
.filter-chip {
  min-height: 2.35rem;
  padding: 0.45rem 0.95rem;
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  border: 1px solid var(--sand);
  background: var(--warm-white);
  color: var(--black-slate);
  cursor: pointer;
}
.shop-filters button.is-active,
.filter-chip.is-active {
  background: var(--black-slate);
  color: var(--warm-white);
  border-color: var(--black-slate);
}
.shop-empty {
  text-align: center;
  padding: 2.5rem 1rem;
  border: 1px dashed var(--sand);
  background: var(--warm-ivory);
  color: var(--text-secondary);
  display: none;
}
.shop-empty.is-visible { display: block; }
.category-card.is-active { border-color: var(--antique-gold); box-shadow: inset 0 0 0 1px var(--antique-gold); }

.sample-price {
  margin: 0.75rem 0 1.25rem;
  padding: 0.65rem 0.9rem;
  background: var(--warm-ivory);
  border: 1px dashed var(--sand);
  font-size: 0.95rem;
  font-weight: 600;
  color: var(--black-slate);
}
.sample-price .sample-tag {
  display: block;
  font-size: 0.68rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--bronze-text);
  margin-bottom: 0.25rem;
}

/* Thin home edition tease */
.edition-tease {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1.25rem;
  max-width: 48rem;
  margin: 0 auto;
}
@media (min-width: 700px) {
  .edition-tease { grid-template-columns: 1fr 1fr; }
}
.edition-tease__card {
  text-align: center;
  padding: 1.5rem 1.25rem;
  border: 1px solid var(--stone);
  background: var(--warm-white);
}
.edition-tease__card .media-frame {
  aspect-ratio: 4/3;
  margin-bottom: 1rem;
}
.edition-tease__card h3 { font-size: 1rem; margin-bottom: 0.5rem; }
.edition-tease__card p { font-size: 0.9rem; margin: 0 0 1rem; }
.edition-tease__card .btn { margin-top: 0; }
.edition-tease__card .peer-label {
  font-size: 0.7rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--bronze-text);
  font-weight: 600;
  margin-bottom: 0.35rem;
}

/* Cart page */
/* Vertical only: same element also has .container (padding-inline: var(--gutter) since PR #7). Shorthand padding wiped side gutters on cart.html and checkout.html. */
.cart-layout { padding-block: 2rem 4rem; }
.cart-table { width: 100%; border-collapse: collapse; }
.cart-line {
  display: grid;
  grid-template-columns: 5rem 1fr;
  gap: 1rem;
  padding: 1.25rem 0;
  border-bottom: 1px solid var(--stone);
  align-items: start;
}
@media (min-width: 700px) {
  .cart-line { grid-template-columns: 6.5rem 1fr auto auto auto; align-items: center; }
}
.cart-line__media { aspect-ratio: 1; background: var(--stone); }
.cart-line__media img { width: 100%; height: 100%; object-fit: cover; }
.cart-line__title { font-family: var(--font-display); font-size: 0.95rem; letter-spacing: 0.04em; text-transform: none; margin: 0 0 0.25rem; color: var(--black-slate); }
.cart-line__meta { font-size: 0.8rem; color: var(--text-muted); margin: 0; }
.cart-line__qty { display: flex; align-items: center; gap: 0.35rem; margin-top: 0.75rem; }
@media (min-width: 700px) {
  .cart-line__qty { margin-top: 0; justify-content: center; }
}
.cart-line__qty input {
  width: 3.25rem;
  min-height: 44px;
  text-align: center;
  border: 1px solid var(--sand);
  background: var(--warm-white);
}
/* 2026-10-02 (founder): no native number spinner inside the cart quantity box in any browser; the -/+ buttons stay and typing still works. */
.cart-line__qty input { -moz-appearance: textfield; appearance: textfield; }
.cart-line__qty input::-webkit-outer-spin-button,
.cart-line__qty input::-webkit-inner-spin-button { -webkit-appearance: none; appearance: none; margin: 0; }
.cart-line__qty button {
  min-width: 44px;
  min-height: 44px;
  width: 44px;
  height: 44px;
  border: 1px solid var(--sand);
  background: var(--warm-ivory);
  cursor: pointer;
  font-weight: 600;
  font-size: 1.1rem;
  line-height: 1;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  -webkit-tap-highlight-color: transparent;
}
.cart-line__total { font-weight: 600; color: var(--black-slate); white-space: nowrap; }
.cart-line__remove {
  background: none;
  border: 0;
  color: var(--text-muted);
  font-size: 0.75rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  cursor: pointer;
  padding: 0;
  text-decoration: underline;
}
.cart-summary {
  margin-top: 2rem;
  padding: 1.5rem;
  background: var(--warm-ivory);
  border: 1px solid var(--stone);
  max-width: 24rem;
  margin-left: auto;
}
.cart-summary__row {
  display: flex;
  justify-content: space-between;
  font-weight: 600;
  color: var(--black-slate);
  margin-bottom: 1rem;
}
.cart-empty { text-align: center; padding: 3rem 1rem; }
.qty-row { display: flex; align-items: center; gap: 0.75rem; margin: 1rem 0; }
.qty-row input {
  width: 4rem;
  min-height: 2.75rem;
  text-align: center;
  border: 1px solid var(--sand);
  background: var(--warm-white);
}
/* Founder round 4: THE main Add to cart sits in the quantity row; wraps under the field only if the row is too narrow */
.qty-row--atc { flex-wrap: wrap; }
.qty-row--atc input { flex: 0 0 auto; }
.qty-row--atc .qty-row__atc { flex: 1 1 10rem; min-height: 2.75rem; max-width: 22rem; }
.btn-row--pdp-secondary { margin-top: 0.5rem; }
/* 2026-10-02 (founder): "View Cart" under Qty, "Back to shop" to its right on the same row; wraps (never overflows) when the screen is too narrow. 44px touch targets. */
.btn-row--pdp-secondary { align-items: stretch; gap: 0.5rem 0.75rem; }
.btn-row--pdp-secondary .btn { flex: 0 1 auto; min-height: 44px; min-width: 44px; box-sizing: border-box; text-align: center; display: inline-flex; align-items: center; justify-content: center; }
@media (max-width: 480px) { .btn-row--pdp-secondary .btn { flex: 1 1 8rem; } }

/* PDP sticky Add to cart (phone + desktop; assets/pdp-sticky.js) */
.pdp-sticky-atc {
  display: flex;
  flex-direction: column;
  visibility: hidden;
  transform: translateY(110%);
  transition: transform 0.22s ease, visibility 0s linear 0.22s;
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 90;
  align-items: stretch;
  gap: 0.35rem;
  padding: 0.65rem var(--gutter);
  padding-bottom: calc(0.65rem + env(safe-area-inset-bottom, 0px));
  background: var(--warm-white);
  border-top: 1px solid var(--stone);
  box-shadow: 0 -6px 24px rgba(13, 13, 15, 0.1);
}
.pdp-sticky-atc__meta { flex: 0 1 auto; min-width: 0; width: 100%; }
.pdp-sticky-atc__price {
  font-size: 0.95rem;
  font-weight: 600;
  color: var(--black-slate);
  white-space: nowrap;
}
.pdp-sticky-atc__opts {
  margin: 0;
  font-size: 0.8rem;
  line-height: 1.35;
  color: var(--text-muted);
  overflow-wrap: anywhere;
}
.pdp-sticky-atc__opts[hidden] { display: none; }
.pdp-sticky-atc .btn {
  flex: 0 0 auto;
  width: 100%;
  min-height: 44px;
}
.pdp-sticky-atc.is-visible {
  visibility: visible;
  transform: none;
  transition: transform 0.22s ease, visibility 0s linear 0s;
}
body.has-pdp-sticky { padding-bottom: var(--pdp-sticky-h, 4.25rem); }
@media (min-width: 900px) {
  .pdp-sticky-atc .btn { flex: 0 0 auto; width: 100%; min-width: 0; white-space: nowrap; }
}
@media (max-width: 899px) {
  .pdp:not(:has(> .pdp-top)) {
    grid-template-columns: 1fr;
    gap: 1.25rem;
    padding: 1.25rem 0 2.5rem;
  }
  .pdp-gallery__main { aspect-ratio: 4 / 3; }
}
@media (prefers-reduced-motion: reduce) {
  .pdp-sticky-atc, .pdp-sticky-atc.is-visible { transition: none; }
}

/* WAVE1 denser mobile shop fold */
@media (max-width: 480px) {
  .sample-banner { padding: 0.4rem var(--gutter); font-size: 0.62rem; }
  .site-header__inner { min-height: 52px; }
  .site-logo img { height: 28px; width: auto; object-fit: contain; }
  .shop-hero { padding: 0.45rem 0 0.4rem; }
  .shop-hero h1 { font-size: 1.25rem; margin-bottom: 0.2rem; }
  .shop-hero .shop-toolbar { margin-top: 0.3rem; gap: 0.3rem; }
  .shop-hero .shop-filters { margin-top: 0.3rem; gap: 0.25rem; }
  .shop-toolbar-actions { display: none; }
  .shop-search input[type="search"],
  .shop-search .btn { min-height: 2.25rem; height: 2.25rem; }
  .shop-filters button { padding: 0.28rem 0.45rem; font-size: 0.6rem; }
  /* 2026-10-08 (Ramen, B-048): the heading with its category lede shows on phones (was display: none under 480px), compact */
  .catalogue-heading { display: block; margin: 0.35rem 0 0.5rem; }
  .catalogue-heading h2 { font-size: 0.95rem; }
  .catalogue-heading p { font-size: 0.8rem; }
  #catalogue.section--shop-results { padding: 0.35rem 0 2rem; }
  /* Founder round 4: the ?tag= view (e.g. Game of Ur) keeps a compact heading + "All products" link on phones */
  body.shop-tagged .catalogue-heading { display: flex; align-items: baseline; justify-content: space-between; gap: 0.75rem; margin: 0.35rem 0 0.5rem; }
  body.shop-tagged .catalogue-heading h2 { font-size: 1rem; margin: 0; }
  .product-grid { gap: 0.5rem; }
  .product-card__media { aspect-ratio: 1; }
  .product-card__body { padding: 0.45rem 0.5rem 0.55rem; gap: 0.1rem; }
  .product-card h3 { font-size: 0.7rem; line-height: 1.25; }
  .product-card__cat { font-size: 0.52rem; }
  .product-card__price { font-size: 0.72rem; padding-top: 0.35rem; margin-top: 0.2rem; }
  .product-card__price .sample-tag { font-size: 0.48rem; margin-bottom: 0.1rem; }
  #search, #catalogue, #ProductGrid, .shop-toolbar, .shop-filters {
    scroll-margin-top: calc(var(--header-h) + 0.5rem);
  }
}

/* WAVE1 filtered shop landing */
body.shop-filtered .shop-hero .eyebrow,
body.shop-filtered .shop-hero .shop-lede {
  display: none;
}
body.shop-filtered .shop-hero h1 {
  font-size: 1.1rem;
  margin-bottom: 0.25rem;
}
@media (max-width: 480px) {
  body.shop-filtered .shop-hero {
    padding: 0.35rem 0 0.3rem;
  }
  body.shop-filtered .shop-hero h1 {
    font-size: 1rem;
  }
  #catalogue {
    scroll-margin-top: calc(var(--header-h) + 0.35rem);
  }
}

/* PUNCHLIST footer mail / pdp tags / menu */
.pdp-tags {
  list-style: none;
  margin: 0.5rem 0 0.75rem;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
}
.pdp-tag {
  margin: 0;
  padding: 0.2rem 0.55rem;
  font-size: 0.62rem;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: lowercase;
  color: var(--bronze-text);
  background: rgba(187, 154, 87, 0.12);
  border: 1px solid rgba(187, 154, 87, 0.35);
  border-radius: 999px;
}

/* Game of Ur dedicated page */
.iwt--media-right {
  display: grid;
  gap: 2rem;
  align-items: center;
}
@media (min-width: 900px) {
  .iwt--media-right {
    grid-template-columns: 1fr 1.1fr;
  }
  .iwt--media-right .iwt__copy { order: 0; padding-left: 3rem; padding-right: 2rem; }
  .iwt--media-right .iwt__media { order: 1; }
}
.text-link {
  font-size: 0.85rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-decoration: none !important;
  color: var(--black-slate);
  border-bottom: 1px solid rgba(13, 13, 15, 0.35);
  padding-bottom: 0.1rem;
}
.text-link:hover { color: var(--bronze-text); border-color: var(--antique-gold); }
.gou-evidence-grid {
  display: grid;
  gap: 0.75rem;
}
@media (min-width: 600px) {
  .gou-evidence-grid { grid-template-columns: 1fr 1fr; }
}
/* Game of Ur Explore History story (founder target 2026-10-11) */
.gou-story {
  padding-top: 0.5rem;
  padding-bottom: 2rem;
}
.gou-story h1 {
  font-size: clamp(1.35rem, 3.5vw, 1.85rem);
  letter-spacing: 0.08em;
  margin-bottom: 0.5rem;
}
.gou-story__dek {
  font-size: 1.05rem;
  font-weight: 500;
  color: var(--black-slate);
  margin-bottom: 1.75rem;
}
.gou-story h2 {
  font-size: clamp(1rem, 2.5vw, 1.25rem);
  margin-top: 0.25rem;
  margin-bottom: 1rem;
}
.gou-story p { margin-bottom: 1rem; }
.gou-story__divider {
  border: 0;
  height: 1px;
  margin: 2rem 0;
  background: linear-gradient(90deg, transparent, var(--sand) 12%, var(--sand) 88%, transparent);
}
.gou-story__ctas { margin-top: 2.5rem; }

.gou-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 1rem 1.5rem;
  margin-top: 0.85rem;
  font-size: 0.72rem;
  letter-spacing: 0.04em;
  color: var(--text-muted);
}
.gou-legend__known { border-bottom: 2px solid var(--black-slate); padding-bottom: 0.1rem; }
.gou-legend__interp { border-bottom: 2px dashed var(--bronze-text); padding-bottom: 0.1rem; }
.section-title--light h2 { color: var(--warm-white); }
.section-title--light p,
.gou-craft-lede {
  color: rgba(252, 250, 245, 0.7);
  font-style: italic;
  text-align: center;
  margin-top: 0.35rem;
}
.gou-craft-grid {
  display: grid;
  gap: 1.5rem;
  margin-top: 2rem;
}
@media (min-width: 800px) {
  .gou-craft-grid { grid-template-columns: repeat(3, 1fr); gap: 1.75rem; }
}
.gou-craft-card h3 {
  font-size: 0.95rem;
  margin: 0.85rem 0 0.4rem;
  color: var(--warm-white);
}
.gou-craft-card p {
  font-size: 0.85rem;
  color: rgba(252, 250, 245, 0.7);
}
.gou-craft-card .media-frame { max-height: 14rem; }
.gou-close {
  text-align: center;
  max-width: 36rem;
  margin: 0 auto;
}
.gou-close h2 { margin-bottom: 0.75rem; }
.gou-close > p { margin-bottom: 1.25rem; color: var(--text-muted); }
#gou-craft .section-title { margin-bottom: 0.5rem; }

/* Home hero carousel */
.home-carousel {
  position: relative;
  background: var(--warm-white);
  border-bottom: 1px solid var(--stone);
}
.home-carousel__viewport {
  overflow: hidden;
}
.home-carousel__track {
  position: relative;
}
.home-carousel__slide {
  display: none;
  grid-template-columns: 1fr;
  min-height: 0;
}
.home-carousel__slide.is-active {
  display: grid;
}
.home-carousel__copy {
  padding: 2.5rem var(--gutter) 1.5rem;
  display: flex;
  flex-direction: column;
  justify-content: center;
}
.home-carousel__copy h1,
.home-carousel__title {
  font-size: clamp(1.75rem, 4vw, 2.75rem);
  max-width: 16ch;
  margin-bottom: 0.75rem;
}
.home-carousel__copy .hero-lead { margin-bottom: 0.75rem; }
.home-carousel__copy .hero-close { margin-bottom: 1.25rem; }
.home-carousel__copy .heat { color: var(--antique-gold); font-weight: 500; }
.home-carousel__copy--dark {
  background: var(--obsidian);
  color: rgba(252, 250, 245, 0.9);
}
.home-carousel__copy--dark .eyebrow { color: var(--antique-gold); }
.home-carousel__copy--dark h2 { color: var(--warm-white); }
.home-carousel__media {
  min-height: 16rem;
  max-height: min(46vh, 28rem);
}
.home-carousel__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.home-carousel__controls {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.85rem;
  padding: 0.85rem var(--gutter) 1.1rem;
  background: var(--warm-white);
}
.home-carousel__slide.is-active .home-carousel__copy--dark ~ .home-carousel__media {
  /* structural noop */
}
.home-carousel__dots {
  display: flex;
  gap: 0.45rem;
  align-items: center;
}
.home-carousel__dot {
  width: 0.55rem;
  height: 0.55rem;
  border-radius: 50%;
  border: 1px solid var(--bronze-text);
  background: transparent;
  padding: 0;
  cursor: pointer;
}
.home-carousel__dot.is-active {
  background: var(--antique-gold);
  border-color: var(--antique-gold);
}
.home-carousel__arrow {
  width: 2rem;
  height: 2rem;
  border: 1px solid var(--stone);
  background: var(--warm-white);
  color: var(--black-slate);
  font-size: 1.25rem;
  line-height: 1;
  cursor: pointer;
  border-radius: 2px;
}
.home-carousel__arrow:hover {
  border-color: var(--antique-gold);
  color: var(--bronze-text);
}
@media (min-width: 900px) {
  .home-carousel__slide.is-active {
    grid-template-columns: 1fr 1fr;
    min-height: min(72vh, 38rem);
  }
  .home-carousel__copy {
    padding: 4rem 3rem 4rem var(--content-inset);
  }
  .home-carousel__media {
    min-height: 100%;
    max-height: none;
  }
  .home-carousel__controls {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 1rem;
    background: transparent;
    pointer-events: none;
  }
  .home-carousel__controls > * { pointer-events: auto; }
}
@media (max-width: 899px) {
  .home-carousel__copy h1,
  .home-carousel__title {
    font-size: clamp(1.45rem, 6vw, 1.9rem);
    max-width: none;
  }
  .home-carousel__copy { padding: 1.75rem var(--gutter) 1rem; }
  .home-carousel__media { max-height: min(42vh, 22rem); }
}

/* Farmhouse rhythm — LAMASSU materials */
.home-carousel--quiet .home-carousel__slide {
  position: relative;
}
.home-carousel--quiet .home-carousel__slide.is-active {
  display: block;
}
.home-carousel--quiet .home-carousel__media {
  min-height: min(58vh, 32rem);
  max-height: none;
  aspect-ratio: 16 / 10;
}
.home-carousel--quiet .home-carousel__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.home-carousel--quiet .home-carousel__panel {
  position: absolute;
  left: var(--gutter);
  right: var(--gutter);
  bottom: 3.25rem;
  max-width: 28rem;
  padding: 1.25rem 1.35rem 1.35rem;
  background: rgba(252, 250, 245, 0.94);
  border: 1px solid rgba(13, 13, 15, 0.08);
  color: var(--black-slate);
}
.home-carousel--quiet .home-carousel__panel h1,
.home-carousel--quiet .home-carousel__panel .home-carousel__title {
  font-size: clamp(1.35rem, 3.2vw, 2.1rem);
  max-width: 14ch;
  margin: 0 0 0.45rem;
  color: var(--black-slate);
}
.home-carousel--quiet .home-carousel__panel p {
  font-size: 0.95rem;
  margin: 0 0 1rem;
  color: var(--text-muted);
  max-width: 36ch;
}
.home-carousel--quiet .home-carousel__panel .heat {
  color: var(--bronze-text);
  font-weight: 600;
}
.home-carousel--quiet .home-carousel__panel--dark {
  background: rgba(13, 13, 15, 0.92);
  border-color: rgba(187, 154, 87, 0.35);
  color: var(--warm-white);
}
.home-carousel--quiet .home-carousel__panel--dark h2,
.home-carousel--quiet .home-carousel__panel--dark .home-carousel__title {
  color: var(--warm-white);
}
.home-carousel--quiet .home-carousel__panel--dark p {
  color: rgba(252, 250, 245, 0.82);
}
.home-carousel--quiet .home-carousel__controls {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0.65rem;
  background: transparent;
}
@media (min-width: 900px) {
  .home-carousel--quiet .home-carousel__media {
    min-height: min(72vh, 40rem);
    aspect-ratio: auto;
    height: min(72vh, 40rem);
  }
  .home-carousel--quiet .home-carousel__panel {
    left: var(--content-inset);
    bottom: 3.5rem;
    padding: 1.5rem 1.75rem 1.65rem;
  }
}
/* Photo carousel under a page paragraph. Same dots, arrows and swipe as the home carousel, at a photo frame instead of a full-height hero. */
.home-carousel--page {
  margin: 1.25rem 0 1.75rem;
  border-bottom: 0;
}
.home-carousel--page .home-carousel__track {
  position: relative;
}
.home-carousel--page.home-carousel--quiet .home-carousel__media,
.home-carousel--page .home-carousel__media.media-frame {
  width: 100%;
  min-height: 12rem;
  max-height: min(70vh, 36rem);
  height: auto;
  aspect-ratio: 3 / 4;
}
.home-carousel--page .home-carousel__slide,
.home-carousel--page .home-carousel__slide.is-active {
  min-height: 0;
  grid-template-columns: 1fr;
}
/* Stack slides in one frame so toggling active slide never reflows the page */
.home-carousel--page .home-carousel__slide {
  display: block;
  position: absolute;
  inset: 0;
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
}
.home-carousel--page .home-carousel__slide.is-active {
  position: relative;
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
  z-index: 1;
}
.home-carousel--page .home-carousel__media picture {
  position: absolute;
  inset: 0;
  display: block;
  width: 100%;
  height: 100%;
}
.home-carousel--page.home-carousel--quiet .home-carousel__media img,
.home-carousel--page .home-carousel__media img {
  width: 100%;
  height: 100%;
  object-fit: contain;
}
.home-carousel--page.home-carousel--quiet .home-carousel__controls {
  position: relative;
  left: auto;
  right: auto;
  bottom: auto;
  background: var(--warm-white);
}
.home-carousel--page .home-carousel__arrow {
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  min-width: 44px;
  min-height: 44px;
}
@media (min-width: 900px) {
  .home-carousel--page.home-carousel--quiet .home-carousel__media.media-frame,
  .home-carousel--page .home-carousel__media.media-frame {
    min-height: 12rem;
    height: auto;
    max-height: min(70vh, 36rem);
    aspect-ratio: 3 / 4;
  }
}
@media (max-width: 899px) {
  .home-carousel--quiet .home-carousel__media {
    min-height: 16rem;
    aspect-ratio: 5 / 4;
  }
  .home-carousel--page.home-carousel--quiet .home-carousel__media.media-frame {
    min-height: 12rem;
    aspect-ratio: 3 / 4;
  }
  .home-carousel--quiet .home-carousel__panel {
    position: relative;
    left: auto;
    right: auto;
    bottom: auto;
    max-width: none;
    margin: 0;
    border-left: 0;
    border-right: 0;
  }
  .home-carousel--quiet .home-carousel__controls {
    position: relative;
    padding: 0.75rem var(--gutter) 1rem;
  }
}

.section-title--row {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 1rem;
  flex-wrap: wrap;
  text-align: left;
}
.section-title--row h2 { margin: 0; }
.merch-row {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 1rem;
  margin-top: 1.5rem;
}
@media (min-width: 700px) {
  .merch-row { grid-template-columns: repeat(3, 1fr); gap: 1.25rem; }
}
@media (min-width: 1100px) {
  .merch-row { grid-template-columns: repeat(6, 1fr); }
}
.merch-card {
  text-decoration: none !important;
  color: inherit;
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
  border: 0;
  background: transparent;
}
.merch-card__media {
  aspect-ratio: 1;
  background: #f3efe6;
  overflow: hidden;
  border: 0;
}
.merch-card__media img { object-fit: cover; width: 100%; height: 100%; }
.merch-card__cat { display: none; }
.merch-card h3 {
  font-family: var(--font-body);
  font-size: 0.78rem;
  font-weight: 600;
  letter-spacing: 0.01em;
  text-transform: none;
  margin: 0.45rem 0 0;
  line-height: 1.3;
}
.merch-card__price {
  font-size: 0.78rem;
  font-weight: 500;
  font-style: italic;
  margin: 0;
}
.merch-card__price .sample-tag { display: none; }

.collection-tiles {
  display: grid;
  gap: 1rem;
  margin-top: 1.25rem;
}
@media (min-width: 800px) {
  .collection-tiles { grid-template-columns: repeat(3, 1fr); gap: 1.25rem; }
}
.collection-tile {
  position: relative;
  display: block;
  text-decoration: none !important;
  color: var(--warm-white);
  overflow: hidden;
}
.collection-tile__media {
  aspect-ratio: 4 / 5;
  min-height: 14rem;
}
.collection-tile__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.45s ease;
}
.collection-tile:hover .collection-tile__media img { transform: scale(1.03); }
.collection-tile__label {
  position: absolute;
  left: 1rem;
  bottom: 1rem;
  font-family: var(--font-display);
  font-size: 1.35rem;
  letter-spacing: 0.04em;
  padding: 0.35rem 0.7rem;
  background: rgba(13, 13, 15, 0.72);
  color: var(--warm-white);
}

.craft-band {
  display: grid;
  gap: 1.5rem;
  align-items: center;
}
@media (min-width: 900px) {
  .craft-band { grid-template-columns: 1.2fr 1fr; gap: 2.5rem; }
}
.craft-band__copy h2 { color: var(--warm-white); margin-bottom: 0.65rem; }
.craft-band__copy p { color: rgba(252, 250, 245, 0.78); margin-bottom: 1rem; max-width: 34ch; }
.craft-band__media { max-height: 22rem; }
.craft-band__media img { width: 100%; height: 100%; object-fit: cover; }

.learn-thin {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem 1.75rem;
  justify-content: center;
  padding: 0.25rem 0;
}
.learn-thin__link {
  font-size: 0.85rem;
  font-weight: 600;
  letter-spacing: 0.03em;
  text-decoration: none !important;
  color: var(--black-slate);
  border-bottom: 1px solid rgba(13, 13, 15, 0.25);
  padding-bottom: 0.1rem;
}
.learn-thin__link:hover { color: var(--bronze-text); border-color: var(--antique-gold); }

/* Shop calm larger cards */
.product-grid {
  gap: 1.35rem;
}
@media (min-width: 700px) {
  .product-grid { gap: 1.5rem; }
}
.product-card__media {
  aspect-ratio: 1;
  background: #f3efe6;
}
.product-card__body { padding: 0.85rem 0.15rem 0.5rem; }
.product-card h3 { font-size: 0.92rem; }
.shop-hero { padding: 1.25rem 0 0.85rem; }
.shop-hero .shop-toolbar-actions { display: none; }
.catalogue-heading { margin-bottom: 1rem; }
@media (max-width: 480px) {
  .shop-toolbar-actions { display: none !important; }
}

/* PDP buy above, story below (dynamic product.html: .pdp-top; static editions: direct gallery + .pdp-buy grid) */
.section--pdp.section {
  padding-top: 1.5rem;
  padding-bottom: 3rem;
}
/* Same horizontal inset as FAQ, About, and other non-home pages (founder 2026-10-14). */
.section--pdp > .container.pdp,
#ProductPdp.container.pdp {
  padding-inline: var(--gutter);
  width: 100%;
  max-width: none;
  margin-inline: 0;
  box-sizing: border-box;
}
.pdp {
  padding-top: 1.5rem;
  padding-bottom: 3rem;
}
.section--pdp .pdp { padding-top: 0; padding-bottom: 0; }
.pdp:has(> .pdp-top) { display: block; }
.pdp-top {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1.5rem;
  align-items: start;
}
@media (min-width: 900px) {
  .pdp-top {
    grid-template-columns: 1.25fr 0.85fr;
    gap: 2.75rem;
  }
}
.pdp-gallery__main {
  aspect-ratio: 1;
  background: #f7f4ee;
}
.pdp-buy h1 {
  font-size: clamp(1.5rem, 3vw, 2.15rem);
  margin: 0.25rem 0 0.65rem;
}
.pdp-below {
  margin-top: 2.75rem;
  padding-top: 2rem;
  border-top: 1px solid var(--stone);
}
@media (min-width: 900px) {
  .pdp-top .pdp-gallery { position: sticky; top: calc(var(--header-h, 4.25rem) + 1rem); align-self: start; }
}
.pdp-price-row {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 0.35rem 0.75rem;
  margin: 0.5rem 0 0.75rem;
}
.pdp-price-row .sample-price { margin: 0; }
.pdp-price {
  margin: 0.75rem 0 1.25rem;
  font-size: 1.35rem;
  font-weight: 600;
  color: var(--black-slate);
  letter-spacing: 0.02em;
}
.pdp-price-row .pdp-price { margin: 0; }
.pz-price-note {
  font-size: 0.85rem;
  color: var(--text-secondary);
  margin: 0;
}
.pdp-below__title {
  font-size: 1.05rem;
  margin-bottom: 0.75rem;
}
.pdp-below__links {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem 1.5rem;
  margin-top: 1.25rem;
}

/* Founder: overlay carousel + filters panel */
.home-carousel--overlay .home-carousel__slide.is-active {
  display: block;
  position: relative;
}
.home-carousel--overlay .home-carousel__media {
  position: relative;
  min-height: min(62vh, 36rem);
  height: min(62vh, 36rem);
  aspect-ratio: auto;
}
.home-carousel--overlay .home-carousel__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.home-carousel--overlay .home-carousel__scrim {
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(13,13,15,0.15) 0%, rgba(13,13,15,0.25) 45%, rgba(13,13,15,0.62) 100%);
  pointer-events: none;
}
.home-carousel--overlay .home-carousel__scrim::before {
  content: "";
  position: absolute;
  inset: 0 0 auto 0;
  height: 42%;
  pointer-events: none;
  background: linear-gradient(180deg, rgba(13,13,15,0.52) 0%, rgba(13,13,15,0.22) 55%, transparent 100%);
}
.home-carousel--overlay .home-carousel__caption {
  position: absolute;
  left: var(--gutter);
  right: var(--gutter);
  bottom: 3.4rem;
  max-width: 26rem;
  z-index: 2;
  background: transparent;
  border: 0;
  padding: 0;
  color: #FCFAF5;
}
.home-carousel--overlay .home-carousel__caption h1,
.home-carousel--overlay .home-carousel__caption .home-carousel__title {
  color: #FCFAF5;
  font-size: clamp(1.5rem, 3.5vw, 2.35rem);
  max-width: 14ch;
  margin: 0 0 0.4rem;
  text-shadow: 0 1px 2px rgba(0,0,0,0.55), 0 2px 18px rgba(0,0,0,0.35);
}
.home-carousel--overlay .home-carousel__caption p {
  color: rgba(252,250,245,0.92);
  font-size: 0.95rem;
  margin: 0 0 1rem;
  max-width: 34ch;
  text-shadow: 0 1px 2px rgba(0,0,0,0.55);
}
.home-carousel--overlay .home-carousel__panel { display: none; } /* legacy */
@media (min-width: 900px) {
  .home-carousel--overlay .home-carousel__caption {
    left: var(--gutter);
    bottom: 3.75rem;
  }
  .home-carousel--overlay .home-carousel__media {
    min-height: min(74vh, 42rem);
    height: min(74vh, 42rem);
  }
}
@media (max-width: 768px) {
  .home-carousel--overlay .home-carousel__media,
  .home-carousel--quiet.home-carousel--overlay .home-carousel__media {
    min-height: 66vh !important;
    height: 66vh !important;
    max-height: 72vh;
    aspect-ratio: auto !important;
  }
  .home-carousel--overlay .home-carousel__caption {
    bottom: 2.4rem;
    max-width: 90%;
  }
  .home-carousel--overlay .home-carousel__caption h1,
  .home-carousel--overlay .home-carousel__caption .home-carousel__title {
    font-size: clamp(1.15rem, 5vw, 1.45rem);
  }
  .home-carousel--overlay .home-carousel__caption p {
    font-size: 0.82rem;
    margin-bottom: 0.65rem;
  }
}
@media (min-width: 769px) and (max-width: 899px) {
  .home-carousel--overlay .home-carousel__media {
    min-height: min(48vh, 26rem);
    height: min(48vh, 26rem);
    aspect-ratio: auto;
  }
  .home-carousel--overlay .home-carousel__caption {
    bottom: 2.75rem;
  }
}

.shop-toolbar {
  align-items: center;
}
.shop-filters-toggle {
  flex: 0 0 auto;
  white-space: nowrap;
}
.shop-filters-panel {
  margin-top: 0.85rem;
  padding: 1rem 1.1rem 1.15rem;
  background: var(--warm-white);
  border: 1px solid var(--stone);
}
.shop-filters-panel[hidden] { display: none !important; }
.shop-filters-panel__inner {
  display: grid;
  gap: 1.25rem;
}
@media (min-width: 800px) {
  .shop-filters-panel__inner { grid-template-columns: 1.2fr 1fr; gap: 2rem; }
}
.shop-filters-panel__block h3 {
  font-family: var(--font-body);
  font-size: 0.72rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  margin: 0 0 0.65rem;
  display: flex;
  align-items: center;
  gap: 0.4rem;
}
.shop-filters-panel .shop-filters {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
}
.shop-filters-panel .shop-filters button {
  padding: 0.4rem 0.7rem;
  font-size: 0.7rem;
}
.shop-price-range-label {
  font-size: 0.95rem;
  font-weight: 600;
  margin: 0 0 0.65rem;
}
.shop-price-hint {
  font-size: 0.72rem;
  color: var(--text-muted);
  margin: 0.5rem 0 0;
}
.shop-price-slider {
  position: relative;
  height: 2rem;
  display: flex;
  align-items: center;
}
.shop-price-slider input[type="range"] {
  position: absolute;
  left: 0;
  width: 100%;
  pointer-events: none;
  appearance: none;
  background: transparent;
  height: 2rem;
  margin: 0;
}
.shop-price-slider input[type="range"]::-webkit-slider-thumb {
  pointer-events: auto;
  appearance: none;
  width: 1rem;
  height: 1rem;
  border-radius: 50%;
  background: var(--antique-gold);
  border: 1px solid var(--obsidian);
  cursor: pointer;
  position: relative;
  z-index: 2;
}
.shop-price-slider input[type="range"]::-moz-range-thumb {
  pointer-events: auto;
  width: 1rem;
  height: 1rem;
  border-radius: 50%;
  background: var(--antique-gold);
  border: 1px solid var(--obsidian);
  cursor: pointer;
}
.shop-price-slider input[type="range"]::-webkit-slider-runnable-track {
  height: 3px;
  background: var(--stone);
}
.shop-price-slider input[type="range"]::-moz-range-track {
  height: 3px;
  background: var(--stone);
}

/* Shop filters drawer */
.shop-toolbar {
  display: flex;
  align-items: center;
  gap: 0.65rem;
}
.shop-toolbar .shop-filters-toggle {
  flex: 0 0 auto;
  order: 0;
}
.shop-toolbar .shop-search {
  flex: 1 1 auto;
  min-width: 0;
}
.shop-filters-backdrop {
  position: fixed;
  inset: 0;
  background: rgba(13, 13, 15, 0.45);
  z-index: 80;
}
.shop-filters-backdrop[hidden] { display: none !important; }
.shop-filters-drawer {
  position: fixed;
  top: 0;
  left: 0;
  bottom: 0;
  width: min(22rem, 92vw);
  background: var(--warm-white);
  z-index: 90;
  box-shadow: 4px 0 24px rgba(0,0,0,0.18);
  display: flex;
  flex-direction: column;
  transform: translateX(-105%);
  transition: transform 0.22s ease;
}
.shop-filters-drawer.is-open {
  transform: translateX(0);
}
.shop-filters-drawer[hidden] { display: none !important; }
.shop-filters-drawer.is-open[hidden] { display: flex !important; }
/* when open we remove hidden — keep both patterns safe */
.shop-filters-drawer:not([hidden]) { display: flex; }
.shop-filters-drawer__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
  padding: 0.85rem 1rem;
  border-bottom: 1px solid var(--stone);
}
.shop-filters-drawer__head h2 {
  font-family: var(--font-body);
  font-size: 0.8rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  margin: 0;
}
.shop-filters-close {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  width: auto;
  padding: 0.35rem 0.5rem;
}
.shop-filters-close__label {
  font-size: 0.7rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  font-weight: 600;
}
.shop-filters-drawer__body {
  padding: 1.1rem 1rem 1.5rem;
  overflow: auto;
  display: grid;
  gap: 1.5rem;
}
body.shop-filters-open { overflow: hidden; }

/* Shop filters expand-under panel */
.shop-toolbar {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 0;
  margin-top: 1.25rem;
}
.shop-search-row {
  display: flex;
  flex-direction: row;
  flex-wrap: nowrap;
  align-items: center;
  gap: 0.5rem;
  width: 100%;
}
.shop-search-row .shop-filters-toggle {
  flex: 0 0 auto;
  width: 2.75rem;
  height: 2.75rem;
  order: 0;
}
.shop-search-row .shop-search {
  display: flex;
  flex-direction: row;
  flex-wrap: nowrap;
  align-items: center;
  gap: 0.5rem;
  flex: 1 1 auto;
  min-width: 0;
  max-width: none;
  margin: 0;
}
.shop-search-row .shop-search input[type="search"] {
  flex: 1 1 auto;
  min-width: 0;
  min-height: 2.75rem;
}
.shop-search-row .shop-search .btn {
  flex: 0 0 auto;
  white-space: nowrap;
}
.shop-filters-panel {
  display: block;
  width: 100%;
  margin-top: 0.85rem;
  padding: 0.85rem 1rem 1.15rem;
  background: var(--warm-white);
  border: 1px solid var(--stone);
  position: static;
  transform: none;
  box-shadow: none;
}
.shop-filters-panel[hidden] { display: none !important; }
.shop-filters-panel__head {
  display: flex;
  justify-content: flex-end;
  margin-bottom: 0.85rem;
}
.shop-filters-hide {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  background: transparent;
  border: 0;
  padding: 0.25rem 0.15rem;
  font-family: inherit;
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--bronze-text);
  cursor: pointer;
}
.shop-filters-panel__grid {
  display: grid;
  gap: 1.5rem;
}
@media (min-width: 800px) {
  .shop-filters-panel__grid { grid-template-columns: 1fr 1fr; gap: 2rem; }
}
.shop-cat-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 0.45rem;
}
.shop-cat-list label,
.shop-price-radios label {
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;
  font-size: 0.9rem;
  cursor: pointer;
  text-align: left;
}
.shop-price-radios {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 0.45rem;
}
.shop-clear-cats {
  margin-top: 0.75rem;
  background: transparent;
  border: 0;
  padding: 0;
  font-family: inherit;
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-decoration: underline;
  color: var(--bronze-text);
  cursor: pointer;
}
/* Disable leftover drawer overlay behavior */
.shop-filters-drawer,
.shop-filters-backdrop { display: none !important; }
body.shop-filters-open { overflow: auto; }

/* Product cards farmhouse rhythm 2026-09-09 */
.product-card,
.merch-card {
  border: 0 !important;
  box-shadow: none !important;
  background: transparent !important;
  outline: none;
}
.product-card__media,
.product-card__media.media-frame,
.merch-card__media,
.merch-card__media.media-frame {
  aspect-ratio: 1 / 1 !important;
  border: 0 !important;
  background: #f3efe6 !important;
}
.product-card__media img,
.merch-card__media img {
  width: 100% !important;
  height: 100% !important;
  object-fit: cover !important;
  object-position: center !important;
}
.product-card__body {
  padding: 0.7rem 0 0.25rem !important;
}
.product-card h3,
.merch-card h3 {
  font-family: var(--font-body) !important;
  font-size: 0.8rem !important;
  font-weight: 600 !important;
  text-transform: none !important;
  letter-spacing: 0.01em !important;
}
.product-card__price,
.merch-card__price {
  font-style: italic !important;
  font-weight: 500 !important;
}
.product-card__cat,
.merch-card__cat,
.product-card__price .sample-tag,
.merch-card__price .sample-tag {
  display: none !important;
}
.product-grid {
  gap: 1.5rem 1.25rem;
}
@media (min-width: 700px) {
  .product-grid { gap: 1.75rem 1.5rem; }
}
@media (max-width: 699px) {
  .product-card h3,
  .merch-card h3 { font-size: 0.72rem !important; }
}


/* Featured split carousel 2026-09-09 */
.featured-split {
  display: grid;
  grid-template-columns: 1fr;
  background: var(--warm-white, #f7f4ee);
  border: 0;
}
.featured-split__theme {
  position: relative;
  min-height: 18rem;
  overflow: hidden;
}
.featured-split__theme-media {
  position: absolute;
  inset: 0;
  aspect-ratio: auto;
  height: 100%;
  width: 100%;
  border: 0;
}
.featured-split__theme-media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
}
.featured-split__theme-scrim {
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(13,13,15,0.45) 0%, rgba(13,13,15,0.2) 45%, rgba(13,13,15,0.55) 100%);
  pointer-events: none;
}
.featured-split__theme-copy {
  position: relative;
  z-index: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  min-height: 18rem;
  padding: 2.5rem 1.5rem;
  color: #fff;
}
.featured-split__eyebrow {
  margin: 0 0 0.65rem;
  font-family: var(--font-body);
  font-size: 0.68rem;
  font-weight: 600;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: rgba(255,255,255,0.9);
}
.featured-split__theme-copy h2 {
  margin: 0 0 1rem;
  font-family: var(--font-display);
  font-size: clamp(1.75rem, 4vw, 2.6rem);
  font-weight: 500;
  letter-spacing: 0.04em;
  color: #fff;
  text-transform: none;
}
.featured-split__theme-link {
  color: #fff;
  font-size: 0.85rem;
  text-decoration: underline;
  text-underline-offset: 0.2em;
}
.featured-split__theme-link:hover { opacity: 0.85; }

.featured-split__rail {
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: 1.75rem 0 1.5rem;
  background: var(--warm-white, #f7f4ee);
  min-width: 0;
  overflow: hidden;
}
.featured-split__viewport {
  overflow: hidden;
  max-width: 100%;
  padding: 0 0 0 1.25rem;
}
.featured-split__track {
  display: flex;
  gap: 1rem;
  position: relative;
  transition: transform 0.45s ease;
}
.featured-split__track.is-instant { transition: none !important; }
.featured-card {
  flex: 0 0 78%;
  max-width: 22rem;
  text-decoration: none !important;
  color: inherit;
  text-align: center;
  border: 0;
  background: transparent;
}
.featured-card__media {
  width: 100%;
  aspect-ratio: 1 / 1 !important;
  background: #f3efe6;
  border: 0 !important;
  overflow: hidden;
  margin: 0 auto;
  height: auto !important;
  max-height: none;
}
.featured-card__media img {
  width: 100% !important;
  height: 100% !important;
  object-fit: cover !important;
  object-position: center !important;
}
.featured-card h3 {
  font-family: var(--font-body);
  font-size: 0.82rem;
  font-weight: 600;
  letter-spacing: 0.01em;
  text-transform: none;
  margin: 0.85rem 0 0.25rem;
  line-height: 1.35;
  color: var(--black-slate);
}
.featured-card__price {
  margin: 0;
  font-size: 0.8rem;
  font-weight: 500;
  font-style: italic;
  color: var(--black-slate);
}

.featured-split__controls {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.85rem;
  margin-top: 1.25rem;
  padding: 0 1rem;
}
.featured-split__arrow {
  appearance: none;
  border: 0;
  background: transparent;
  color: var(--black-slate);
  font-size: 1.35rem;
  line-height: 1;
  cursor: pointer;
  padding: 0.35rem 0.5rem;
}
.featured-split__arrow:hover { color: var(--antique-gold); }
.featured-split__dots {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 0.35rem;
  max-width: 14rem;
}
.featured-split__dot {
  width: 0.4rem;
  height: 0.4rem;
  border-radius: 50%;
  border: 0;
  padding: 0;
  background: #c9c2b4;
  cursor: pointer;
}
.featured-split__dot.is-active {
  background: var(--black-slate);
}

@media (min-width: 900px) {
  body.page-home .featured-split {
    margin-top: 3.5rem;
  }
  .featured-split {
    grid-template-columns: 1fr 1fr;
    min-height: min(72vh, 40rem);
    column-gap: 2rem;
  }
  .featured-split__theme {
    min-height: 100%;
  }
  .featured-split__theme-copy {
    min-height: 100%;
    padding: 3rem 2.5rem;
    align-items: flex-start;
    text-align: left;
  }
  .featured-split__rail {
    margin: 1.5rem 1.5rem 1.5rem 0;
    padding: 1.25rem 1rem 1rem;
    box-sizing: border-box;
  }
  .featured-split__viewport {
    padding-left: 0;
    padding-inline: 0.75rem;
  }
  .featured-card {
    flex-basis: 62%;
    max-width: 15.5rem;
  }
  .featured-card h3 { font-size: 0.9rem; }
}

@media (max-width: 899px) {
  .featured-split__theme {
    min-height: 16rem;
  }
  .featured-split__theme-copy {
    min-height: 16rem;
  }
}


/* Header overlay + lapis dots 2026-09-09 */
body.page-home .site-header {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  width: 100%;
  z-index: 100;
  transition: background 0.25s ease, border-color 0.25s ease, box-shadow 0.25s ease;
}
body.page-home .site-header.is-over-hero {
  background: transparent;
  border-bottom-color: transparent;
  box-shadow: none;
}
body.page-home .site-header.is-solid {
  background: var(--warm-white);
  border-bottom: 1px solid var(--stone);
}
body.page-home .site-logo__hero {
  display: none !important;
  height: 48px;
  width: auto;
  mix-blend-mode: normal !important;
}
body.page-home .site-logo__solid {
  display: block !important;
  height: 48px;
  width: auto;
}
body.page-home .site-header.is-over-hero .site-logo__solid { display: none !important; }
body.page-home .site-header.is-over-hero .site-logo__hero {
  display: block !important;
  mix-blend-mode: normal !important;
}
body.page-home .site-header.is-over-hero .site-nav a,
body.page-home .site-header.is-over-hero .icon-btn,
body.page-home .site-header.is-over-hero .cart-count {
  color: #fff;
}
body.page-home .site-header.is-over-hero .site-nav a:hover {
  color: rgba(255,255,255,0.85);
}
body.page-home .site-header.is-solid .site-nav a,
body.page-home .site-header.is-solid .icon-btn {
  color: var(--black-slate);
}
body.page-home .site-header.is-solid .cart-count { color: var(--text-muted); }
body.page-home .site-header.is-solid .site-logo__hero { display: none !important; }
body.page-home .site-header.is-solid .site-logo__solid { display: block !important; }

/* Top-⅓ subtle fade while scrolling over hero */
.home-carousel--overlay .home-carousel__top-fade {
  position: absolute;
  inset: 0 0 auto 0;
  height: 38%;
  z-index: 1;
  pointer-events: none;
  background: linear-gradient(180deg, rgba(13,13,15,0.5) 0%, rgba(13,13,15,0.22) 50%, transparent 100%);
  opacity: 1;
  transition: opacity 0.3s ease;
}
body.page-home.is-hero-fading .home-carousel--overlay .home-carousel__slide.is-active .home-carousel__top-fade {
  opacity: 1;
}
body.page-home .site-header.is-solid ~ main .home-carousel--overlay .home-carousel__top-fade {
  opacity: 0;
}

/* Dots — lapis; hero arrows hidden; peek carousels show arrows on desktop only */
.home-carousel__arrow { display: none !important; }
@media (max-width: 899px) {
  .featured-split__arrow,
  .collection-carousel__arrow { display: none !important; }
}
.home-carousel__dots,
.featured-split__dots {
  gap: 0.45rem;
}
.home-carousel__dot,
.featured-split__dot {
  background: color-mix(in srgb, var(--lapis) 35%, white);
  opacity: 1;
}
.home-carousel__dot.is-active,
.featured-split__dot.is-active {
  background: var(--lapis);
}
/* Overlay controls sit on image — keep dots readable */
.home-carousel--overlay .home-carousel__controls {
  background: transparent;
}
.home-carousel--overlay .home-carousel__dot {
  background: color-mix(in srgb, var(--lapis) 45%, white);
  box-shadow: 0 0 0 1px rgba(13,13,15,0.15);
}
.home-carousel--overlay .home-carousel__dot.is-active {
  background: var(--lapis);
}

@media (max-width: 699px) {
  body.page-home .site-logo__hero,
  body.page-home .site-logo__solid { height: 36px; }
}

.featured-split__controls { justify-content: center; }
.home-carousel__controls { justify-content: center; gap: 0; }

body.page-home .site-header.is-over-hero .site-logo img {
  mix-blend-mode: normal !important;
}




.site-logo img {
  mix-blend-mode: normal !important;
}


/* Logo aspect + gold mark 2026-09-10 */
.site-logo {
  flex-shrink: 0;
  min-width: 0;
}
.site-logo img {
  height: 28px !important;
  width: auto !important;
  max-width: none !important; /* don't squash wide logotype via global img max-width */
  max-height: none !important;
  object-fit: contain !important;
  mix-blend-mode: normal !important;
  flex-shrink: 0;
}
body.page-home .site-header.is-over-hero .site-logo img[data-logo-home] {
  height: 18px !important; /* −30% of ~26px; aspect via width:auto */
  width: auto !important;
  max-width: none !important;
  object-fit: contain !important;
}
body.page-home .site-header.is-solid .site-logo img[data-logo-home] {
  height: 28px !important;
  width: auto !important;
  max-width: none !important;
  object-fit: contain !important;
}
@media (min-width: 900px) {
  body.page-home .site-header.is-over-hero .site-logo img[data-logo-home] { height: 26px !important; }
  body.page-home .site-header.is-solid .site-logo img[data-logo-home] { height: 32px !important; }
  .site-logo img { height: 32px !important; }
}


/* Collections carousel 2026-09-10 */
.collection-carousel { margin-top: 1.25rem; }
.collection-carousel .collection-tiles { margin-top: 0; }
.collection-carousel__viewport {
  overflow: hidden;
  max-width: 100%;
}
.collection-carousel__controls {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.85rem;
  margin-top: 1rem;
}
.collection-carousel__arrow {
  appearance: none;
  border: 0;
  background: transparent;
  color: var(--black-slate);
  font-size: 1.35rem;
  line-height: 1;
  cursor: pointer;
  padding: 0.35rem 0.5rem;
}
.collection-carousel__arrow:hover { color: var(--antique-gold); }
.collection-carousel__dots {
  display: none;
  align-items: center;
  justify-content: center;
  gap: 0.45rem;
}
.collection-carousel__dot {
  width: 0.4rem;
  height: 0.4rem;
  border-radius: 50%;
  border: 0;
  padding: 0;
  background: color-mix(in srgb, var(--lapis) 35%, white);
  cursor: pointer;
}
.collection-carousel__dot.is-active { background: var(--lapis); }

.collection-carousel .collection-tiles {
  display: flex;
  gap: 0.85rem;
  position: relative;
  transition: transform 0.4s ease;
}
.collection-carousel .collection-tiles.is-instant { transition: none !important; }
.collection-carousel .collection-tile {
  flex: 0 0 88%;
  max-width: 22rem;
}
@media (min-width: 900px) {
  .collection-carousel--static .collection-carousel__controls,
  .collection-carousel__controls {
    display: none;
  }
  .collection-carousel--static .collection-carousel__viewport,
  .collection-carousel__viewport {
    overflow: visible;
  }
  .collection-carousel--static .collection-tiles,
  .collection-carousel .collection-tiles {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 1rem;
    transform: none !important;
    transition: none;
  }
  .collection-carousel--static .collection-tile,
  .collection-carousel .collection-tile {
    flex: none;
    max-width: none;
  }
}
@media (max-width: 799px) {
  .collection-carousel__dots { display: flex; }
  .collection-carousel .collection-tile__media {
    min-height: 16rem;
  }
}
@media (min-width: 800px) {
  /* One primary tile + peek (like Featured); arrows have room to advance. */
  .collection-carousel .collection-tile {
    flex: 0 0 42%;
    max-width: 26rem;
  }
  .collection-carousel__dots { display: none !important; }
}

/* Mobile over-hero logotype: −30% of prior ~26px → 18px */
@media (max-width: 768px) {
  body.page-home .site-header.is-over-hero .site-logo img[data-logo-home] {
    height: 18px !important;
  }
}

/* Featured subtitle 2026-09-11 */
.featured-split__subtitle {
  margin: 0.35rem 0 0.85rem;
  font-family: var(--font-body);
  font-size: 0.95rem;
  font-weight: 400;
  letter-spacing: 0.02em;
  color: rgba(255,255,255,0.9);
  text-transform: none;
}

/* How to Play instructional manual */
.how-to-play {
  max-width: 46rem;
}
.how-to-play h1 {
  margin-bottom: 1.5rem;
}
.how-to-play .auth-block h3 {
  font-family: var(--font-body, "Montserrat", system-ui, sans-serif);
  font-size: 0.95rem;
  font-weight: 600;
  letter-spacing: 0.02em;
  text-transform: none;
  margin: 1.25rem 0 0.5rem;
  color: var(--obsidian, #0D0D0F);
}
.how-to-play__list {
  margin: 0.75rem 0 1rem;
  padding-left: 1.25rem;
}
.how-to-play__list li {
  margin-bottom: 0.45rem;
  line-height: 1.55;
}
.how-to-play__list ul {
  margin-top: 0.4rem;
  margin-bottom: 0.25rem;
}
.how-to-play__diagram {
  margin: 1.5rem 0 0.5rem;
  padding: 0;
  max-width: 100%;
}
.how-to-play__diagram-img {
  display: block;
  width: 100%;
  height: auto;
  border: 1px solid var(--stone, #c9c0b4);
  background: #2a1f16;
}
.how-to-play__diagram-caption {
  margin: 0.65rem 0 0;
  font-size: 0.85rem;
  line-height: 1.45;
  color: var(--bronze-text, #6b5344);
}
/* legacy dashed callout (removed from markup; keep harmless if referenced) */
.how-to-play__diagram-callout {
  margin: 1.25rem 0 0.25rem;
  padding: 1rem 1.1rem;
  border: 1px dashed var(--stone, #c9c0b4);
  background: var(--warm-ivory, #F7F3EB);
}
.how-to-play__diagram-callout p {
  margin: 0;
}
.how-to-play__diagram-note {
  margin-top: 0.4rem !important;
  font-size: 0.82rem;
  color: var(--bronze-text, #6b5344);
}
.how-to-play__footer-links {
  margin-top: 2rem;
  flex-wrap: wrap;
}

/* About page v3.1 */
.about-page {
  max-width: none;
}
.about-page h1 {
  margin-bottom: 1.25rem;
}
.about-page__lede p {
  font-size: 1.05rem;
  line-height: 1.65;
}
.about-page__categories {
  margin: 1.25rem 0 1.5rem;
}
.about-page__categories > div {
  margin-bottom: 1rem;
}
.about-page__categories dt {
  font-family: var(--font-display, "Cinzel", serif);
  font-size: 0.95rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  margin-bottom: 0.25rem;
}
.about-page__categories dd {
  margin: 0;
  line-height: 1.55;
}
.about-page__next {
  list-style: none;
  margin: 0.75rem 0 0;
  padding: 0;
}
.about-page__next li {
  margin-bottom: 0.65rem;
  line-height: 1.5;
}

/* Noto Sans Cuneiform — scoped to 𒀸 bullet marks only (not page body) */
@font-face {
  font-family: "Noto Sans Cuneiform";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("fonts/NotoSansCuneiform-subset.woff2") format("woff2"); /* round 7b: subset to the glyph the pages use (was the 1.4 MB full TTF, kept in image-masters/) */
  unicode-range: U+12038; /* re-run scripts/optimise-images.py and widen this if another cuneiform sign is added to a page */
}
.cuneiform-bullet {
  display: inline-block;
  margin-right: 0.4em;
  font-family: "Noto Sans Cuneiform", "Noto Sans", sans-serif !important;
  font-weight: 400;
  font-style: normal;
  font-size: 1.2em;
  line-height: 1;
  color: var(--bronze-text, #6b5344);
  font-feature-settings: normal;
  font-variant-emoji: text;
}
.about-page__categories dd {
  padding-left: 0.15rem;
}

/* Home header logo swap 2026-09-28: logotype + icon are two preloaded images at fixed sizes.
   The old single-image src swap let the new size apply before the icon file (1.5 MB) had
   loaded, so the logotype was drawn at the icon's 28px height for a moment (the "flash").
   Now each image keeps its own size in every state; only opacity changes. */
body.page-home .site-logo--swap { position: relative; }
body.page-home .site-header.is-over-hero .site-logo--swap img[data-logo-hero],
body.page-home .site-header.is-solid .site-logo--swap img[data-logo-hero] { height: 18px !important; }
body.page-home .site-header.is-over-hero .site-logo--swap img[data-logo-solid],
body.page-home .site-header.is-solid .site-logo--swap img[data-logo-solid] { height: 28px !important; }
@media (min-width: 900px) {
  body.page-home .site-header.is-over-hero .site-logo--swap img[data-logo-hero],
  body.page-home .site-header.is-solid .site-logo--swap img[data-logo-hero] { height: 26px !important; }
  body.page-home .site-header.is-over-hero .site-logo--swap img[data-logo-solid],
  body.page-home .site-header.is-solid .site-logo--swap img[data-logo-solid] { height: 32px !important; }
}
/* inactive image: stacked at the same spot, out of layout, invisible */
body.page-home .site-header.is-over-hero .site-logo--swap img[data-logo-solid],
body.page-home .site-header.is-solid .site-logo--swap img[data-logo-hero] {
  position: absolute;
  left: 0;
  top: 50%;
  transform: translateY(-50%);
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
}
/* phones (portrait + landscape): short opacity crossfade; desktop swaps instantly as before */
@media (max-width: 899px), (orientation: landscape) and (max-height: 500px) {
  body.page-home .site-logo--swap img {
    transition: opacity 0.2s ease, visibility 0s linear 0s;
  }
  body.page-home .site-header.is-over-hero .site-logo--swap img[data-logo-solid],
  body.page-home .site-header.is-solid .site-logo--swap img[data-logo-hero] {
    transition: opacity 0.2s ease, visibility 0s linear 0.2s;
  }
}
@media (prefers-reduced-motion: reduce) {
  body.page-home .site-logo--swap img { transition: none !important; }
}

/* Phone landscape (short viewport) 2026-09-28: smaller logotype + slimmer bar, and the hero
   caption starts below the bar. The caption keeps its bottom anchoring; the hero only grows
   when the caption would otherwise run up under the header. */
@media (orientation: landscape) and (max-height: 500px) {
  body.page-home .site-header__inner { min-height: 44px; }
  /* caption sits close under the bar here: the outgoing logotype hides at once (icon still fades in) */
  body.page-home .site-header.is-solid .site-logo--swap img[data-logo-hero] { transition: none; }
  body.page-home .site-header.is-over-hero .site-logo--swap img[data-logo-hero],
  body.page-home .site-header.is-solid .site-logo--swap img[data-logo-hero] { height: 14px !important; }
  body.page-home .home-carousel--overlay .home-carousel__slide.is-active {
    display: flex;
    flex-direction: column;
    justify-content: flex-end;
    min-height: min(74vh, 42rem);
  }
  body.page-home .home-carousel--overlay .home-carousel__media,
  body.page-home .home-carousel--quiet.home-carousel--overlay .home-carousel__media {
    position: absolute !important;
    inset: 0;
    height: auto !important;
    min-height: 0 !important;
    max-height: none !important;
  }
  body.page-home .home-carousel--overlay .home-carousel__caption {
    position: relative;
    left: auto;
    right: auto;
    bottom: auto;
    align-self: flex-start;
    margin: 0 var(--gutter) 3.75rem;
    padding-top: calc(44px + 0.75rem);
  }
}
@media (orientation: landscape) and (max-height: 500px) and (max-width: 899px) {
  body.page-home .home-carousel--overlay .home-carousel__slide.is-active { min-height: min(48vh, 26rem); }
  body.page-home .home-carousel--overlay .home-carousel__caption { margin-bottom: 2.75rem; }
}
@media (orientation: landscape) and (max-height: 500px) and (max-width: 768px) {
  body.page-home .home-carousel--overlay .home-carousel__slide.is-active { min-height: 66vh; }
  body.page-home .home-carousel--overlay .home-carousel__caption { margin-bottom: 2.4rem; }
}
@media (orientation: landscape) and (max-height: 500px) and (min-width: 900px) {
  body.page-home .home-carousel--overlay .home-carousel__caption {
    margin-left: var(--gutter);
  }
}

/* Founder round 3 (2026-09-28) ---------------------------------------------------------------- */

/* Home hero: compact captions; each ends with an inline CTA link (buttons removed). The CTA's
   ::after stretches over the whole caption, so the caption is one tap target to that slide's page. */
.home-carousel--overlay .home-carousel__caption { max-width: 34rem; }
.home-carousel--overlay .home-carousel__caption h1,
.home-carousel--overlay .home-carousel__caption .home-carousel__title {
  font-size: clamp(1.45rem, 2.6vw, 2.1rem);
  line-height: 1.15;
  max-width: 22ch;
  text-wrap: balance;
}
.home-carousel--overlay .home-carousel__caption p {
  margin: 0;
  max-width: 44ch;
  line-height: 1.45;
}
.home-carousel__cta {
  color: #FCFAF5;
  font-weight: 600;
  white-space: nowrap;
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 0.22em;
}
.home-carousel__cta::after { content: ""; position: absolute; inset: 0; }
.home-carousel__cta:hover,
.home-carousel__cta:focus-visible { color: #FCFAF5; text-decoration-thickness: 2px; }
.home-carousel__cta:focus-visible { outline: none; }
.home-carousel__cta:focus-visible::after { outline: 2px solid #FCFAF5; outline-offset: 6px; }
@media (max-width: 768px) {
  .home-carousel--overlay .home-carousel__caption { max-width: none; }
  .home-carousel--overlay .home-carousel__caption h1,
  .home-carousel--overlay .home-carousel__caption .home-carousel__title {
    font-size: clamp(1.05rem, 4.6vw, 1.25rem);
    max-width: 24ch;
    margin-bottom: 0.3rem;
  }
  .home-carousel--overlay .home-carousel__caption p { font-size: 0.8rem; max-width: 40ch; margin: 0; }
}
@media (orientation: landscape) and (max-height: 500px) {
  body.page-home .home-carousel--overlay .home-carousel__caption { max-width: 32rem; }
  .home-carousel--overlay .home-carousel__caption h1,
  .home-carousel--overlay .home-carousel__caption .home-carousel__title {
    font-size: 1.15rem;
    max-width: none;
    margin-bottom: 0.25rem;
  }
  .home-carousel--overlay .home-carousel__caption p { font-size: 0.8rem; max-width: 52ch; margin: 0; }
}

/* Collections carousel: clip at the viewport, not on the moving track (see comment in theme.js). */
.collection-carousel__viewport { touch-action: pan-y pinch-zoom; } /* JS owns sideways swipes */
.collection-carousel { max-width: 100%; }
.collection-carousel .collection-tiles { min-width: 0; }
.featured-split__viewport { touch-action: pan-y pinch-zoom; }
.home-carousel--overlay .home-carousel__viewport { touch-action: pan-y pinch-zoom; }

/* How to Play: enlargeable route diagram + lightbox (native <dialog>, built by theme.js) */
.how-to-play__diagram-zoom {
  display: block;
  position: relative;
  cursor: zoom-in;
  text-decoration: none;
  border: 0;
}
.how-to-play__diagram-zoom:focus-visible { outline: 2px solid var(--lapis, #1F3A8A); outline-offset: 3px; }
.how-to-play__diagram-zoom-icon {
  position: absolute;
  right: 0.6rem;
  bottom: 0.6rem;
  width: 2.25rem;
  height: 2.25rem;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(13, 13, 15, 0.72);
  color: #FCFAF5;
  pointer-events: none;
}
.how-to-play__diagram-zoom-icon svg { width: 1.2rem; height: 1.2rem; }
html.has-lightbox,
html.has-lightbox body { overflow: hidden; }
.lightbox {
  position: fixed;
  inset: 0;
  width: 100%;
  height: 100%;
  max-width: none;
  max-height: none;
  margin: 0;
  padding: 0;
  border: 0;
  background: rgba(13, 13, 15, 0.97);
  color: #FCFAF5;
  overflow: hidden;
}
.lightbox::backdrop { background: rgba(13, 13, 15, 0.6); }
.lightbox__stage {
  box-sizing: border-box;
  width: 100%;
  height: 100%;
  padding: 3.5rem 0.75rem 1rem;
  overflow: auto;
  overscroll-behavior: contain;
  display: flex;
  align-items: center;
  justify-content: center;
}
.lightbox__img {
  display: block;
  max-width: 100%;
  max-height: 100%;
  width: auto;
  height: auto;
  cursor: zoom-in;
}
.lightbox.is-zoomed .lightbox__stage { display: block; }
.lightbox.is-zoomed .lightbox__img { max-width: none; max-height: none; width: max(1500px, 200%); cursor: zoom-out; }
.lightbox__close {
  position: absolute;
  top: 0.5rem;
  right: 0.5rem;
  z-index: 1;
  width: 44px;
  height: 44px;
  padding: 0;
  border-radius: 50%;
  border: 1px solid rgba(252, 250, 245, 0.55);
  background: rgba(13, 13, 15, 0.7);
  color: #FCFAF5;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
}
.lightbox__close svg { width: 22px; height: 22px; }
.lightbox__close:focus-visible { outline: 2px solid var(--antique-gold, #B08D57); outline-offset: 2px; }

/* Founder round 5 (2026-09-29): PDP quantity +/- buttons and the quantity-limit message. */
.qty-row--atc { gap: 0.5rem; flex-wrap: nowrap; }
.qty-row--atc label { flex: 0 0 auto; }
.qty-row--atc input { width: 3.25rem; min-width: 0; padding: 0; font-size: 16px; -moz-appearance: textfield; appearance: textfield; }
.qty-row--atc input::-webkit-outer-spin-button, .qty-row--atc input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.qty-row--atc .qty-row__atc { flex: 1 1 6rem; min-width: 0; padding-left: 0.75rem; padding-right: 0.75rem; }
.qty-step {
  flex: 0 0 auto;
  width: 44px; min-width: 44px; height: 44px; min-height: 44px;
  display: inline-flex; align-items: center; justify-content: center;
  border: 1px solid var(--sand); background: var(--warm-ivory, #f6f1e7); color: var(--black-slate);
  font-size: 1.25rem; line-height: 1; font-weight: 600; cursor: pointer; padding: 0;
  touch-action: manipulation;
}
.qty-step:hover { background: var(--stone); }
.qty-msg { margin: -0.25rem 0 0.75rem; font-size: 0.82rem; line-height: 1.4; color: var(--bronze-text); }
.qty-msg[hidden] { display: none; }
.qty-msg a { color: inherit; text-decoration: underline; text-underline-offset: 2px; }
.cart-line__qty + .qty-msg { grid-column: 1 / -1; margin: 0.4rem 0 0; }
@media (max-width: 899px) {
  .pdp-sticky-atc { flex-wrap: wrap; }
  .pdp-sticky-atc .qty-msg { flex: 0 0 100%; order: -1; margin: 0; font-size: 0.78rem; }
}

/* Founder round 5 (2026-09-29): header search panel. It overlays the page just under the header (absolute inside the sticky/fixed
   header), so opening it never moves the layout or the scroll position. Font size 16px stops iOS zooming into the field. */
.search-panel {
  position: absolute; top: 100%; left: 0; right: 0; z-index: 2;
  background: var(--warm-white); color: var(--black-slate);
  border-bottom: 1px solid var(--stone); box-shadow: 0 10px 24px rgba(13, 13, 15, 0.12);
  padding: 0.6rem var(--gutter);
}
.search-panel[hidden] { display: none; }
.search-panel__form { display: flex; align-items: center; gap: 0.5rem; max-width: 42rem; margin: 0 auto; }
.search-panel__input {
  flex: 1 1 auto; min-width: 0; min-height: 44px; padding: 0 0.75rem; font-size: 16px;
  border: 1px solid var(--sand); background: #fff; color: var(--black-slate); border-radius: 0;
}
.search-panel__go { flex: 0 0 auto; min-height: 44px; }
.search-panel__close {
  flex: 0 0 auto; width: 44px; height: 44px; display: inline-flex; align-items: center; justify-content: center;
  border: 0; background: transparent; color: var(--black-slate); cursor: pointer; padding: 0;
}
.search-panel__close svg { width: 22px; height: 22px; }
@media (max-width: 380px) { .search-panel__go { padding-left: 0.75rem; padding-right: 0.75rem; } }

/* Founder round 5 (2026-09-29): homepage cards are filled from Square data (assets/home-data.js); neutral skeleton until then. */
.home-skel { color: var(--text-muted); }
.featured-card__price.home-skel { min-height: 1.1em; min-width: 3.5rem; background: #ece6d8; display: inline-block; border-radius: 2px; animation: home-skel-pulse 1.4s ease-in-out infinite; }
.featured-card__media:empty, .collection-tile__media:empty { background: #ece6d8; animation: home-skel-pulse 1.4s ease-in-out infinite; }
@keyframes home-skel-pulse { 0%, 100% { background-color: #ece6d8; } 50% { background-color: #f3ecdf; } }
@media (prefers-reduced-motion: reduce) { .featured-card__price.home-skel, .featured-card__media:empty, .collection-tile__media:empty { animation: none; } }
.featured-card__desc { margin: 0 0 0.35rem; font-size: 0.74rem; line-height: 1.4; color: var(--text-muted); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.featured-card__desc[hidden] { display: none; }


/* ===== Round 7b (2026-09-29) ===== */
/* Self-hosted typefaces (Cinzel + Montserrat, variable woff2, SIL Open Font License; downloaded from Google Fonts, no request goes to Google). */
@font-face { font-family: "Cinzel"; font-style: normal; font-weight: 400 900; font-display: swap; src: url("fonts/cinzel-latin-ext-var.woff2") format("woff2"); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: "Cinzel"; font-style: normal; font-weight: 400 900; font-display: swap; src: url("fonts/cinzel-latin-var.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+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: "Montserrat"; font-style: normal; font-weight: 100 900; font-display: swap; src: url("fonts/montserrat-cyrillic-ext-var.woff2") format("woff2"); unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; }
@font-face { font-family: "Montserrat"; font-style: normal; font-weight: 100 900; font-display: swap; src: url("fonts/montserrat-cyrillic-var.woff2") format("woff2"); unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; }
@font-face { font-family: "Montserrat"; font-style: normal; font-weight: 100 900; font-display: swap; src: url("fonts/montserrat-vietnamese-var.woff2") format("woff2"); unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; }
@font-face { font-family: "Montserrat"; font-style: normal; font-weight: 100 900; font-display: swap; src: url("fonts/montserrat-latin-ext-var.woff2") format("woff2"); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: "Montserrat"; font-style: normal; font-weight: 100 900; font-display: swap; src: url("fonts/montserrat-latin-var.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+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }

/* Responsive <picture> wrapper: layout-neutral, the <img> keeps behaving as the direct child of its frame. */
picture.rimg { display: contents; }

/* Footer legal links (Privacy, Terms, Returns, Shipping, Cookies) */
.footer-legal { display: flex; flex-wrap: wrap; justify-content: center; gap: 0.35rem 1.25rem; margin: 0 0 1rem; padding-top: 0.25rem; }
.footer-legal a { font-size: 0.78rem; letter-spacing: 0.04em; padding: 0.4rem 0.1rem; min-height: 2.25rem; display: inline-flex; align-items: center; }
@media (min-width: 800px) { .footer-legal { justify-content: flex-start; } }

/* Legal pages: DRAFT banner + readable long-form layout */
.draft-banner {
  border: 2px solid var(--ancient-gold); background: #FFF6DC; color: #4a3610;
  padding: 0.85rem 1rem; margin: 0 0 1.75rem; font-size: 0.9rem; line-height: 1.45; font-weight: 600;
}
.draft-banner strong { display: block; font-family: var(--font-body); font-size: 0.8rem; letter-spacing: 0.14em; text-transform: uppercase; color: #6b4a0f; margin-bottom: 0.15rem; }
.draft-banner span { font-weight: 500; }
.legal-page { max-width: none; }
.legal-page h1 { font-size: clamp(1.5rem, 5vw, 2.1rem); margin-bottom: 0.4rem; }
.legal-page h2 { font-size: clamp(1.05rem, 3.4vw, 1.3rem); margin: 2rem 0 0.6rem; padding-top: 0.25rem; }
.legal-page h3 { font-size: 0.95rem; margin: 1.25rem 0 0.4rem; }
.legal-page p, .legal-page li { font-size: 1rem; line-height: 1.65; }
.legal-page ul { padding-left: 1.2rem; margin: 0 0 1rem; }
.legal-page li { margin-bottom: 0.35rem; color: var(--text-secondary); overflow-wrap: anywhere; }
.legal-meta { font-size: 0.85rem; color: var(--text-muted); margin: 0 0 1.25rem; }
.legal-toc { background: var(--warm-ivory); border-left: 2px solid var(--sand); padding: 0.75rem 1rem; margin: 0 0 1.5rem; }
.legal-toc ol { margin: 0; padding-left: 1.2rem; }
.legal-toc a { display: inline-block; padding: 0.2rem 0; }
.confirm-ph { background: #FFF6DC; border: 1px dashed var(--ancient-gold); padding: 0 0.3rem; color: #4a3610; font-weight: 600; font-size: 0.92em; overflow-wrap: anywhere; }
.legal-table { width: 100%; border-collapse: collapse; margin: 0 0 1rem; font-size: 0.92rem; display: block; overflow-x: auto; }
.legal-table th, .legal-table td { text-align: left; vertical-align: top; padding: 0.5rem 0.6rem; border-bottom: 1px solid var(--stone); }
.legal-table th { font-weight: 600; color: var(--black-slate); white-space: nowrap; }

/* 404 page */
.error-page { text-align: center; padding: 3.5rem 0 4rem; }
.error-page__code { font-family: var(--font-display); font-size: clamp(3.5rem, 18vw, 6rem); line-height: 1; color: var(--antique-gold); margin: 0 0 0.5rem; letter-spacing: 0.08em; }
.error-page h1 { font-size: clamp(1.4rem, 5vw, 2rem); }
.error-page .btn-row { justify-content: center; margin-top: 1.5rem; }
@media (max-height: 460px) { .error-page { padding: 1.5rem 0 2rem; } .error-page__code { font-size: 3rem; } }

/* Wave 3 (Mobile Buyer, 2026-10-06) */
/* Product page description: the STAND-IN badge on its own line in the page flow (the base badge is a photo overlay). */
.stand-in-badge--inline,
.pdp-below .stand-in-badge { position: static; left: auto; bottom: auto; z-index: auto; display: inline-block; }
.pdp-below__stand-in { margin: 0 0 0.5rem; line-height: 1; }
/* Add to cart in the quantity row: one line of text. When the row is too narrow it moves to its own full-width row
   under Qty instead of wrapping its words (tap target stays at least 2.75rem / 44px tall). Wide screens are unchanged. */
.qty-row--atc { flex-wrap: wrap; }
.qty-row--atc .qty-row__atc { white-space: nowrap; min-width: max-content; min-height: 2.75rem; }
/* Heritage / Royal price slot: empty until the Square price loads; it keeps one line of height so nothing jumps. */
.sq-price-slot:empty::before { content: "\00a0"; }
/* Cart page on phones: less empty space between the page title and the first item. */
@media (max-width: 699px) {
  .section--cart { padding-top: 1rem; }
  .cart-layout--cart { padding-top: 0; }
}

/* Add to cart preview drawer + button state (2026-10-06) */
@media (hover: none) { .btn--primary:hover { background: var(--black-slate); } } /* touch: no sticky lighter "hover" colour after a tap */
.btn.is-added { background: var(--black-slate); color: var(--warm-white); border-color: var(--black-slate); cursor: default; }
.cart-count.is-bumped { display: inline-block; animation: cart-bump 0.5s ease-out; }
@keyframes cart-bump { 0% { transform: scale(1); } 35% { transform: scale(1.45); color: var(--antique-gold, #b08a3e); } 100% { transform: scale(1); } }
html.cart-drawer-open, html.cart-drawer-open body { overflow: hidden; }
.cart-drawer { position: fixed; inset: 0; z-index: 1000; }
.cart-drawer[hidden] { display: none; }
.cart-drawer__backdrop { position: absolute; inset: 0; background: rgba(13,13,15,0.45); opacity: 0; transition: opacity 0.2s ease; }
.cart-drawer__panel { position: absolute; top: 0; right: 0; bottom: 0; width: min(24rem, 100%); background: var(--warm-white, #fff); color: var(--black-slate);
  padding: 1.25rem 1.25rem 1.5rem; box-shadow: -8px 0 24px rgba(0,0,0,0.18); overflow-y: auto; overscroll-behavior: contain;
  transform: translateX(100%); transition: transform 0.22s ease; display: flex; flex-direction: column; gap: 1rem; }
.cart-drawer.is-open .cart-drawer__backdrop { opacity: 1; }
.cart-drawer.is-open .cart-drawer__panel { transform: none; }
.cart-drawer__panel:focus { outline: none; }
.cart-drawer__head { display: flex; align-items: center; justify-content: space-between; gap: 0.75rem; }
.cart-drawer__title { font-size: 1.05rem; margin: 0; letter-spacing: 0.04em; }
.cart-drawer__close { width: 2.75rem; height: 2.75rem; border: 1px solid var(--stone); background: transparent; font-size: 1.5rem; line-height: 1; cursor: pointer; color: inherit; }
.cart-drawer__item { display: grid; grid-template-columns: 5rem 1fr; gap: 0.85rem; align-items: center; padding: 0.75rem 0; border-top: 1px solid var(--stone); border-bottom: 1px solid var(--stone); }
.cart-drawer__media { aspect-ratio: 1; background: var(--stone); overflow: hidden; }
.cart-drawer__media img { width: 100%; height: 100%; object-fit: cover; }
.cart-drawer__name { font-family: var(--font-display); font-size: 0.95rem; margin: 0 0 0.25rem; }
.cart-drawer__meta { font-size: 0.82rem; color: var(--text-muted); margin: 0; }
.cart-drawer__sum { display: flex; justify-content: space-between; align-items: baseline; font-size: 0.95rem; }
.cart-drawer__count { color: var(--text-muted); font-size: 0.82rem; }
.cart-drawer__actions { display: grid; grid-template-columns: 1fr 1fr; gap: 0.6rem; }
.cart-drawer__actions .btn { justify-content: center; min-height: 2.75rem; }
@media (max-width: 599px) { /* phone: bottom sheet, full width */
  .cart-drawer__panel { top: auto; left: 0; right: 0; width: 100%; max-height: 85vh; padding-bottom: calc(1.5rem + env(safe-area-inset-bottom, 0px));
    box-shadow: 0 -8px 24px rgba(0,0,0,0.18); transform: translateY(100%); }
}
@media (prefers-reduced-motion: reduce) {
  .cart-drawer__backdrop, .cart-drawer__panel { transition: none; }
  .cart-count.is-bumped { animation: none; text-decoration: underline; }
}
.cart-line__qty button[disabled] { opacity: 0.4; cursor: not-allowed; }

/* Sticky Add to cart bar: the product name uses the full width and wraps. Price, options, then the button. */
.pdp-sticky-atc__name { margin: 0; width: 100%; font-size: 0.85rem; font-weight: 600; line-height: 1.3; color: var(--black-slate); white-space: normal; overflow: visible; overflow-wrap: anywhere; }
.pdp-sticky-atc__var { font-weight: 400; color: var(--text-muted); }
.pdp-sticky-atc__var[hidden] { display: none; }
@media (max-width: 899px) {
  .pdp-sticky-atc__meta { flex: 1 1 auto; min-width: 0; width: 100%; }
  .pdp-sticky-atc .btn { flex: 0 0 auto; white-space: nowrap; width: 100%; min-width: 0; }
}


/* Bulk orders page: product picker (2026-10-07) */
.bulk-picker { border: 1px solid var(--stone); padding: 0.9rem; margin: 0.5rem 0; display: grid; gap: 0.5rem; min-width: 0; }
.bulk-picker[hidden] { display: none; }
.bulk-picker legend { font-size: 0.8rem; font-weight: 600; letter-spacing: 0.04em; padding: 0 0.3rem; }
.bulk-combo { position: relative; }
.bulk-combo input { width: 100%; }
.bulk-combo__list { position: absolute; z-index: 20; left: 0; right: 0; top: calc(100% + 2px); margin: 0; padding: 0.25rem 0; list-style: none; background: var(--warm-white, #fff);
  border: 1px solid var(--stone); box-shadow: 0 8px 20px rgba(13,13,15,0.12); max-height: 16rem; overflow-y: auto; overscroll-behavior: contain; }
.bulk-combo__list[hidden] { display: none; }
.bulk-combo__list [role="option"] { padding: 0.65rem 0.8rem; cursor: pointer; font-size: 0.9rem; line-height: 1.35; }
.bulk-combo__list [role="option"]:hover, .bulk-combo__list [role="option"].is-active { background: var(--black-slate); color: var(--warm-white); }
.bulk-combo__none { padding: 0.65rem 0.8rem; font-size: 0.85rem; color: var(--text-muted); }
.bulk-hint, .bulk-empty { margin: 0; font-size: 0.8rem; color: var(--text-muted); }
.bulk-empty[hidden] { display: none; }
.bulk-lines { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.5rem; }
.bulk-line { display: grid; grid-template-columns: 1fr auto auto; gap: 0.4rem 0.6rem; align-items: end; padding: 0.6rem 0; border-top: 1px solid var(--stone); }
.bulk-line__name { grid-column: 1 / -1; font-weight: 600; font-size: 0.9rem; overflow-wrap: anywhere; }
.bulk-line label { display: grid; gap: 0.2rem; font-size: 0.75rem; min-width: 0; }
.bulk-line__opt select { min-width: 0; width: 100%; }
.bulk-line__qty input { width: 6.5rem; }
.bulk-line__remove { min-height: 2.75rem; padding: 0 0.8rem; background: transparent; border: 1px solid var(--stone); cursor: pointer; font: inherit; font-size: 0.8rem; color: inherit; }
.bulk-line:not(:has(.bulk-line__opt)) .bulk-line__qty { grid-column: 1; }
@media (max-width: 480px) { .bulk-line { grid-template-columns: 1fr auto; } .bulk-line__opt { grid-column: 1 / -1; } .bulk-line:not(:has(.bulk-line__opt)) .bulk-line__qty { grid-column: 1; } }

/* Personalization (2026-10-07): Noto Sans Syriac (Estrangela), Syriac Eastern, Syriac Western; SIL OFL 1.1, self-hosted subsets
   (assets/fonts/syriac-*.woff2, licence assets/fonts/OFL-noto-sans-syriac.txt). Syriac range only, so Latin text keeps Montserrat. */
@font-face { font-family: "LamassuSyriacEstrangela"; font-style: normal; font-weight: 400; font-display: swap; src: url("fonts/syriac-estrangela.woff2") format("woff2"); unicode-range: U+0640, U+064B-0655, U+0670, U+0700-074F, U+0860-086F, U+200C-200D, U+25CC; }
@font-face { font-family: "LamassuSyriacEastern"; font-style: normal; font-weight: 400; font-display: swap; src: url("fonts/syriac-eastern.woff2") format("woff2"); unicode-range: U+0640, U+064B-0655, U+0670, U+0700-074F, U+0860-086F, U+200C-200D, U+25CC; }
@font-face { font-family: "LamassuSyriacWestern"; font-style: normal; font-weight: 400; font-display: swap; src: url("fonts/syriac-western.woff2") format("woff2"); unicode-range: U+0640, U+064B-0655, U+0670, U+0700-074F, U+0860-086F, U+200C-200D, U+25CC; }
.pz-font--estrangelo { font-family: "LamassuSyriacEstrangela", "Montserrat", system-ui, sans-serif; }
.pz-font--east { font-family: "LamassuSyriacEastern", "Montserrat", system-ui, sans-serif; }
.pz-font--west { font-family: "LamassuSyriacWestern", "Montserrat", system-ui, sans-serif; }
.pz { display: grid; gap: 0.35rem; margin: 0.75rem 0 1rem; padding: 0.9rem; border: 1px solid var(--stone); background: var(--warm-white); min-width: 0; }
.pz__label { font-size: 0.8rem; font-weight: 600; letter-spacing: 0.04em; }
.pz__text { width: 100%; min-height: 2.75rem; padding: 0.6rem 0.8rem; border: 1px solid var(--sand); background: #fff; color: var(--black-slate); font-size: 1.1rem; unicode-bidi: plaintext; }
.pz__text[aria-invalid="true"] { border-color: #9b1c1c; }
.pz__count, .pz__help { margin: 0; font-size: 0.78rem; color: var(--text-muted); }
.pz__error { margin: 0; font-size: 0.82rem; color: #9b1c1c; }
.pz__error[hidden] { display: none; }
.pz__fonts { border: 0; padding: 0; margin: 0.35rem 0 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0.4rem; min-width: 0; }
.pz__fonts legend { font-size: 0.8rem; font-weight: 600; letter-spacing: 0.04em; margin-bottom: 0.3rem; padding: 0; }
.pz__font { position: relative; display: grid; justify-items: center; gap: 0.15rem; padding: 0.5rem 0.25rem; border: 1px solid var(--stone); cursor: pointer; text-align: center; min-height: 2.75rem; }
.pz__font input { position: absolute; opacity: 0; inset: 0; margin: 0; cursor: pointer; }
.pz__font:has(input:checked) { border-color: var(--black-slate); box-shadow: inset 0 0 0 1px var(--black-slate); }
.pz__font:has(input:focus-visible) { outline: 2px solid var(--antique-gold, #b08a3e); outline-offset: 2px; }
.pz__font-sample { font-size: 1.35rem; line-height: 1.2; }
.pz__font-name { font-size: 0.72rem; color: var(--text-muted); }
.ns-cart-detail { margin: 0.35rem 0 0; padding: 0; list-style: none; font-size: 0.82rem; line-height: 1.45; color: var(--text-muted); }
.ns-cart-detail li { margin: 0; }
.pz-line { margin: 0.15rem 0 0; font-size: 0.82rem; color: var(--text-muted); overflow-wrap: anywhere; }
.pz-line__text { color: var(--black-slate); font-size: 1rem; unicode-bidi: isolate; }

/* Personalization: on-screen Sureth keyboard toggle + theme (2026-10-07). Keyboard CSS: assets/vendor/sureth-keyboard.css (Ashour Rehana). */
.pz__row { display: flex; align-items: center; justify-content: space-between; gap: 0.5rem; flex-wrap: wrap; min-width: 0; }
.pz__kbd-toggle { display: inline-flex; align-items: center; gap: 0.35rem; min-height: 2.75rem; padding: 0.35rem 0.75rem; border: 1px solid var(--sand); background: #fff; color: var(--black-slate); font: inherit; font-size: 0.8rem; font-weight: 600; letter-spacing: 0.03em; cursor: pointer; }
.pz__kbd-toggle[hidden] { display: none; }
.pz__kbd-toggle[aria-pressed="true"] { background: var(--black-slate); border-color: var(--black-slate); color: #fff; }
.pz__kbd-toggle:focus-visible { outline: 2px solid var(--antique-gold, #b08a3e); outline-offset: 2px; }
.pz__kbd-icon { font-size: 1.1rem; line-height: 1; }
.pz__keyboard-slot { min-width: 0; }
.pz__keyboard-slot[hidden] { display: none; }
.pz .sk-keyboard { --sk-font: "LamassuSyriacEastern", "Noto Sans Syriac Eastern", sans-serif; --sk-bg: var(--stone, #ece6dc); --sk-key: #fff; --sk-key-text: var(--black-slate, #1c1b1f);
  --sk-border: var(--sand, rgba(0,0,0,.15)); --sk-vowel: #f3ead8; --sk-special: #efe7da; --sk-pressed: rgba(176,138,62,.3); --sk-radius: 4px; max-width: 100%; margin: 0.25rem 0 0; padding: 6px; border-radius: 4px; }
.pz .sk-keyboard .sk-key { font-weight: 400; } /* the self-hosted Eastern subset has the regular weight only */
.pz .sk-keyboard .sk-key:focus-visible { outline: 2px solid var(--antique-gold, #b08a3e); }

/* Multi-line personalization (2026-10-07): the text keeps its line breaks in the cart, drawer, checkout and order page (text is escaped / textContent). */
.pz-line__text { white-space: pre-line; }
.pz-line .pz-line__text { display: inline-block; vertical-align: top; }
textarea.pz__text { min-height: 5.5rem; resize: vertical; line-height: 1.5; font-size: 1.1rem; }

/* Homepage heroes (2026-10-07): keep the product in view. Main: the Lamassu light sits right of centre in the full frame (phones get
   their own crop, centred on it). Game of Ur: the board in the middle of the portrait frame / the landscape crop. */
.hero-pic--main img { object-position: 85% 50%; }
.hero-pic--ur img { object-position: 50% 52%; }
.hero-pic--sign img { object-position: 50% 50%; }
@media (max-width: 699px) { .hero-pic--main img { object-position: 50% 50%; } }
@media (min-width: 900px) { .hero-pic--ur img { object-position: 50% 30%; } }
.name-translator { max-width: 40rem; }
.name-translator h2 { margin-bottom: 0.5rem; }
.name-translator__form { display: flex; flex-wrap: wrap; gap: 0.75rem; align-items: end; margin: 1.25rem 0; }
.name-translator__form label { flex: 1 1 100%; font-size: 0.85rem; }
.name-translator__form input { flex: 1 1 14rem; min-height: 44px; padding: 0.5rem 0.75rem; border: 1px solid var(--line, #d9d1c3); background: #fff; font: inherit; }
.name-translator__sureth { font-family: "LamassuSyriacEastern", "LamassuSyriacEstrangela", sans-serif; font-size: 2rem; line-height: 1.4; margin: 0.5rem 0; }
.name-translator__note { margin: 0.25rem 0 0.75rem; }
.name-translator__picks { display: flex; flex-wrap: wrap; gap: 0.5rem; margin: 0 0 1rem; }
.name-translator__picks button { min-height: 44px; font-family: "LamassuSyriacEastern", "LamassuSyriacEstrangela", sans-serif; font-size: 1.25rem; }
.name-translator__makes { list-style: none; margin: 0.5rem 0 0; padding: 0; }
.name-translator__makes li { margin: 0.4rem 0; }
.name-translator__soon { display: inline-block; margin-left: 0.4rem; font-size: 0.75rem; letter-spacing: 0.04em; text-transform: uppercase; color: var(--bronze-text, #8a6a3b); }

/* Personalization font label on its own line (2026-10-07 cosmetic fix): with multi-line text it wrapped beside the text in the
   cart drawer at 390 ("(East" / "Syriac)"). Same markup in the drawer, cart page, checkout and order page. */
.pz-line .pz-line__font { display: block; margin-top: 0.1rem; }
/* 2026-10-08 (B-084): personalization charge, on its own line in the drawer / cart / checkout / order page; the PDP note next to the box */
.pz-line .pz-line__charge { display: block; margin-top: 0.1rem; font-weight: 600; }
.pz__price { margin: 0.15rem 0 0.35rem; font-size: 0.8rem; font-weight: 600; color: var(--text-secondary); }
.pz__price--free { font-weight: 500; }
.pz-price-note { margin: 0.15rem 0 0; font-size: 0.8rem; color: var(--text-secondary); }

/* Square environment (2026-10-07, server/site.js). STAGING-ONLY banner naming the active Square environment (never served on
   lamassu.ca / www.lamassu.ca). In production the SANDBOX TEST labels are hidden (STAGING banner aside, they are STAND-IN markers). */
.env-banner { position: relative; z-index: 60; padding: 0.35rem var(--gutter, 1rem); font-size: 0.72rem; font-weight: 600; letter-spacing: 0.08em; text-align: center; text-transform: uppercase; line-height: 1.35; }
.env-banner strong { font-weight: 800; letter-spacing: 0.12em; }
.env-banner--sandbox { background: #1f5f3a; color: #fff; }
.env-banner--production { background: #a3121b; color: #fff; }
/* 2026-10-08 (queued fix): the home page header is fixed and transparent over the hero, so the banner at the top of the page sat under
   the logo at 390. On the home page only, the banner is a fixed strip at the bottom of the screen instead (the page gets room for it). */
body.page-home > .env-banner { position: fixed; left: 0; right: 0; bottom: 0; z-index: 150; box-shadow: 0 -1px 4px rgba(0, 0, 0, 0.2); }
body.page-home:has(> .env-banner) { padding-bottom: 3rem; }
html[data-square-env="production"] .sq-test-flag,
html[data-square-env="production"] .sample-tag,
html[data-square-env="production"] .sample-banner { display: none !important; } /* 2026-10-08 checkout build (review H1): the SAMPLE CATALOGUE banner and every sandbox / test-card line are staging-only */

/* 2026-10-08 (B-083): live personalization preview on the real product photo (assets/pz-preview.js). The photo is an SVG <image>;
   the zones and the text are drawn on top. Fits a 390px phone (the SVG scales to the box width). */
.pz__overlay-slot { margin-top: 0.75rem; }
.pzp__title { font-size: 0.8rem; font-weight: 600; letter-spacing: 0.04em; margin: 0 0 0.35rem; }
.pzp__figure { border: 1px solid rgba(60, 40, 20, 0.15); border-radius: 6px; overflow: hidden; background: #f3ece1; max-width: 100%; }
.pzp__svg { display: block; width: 100%; height: auto; }
.pzp__stand { fill: #f7f1e6; stroke: rgba(60, 40, 20, 0.45); stroke-width: 2; }
.pzp__zone { fill: none; stroke: rgba(60, 40, 20, 0.35); stroke-width: 1.5; stroke-dasharray: 6 5; }
.pzp__zone--over { stroke: #b3261e; stroke-width: 2.5; stroke-dasharray: none; }
.pzp__text { fill: #3a2414; fill-opacity: 0.92; }
.pzp__text--over { fill: #8a1c16; }
.pzp__probe { visibility: hidden; }
.pzp__desc { font-size: 0.75rem; color: #6b5a44; margin: 0.35rem 0 0; }
.pzp__warn { font-size: 0.8rem; color: #8a1c16; margin: 0.4rem 0 0; }

/* 2026-10-08 Cross with Inscription v2: Latin serif for English rows in the preview (Merriweather Bold, Google Fonts latin subset, unmodified,
   SIL OFL 1.1, fonts/OFL-merriweather.txt). Closest match found to the serif on Ramen's real engraved piece. */
@font-face { font-family: "LamassuLatinSerif"; font-style: normal; font-weight: 100 900; font-display: swap; src: url("fonts/merriweather-latin-700.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+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
/* Sections UI (presets vs 'Write my own', Section 1 / Section 2) */
.pz__choice { border: 0; padding: 0; margin: 0 0 0.25rem; display: grid; gap: 0.4rem; min-width: 0; }
.pz__choice legend { margin-bottom: 0.3rem; padding: 0; }
.pz__choice-opt { position: relative; display: flex; align-items: center; justify-content: space-between; gap: 0.6rem; min-height: 2.75rem; padding: 0.5rem 0.75rem; border: 1px solid var(--stone); background: #fff; cursor: pointer; }
.pz__choice-opt input { position: absolute; opacity: 0; inset: 0; margin: 0; cursor: pointer; }
.pz__choice-opt:has(input:checked) {
  border-color: var(--black-slate);
  background: var(--black-slate);
  color: var(--warm-white);
  box-shadow: none;
}
.pz__choice-opt:has(input:checked) .pz__choice-name { color: var(--warm-white); }
.pz__choice-opt:has(input:checked) .pz__choice-price { color: rgba(252, 250, 245, 0.82); }
.pz__choice-opt:has(input:focus-visible) { outline: 2px solid var(--antique-gold, #b08a3e); outline-offset: 2px; }
.pz__choice-name { font-size: 0.9rem; font-weight: 600; }
.pz__choice-price { font-size: 0.82rem; color: var(--text-secondary); white-space: nowrap; }
.pz__custom-note { margin: 0; font-size: 0.8rem; color: var(--text-secondary); }
.pz__custom-note[hidden] { display: none; }
.pz__section { display: grid; gap: 0.35rem; padding-top: 0.6rem; border-top: 1px solid var(--stone); min-width: 0; }
textarea.pz__text--section { min-height: 6rem; } /* 2 rows of long English wrap on phones */
.pz-line--sections { display: grid; gap: 0.1rem; }
.pz-line--sections p { margin: 0; }
.pz-line__section { display: block; }
/* Engraving proof preview page (proof.html, 2026-10-08) */
.proof { max-width: 46rem; }
.proof .pz--proof { border: 0; padding: 0; background: none; max-width: 100%; }
.proof .pz--proof .pz__overlay-slot { width: 100%; max-width: 28rem; margin-inline: auto; }
.proof .pz--proof .pzp__figure { width: 100%; }
.proof__label { font-size: 0.85rem; letter-spacing: 0.04em; margin: 1rem 0 0.25rem; }
.proof__rows { white-space: pre-line; font-size: 1.15rem; margin: 0; }

/* 2026-10-08 (Cross v3, Ramen): more engraving fonts, ONE font drop-down per text box, the preview only for 'Write my own', and the
   'See engraving preview' jump link. Fonts: Idiqlat (SIL Global) and Lato / Bitter Bold, SIL OFL 1.1, Google Fonts files unmodified,
   licences next to them (fonts/OFL-*.txt). See website-docs/personalization/font-licences-2026-10-08.md. */
@font-face { font-family: "LamassuSyriacIdiqlat"; font-style: normal; font-weight: 400; font-display: swap; src: url("fonts/idiqlat-syriac-400.woff2") format("woff2"); unicode-range: U+0303-0304, U+0307-0308, U+030A, U+0320, U+0323-0325, U+032D-032E, U+0330-0331, U+060C, U+061B-061C, U+061F, U+0621, U+0640, U+064B-0655, U+0660-066C, U+0670, U+0700-074F, U+0860-086A, U+1DF8, U+1DFA, U+200C-200F, U+25CC, U+2670-2671; }
@font-face { font-family: "LamassuLatinLato"; font-style: normal; font-weight: 700; font-display: swap; src: url("fonts/lato-latin-700.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+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: "LamassuLatinBitter"; font-style: normal; font-weight: 700; font-display: swap; src: url("fonts/bitter-latin-700.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+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
/* Meltho Estrangelo Nisibin (2026-11-02). visual_height_scale 1.660851 — mean ink vs Idiqlat (meltho-visual-height-scale.mjs). Staging before this had no size-adjust on Meltho. */
@font-face { font-family: "LamassuMelthoNisibin"; font-style: normal; font-weight: 400; font-display: swap; size-adjust: 166.085%; ascent-override: 143.14%; descent-override: 171.144%; src: url("fonts/SyrCOMNisibin.otf") format("opentype"); unicode-range: U+0640, U+064B-0655, U+0670, U+0700-074F, U+0860-086F, U+200C-200D, U+25CC; }
/* Meltho East Syriac Adiabene. visual_height_scale 1.633811 (same measurement; ~1.6% mean ink vs Nisibin). */
@font-face { font-family: "LamassuMelthoAdiabene"; font-style: normal; font-weight: 400; font-display: swap; size-adjust: 163.381%; ascent-override: 143.14%; descent-override: 155.113%; src: url("fonts/SyrCOMAdiabene.otf") format("opentype"); unicode-range: U+0640, U+064B-0655, U+0670, U+0700-074F, U+0860-086F, U+200C-200D, U+25CC; }
.pz-font--idiqlat { font-family: "LamassuSyriacIdiqlat", "Montserrat", system-ui, sans-serif; }
.pz-font--adiabene { font-family: "LamassuMelthoAdiabene", "Montserrat", system-ui, sans-serif; }
.pz-font--nisibin { font-family: "LamassuMelthoNisibin", "Montserrat", system-ui, sans-serif; }
.ns-price-note, .ns-proof, .ns-size-note { margin: 0.65rem 0 0; line-height: 1.45; }
.ns-proof { margin-top: 0.85rem; }
.qty-row__atc:disabled, .pdp-sticky-atc .btn:disabled { opacity: 0.45; }
/* English fonts: Bold (the only weight served), then the Syriac fallback for Sureth typed with an English font. */
.pz-font--merriweather { font-family: "LamassuLatinSerif", "LamassuSyriacEstrangela", Georgia, serif; font-weight: 700; }
.pz-font--lato { font-family: "LamassuLatinLato", "LamassuSyriacEstrangela", system-ui, sans-serif; font-weight: 700; }
.pz-font--bitter { font-family: "LamassuLatinBitter", "LamassuSyriacEstrangela", Georgia, serif; font-weight: 700; }

/* Font drop-down: a native select (works with keyboards, screen readers and phone pickers). */
.pz__font-field { display: grid; gap: 0.25rem; margin: 0.35rem 0 0; min-width: 0; }
.pz__font-label { font-size: 0.8rem; font-weight: 600; letter-spacing: 0.04em; }
.pz__font-select { width: 100%; max-width: 22rem; min-height: 2.75rem; padding: 0.45rem 0.75rem; border: 1px solid var(--sand); border-radius: 0; background-color: #fff; color: var(--black-slate); font-size: 1rem; }
.pz__font-select:focus-visible { outline: 2px solid var(--antique-gold, #b08a3e); outline-offset: 2px; }
.pz__font-select optgroup { font-family: "Montserrat", system-ui, sans-serif; font-weight: 600; font-style: normal; }
/* Where the browser lets a page style the list (Chrome's customizable select), each option renders in its own font; Syriac options get a
   decorative sample word (assets/product-page.js enhanceFontSelects). Everywhere else this block is ignored and the native list shows. */
@supports (appearance: base-select) {
  .pz__font-select, .pz__font-select::picker(select) { appearance: base-select; }
  .pz__font-select { display: flex; align-items: center; justify-content: space-between; gap: 0.5rem; cursor: pointer; }
  .pz__font-select::picker-icon { color: var(--text-muted); }
  .pz__font-select::picker(select) { border: 1px solid var(--sand); background: #fff; padding: 0.25rem 0; box-shadow: 0 8px 24px rgba(28, 27, 31, 0.15); }
  .pz__font-select optgroup { padding: 0.15rem 0; }
  .pz__font-select optgroup::label, .pz__font-select legend { display: block; padding: 0.35rem 0.75rem 0.15rem; font-size: 0.72rem; letter-spacing: 0.06em; text-transform: uppercase; color: var(--text-muted); }
  .pz__font-select option { display: flex; align-items: center; justify-content: flex-start; gap: 0.6rem; min-height: 2.75rem; padding: 0.35rem 0.75rem; font-size: 1.05rem; text-align: left; }
  .pz__font-select option .pz__opt-sample { margin-left: auto; }
  .pz__font-button { display: flex; align-items: center; flex: 1; min-width: 0; padding: 0; border: 0; background: none; font: inherit; color: inherit; text-align: left; }
  .pz__font-select selectedcontent .pz__opt-sample { display: none; }
  .pz__font-select option:checked { background: var(--stone, #ece6dc); }
  .pz__font-select option:focus-visible { outline: 2px solid var(--antique-gold, #b08a3e); outline-offset: -2px; }
  .pz__opt-sample { font-size: 1.25rem; line-height: 1; }
}
.pz__script-hint { margin: 0.2rem 0 0; font-size: 0.8rem; color: #7a4a10; }
.pz__script-hint[hidden] { display: none; }

/* 'Write my own' only: the preview and its jump link (product-page.js sets data-pz-preview on the box). */
.pz--sections[data-pz-preview="off"] .pz__overlay-slot, .pz--sections[data-pz-preview="off"] .pz__jump-row { display: none !important; }
.pz__jump-row { margin: 0.25rem 0 0; }
.pz__jump { display: inline-flex; align-items: center; min-height: 2.75rem; font-size: 0.9rem; font-weight: 600; color: var(--black-slate); text-decoration: underline; text-underline-offset: 3px; }
.pz__jump::after { content: "\2193"; margin-left: 0.35rem; text-decoration: none; }
.pz__jump:focus-visible { outline: 2px solid var(--antique-gold, #b08a3e); outline-offset: 2px; }
.pz__overlay-slot { scroll-margin: 5rem 0 2rem; }
.pz__overlay-slot:focus { outline: 2px solid var(--antique-gold, #b08a3e); outline-offset: 4px; }

/* ---- Cross with Inscription v4 (2026-10-08, Ramen): preset = choice only; 'Write my own' = live preview, then the two sections
   directly under the photo, each with a compact font drop-down, count and Sureth keyboard (product-page.js sectionsHtmlV4). ---- */
.pz__custom[hidden] { display: none !important; }
.pz--v4 .pz__overlay-slot { margin-top: 0.5rem; }
.pz--v4 .pz__help { margin: 0.4rem 0 0; }
.pz__section--v4 { margin-top: 0.85rem; padding-top: 0.75rem; border-top: 1px solid var(--sand); }
.pz__section--v4 .pz__label { margin-bottom: 0; }
.pz__limits { margin: 0 0 0.3rem; font-size: 0.78rem; color: var(--text-muted); }
textarea.pz__text--v4 { min-height: 5.25rem; font-size: 1.1rem; } /* 17.6 px: at least 16 px so iOS does not zoom on focus */
textarea.pz__text--v4:focus-visible, textarea.pz__text--v4:focus { outline: 2px solid var(--antique-gold, #b08a3e); outline-offset: 1px; border-color: var(--black-slate); }
.pz__row--v4 { margin-top: 0.35rem; justify-content: flex-start; }
.pz__row--v4 .pz__count { flex: 0 0 auto; min-width: 4.5rem; }
.pz__row--v4 .pz__font-field { display: flex; align-items: center; gap: 0.4rem; margin: 0; flex: 1 1 11rem; min-width: 0; }
.pz__row--v4 .pz__font-label { margin: 0; white-space: nowrap; font-size: 0.74rem; }
.pz__row--v4 .pz__font-select { flex: 1 1 auto; width: auto; min-width: 10.5rem; max-width: 14rem; padding-right: 2.25rem; padding-top: 0.3rem; padding-bottom: 0.3rem; }
.pz__row--v4 .pz__kbd-toggle { margin-left: auto; }

/* ---- Cross with Inscription v5 (2026-10-08, Ramen via Turtanu 3:10 PM: Ummanu's v4 review items 1-8; product-page.js sectionsHtmlV5).
   Everything is scoped to .pz--v5 / .pdp-top--v5 so v3 and v4 (the layout flag) look exactly as before. ---- */
/* 5: the two choice cards side by side while there is one preset (2 lines each: name, price); stacked with 2 or more */
.pz__choice--side { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.pz__choice--side legend { grid-column: 1 / -1; }
.pz__choice--side .pz__choice-opt { flex-direction: column; align-items: flex-start; justify-content: center; gap: 0.05rem; padding: 0.4rem 0.6rem; }
.pz__choice--side .pz__choice-name { font-size: 0.88rem; }
.pz__choice--side .pz__choice-price { font-size: 0.78rem; }
/* 3: no title; one caption line shared with the ONE keyboard button */
.pz--v5 .pz__overlay-slot { margin-top: 0.4rem; margin-bottom: 0.35rem; }
.pzp__caprow { display: flex; align-items: center; justify-content: space-between; gap: 0.5rem; margin-top: 0.3rem; min-width: 0; }
.pzp__caprow .pzp__desc { margin: 0; flex: 1 1 auto; min-width: 0; }
.pzp__caprow .pz__kbd-toggle { flex: 0 0 auto; padding: 0.3rem 0.65rem; font-size: 0.78rem; }
/* 3 + 7: "1" / "2" markers on the zones; the focused section's zone solid gold and its marker gold */
.pzp__mark circle { fill: var(--black-slate, #1c1b1f); stroke: #fff; stroke-width: 3; }
.pzp__mark text { fill: #fff; font: 700 20px "Montserrat", system-ui, sans-serif; }
.pzp__mark--active circle { fill: var(--antique-gold, #b08a3e); }
.pzp__zone--active { stroke: var(--antique-gold, #b08a3e); stroke-width: 3.5; stroke-dasharray: none; }
.pzp__zone--active.pzp__zone--over { stroke: #b3261e; }
/* 1: badge + name + count (small, under the name) + font drop-down on ONE line */
.pz__section--v5 { margin-top: 0.4rem; padding-top: 0.5rem; border-top: 1px solid var(--sand); gap: 0.35rem; } /* 6: tighter dividers */
.pz__head { display: flex; align-items: center; justify-content: space-between; gap: 0.5rem; min-height: 2.75rem; min-width: 0; }
.pz__badge { flex: 0 0 auto; display: inline-grid; place-items: center; width: 1.25rem; height: 1.25rem; border-radius: 50%; background: var(--black-slate, #1c1b1f); color: #fff; font: 700 0.7rem/1 "Montserrat", system-ui, sans-serif; }
.pz--v5[data-pz-active="section1"] [data-pz-section="section1"] .pz__badge, .pz--v5[data-pz-active="section2"] [data-pz-section="section2"] .pz__badge { background: var(--antique-gold, #b08a3e); }
.pz__head-text { display: flex; flex-direction: column; flex: 1 1 auto; min-width: 0; }
.pz__head .pz__label { margin: 0; }
.pz__head .pz__count { font-size: 0.72rem; line-height: 1.2; margin-top: 1px; }
.pz__head .pz__font-field { margin: 0; flex: 0 0 auto; }
.pz__head .pz__font-label { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; } /* read as 'Font for Upper section' */
.pz__head .pz__font-select { width: 11rem; max-width: 11rem; min-height: 2.75rem; padding: 0.3rem 2rem 0.3rem 0.6rem; font-size: 1rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
/* 2026-10-08 v5 fixes (Ummanu's check): A) 1rem = 16 px so iPhone Safari does not zoom on focus; B) 11rem wide so "Merriweather" clears the
   arrow, with an ellipsis as a safeguard (the native select, and Chrome's customizable select button + its selected content). */
.pz__head .pz__font-button, .pz__head .pz__font-button selectedcontent { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pz__head .pz__font-button selectedcontent { display: block; }
/* 6: text boxes exactly 2 rows, no resize handle (17.6 px text: iOS does not zoom on focus) */
textarea.pz__text--v5 { height: calc(2 * 1.45 * 1.1rem + 0.9rem + 2px); min-height: 0; padding: 0.45rem 0.7rem; line-height: 1.45; font-size: 1.1rem; resize: none; overflow-y: auto; }
textarea.pz__text--v5::placeholder { font-family: "Montserrat", system-ui, sans-serif; font-weight: 400; font-size: 0.85rem; color: var(--text-muted); }
textarea.pz__text--v5:focus-visible, textarea.pz__text--v5:focus { outline: 2px solid var(--antique-gold, #b08a3e); outline-offset: 1px; border-color: var(--black-slate); }
/* 8: no outer card frame on phones */
@media (max-width: 640px) { .pz--v5 { border: 0; padding: 0; background: transparent; } }
/* Desktop: the product photo gallery stays sticky; the inscription preview stays in the buy column (not in the gallery). */
@media (min-width: 1024px) {
  .pdp-top--v5 .pdp-gallery { position: sticky; top: calc(var(--header-h, 4.25rem) + 1rem); align-self: start; }
}
/* 2026-10-08 (Ramen via Ummanu 3:39 PM): no browser scroll anchoring inside the block (reveal() in product-page.js does the one scroll),
   and the one-line hint under an English-font box while the Sureth keyboard is on. */
.pz--v5 { overflow-anchor: none; }
.pz--v5 .pz__kbd-need { display: flex; align-items: center; flex-wrap: wrap; gap: 0 0.4rem; min-height: 2.75rem; margin: 0; font-size: 0.82rem; color: var(--text-secondary); }
.pz--v5 .pz__kbd-need[hidden] { display: none; }
.pz--v5 .pz__kbd-use { min-height: 2.75rem; padding: 0 0.25rem; border: 0; background: none; font: inherit; font-weight: 600; color: var(--black-slate); text-decoration: underline; text-underline-offset: 3px; cursor: pointer; }
.pz--v5 .pz__kbd-use:focus-visible { outline: 2px solid var(--antique-gold, #b08a3e); outline-offset: 2px; }
