/* ==========================================================================
   Fine Art Tailors & Fine Fabrics: main stylesheet
   Sections: 1 Tokens + base | 2 Buttons | 3 Header | 4 Hero | 5 Legacy |
   6 What we make | 7 Fabrics | 8 Process (A to Z) | 9 Why Fine Art |
   10 Testimonial | 11 Gallery | 12 Final CTA / Contact + Footer |
   13 Motion | 14 Responsive | 15 Reduced motion
   Change colors, fonts and spacing in the :root tokens first.
   ========================================================================== */

/* ---------- 1. Design tokens + base ---------- */
:root{
  --bone:#F4F2ED; --paper:#FFFFFF; --ink:#141414; --ink-2:#2A2A2A; --muted:#66625B;
  --red:#D80905; --red-dark:#A90703; --red-bright:#F2403B; /* red-bright: red text on dark photos/sections */
  --navy:#1C2537; --line:rgba(20,20,20,.16);
  --display:"Barlow Condensed","Arial Narrow",Impact,sans-serif;
  --body:"Manrope",system-ui,-apple-system,"Segoe UI",Arial,sans-serif;
  --s1:.5rem;--s2:1rem;--s3:1.5rem;--s4:2.5rem;--s5:4rem;--s6:clamp(4.5rem,9vw,8rem);
  --container:min(1200px,90vw); --ease:cubic-bezier(.2,.7,.2,1); --t:.35s var(--ease);
  --header-h:64px; --z-header:50;
  --hero-focus:50% 20%; /* which part of the shop photo stays visible when cropped. e.g. 30% 50% keeps the left side */
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;scroll-padding-top:calc(var(--header-h) + 12px)}
body{font-family:var(--body);background:var(--bone);color:var(--ink);line-height:1.65;font-size:1.0625rem;-webkit-font-smoothing:antialiased}
img{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
:focus-visible{outline:3px solid var(--red);outline-offset:3px}
.container{width:var(--container);margin-inline:auto}
.skip{position:absolute;left:-999px;top:0;background:var(--ink);color:#fff;padding:.7rem 1rem;z-index:99}
.skip:focus{left:0}
h1,h2,h3{font-family:var(--display);font-weight:700;line-height:.95;letter-spacing:-.005em}
h2{font-size:clamp(2.75rem,7vw,5.5rem);text-transform:uppercase}
.lede{font-size:clamp(1.05rem,1.6vw,1.25rem);color:var(--ink-2);max-width:52ch}
/* Small label above section headings */
.kicker{display:flex;align-items:center;gap:.8rem;margin-bottom:var(--s2);font:700 .78rem var(--body);letter-spacing:.22em;text-transform:uppercase;color:var(--red)}
.kicker::before{content:"";width:36px;height:2px;background:currentColor}
.kicker--light{color:#fff}

/* Tape-measure motif: ticks every 10px, taller every 50 */
.ruler{height:22px;background:
  repeating-linear-gradient(90deg,var(--ink) 0 1px,transparent 1px 50px) bottom/100% 22px no-repeat,
  repeating-linear-gradient(90deg,var(--ink) 0 1px,transparent 1px 10px) bottom/100% 10px no-repeat;
  opacity:.55}
.ruler--light{filter:invert(1);opacity:.35}
/* Vertical red tape strip (used on the garment panel) */
.tape{position:absolute;top:0;bottom:0;left:6%;width:34px;background:var(--red);z-index:2;box-shadow:0 0 30px rgba(0,0,0,.35);
  background-image:repeating-linear-gradient(0deg,rgba(255,255,255,.9) 0 1px,transparent 1px 10px),repeating-linear-gradient(0deg,rgba(255,255,255,.9) 0 1px,transparent 1px 50px);
  background-size:12px 100%,22px 100%;background-repeat:no-repeat;background-position:right top,right top}
/* Small label that marks a placeholder. Delete the element when the real photo is in. */
.ph{position:absolute;left:1rem;top:1rem;z-index:3;font:600 .72rem var(--body);background:rgba(255,255,255,.92);color:var(--ink);padding:.3rem .55rem}

/* ---------- 2. Buttons ---------- */
.btn{display:inline-flex;align-items:center;gap:.6rem;padding:.95rem 1.6rem;font:700 .95rem var(--body);letter-spacing:.02em;border:1.5px solid var(--ink);background:transparent;color:var(--ink);cursor:pointer;transition:background var(--t),color var(--t),border-color var(--t),transform var(--t)}
.btn:hover{background:var(--ink);color:#fff}
.btn--red{background:var(--red);border-color:var(--red);color:#fff}
.btn--red:hover{background:var(--red-dark);border-color:var(--red-dark)}
.btn--light{border-color:#fff;color:#fff}
.btn--light:hover{background:#fff;color:var(--ink)}
.btn--white{background:#fff;border-color:#fff;color:var(--ink)}
.btn--white:hover{background:var(--ink);border-color:var(--ink);color:#fff}
.cta-row{display:flex;flex-wrap:wrap;gap:.8rem;margin-top:var(--s3)}

/* ---------- 3. Header: navigation + CTA only (logo lives in the hero) ---------- */
.header{position:sticky;top:0;z-index:var(--z-header);background:rgba(244,242,237,.94);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
.header__in{display:flex;align-items:center;justify-content:space-between;height:var(--header-h);gap:var(--s3)}
.header__tag{flex:none;display:flex;align-items:center;gap:.7rem;font:700 1.55rem/1 var(--display);letter-spacing:.07em;text-transform:uppercase;white-space:nowrap}
.header__tag::before{content:"";width:26px;height:3px;background:var(--red)}
.nav{flex:1;display:flex;align-items:center;justify-content:flex-end;gap:2rem;font-weight:600;font-size:.95rem}
.nav__call{display:none}   /* mobile menu only */
.nav a:not(.btn){position:relative;padding:.3rem 0}
.nav a:not(.btn)::after{content:"";position:absolute;left:0;right:0;bottom:0;height:2px;background:var(--red);transform:scaleX(0);transform-origin:left;transition:transform var(--t)}
.nav a:not(.btn):hover::after{transform:scaleX(1)}
.nav .btn{margin-left:.5rem;padding:.65rem 1.2rem}
.menu-btn{flex:none;display:none;background:none;border:1.5px solid var(--ink);width:44px;height:44px;cursor:pointer;position:relative}
.menu-btn span,.menu-btn span::before{position:absolute;left:11px;right:11px;height:2px;background:var(--ink);transition:transform var(--t)}
.menu-btn span{top:20px}.menu-btn span::before{content:"";left:0;right:0;top:-7px}
.menu-btn[aria-expanded=true] span{transform:rotate(45deg)}
.menu-btn[aria-expanded=true] span::before{transform:translateY(7px) rotate(-90deg)}

/* ---------- 4. Hero: shop photograph + tagline + logo plate + headline ----------
   Layout (desktop): tagline top-left, logo plate top-right, headline bottom-left,
   intro + buttons bottom-right. The middle band is left empty so the photo breathes.
   Photo: assets/images/shop-front.jpg (replace the file, keep the name). */
.hero{position:relative;isolation:isolate;display:flex;flex-direction:column;color:#fff;background:var(--navy);min-height:max(640px,calc(100svh - var(--header-h)))}
.hero__media{position:absolute;inset:0;z-index:-2;overflow:hidden}

.hero__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center top;
}
/* Dark overlay: keeps the tagline, logo and headline readable on any photo */
.hero::before{
  content:"";
  position:absolute;
  inset:0;
  z-index:-1;
  background:rgba(0,0,0,.70);
}
.hero__inner{flex:1;display:grid;grid-template-columns:repeat(12,1fr);grid-template-rows:auto 1fr auto;column-gap:var(--s3);padding-block:clamp(1.75rem,4vw,3.25rem) clamp(2.25rem,4.5vw,4rem)}
.hero__plate{
    grid-column:1/7;
    grid-row:1;

    justify-self:start;
    align-self:start;

    position:relative;

    width:440px;
    max-width:100%;

    background:transparent;

    padding:0;

    box-shadow:none;
}

.hero__plate img{width:100%;height:auto}
.hero__head{grid-column:1/9;grid-row:3;align-self:end}
.hero__eyebrow{font:700 .8rem var(--body);letter-spacing:.2em;text-transform:uppercase;margin-bottom:var(--s2);color:rgba(255,255,255,.88)}
.hero h1{font-size:clamp(3.5rem,8.2vw,6.75rem);text-transform:uppercase;line-height:.92}
.hero h1 em{font-style:normal;color:var(--red-bright)}
.hero__aside{grid-column:9/13;grid-row:3;align-self:end}
.hero__aside .lede{color:rgba(255,255,255,.92);font-size:clamp(1rem,1.3vw,1.125rem)}
.hero__ruler{position:absolute;left:0;right:0;bottom:0}

/* =========================================================
   FINE ART HISTORY / FAMILY ARCHIVE
   ========================================================= */

.history{
  padding-block:var(--s6);
  background:var(--bone);
  color:var(--ink);
  overflow:hidden;
}


/* ---------- Introduction ---------- */

.history__intro{
  display:grid;
  grid-template-columns:2fr 5fr 4fr;
  gap:var(--s4);
  align-items:end;
  padding-bottom:var(--s5);
  border-bottom:1px solid var(--line);
}

.history__intro .kicker{
  align-self:start;
  margin:0;
}

.history__intro h2{
  margin:0;
  font-size:clamp(3.5rem,7vw,7rem);
  line-height:.86;
  text-transform:uppercase;
}

.history__intro-text{
  max-width:38ch;
  margin:0;
  color:var(--muted);
  font-size:1rem;
  line-height:1.7;
}


/* ---------- Story ---------- */

.history__story{
  padding-top:var(--s6);
}


/* ---------- Individual story item ---------- */

.history__item{
  display:grid;
  grid-template-columns:minmax(0,1.25fr) minmax(280px,.75fr);
  gap:clamp(3rem,7vw,8rem);
  align-items:center;
  margin-bottom:clamp(6rem,12vw,11rem);
}

.history__item--reverse{
  grid-template-columns:minmax(280px,.75fr) minmax(0,1.25fr);
}

.history__item--reverse .history__caption{
  order:1;
}

.history__item--reverse .history__image{
  order:2;
}


.history__item--reverse .history__annotation {
  left: 1rem;
  right: auto;
}


.history__item--reverse .history__annotation {
  left: 1rem;
  right: auto;
}



/* ---------- Images ---------- */

.history__image{
  position:relative;
  overflow:hidden;
  background:#ddd8cf;
}

.history__image img{
  display:block;
  width:100%;
  height:auto;
  max-height:720px;
  object-fit:cover;
}


/* Large first image */

.history__item--large{
  grid-template-columns:minmax(0,1.5fr) minmax(280px,.7fr);
}

.history__item--large .history__image img{
  aspect-ratio:4/3;
  object-fit:cover;
}


/* Archive image */

.history__item--archive{
  grid-template-columns:minmax(280px,.8fr) minmax(0,1fr);
}

.history__item--archive .history__image img{
  aspect-ratio:4/3;
  object-fit:cover;
}


/* Portrait-style item */

.history__item--portrait{
  grid-template-columns:minmax(0,.8fr) minmax(280px,.7fr);
}

.history__item--portrait .history__image{
  max-width:620px;
}

.history__item--portrait .history__image img{
  aspect-ratio:4/5;
  object-fit:cover;
}


/* Wide historical photograph */

.history__item--wide{
  grid-template-columns:minmax(0,1.35fr) minmax(280px,.65fr);
}

.history__item--wide .history__image img{
  aspect-ratio:16/10;
  object-fit:cover;
}


/* Final image */

.history__item--final{
  grid-template-columns:minmax(280px,.75fr) minmax(0,1.25fr);
}


/* ---------- Captions ---------- */

.history__caption{
  max-width:520px;
}

.history__number{
  display:block;
  margin-bottom:var(--s3);
  color:var(--red);
  font:700 .8rem var(--body);
  letter-spacing:.18em;
}

.history__eyebrow{
  margin-bottom:.7rem;
  color:var(--red);
  font:700 .75rem var(--body);
  letter-spacing:.18em;
  text-transform:uppercase;
}

.history__caption h3{
  margin:0 0 var(--s2);
  font-size:clamp(2.4rem,4vw,4.5rem);
  line-height:.9;
  text-transform:uppercase;
}

.history__caption p:not(.history__eyebrow){
  margin:0;
  color:var(--muted);
  max-width:48ch;
  font-size:1rem;
  line-height:1.75;
}

.history__caption strong{
  color:var(--ink);
}


/* ---------- Photograph labels ---------- */

.history__image-label{
  position:absolute;
  left:1rem;
  bottom:1rem;
  max-width:calc(100% - 2rem);
  padding:.75rem 1rem;
  background:rgba(20,20,20,.88);
  color:#fff;
  border-left:3px solid var(--red);
}

.history__image-label strong{
  display:block;
  font:700 .82rem var(--body);
  letter-spacing:.1em;
}

.history__image-label span{
  display:block;
  margin-top:.2rem;
  color:rgba(255,255,255,.7);
  font-size:.75rem;
}


/* Date label */

.history__date{
  position:absolute;
  right:1rem;
  top:1rem;
  padding:.4rem .65rem;
  background:var(--red);
  color:#fff;
  font:700 .75rem var(--body);
  letter-spacing:.12em;
}


/* Person annotation */

.history__annotation{
  position:absolute;
  right:1rem;
  bottom:1rem;
  padding:.65rem .9rem;
  background:rgba(255,255,255,.94);
  color:var(--ink);
  border-left:3px solid var(--red);
}

.history__annotation span{
  display:block;
  font:700 .8rem var(--body);
  letter-spacing:.08em;
  text-transform:uppercase;
}

.history__annotation small{
  display:block;
  margin-top:.15rem;
  color:var(--muted);
  font-size:.72rem;
}


/* ---------- Closing statement ---------- */

.history__closing{
  display:flex;
  align-items:center;
  gap:var(--s3);
  max-width:760px;
  margin-inline:auto;
  padding-top:var(--s4);
  border-top:1px solid var(--line);
}

.history__closing-line{
  flex:none;
  width:45px;
  height:3px;
  background:var(--red);
}

.history__closing p{
  margin:0;
  font:500 clamp(1.5rem,2.5vw,2.2rem)/1.25 var(--display);
}


/* =========================================================
   TABLET
   ========================================================= */

@media(max-width:900px){

  .history__intro{
    grid-template-columns:1fr 2fr;
  }

  .history__intro h2{
    grid-column:1/-1;
    grid-row:2;
  }

  .history__intro-text{
    grid-column:2;
    grid-row:1;
  }

  .history__item,
  .history__item--reverse,
  .history__item--large,
  .history__item--archive,
  .history__item--portrait,
  .history__item--wide,
  .history__item--final{
    grid-template-columns:1fr;
    gap:var(--s3);
    margin-bottom:var(--s6);
  }

  .history__item--reverse .history__caption,
  .history__item--reverse .history__image{
    order:initial;
  }

  .history__caption{
    max-width:650px;
  }

  .history__item--portrait .history__image{
    max-width:none;
  }

  .history__item--portrait .history__image img{
    aspect-ratio:16/10;
  }

}


/* =========================================================
   MOBILE
   ========================================================= */

@media(max-width:560px){

  .history{
    padding-block:3.75rem;
  }

  .history__intro{
    display:block;
  }

  .history__intro .kicker{
    margin-bottom:var(--s3);
  }

  .history__intro h2{
    font-size:clamp(3.2rem,17vw,5rem);
    margin-bottom:var(--s3);
  }

  .history__intro-text{
    max-width:100%;
    font-size:.95rem;
  }

  .history__story{
    padding-top:var(--s5);
  }

  .history__item,
  .history__item--reverse,
  .history__item--large,
  .history__item--archive,
  .history__item--portrait,
  .history__item--wide,
  .history__item--final{
    gap:var(--s3);
    margin-bottom:var(--s5);
  }

  .history__image img{
    max-height:none;
  }

  .history__caption h3{
    font-size:clamp(2.3rem,11vw,3.4rem);
  }

  .history__caption p:not(.history__eyebrow){
    font-size:.92rem;
    line-height:1.65;
  }

  .history__image-label{
    left:.7rem;
    bottom:.7rem;
    max-width:calc(100% - 1.4rem);
  }

  .history__date{
    right:.7rem;
    top:.7rem;
  }

  .history__annotation{
    right:.7rem;
    bottom:.7rem;
  }

  .history__closing{
    align-items:flex-start;
  }

}

/* ---------- Values: five pillars (Heritage / Craftsmanship / Personal service / Quality fabrics / Made to measure) ---------- */
.values{padding-block:var(--s6)}
.values__head{max-width:44ch;margin-bottom:var(--s4)}
.values__list{list-style:none;border-top:2px solid var(--ink)}
.values__list li{display:grid;grid-template-columns:3.5rem minmax(0,1fr);column-gap:var(--s3);padding:var(--s4) 0;border-bottom:1px solid var(--line)}
.values__no{font:700 1.1rem/1 var(--display);color:var(--red);padding-top:.2rem}
.values__body h3{font-size:clamp(1.8rem,3vw,2.4rem);text-transform:uppercase}
.values__sub{font:700 1rem var(--body);margin-top:.3rem}
.values__body p:last-child{color:var(--muted);margin-top:.5rem;max-width:56ch}

@media(min-width:701px){
  /* Sub-line and paragraph sit beside the title once there's room */
  .values__body{display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);column-gap:var(--s4);align-items:baseline}
  .values__body h3{grid-column:1;grid-row:1/3}
  .values__sub{grid-column:2;grid-row:1;margin-top:0}
  .values__body p:last-child{grid-column:2;grid-row:2;margin-top:.4rem}
}
@media(max-width:560px){
  .values__list li{grid-template-columns:2.4rem minmax(0,1fr);padding:var(--s3) 0}
}

/* ---------- 6. What we make: garment index + sticky preview panel ---------- */
.makes{background:var(--ink);color:#fff;padding-block:var(--s6)}
.makes__head{display:flex;justify-content:space-between;align-items:end;gap:var(--s3);flex-wrap:wrap;margin-bottom:var(--s4)}
.makes__head p{color:#bdb8ae;max-width:38ch}
.makes__grid{display:grid;grid-template-columns:minmax(0,.75fr) minmax(0,1.25fr);gap:clamp(2rem,6vw,6rem);align-items:start}
.makes__panel{position:sticky;top:calc(var(--header-h) + 1.5rem);aspect-ratio:4/5;overflow:hidden;display:flex;flex-direction:column;justify-content:flex-end;padding:1.75rem 1.75rem 1.75rem calc(6% + 34px + 1.5rem);
  background:repeating-linear-gradient(90deg,transparent 0 17px,rgba(255,255,255,.14) 17px 18px),linear-gradient(160deg,#26324b,#141b2a)}
.makes__panel::after{content:"";position:absolute;inset:0;background:linear-gradient(0deg,rgba(0,0,0,.6),transparent 55%);z-index:1}
.makes__img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.makes__no,.makes__name{position:relative;z-index:3}
.makes__no{font:600 .85rem var(--body);letter-spacing:.2em;color:var(--red-bright)}
.makes__name{font:700 clamp(2.6rem,5vw,4.4rem)/.95 var(--display);text-transform:uppercase}
.list{list-style:none;counter-reset:g;border-top:1px solid rgba(255,255,255,.22)}
.list li{counter-increment:g}
a.row{display:grid;grid-template-columns:3rem minmax(0,1fr) auto;align-items:baseline;gap:var(--s2);padding:.95rem 0;border-bottom:1px solid rgba(255,255,255,.22);position:relative;color:inherit;transition:padding var(--t)}
a.row::before{content:"";position:absolute;left:0;top:0;bottom:0;width:0;background:var(--red);transition:width var(--t)}
.row__no::before{content:counter(g,decimal-leading-zero);font:600 .82rem var(--body);letter-spacing:.14em;color:#8f8a80}
a.row h3{font-size:clamp(1.9rem,3.5vw,2.9rem);text-transform:uppercase;color:rgba(255,255,255,.6);transition:color var(--t)}
a.row .go{font:600 .9rem var(--body);opacity:0;transform:translateX(-8px);transition:var(--t)}
a.row:hover,a.row:focus-visible{padding-left:1.1rem}
a.row:hover::before,a.row:focus-visible::before{width:5px}
a.row:hover h3,a.row:focus-visible h3{color:#fff}
a.row:hover .go,a.row:focus-visible .go{opacity:1;transform:none}
/* .is-active (set by js/script.js) mirrors the hover state for the row shown in the panel; desktop only */
@media(min-width:901px){
  a.row.is-active{padding-left:1.1rem}
  a.row.is-active::before{width:5px}
  a.row.is-active h3{color:#fff}
  a.row.is-active .go{opacity:1;transform:none}
}



/* ---------- 7. Fabrics ---------- */

.fabrics {
  padding-block: var(--s6);
}

/* Fabrics layout */
.fabrics__grid {
  display: block;
}

.fabrics__copy {
  width: 100%;
  max-width: 900px;
  margin-inline: auto;
}


.fabrics__copy > .kicker,
.fabrics__copy h2,
.fabrics__lede {
  text-align: center;
  width: 100%;
}

.fabrics__copy > .kicker,
.fabrics__copy h2,
.fabrics__lede {
  margin-left: auto;
  margin-right: auto;
}

.fabrics__lede {
  max-width: 650px;
  margin: var(--s2) auto 0;
}

/* Fabric swatches (if used elsewhere) */
.swatches {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  grid-auto-rows: clamp(110px, 16vw, 190px);
  gap: 6px;
}

.sw {
  position: relative;
  overflow: hidden;
  transition: transform var(--t);
  box-shadow: 0 1px 0 rgba(0, 0, 0, .2);
}

.sw img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.sw::after {
  content: "";
  position: absolute;
  inset: 0;
  background: repeating-linear-gradient(
    -45deg,
    transparent 0 3px,
    rgba(0, 0, 0, .05) 3px 4px
  );
  pointer-events: none;
}

.sw:hover {
  transform: translateY(-6px);
}

.sw:nth-child(1) {
  grid-row: span 2;
  background:
    repeating-linear-gradient(
      90deg,
      transparent 0 13px,
      rgba(255, 255, 255, .28) 13px 14px
    ),
    #1C2537;
}

.sw:nth-child(2) {
  background: #7c7466;
}

.sw:nth-child(3) {
  background:
    linear-gradient(90deg, rgba(255, 255, 255, .14) 50%, transparent 0) 0 0 / 24px 24px,
    linear-gradient(rgba(255, 255, 255, .14) 50%, transparent 0) 0 0 / 24px 24px,
    #3a3f36;
}

.sw:nth-child(4) {
  background: #cfc6b4;
}

.sw:nth-child(5) {
  background:
    repeating-linear-gradient(
      90deg,
      transparent 0 9px,
      rgba(216, 9, 5, .55) 9px 10px
    ),
    #f1efe9;
}

.sw:nth-child(6) {
  grid-column: span 2;
  background: #2b2320;
}

.note {
  margin-top: var(--s2);
  font-size: .8rem;
  color: var(--muted);
}

/* Brand heading */
.fabrics__label {
  margin-top: var(--s4);
  margin-bottom: 0;
  text-align: center;
  font: 700 .78rem var(--body);
  letter-spacing: .22em;
  text-transform: uppercase;
  color: var(--muted);
}

/* ---------- Fabric brand logo boxes ---------- */

.fabrics__brands {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  align-items: stretch;
  gap: 10px;
  width: 100%;
  max-width: 920px;
  margin: 1rem auto var(--s4);
}

.fabrics__brand {
  min-width: 0;
  height: 115px;
  box-sizing: border-box;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 1rem;
  background: #fff;
  border: 1px solid #d8d2ca;
  border-radius: 7px;
  transition:
    border-color var(--t),
    transform var(--t);
}

.fabrics__brand:hover {
  border-color: var(--red);
  transform: translateY(-3px);
}

.fabrics__brand img {
  display: block;
  width: 100%;
  height: 100%;
  max-width: 160px;
  object-fit: contain;
}

/* ---------- Mobile ---------- */

@media (max-width: 560px) {
  .fabrics {
    padding-block: var(--s5);
  }

  .fabrics__brands {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 6px;
  }

  .fabrics__brand {
    height: 85px;
    padding: .4rem;
    border-radius: 6px;
  }

  .fabrics__brand img {
    max-width: 100%;
  }

  .fabrics__label {
    letter-spacing: .15em;
  }
}



/* ---------- 8. Process: A to Z journey ---------- */
.process{padding-block:var(--s6);background:var(--paper)}
.process__grid{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:clamp(2rem,6vw,6rem);align-items:start}
.process__intro{position:sticky;top:calc(var(--header-h) + 2rem)}
.process__intro .lede{margin-top:var(--s3);color:var(--muted)}
.journey{list-style:none;counter-reset:j;position:relative}
.journey::before,.journey::after{content:"";position:absolute;left:0;top:.4rem;bottom:1.5rem;width:2px}
.journey::before{background:var(--line)}
.journey::after{background:var(--red);transform:scaleY(1);transform-origin:top}
.journey li{counter-increment:j;position:relative;padding:0 0 2.4rem 6rem}
.journey li::before{content:"";position:absolute;left:-5px;top:.5rem;width:12px;height:12px;background:var(--paper);border:2px solid var(--ink)}
.journey li::after{content:counter(j,decimal-leading-zero);position:absolute;left:1.6rem;top:0;font:700 2.6rem/1 var(--display);color:#c9c5bc}
.journey h3{font-size:clamp(2rem,3.6vw,2.9rem);text-transform:uppercase}
.journey p{color:var(--muted);margin-top:.35rem;max-width:44ch}
.journey li:last-child h3{color:var(--red)}

/* ---------- 9. Why Fine Art ---------- */
.why{padding-block:var(--s6)}
.why__grid{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:clamp(2rem,6vw,6rem)}
.why dl{display:grid;grid-template-columns:1fr 1fr;gap:var(--s4)}
.why dt{font:700 1.7rem var(--display);text-transform:uppercase;padding-top:.8rem;border-top:2px solid var(--ink)}
.why dd{color:var(--muted);font-size:.98rem}

/* ---------- 10. Testimonials: swipe carousel ---------- */

.voices{
  position:relative;
  background:var(--navy);
  color:#fff;
  padding-block:var(--s6);
  overflow:hidden;
}

.voices__grid{
  display:grid;
  grid-template-columns:minmax(0,.55fr) minmax(0,1.45fr);
  gap:clamp(2rem,6vw,5rem);
  align-items:start;
  padding-bottom:var(--s6);
}

.voices h2{
  font-size:clamp(2.6rem,5vw,4.25rem);
}

/* Navigation arrows */

.voices__nav{
  display:flex;
  gap:.6rem;
  margin-top:var(--s4);
}

.voices__arrow{
  width:48px;
  height:48px;
  border-radius:50%;
  border:1.5px solid rgba(255,255,255,.4);
  background:transparent;
  color:#fff;
  font-size:1.5rem;
  line-height:1;
  cursor:pointer;
  display:grid;
  place-items:center;
  transition:
    background var(--t),
    border-color var(--t),
    opacity var(--t),
    transform var(--t);
}

.voices__arrow:hover{
  background:var(--red);
  border-color:var(--red);
  transform:scale(1.05);
}

.voices__arrow:disabled{
  opacity:.3;
  cursor:default;
  background:transparent;
  border-color:rgba(255,255,255,.4);
  transform:none;
}

/* Carousel */

.voices__carousel{
  position:relative;
  min-width:0;
}

.voices__track{
  list-style:none;
  display:flex;
  gap:clamp(1.5rem,3vw,3rem);
  overflow-x:auto;
  scroll-snap-type:x mandatory;
  scroll-behavior:smooth;
  -webkit-overflow-scrolling:touch;
  scrollbar-width:none;
  overscroll-behavior-x:contain;
}

.voices__track::-webkit-scrollbar{
  display:none;
}

.voices__slide{
  flex:0 0 100%;
  min-width:0;
  scroll-snap-align:start;
  scroll-snap-stop:always;
}

/* Keep the testimonial ruler at the bottom */
.voices {
  position: relative;
}

.voices > .ruler {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  width: 100%;
  margin: 0;
}

/* Testimonial */

.quote{
  position:relative;
  padding-top:3.25rem;
}

.quote__mark{
  position:absolute;
  top:-1rem;
  left:0;
  font:700 6.5rem/1 var(--display);
  color:var(--red-bright);
}

.quote blockquote p{
  font:500 clamp(1.5rem,3vw,2.35rem)/1.28 var(--display);
}

.quote figcaption{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:.5rem 1rem;
  margin-top:var(--s3);
  padding-top:var(--s2);
  border-top:1px solid rgba(255,255,255,.28);
}

.quote__name{
  font:700 1.1rem var(--body);
}

.quote__meta{
  font-size:.9rem;
  color:#bdb8ae;
}

/* Dots */

.voices__dots{
  display:flex;
  gap:.5rem;
  margin-top:var(--s3);
}

.voices__dot{
  width:9px;
  height:9px;
  border-radius:50%;
  border:0;
  padding:0;
  background:rgba(255,255,255,.3);
  cursor:pointer;
  transition:
    background var(--t),
    transform var(--t);
}

.voices__dot.is-active{
  background:var(--red);
  transform:scale(1.3);
}


/* ---------- Mobile ---------- */

@media(max-width:900px){

  .voices__grid{
    grid-template-columns:1fr;
  }

  /*
     IMPORTANT:
     Keep the navigation visible on mobile.
     The carousel can still be swiped normally.
  */

  .voices__nav{
    display:flex;
    margin-top:var(--s3);
  }

  .voices__arrow{
    width:44px;
    height:44px;
  }

  .quote__mark{
    font-size:5rem;
  }

}


/* ---------- Reduced motion ---------- */

@media(prefers-reduced-motion:reduce){

  .voices__track{
    scroll-behavior:auto;
  }

}


/* ---------- Testimonial auto-scroll support ---------- */

.voices__track {
  scroll-behavior: smooth;
}

/* Pause automatic movement when visitors interact */
.voices__track:hover,
.voices__track:focus-within {
  scroll-behavior: auto;
}

@media (prefers-reduced-motion: reduce) {
  .voices__track {
    scroll-behavior: auto;
  }
}


/* ---------- 11. Gallery ---------- */

.gallery {
  padding-block: var(--s6);
}

.gallery__head {
  display: flex;
  justify-content: space-between;
  align-items: end;
  gap: var(--s3);
  flex-wrap: wrap;
  margin-bottom: var(--s4);
}

/* Responsive gallery layout */
.mosaic {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 16px;
  align-items: start;
}

/* Image containers */
.tile {
  position: relative;
  min-width: 0;
  overflow: hidden;
  background: #f2f0ec;
  border-radius: 4px;
  display: flex;
  align-items: center;
  justify-content: center;
}

/* Show the complete image */
.tile img {
  display: block;
  width: 100%;
  height: auto;
  object-fit: contain;
}

/* Remove previous grid sizing */
.tile:nth-child(1),
.tile:nth-child(2),
.tile:nth-child(3),
.tile:nth-child(4),
.tile:nth-child(5),
.tile:nth-child(6) {
  grid-column: auto;
  grid-row: auto;
}

/* Tablet */
@media (max-width: 800px) {
  .mosaic {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
  }
}

/* Mobile */
@media (max-width: 520px) {
  .mosaic {
    grid-template-columns: 1fr;
    gap: 16px;
  }
}

/* ---------- Final mobile gallery fix ---------- */

@media (max-width: 560px) {
  #gallery .mosaic {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    grid-auto-rows: auto;
    gap: 8px;
    align-items: start;
  }

  #gallery .mosaic .tile {
    grid-column: auto;
    grid-row: auto;
    width: 100%;
    min-width: 0;
    height: auto;
    aspect-ratio: auto;
    overflow: hidden;
    display: block;
    background: #e2ded5;
  }

  #gallery .mosaic .tile img {
    display: block;
    position: static;
    width: 100%;
    height: auto;
    max-width: 100%;
    object-fit: contain;
  }

  /* First image spans both columns */
  #gallery .mosaic .tile:nth-child(1) {
    grid-column: 1 / -1;
  }
}


/* ---------- 12. Final CTA / Contact + Footer ---------- */
.contact{background:var(--red);color:#fff;padding-top:var(--s6)}
.contact h2{font-size:clamp(3.6rem,11vw,9.5rem)}
.contact h2 span{display:block}
.contact__lede{color:#fff;margin-top:var(--s3)}
.contact__grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(2rem,5vw,5rem);margin-top:var(--s4);padding-bottom:var(--s6)}
.contact address{font-style:normal;font-size:1.15rem;line-height:1.8}
.contact address a{border-bottom:1px solid rgba(255,255,255,.6)}
.contact .cta-row{margin-top:var(--s3)}
.map{position:relative;min-height:320px;background:rgba(0,0,0,.18)}
.map iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.footer{background:var(--ink);color:#a9a49a;font-size:.85rem;padding-block:1.6rem}
.footer .container{display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap}

/* Mobile quick-action bar (shown at <=900px, see Responsive) */
.dock{display:none}

/* ---------- 13. Motion: hero load-in + scroll reveals (all gated by the .js class) ---------- */
.js .hero h1 span{display:inline-block;transform:translateY(105%);animation:up .9s var(--ease) forwards}
.js .hero h1 .l{display:block;overflow:hidden;padding-bottom:.04em}
.js .hero h1 .l:nth-child(2) span{animation-delay:.12s}.js .hero h1 .l:nth-child(3) span{animation-delay:.24s}
.js .hero__media{clip-path:inset(0 0 100% 0);animation:wipe 1.1s .1s var(--ease) forwards}
.js .hero__plate,.js .hero__eyebrow,.js .hero__aside{animation:rise .9s var(--ease) both}
.js .hero__plate{animation-delay:.35s}.js .hero__eyebrow{animation-delay:.2s}.js .hero__aside{animation-delay:.6s}
@keyframes up{to{transform:none}}
@keyframes wipe{to{clip-path:inset(0)}}
@keyframes rise{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}
.js .rv{opacity:0;transform:translateY(24px);transition:opacity .8s var(--ease),transform .8s var(--ease)}
.js .rv.in{opacity:1;transform:none}
/* Process journey: line draws down, then steps appear one by one when #steps gets .in */
.js .journey::after{transform:scaleY(0);transition:transform 2.4s var(--ease)}
.js .journey.in::after{transform:scaleY(1)}
.js .journey li{opacity:0;transform:translateY(18px);transition:opacity .7s var(--ease),transform .7s var(--ease)}
.js .journey.in li{opacity:1;transform:none}
.js .journey.in li:nth-child(1){transition-delay:.1s}.js .journey.in li:nth-child(2){transition-delay:.3s}.js .journey.in li:nth-child(3){transition-delay:.5s}
.js .journey.in li:nth-child(4){transition-delay:.7s}.js .journey.in li:nth-child(5){transition-delay:.9s}.js .journey.in li:nth-child(6){transition-delay:1.1s}.js .journey.in li:nth-child(7){transition-delay:1.3s}

/* ---------- 14. Responsive ---------- */
@media(min-width:901px) and (max-width:1140px){
  .header__tag{font-size:1.25rem}
  .header__tag::before{width:16px}
  .nav{gap:1.15rem;font-size:.88rem}
  .nav .btn{padding:.6rem 1rem}
}
@media(max-width:900px){
  .menu-btn{display:block}
  .header__tag{font-size:1.3rem}
  .nav{position:absolute;top:100%;left:0;right:0;height:calc(100svh - var(--header-h));overflow-y:auto;background:var(--bone);flex-direction:column;align-items:stretch;justify-content:flex-start;gap:0;padding:.5rem 5vw calc(2rem + env(safe-area-inset-bottom));transform:translateY(-105%);transition:transform var(--t);visibility:hidden}
  .nav.open{transform:none;visibility:visible}
  .nav a:not(.btn){font:700 2.2rem var(--display);text-transform:uppercase;padding:.75rem 0;width:100%;border-bottom:1px solid var(--line)}
  .nav a:not(.btn)::after{display:none}
  .nav .btn{margin:0;justify-content:center;padding:1rem 1.2rem}
  .nav .nav__wa{margin-top:1.5rem}
  .nav .nav__call{display:inline-flex;margin-top:.8rem}
  body.menu-open{overflow:hidden}
  /* Hero recomposed: logo plate > (photo shows through) > headline > intro > buttons */
  .hero{min-height:max(600px,calc(100svh - var(--header-h)))}
  .hero__inner{grid-template-columns:1fr;grid-template-rows:none}
  .hero__plate,.hero__head,.hero__aside{grid-column:1;grid-row:auto}
  .hero__inner{padding-top:3rem}
  .ph--hero{top:.5rem;right:.5rem}
  .hero__plate{width:min(340px,86%)}
  .hero__head{margin-top:clamp(4rem,26vw,12rem)}
  .hero__aside{margin-top:var(--s3)}
  .legacy__grid,.fabrics__grid,.process__grid,.why__grid,.voices__grid,.contact__grid{grid-template-columns:1fr}
  .makes__grid{grid-template-columns:1fr}
  .makes__panel{display:none}
  a.row{grid-template-columns:2.6rem minmax(0,1fr) auto;padding:1.05rem 0}
  a.row .go{opacity:.7;transform:none}
  a.row h3{color:#fff}
  .process__intro{position:static}
  .fabrics__copy{order:-1}
  /* Quick-action dock */
  .dock{display:grid;grid-template-columns:1fr 1fr;position:fixed;left:0;right:0;bottom:0;z-index:40;padding-bottom:env(safe-area-inset-bottom);background:var(--ink);box-shadow:0 -8px 30px rgba(0,0,0,.25);transform:translateY(110%);transition:transform var(--t)}
  .dock.show{transform:none}
  body.menu-open .dock{transform:translateY(110%)}
  .dock a{display:flex;align-items:center;justify-content:center;min-height:54px;font:700 .95rem var(--body);letter-spacing:.03em;color:#fff}
  .dock__call{background:var(--red)}
  .footer{padding-bottom:calc(1.6rem + 64px)}
}
@media(max-width:560px){
  :root{--s6:3.75rem}
  .header__tag{font-size:1.15rem;letter-spacing:.05em;gap:.5rem}
  .header__tag::before{width:16px}
  .hero h1{font-size:clamp(2.9rem,14.5vw,4.5rem)}
  .hero__plate{width:min(300px,84%)}
  .legacy h2{font-size:clamp(3.6rem,20vw,5rem)}
  .facts{grid-template-columns:1fr 1fr;row-gap:var(--s3)}
  .swatches{grid-auto-rows:clamp(90px,28vw,150px)}
  .why dl{grid-template-columns:1fr}
  .journey li{padding-left:4.6rem;padding-bottom:2rem}
  .journey li::after{left:1.1rem;font-size:2rem}
  .quote{padding-top:3.75rem}
  .quote::before{font-size:7rem}
  .mosaic{grid-template-columns:repeat(2,1fr);grid-auto-rows:150px}
  .tile:nth-child(n){grid-column:auto;grid-row:auto}
  .tile:nth-child(1){grid-column:span 2;grid-row:span 2}
  .tile:nth-child(6){grid-column:span 2}
  .contact h2{font-size:clamp(3.4rem,17vw,5rem)}
  .map{min-height:280px}
  .cta-row .btn{flex:1 1 100%;justify-content:center}
  a.row h3{font-size:1.75rem}
}
@media(max-width:360px){.header__tag{font-size:1.02rem;letter-spacing:.03em}.header__tag::before{width:12px}}
@media(max-width:400px){a.row .go{display:none}a.row{grid-template-columns:2.4rem minmax(0,1fr)}}

/* ---------- 15. Reduced motion: switch every animation off, show all content ---------- */
@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation:none!important;transition:none!important}
  .js .hero h1 span,.js .rv,.js .journey li{transform:none;opacity:1}
  .js .hero__media{clip-path:none}
  .js .journey::after{transform:scaleY(1)}
  .dock{transition:none}
}
@media(max-width:360px){.header__tag{font-size:1.02rem;letter-spacing:.03em}.header__tag::before{width:12px}}
@media(max-width:400px){a.row .go{display:none}a.row{grid-template-columns:2.4rem minmax(0,1fr)}}

/* =========================================================
   HISTORIC INAUGURATION ARCHIVE
   ========================================================= */

.inauguration{
  position:relative;
  background:var(--bone);
  padding-block:var(--s6);
  overflow:hidden;
}


/* ---------------------------------------------------------
   INTRO
   --------------------------------------------------------- */

.inauguration__intro{
  max-width:900px;
  margin-bottom:clamp(4rem,8vw,7rem);
}

.inauguration__intro h2{
  font-size:clamp(3.5rem,8vw,7rem);
  line-height:.9;
  text-transform:uppercase;
  margin-top:var(--s2);
}

.inauguration__intro-text{
  max-width:52ch;
  margin-top:var(--s3);
  font-size:clamp(1rem,1.5vw,1.2rem);
  line-height:1.65;
  color:var(--muted);
}


/* ---------------------------------------------------------
   ARCHIVE LAYOUT
   --------------------------------------------------------- */

.inauguration__archive{
  display:grid;
  grid-template-columns:
    minmax(0,.8fr)
    minmax(0,1.2fr);

  column-gap:clamp(2rem,7vw,7rem);
  row-gap:clamp(4rem,9vw,9rem);

  align-items:start;
}


/* ---------------------------------------------------------
   IMAGE
   --------------------------------------------------------- */

.inauguration__image{
  width:100%;
  overflow:hidden;
  background:#ddd;
}

.inauguration__image img{
  display:block;
  width:100%;
  height:auto;
  transition:transform .7s var(--ease);
}

.inauguration__item:hover .inauguration__image img{
  transform:scale(1.025);
}


/* ---------------------------------------------------------
   PORTRAIT IMAGES
   --------------------------------------------------------- */

/* Invitation card */
.inauguration__item--invite{
  grid-column:1;
}

.inauguration__item--invite .inauguration__image{
  width:min(100%,430px);
  margin-inline:auto;
}


/* Exterior photograph */
.inauguration__item--portrait{
  grid-column:1;
}

.inauguration__item--portrait .inauguration__image{
  width:min(100%,430px);
  margin-inline:auto;
}


/* ---------------------------------------------------------
   LANDSCAPE IMAGES
   --------------------------------------------------------- */

.inauguration__item--wide{
  grid-column:2;
}


/* ---------------------------------------------------------
   CAPTIONS
   --------------------------------------------------------- */

.inauguration__item figcaption{
  display:grid;
  grid-template-columns:3rem minmax(0,1fr);
  column-gap:var(--s3);

  margin-top:var(--s2);
  padding-top:var(--s2);

  border-top:1px solid var(--line);
}

.inauguration__number{
  font:700 .85rem var(--display);
  color:var(--red);

  letter-spacing:.08em;
  padding-top:.2rem;
}

.inauguration__item h3{
  font-size:clamp(1.5rem,2.5vw,2.2rem);
  line-height:1;
  text-transform:uppercase;
}

.inauguration__item figcaption p{
  max-width:58ch;
  margin-top:.55rem;

  font-size:.95rem;
  line-height:1.6;

  color:var(--muted);
}


/* ---------------------------------------------------------
   VISUAL RHYTHM
   --------------------------------------------------------- */

/* 
   Alternate the archive naturally:
   01 → left
   02 → right
   03 → left
   04 → right
   05 → left
   06 → right
*/

.inauguration__item--invite{
  grid-column:1;
  grid-row:1;
}

.inauguration__item--wide:nth-child(2){
  grid-column:2;
  grid-row:1;
}

.inauguration__item--portrait{
  grid-column:1;
  grid-row:2;
}

.inauguration__item--wide:nth-child(4){
  grid-column:2;
  grid-row:2;
}

.inauguration__item--wide:nth-child(5){
  grid-column:1;
  grid-row:3;
}

.inauguration__item--wide:nth-child(6){
  grid-column:2;
  grid-row:3;
}


/* ---------------------------------------------------------
   MOBILE
   --------------------------------------------------------- */

@media(max-width:560px){

  .inauguration{
    padding-block:var(--s5);
  }

  .inauguration__intro{
    margin-bottom:var(--s5);
  }

  .inauguration__intro h2{
    font-size:clamp(3rem,15vw,5rem);
  }

  .inauguration__archive{
    row-gap:var(--s5);
  }

  .inauguration__item figcaption{
    grid-template-columns:2.2rem minmax(0,1fr);
    column-gap:var(--s2);
  }

  .inauguration__item h3{
    font-size:1.45rem;
  }

  .inauguration__item figcaption p{
    font-size:.9rem;
  }

}



/* ---------- Fix Fabrics section alignment ---------- */

.fabrics__grid {
  display: block;
  width: 100%;
}

.fabrics__copy {
  width: 100%;
  max-width: 1100px;
  margin: 0 auto;
  display: flex;
  flex-direction: column;
  align-items: center;
}

.fabrics__copy > .kicker,
.fabrics__copy h2,
.fabrics__copy > .lede {
  width: 100%;
  text-align: center;
}

.fabrics__copy h2 {
  margin-inline: auto;
}

.fabrics__lede {
  width: 100%;
  max-width: 750px;
  margin: var(--s2) auto 0;
  text-align: center;
}

.fabrics__label {
  width: 100%;
  text-align: center;
  margin: var(--s4) auto 0;
}

.fabrics__brands {
  width: 100%;
  max-width: 900px;
  margin: 1rem auto var(--s4);
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
}

.fabrics__brand {
  width: 100%;
  box-sizing: border-box;
  display: flex;
  align-items: center;
  justify-content: center;
}

.fabrics__copy > .btn,
.fabrics__copy > a {
  align-self: center;
}

@media (max-width: 560px) {
  .fabrics__brands {
    gap: 6px;
  }

  .fabrics__brand {
    height: 85px;
    padding: .4rem;
  }
}

/* Make fabric brand logos bigger */
.fabrics__brand {
  padding: 0.2rem;
}

.fabrics__brand img {
  width: 100%;
  height: 100%;
  max-width: 100%;
  object-fit: contain;
}

/* Mobile adjustment */
@media (max-width: 560px) {
  .fabrics__brand {
    padding: 0.25rem;
  }

  .fabrics__brand img {
    max-width: 100%;
  }
}



/* ---------- Responsive garment gallery ---------- */

/* Desktop: original interactive section */
.makes--mobile {
  display: none;
}

/* Tablet and mobile */
@media (max-width: 1024px) {
  .makes--desktop {
    display: none;
  }

  .makes--mobile {
    display: block;
  }

  .garment-cards {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
    margin-top: 2rem;
  }

  .garment-card {
    position: relative;
    display: block;
    min-width: 0;
    aspect-ratio: 4 / 5;
    overflow: hidden;
    padding: 0;
    background: #171717;
    border: 1px solid #333;
    border-radius: 0;
    color: #fff;
    text-decoration: none;
  }

  .garment-card img {
    position: absolute;
    inset: 0;
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center top;
  }

  /* Dark gradient behind the text */
  .garment-card::after {
    content: "";
    position: absolute;
    inset: 45% 0 0;
    background: linear-gradient(
      to bottom,
      transparent,
      rgba(0, 0, 0, .82)
    );
    pointer-events: none;
  }

  /* Red ruler strip */
  
.garment-card::before {
  content: "";
  position: absolute;
  z-index: 2;
  top: 0;
  bottom: 0;
  left: 0;
  width: 22px;
  background-color: #e10600;

  background-image: repeating-linear-gradient(
    to bottom,
    #fff 0 1px,
    transparent 1px 12px
  );
  background-size: 10px 48px;
  background-position: right top;
  background-repeat: repeat-y;
  
  /* Long ticks at regular intervals */
  box-shadow: inset -10px 0 0 transparent;
  border-right: 1px solid rgba(255,255,255,.25);
}

.garment-card::after {
  /* Keep your existing dark gradient and add long ruler ticks separately
     using the card's ruler overlay if needed. */
}


  .garment-card span {
    position: absolute;
    z-index: 3;
    left: 30px;
    right: 5px;
    bottom: 10px;
    display: block;
    color: #fff;
    font-size: clamp(1rem, 3.5vw, 1.8rem);
    font-weight: 900;
    line-height: 1.05;
    text-align: left;
    text-transform: uppercase;
    overflow-wrap: anywhere;
  }

  .garment-card span::before {
    content: attr(data-number);
    display: block;
    margin-bottom: 8px;
    color: #ff2929;
    font-size: .68rem;
    font-weight: 700;
    letter-spacing: .16em;
  }
}

/* Small mobile phones: still two cards per row */
@media (max-width: 560px) {
  .garment-cards {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 8px;
  }

  .garment-card::before {
    width: 17px;
  }

  .garment-card span {
    left: 24px;
    right: 4px;
    bottom: 8px;
    font-size: clamp(.95rem, 4.2vw, 1.4rem);
  }

  .garment-card span::before {
    font-size: .62rem;
    margin-bottom: 6px;
  }
}
