/* ==========================================================================
   BRAND MARK — the AD monogram and the AFTER/DARK letterforms
   --------------------------------------------------------------------------
   Rendered inline by inc/brand.php with fill="currentColor", so a mark takes
   the colour of whatever it sits in and needs no light/dark variants. Size it
   by height where it sits on a line of UI, by width where it is the subject.
   ========================================================================== */
.ad-logo { display: block; width: auto; height: 1em; }
.ad-logo--lockup { height: auto; width: 100%; }

/* ==========================================================================
   AFTER/DARK — design system
   Tokens first. Nothing below the token block hard-codes a colour or a size.
   ========================================================================== */

@font-face {
  font-family: 'InterVar';
  src: url('../fonts/InterVariable-latin.woff2') format('woff2-variations');
  font-weight: 100 900;
  font-style: normal;
  font-display: swap;
}

:root {
  /* ground */
  --ad-ink:        #0d0d0f;
  --ad-surface:    #141416;
  --ad-surface-2:  #1a1a1d;
  --ad-paper:      #ededeb;
  --ad-mute:       #8a8a90;
  --ad-mute-2:     #b4b4ba;
  --ad-line:       rgba(255,255,255,.12);
  --ad-line-soft:  rgba(255,255,255,.06);
  --ad-signal:     #ededeb;      /* inverted button fill */
  --ad-gone:       rgba(255,255,255,.28);

  /* type */
  --ad-font: 'InterVar', 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif;
  --ad-track-wide: .22em;
  --ad-track-mid:  .14em;
  --ad-track-tight: -.02em;

  /* scale — fluid, clamped */
  --ad-display: clamp(2.6rem, 7vw, 6.5rem);
  --ad-h1:      clamp(2rem, 4.6vw, 3.6rem);
  --ad-h2:      clamp(1.35rem, 2.4vw, 2rem);
  --ad-body:    clamp(.94rem, 1.05vw, 1.02rem);
  --ad-small:   .78rem;
  --ad-micro:   .68rem;

  /* space */
  --ad-gutter: clamp(1.25rem, 4vw, 3.5rem);
  --ad-section: clamp(4rem, 9vw, 8.5rem);
  --ad-max: 1680px;

  --ad-ease: cubic-bezier(.22,.61,.36,1);
}

/* ---------- reset ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: .001ms !important; transition-duration: .001ms !important; }
}
body {
  margin: 0;
  background: var(--ad-ink);
  color: var(--ad-paper);
  font-family: var(--ad-font);
  font-size: var(--ad-body);
  line-height: 1.65;
  font-synthesis-weight: none;
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
}
img, video { max-width: 100%; height: auto; display: block; }
a { color: inherit; text-decoration: none; }
button { font: inherit; color: inherit; background: none; border: 0; cursor: pointer; }
h1,h2,h3,h4 { margin: 0; font-weight: 700; letter-spacing: var(--ad-track-tight); line-height: 1.02; }
p { margin: 0 0 1em; }

:focus-visible {
  outline: 2px solid var(--ad-paper);
  outline-offset: 3px;
}

.ad-skip {
  position: absolute; left: -9999px; top: 0; z-index: 200;
  background: var(--ad-paper); color: var(--ad-ink); padding: .75rem 1.25rem;
}
.ad-skip:focus { left: 0; }

.ad-sr { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; border:0; }

/* ---------- primitives ---------- */
.ad-wrap { width: 100%; max-width: var(--ad-max); margin-inline: auto; padding-inline: var(--ad-gutter); }
.ad-section { padding-block: var(--ad-section); }

.ad-label {
  font-size: var(--ad-micro);
  letter-spacing: var(--ad-track-wide);
  text-transform: uppercase;
  color: var(--ad-mute);
  font-weight: 600;
  margin: 0 0 1.1rem;
  display: block;
}
.ad-label--paper { color: var(--ad-paper); }

.ad-display { font-size: var(--ad-display); font-weight: 800; line-height: .94; }
.ad-h1 { font-size: var(--ad-h1); font-weight: 800; }
.ad-h2 { font-size: var(--ad-h2); font-weight: 700; }

.ad-rule { height: 1px; background: var(--ad-line); border: 0; margin: 0; }
.ad-rule--short { width: 3rem; height: 1px; background: var(--ad-paper); margin: 1.25rem 0; }

.ad-lede { color: var(--ad-mute-2); max-width: 46ch; }

/* buttons ------------------------------------------------------------------ */
.ad-btn {
  --btn-bg: var(--ad-signal);
  --btn-fg: var(--ad-ink);
  display: inline-flex; align-items: center; justify-content: center; gap: .6rem;
  min-height: 3.25rem; padding: 0 1.9rem;
  background: var(--btn-bg); color: var(--btn-fg);
  font-size: var(--ad-small); font-weight: 600;
  letter-spacing: var(--ad-track-mid); text-transform: uppercase;
  border: 1px solid var(--btn-bg);
  transition: background .3s var(--ad-ease), color .3s var(--ad-ease), border-color .3s var(--ad-ease);
  width: 100%;
}
.ad-btn:hover { --btn-bg: transparent; --btn-fg: var(--ad-paper); border-color: var(--ad-paper); }
.ad-btn--ghost { --btn-bg: transparent; --btn-fg: var(--ad-paper); border-color: var(--ad-line); }
.ad-btn--ghost:hover { --btn-bg: var(--ad-paper); --btn-fg: var(--ad-ink); border-color: var(--ad-paper); }
.ad-btn[disabled], .ad-btn--disabled {
  --btn-bg: transparent; --btn-fg: var(--ad-gone);
  border-color: var(--ad-line-soft); cursor: not-allowed;
}
.ad-btn[disabled]:hover { --btn-bg: transparent; --btn-fg: var(--ad-gone); border-color: var(--ad-line-soft); }
.ad-btn--inline { width: auto; }

.ad-link {
  font-size: var(--ad-micro); letter-spacing: var(--ad-track-wide);
  text-transform: uppercase; font-weight: 600;
  padding-bottom: .4rem; border-bottom: 1px solid var(--ad-line);
  transition: border-color .3s var(--ad-ease);
  display: inline-block;
}
.ad-link:hover { border-color: var(--ad-paper); }

/* ---------- header -------------------------------------------------------- */
.ad-announce {
  background: var(--ad-ink); border-bottom: 1px solid var(--ad-line-soft);
  text-align: center; padding: .55rem 1rem;
  font-size: var(--ad-micro); letter-spacing: var(--ad-track-wide);
  text-transform: uppercase; color: var(--ad-mute); font-weight: 600;
}
.ad-header {
  position: sticky; top: 0; z-index: 90;
  background: rgba(13,13,15,.82);
  backdrop-filter: saturate(140%) blur(14px);
  border-bottom: 1px solid var(--ad-line-soft);
}
.ad-header__inner {
  display: grid; grid-template-columns: 1fr auto 1fr; align-items: center;
  gap: 1rem; min-height: 4.5rem;
}
.ad-header__left, .ad-header__right { display: flex; align-items: center; gap: 1.5rem; }
.ad-header__right { justify-content: flex-end; }
.ad-brand {
  display: inline-flex; align-items: center; color: var(--ad-paper);
}
.ad-brand .ad-logo { height: clamp(.58rem, 1.15vw, .76rem); }
.ad-nav { display: flex; gap: clamp(1rem, 2.4vw, 2.6rem); }
.ad-nav a {
  font-size: var(--ad-micro); letter-spacing: var(--ad-track-wide);
  text-transform: uppercase; font-weight: 600; color: var(--ad-mute-2);
  transition: color .25s var(--ad-ease);
}
.ad-nav a:hover, .ad-nav a[aria-current] { color: var(--ad-paper); }
.ad-icon { width: 1.15rem; height: 1.15rem; stroke: currentColor; fill: none; stroke-width: 1.4; }
.ad-cartcount {
  font-size: var(--ad-micro); font-weight: 700; letter-spacing: .05em;
  margin-left: .35rem; color: var(--ad-paper);
}
@media (max-width: 860px) {
  .ad-nav { display: none; }
  .ad-header__inner { grid-template-columns: auto 1fr auto; }
}

/* ---------- hero ---------------------------------------------------------- */
.ad-hero { position: relative; min-height: min(86vh, 880px); display: grid; }
.ad-hero__media { position: absolute; inset: 0; }
.ad-hero__media img { width: 100%; height: 100%; object-fit: cover; }
.ad-hero__scrim {
  position: absolute; inset: 0;
  background: linear-gradient(90deg, rgba(13,13,15,.92) 0%, rgba(13,13,15,.62) 42%, rgba(13,13,15,.25) 100%);
}
.ad-hero__body { position: relative; align-self: center; padding-block: clamp(5rem, 12vh, 9rem); }
.ad-hero__title { font-size: var(--ad-display); font-weight: 800; letter-spacing: .06em; line-height: 1.02; text-transform: uppercase; }
.ad-hero__meta { margin-top: 1.6rem; display: grid; gap: .35rem; }
.ad-hero__coords {
  position: absolute; right: var(--ad-gutter); bottom: var(--ad-section);
  text-align: right; font-size: var(--ad-micro); letter-spacing: var(--ad-track-wide);
  color: var(--ad-mute); text-transform: uppercase; line-height: 2;
}
@media (max-width: 860px) { .ad-hero__coords { display: none; } }

/* ---------- section head -------------------------------------------------- */
.ad-sechead {
  display: flex; align-items: baseline; justify-content: space-between;
  gap: 2rem; flex-wrap: wrap; margin-bottom: 2.5rem;
}
.ad-sechead__meta {
  font-size: var(--ad-micro); letter-spacing: var(--ad-track-wide);
  text-transform: uppercase; color: var(--ad-mute); font-weight: 600;
}

/* ---------- product grid -------------------------------------------------- */
.ad-grid {
  display: grid; gap: clamp(1rem, 2vw, 2rem);
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 260px), 1fr));
  list-style: none; margin: 0; padding: 0;
}
.ad-card { position: relative; display: flex; flex-direction: column; }
.ad-card__media {
  position: relative; overflow: hidden; background: var(--ad-surface);
  aspect-ratio: 4 / 5;
}
.ad-card__media img {
  width: 100%; height: 100%; object-fit: cover;
  transition: transform .7s var(--ad-ease), opacity .4s var(--ad-ease);
}
.ad-card:hover .ad-card__media img { transform: scale(1.035); }
.ad-card__alt { position: absolute; inset: 0; opacity: 0; }
.ad-card:hover .ad-card__alt { opacity: 1; }
.ad-card__body { padding: 1.1rem .25rem 0; text-align: center; display: grid; gap: .45rem; }
.ad-card__sku { font-size: var(--ad-micro); letter-spacing: var(--ad-track-wide); color: var(--ad-mute); font-weight: 600; }
.ad-card__title { font-size: var(--ad-small); letter-spacing: var(--ad-track-mid); text-transform: uppercase; font-weight: 600; }
.ad-card__price { font-size: var(--ad-small); color: var(--ad-mute-2); letter-spacing: .04em; }
.ad-card__cta { margin-top: .35rem; }

/* state flags on cards */
.ad-flag {
  position: absolute; top: 0; left: 0; z-index: 2;
  padding: .4rem .7rem;
  font-size: var(--ad-micro); font-weight: 700;
  letter-spacing: var(--ad-track-wide); text-transform: uppercase;
}
.ad-flag--low   { background: var(--ad-paper); color: var(--ad-ink); }
.ad-flag--gone  { background: transparent; color: var(--ad-gone); border: 1px solid var(--ad-line); }
.ad-flag--early { background: transparent; color: var(--ad-paper); border: 1px solid var(--ad-paper); }
.ad-card--gone .ad-card__media img { opacity: .38; }

/* ---------- split panels -------------------------------------------------- */
.ad-split { display: grid; grid-template-columns: repeat(2, 1fr); }
@media (max-width: 780px) { .ad-split { grid-template-columns: 1fr; } }
.ad-panel { position: relative; min-height: min(62vh, 620px); display: grid; }
.ad-panel img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.ad-panel__scrim { position: absolute; inset: 0; background: linear-gradient(90deg, rgba(13,13,15,.85), rgba(13,13,15,.15)); }
.ad-panel__body { position: relative; align-self: center; padding: var(--ad-gutter); }
.ad-panel__title { font-size: clamp(1.5rem, 3vw, 2.4rem); font-weight: 800; letter-spacing: .18em; text-transform: uppercase; }

/* ---------- manifesto ----------------------------------------------------- */
.ad-manifesto { position: relative; min-height: min(70vh, 640px); display: grid; }
.ad-manifesto img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.ad-manifesto__scrim { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(13,13,15,.9), rgba(13,13,15,.55)); }
.ad-manifesto__body { position: relative; align-self: center; padding-block: var(--ad-section); }
.ad-manifesto p { color: var(--ad-mute-2); max-width: 42ch; }

/* ---------- waitlist ------------------------------------------------------ */
.ad-waitlist { text-align: center; border-block: 1px solid var(--ad-line-soft); }
/* The consent line and the error message live inside the form, so without
   wrapping they became flex items in the same row and crushed the field down
   to a sliver. Keep the row to input + button; push everything else below. */
.ad-form { display: flex; flex-wrap: wrap; gap: 0; max-width: 30rem; margin: 1.5rem auto 0; }
.ad-form > .ad-consent,
.ad-form > .ad-form__err,
.ad-form > .ad-label { flex: 1 0 100%; }
.ad-form input[type=email] {
  flex: 1 1 0; min-width: 0; min-height: 3.25rem; padding: 0 1rem;
  background: transparent; border: 1px solid var(--ad-line); color: var(--ad-paper);
  font: inherit; font-size: var(--ad-small); letter-spacing: var(--ad-track-mid);
  text-transform: uppercase;
}
.ad-form input::placeholder { color: var(--ad-mute); }
.ad-form .ad-btn { width: auto; white-space: nowrap; }
/* Side by side the field loses to the button on a phone — "EMAIL ADDRES".
   Below this width the two stack and each gets the full row. */
@media (max-width: 560px) {
  .ad-form input[type=email],
  .ad-form .ad-btn { flex: 1 0 100%; }
  .ad-form .ad-btn { margin-top: .6rem; }
}

/* ---------- footer -------------------------------------------------------- */
.ad-footer { border-top: 1px solid var(--ad-line-soft); padding-block: 3rem; }
.ad-footer__inner { display: flex; gap: 2rem; justify-content: space-between; flex-wrap: wrap; align-items: flex-start; }
.ad-footer__nav { display: flex; gap: 2rem; flex-wrap: wrap; }
.ad-footer a, .ad-footer p { font-size: var(--ad-micro); letter-spacing: var(--ad-track-mid); text-transform: uppercase; color: var(--ad-mute); }
.ad-footer a:hover { color: var(--ad-paper); }
/* Scoped under .ad-footer so it outranks the blanket `.ad-footer a` colour —
   the mark is not one of the muted links. */
.ad-footer .ad-footer__brand { display: inline-block; color: var(--ad-paper); }
.ad-footer .ad-footer__brand .ad-logo { width: clamp(6.5rem, 14vw, 8.5rem); height: auto; }

/* ==========================================================================
   PRODUCT — the page the money is decided on
   ========================================================================== */
.ad-pdp {
  display: grid;
  grid-template-columns: minmax(0, 1.35fr) minmax(340px, .65fr);
  grid-template-areas: "hero buy" "rest buy";
  align-items: start;
}
.ad-pdp > * { min-width: 0; }
.ad-pdp__hero { grid-area: hero; }
.ad-pdp__buy  { grid-area: buy; }
.ad-pdp__rest { grid-area: rest; }

/* On a phone the buy panel must sit directly under the opening shot — nobody
   scrolls past four full-height images to find a price. */
@media (max-width: 1000px) {
  .ad-pdp {
    grid-template-columns: minmax(0, 1fr);
    grid-template-areas: "hero" "buy" "rest";
  }
}

.ad-pdp__hero, .ad-pdp__rest { background: var(--ad-line-soft); }
.ad-pdp__rest { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 2px; margin-top: 2px; }
@media (max-width: 620px) { .ad-pdp__rest { grid-template-columns: minmax(0, 1fr); } }
/* An odd final shot spans the pair rather than leaving a hole. */
.ad-pdp__rest > :last-child:nth-child(odd) { grid-column: 1 / -1; }
.ad-pdp__shot { background: var(--ad-surface); margin: 0; min-width: 0; }
.ad-pdp__shot img { width: 100%; aspect-ratio: 4/5; object-fit: cover; }

.ad-pdp__buy {
  padding: clamp(1.5rem, 3vw, 3.25rem);
  border-left: 1px solid var(--ad-line-soft);
  align-self: start;
  position: sticky; top: 4.5rem;
}
@media (max-width: 1000px) { .ad-pdp__buy { position: static; border-left: 0; border-block: 1px solid var(--ad-line-soft); } }

.ad-pdp__sku { font-size: var(--ad-micro); letter-spacing: var(--ad-track-wide); color: var(--ad-mute); font-weight: 600; }
.ad-pdp__title { font-size: clamp(1.6rem, 2.6vw, 2.35rem); font-weight: 800; margin: .6rem 0 .9rem; }
.ad-pdp__price { font-size: 1.05rem; letter-spacing: .04em; color: var(--ad-paper); }
.ad-pdp__price .woocommerce-Price-amount { font-weight: 500; }
.ad-pdp__short { color: var(--ad-mute-2); margin-top: 1.25rem; font-size: .95rem; }

/* run meter */
.ad-run { margin-top: 1.75rem; }
.ad-run__head { display: flex; justify-content: space-between; align-items: baseline; gap: 1rem; }
.ad-run__bar { height: 2px; background: var(--ad-line); margin-top: .6rem; position: relative; overflow: hidden; }
.ad-run__fill { position: absolute; inset: 0 auto 0 0; background: var(--ad-paper); }
.ad-run__note { font-size: var(--ad-micro); letter-spacing: var(--ad-track-mid); text-transform: uppercase; color: var(--ad-mute); margin-top: .55rem; }

/* size selector */
.ad-sizes { margin-top: 2rem; }
.ad-sizes__head { display: flex; justify-content: space-between; align-items: baseline; gap: 1rem; margin-bottom: .85rem; }
.ad-sizes__list { display: flex; flex-wrap: wrap; gap: .5rem; list-style: none; margin: 0; padding: 0; }
.ad-size {
  position: relative;
  min-width: 3.6rem; min-height: 3rem; padding: 0 .5rem;
  display: inline-flex; align-items: center; justify-content: center;
  border: 1px solid var(--ad-line); color: var(--ad-paper);
  font-size: var(--ad-small); font-weight: 600; letter-spacing: var(--ad-track-mid);
  text-transform: uppercase;
  transition: border-color .25s var(--ad-ease), background .25s var(--ad-ease), color .25s var(--ad-ease);
}
.ad-size:hover { border-color: var(--ad-paper); }
.ad-size[aria-pressed="true"] { background: var(--ad-paper); color: var(--ad-ink); border-color: var(--ad-paper); }
.ad-size--low { border-color: rgba(255,255,255,.32); }
.ad-size--low::after {
  content: attr(data-left);
  position: absolute; top: -.45rem; right: -.45rem;
  background: var(--ad-paper); color: var(--ad-ink);
  font-size: .55rem; font-weight: 700; letter-spacing: 0;
  padding: .08rem .3rem; line-height: 1.4;
}
.ad-size--gone {
  color: var(--ad-gone); border-color: var(--ad-line-soft); cursor: not-allowed;
  background-image: linear-gradient(to top left, transparent calc(50% - .5px), var(--ad-line) 50%, transparent calc(50% + .5px));
}
.ad-size--gone:hover { border-color: var(--ad-line-soft); }

.ad-sizes__msg { font-size: var(--ad-micro); letter-spacing: var(--ad-track-mid); text-transform: uppercase; color: var(--ad-mute); margin-top: .9rem; min-height: 1.2em; }

.ad-buybox { margin-top: 1.75rem; display: grid; gap: .6rem; }
.ad-buybox__note { font-size: var(--ad-micro); letter-spacing: var(--ad-track-mid); text-transform: uppercase; color: var(--ad-mute); text-align: center; }

/* notify-me */
.ad-notify { margin-top: 1.25rem; border: 1px solid var(--ad-line); padding: 1.15rem; }
.ad-notify .ad-form { margin-top: .9rem; max-width: none; }
.ad-notify .ad-form input[type=email] { min-height: 2.9rem; }

/* accordions */
.ad-acc { margin-top: 2.25rem; border-top: 1px solid var(--ad-line-soft); }
.ad-acc details { border-bottom: 1px solid var(--ad-line-soft); }
.ad-acc summary {
  list-style: none; cursor: pointer; padding: 1.05rem 0;
  display: flex; justify-content: space-between; align-items: center; gap: 1rem;
  font-size: var(--ad-micro); letter-spacing: var(--ad-track-wide);
  text-transform: uppercase; font-weight: 600;
}
.ad-acc summary::-webkit-details-marker { display: none; }
.ad-acc summary::after { content: '+'; color: var(--ad-mute); font-weight: 400; font-size: 1rem; }
.ad-acc details[open] summary::after { content: '–'; }
.ad-acc__body { padding-bottom: 1.2rem; color: var(--ad-mute-2); font-size: .92rem; }

/* countdown (pre-drop) */
.ad-count { display: flex; gap: 1.75rem; margin-top: 1.5rem; }
.ad-count__unit { text-align: left; }
.ad-count__n { font-size: 2rem; font-weight: 800; line-height: 1; letter-spacing: -.02em; font-variant-numeric: tabular-nums; }
.ad-count__l { font-size: var(--ad-micro); letter-spacing: var(--ad-track-wide); text-transform: uppercase; color: var(--ad-mute); margin-top: .4rem; }

/* archive / collection ----------------------------------------------------- */
.ad-archive__head { padding-block: clamp(2.5rem, 6vw, 5rem) 2rem; }
.ad-archive__title { font-size: var(--ad-h1); font-weight: 800; text-transform: uppercase; letter-spacing: .02em; }

/* sold-out archive state */
.ad-soldout-note {
  border: 1px solid var(--ad-line); padding: 1.5rem; text-align: center;
  color: var(--ad-mute-2); font-size: .92rem;
}

/* WooCommerce resets ------------------------------------------------------- */
.woocommerce-notices-wrapper .woocommerce-message,
.woocommerce-notices-wrapper .woocommerce-info,
.woocommerce-notices-wrapper .woocommerce-error {
  list-style: none; margin: 0 0 1rem; padding: 1rem 1.25rem;
  border: 1px solid var(--ad-line); background: var(--ad-surface);
  font-size: var(--ad-small); letter-spacing: var(--ad-track-mid); text-transform: uppercase;
}
.woocommerce-Price-amount { white-space: nowrap; }
.screen-reader-text { position:absolute!important; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); }


/* ---------- size guide ---------------------------------------------------- */
.ad-modal {
  border: 1px solid var(--ad-line); background: var(--ad-ink); color: var(--ad-paper);
  padding: 0; width: min(92vw, 34rem); max-height: 86vh;
}
.ad-modal::backdrop { background: rgba(0,0,0,.72); backdrop-filter: blur(3px); }
.ad-modal__head {
  display: flex; align-items: center; justify-content: space-between; gap: 1rem;
  padding: 1.15rem 1.4rem; border-bottom: 1px solid var(--ad-line-soft);
}
.ad-modal__body { padding: 1.4rem; overflow: auto; }
.ad-modal__close { font-size: 1.3rem; line-height: 1; color: var(--ad-mute); }
.ad-modal__close:hover { color: var(--ad-paper); }
.ad-table { width: 100%; border-collapse: collapse; font-size: .84rem; }
.ad-table th, .ad-table td { text-align: left; padding: .7rem .5rem; border-bottom: 1px solid var(--ad-line-soft); }
.ad-table th {
  font-size: var(--ad-micro); letter-spacing: var(--ad-track-mid);
  text-transform: uppercase; color: var(--ad-mute); font-weight: 600;
}
.ad-table td { color: var(--ad-mute-2); font-variant-numeric: tabular-nums; }
.ad-table td:first-child { color: var(--ad-paper); font-weight: 600; }
.ad-modal__note { color: var(--ad-mute); font-size: .8rem; margin: 1.1rem 0 0; }

/* ==========================================================================
   CART DRAWER
   ========================================================================== */
.ad-drawer { position: fixed; inset: 0; z-index: 120; }
.ad-drawer[hidden] { display: none !important; }
.ad-drawer__scrim {
  position: absolute; inset: 0; background: rgba(0,0,0,.66);
  backdrop-filter: blur(3px); opacity: 0; transition: opacity .35s var(--ad-ease);
}
.ad-drawer__panel {
  position: absolute; top: 0; right: 0; bottom: 0;
  width: min(100%, 27rem);
  background: var(--ad-ink); border-left: 1px solid var(--ad-line);
  display: flex; flex-direction: column;
  transform: translateX(100%); transition: transform .4s var(--ad-ease);
}
.ad-drawer.is-open .ad-drawer__scrim { opacity: 1; }
.ad-drawer.is-open .ad-drawer__panel { transform: none; }
@media (prefers-reduced-motion: reduce) {
  .ad-drawer__panel, .ad-drawer__scrim { transition: none; }
}

.ad-drawer__head {
  display: flex; align-items: center; justify-content: space-between; gap: 1rem;
  padding: 1.25rem 1.4rem; border-bottom: 1px solid var(--ad-line-soft); flex: 0 0 auto;
}
.ad-drawer__body { flex: 1 1 auto; overflow-y: auto; padding: 1.4rem; }
.ad-drawer__empty { display: grid; align-content: center; text-align: center; }
.ad-drawer__foot { flex: 0 0 auto; padding: 1.4rem; border-top: 1px solid var(--ad-line-soft); }

.ad-drawer__items { list-style: none; margin: 0; padding: 0; display: grid; gap: 1.4rem; }
.ad-drawer__item { display: grid; grid-template-columns: 5.5rem 1fr; gap: 1rem; }
.ad-drawer__thumb { background: var(--ad-surface); }
.ad-drawer__thumb img { width: 100%; aspect-ratio: 4/5; object-fit: cover; }
.ad-drawer__meta { display: grid; gap: .3rem; align-content: start; min-width: 0; }
.ad-drawer__name { font-size: var(--ad-small); letter-spacing: var(--ad-track-mid); text-transform: uppercase; font-weight: 600; }
.ad-drawer__size { font-size: var(--ad-micro); letter-spacing: var(--ad-track-mid); text-transform: uppercase; color: var(--ad-mute); }
.ad-drawer__warn { font-size: var(--ad-micro); letter-spacing: var(--ad-track-mid); text-transform: uppercase; color: var(--ad-paper); }
.ad-drawer__row { display: flex; align-items: baseline; justify-content: space-between; gap: 1rem; margin-top: .35rem; }
.ad-drawer__price { font-size: var(--ad-small); color: var(--ad-paper); }
.ad-drawer__remove { font-size: var(--ad-micro); letter-spacing: var(--ad-track-mid); text-transform: uppercase; color: var(--ad-mute); border-bottom: 1px solid transparent; }
.ad-drawer__remove:hover { color: var(--ad-paper); border-color: var(--ad-line); }

.ad-drawer__totals { display: flex; align-items: baseline; justify-content: space-between; gap: 1rem; }
.ad-drawer__subtotal { font-size: 1.05rem; font-weight: 500; }
.ad-drawer__ship { margin: 1.1rem 0 1.4rem; }
.ad-drawer__err {
  border: 1px solid var(--ad-line); padding: .8rem 1rem; margin-bottom: 1rem;
  font-size: var(--ad-micro); letter-spacing: var(--ad-track-mid); text-transform: uppercase;
}
body.ad-locked { overflow: hidden; }

/* ==========================================================================
   BLOCK CART + CHECKOUT — restyled rather than replaced
   WooCommerce's block checkout is the supported path forward, so it is
   re-skinned through its own custom properties plus targeted overrides.
   ========================================================================== */
.wp-block-woocommerce-cart,
.wp-block-woocommerce-checkout {
  --wp--preset--color--contrast: var(--ad-paper);
  max-width: var(--ad-max); margin-inline: auto;
  padding: var(--ad-section) var(--ad-gutter);
  color: var(--ad-paper);
}
.wc-block-components-title,
.wp-block-woocommerce-checkout h1,
.wp-block-woocommerce-cart h1 {
  font-family: var(--ad-font) !important; color: var(--ad-paper) !important;
  letter-spacing: var(--ad-track-tight);
}
.wc-block-components-checkout-step__heading,
.wc-block-cart__totals-title,
.wc-block-components-totals-item__label {
  font-size: var(--ad-micro) !important; letter-spacing: var(--ad-track-wide) !important;
  text-transform: uppercase !important; color: var(--ad-mute) !important; font-weight: 600 !important;
}
.wc-block-components-checkout-step__description,
.wc-block-components-address-card,
.wc-block-components-product-metadata,
.wc-block-components-order-summary-item__description {
  color: var(--ad-mute-2) !important;
}
.wc-block-components-text-input input,
.wc-block-components-textarea,
.wc-block-components-select__container,
.wc-block-components-combobox-control input {
  background: transparent !important; color: var(--ad-paper) !important;
  border: 1px solid var(--ad-line) !important; border-radius: 0 !important;
}
.wc-block-components-text-input label,
.wc-block-components-combobox-control label {
  color: var(--ad-mute) !important; font-size: .82rem !important;
}
.wc-block-components-button,
.wc-block-cart__submit-button,
.wc-block-components-checkout-place-order-button {
  background: var(--ad-paper) !important; color: var(--ad-ink) !important;
  border: 1px solid var(--ad-paper) !important; border-radius: 0 !important;
  font-size: var(--ad-small) !important; font-weight: 600 !important;
  letter-spacing: var(--ad-track-mid) !important; text-transform: uppercase !important;
  min-height: 3.25rem !important;
}
.wc-block-components-button:hover {
  background: transparent !important; color: var(--ad-paper) !important;
}
.wc-block-components-panel,
.wc-block-components-sidebar,
.wc-block-cart__sidebar,
.wc-block-components-order-summary {
  background: var(--ad-surface) !important; border: 1px solid var(--ad-line-soft) !important;
  border-radius: 0 !important;
}
.wc-block-components-totals-wrapper { border-color: var(--ad-line-soft) !important; }
.wc-block-components-radio-control__option,
.wc-block-components-shipping-rates-control__package {
  border-color: var(--ad-line-soft) !important;
}
.wc-block-components-notice-banner {
  background: var(--ad-surface) !important; color: var(--ad-paper) !important;
  border-radius: 0 !important; border-color: var(--ad-line) !important;
}

/* ==========================================================================
   ORDER RECEIVED
   ========================================================================== */
.ad-thanks { max-width: 46rem; }
.ad-thanks__num { font-variant-numeric: tabular-nums; }
.ad-thanks__grid {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 12rem), 1fr));
  gap: 1.5rem; margin: 2.5rem 0; padding-block: 1.75rem;
  border-block: 1px solid var(--ad-line-soft);
}
.ad-thanks__cell span { display: block; }
.ad-thanks__val { font-size: 1rem; margin-top: .4rem; }
.ad-thanks__items { list-style: none; margin: 0; padding: 0; display: grid; gap: 1.25rem; }
.ad-thanks__item { display: flex; justify-content: space-between; gap: 1.5rem; padding-bottom: 1.25rem; border-bottom: 1px solid var(--ad-line-soft); }
.ad-thanks__next { margin-top: 3rem; display: grid; gap: 1rem; }
.ad-thanks__step { display: grid; grid-template-columns: 2rem 1fr; gap: 1rem; align-items: start; }
.ad-thanks__step b { color: var(--ad-mute); font-weight: 600; font-size: var(--ad-micro); letter-spacing: var(--ad-track-wide); padding-top: .2rem; }

/* commerce pages need the width, not a reading measure */
.ad-commerce { padding-block: clamp(2.5rem, 6vw, 5rem) var(--ad-section); }
.ad-commerce__head { max-width: none; }
.ad-commerce__body > .wp-block-woocommerce-cart,
.ad-commerce__body > .wp-block-woocommerce-checkout { padding: 0; max-width: none; }

/* native selects inside the block checkout */
.wc-block-components-country-input select,
.wc-block-components-state-input select,
.ad-commerce__body select {
  background: var(--ad-surface) !important; color: var(--ad-paper) !important;
  border: 1px solid var(--ad-line) !important; border-radius: 0 !important;
  min-height: 3.1rem; padding: 0 .9rem; font: inherit;
}
.wc-block-components-form .wc-block-components-text-input.is-active label,
.wc-block-components-combobox-control.is-active label { color: var(--ad-mute) !important; }
.wc-block-components-checkbox__input { accent-color: var(--ad-paper); }
.wc-block-components-order-summary-item__image img { background: var(--ad-surface); }
.wc-block-components-totals-item__value,
.wc-block-components-totals-footer-item .wc-block-components-totals-item__value {
  color: var(--ad-paper) !important;
}
/* Only the figures must not break — a payment method name has to be allowed to wrap. */
.ad-thanks__grid .woocommerce-Price-amount,
.ad-thanks__num { white-space: nowrap; }

/* ==========================================================================
   ACCOUNT — the membership, not an admin panel
   ========================================================================== */
.ad-auth { display: grid; gap: 3rem; max-width: 60rem; }
.ad-auth--split { grid-template-columns: repeat(2, minmax(0, 1fr)); }
@media (max-width: 820px) { .ad-auth--split { grid-template-columns: minmax(0, 1fr); } }
.ad-auth__panel { border: 1px solid var(--ad-line-soft); padding: clamp(1.5rem, 3vw, 2.5rem); }
.ad-auth__panel--alt { background: var(--ad-surface); }
.ad-auth__form { display: grid; gap: 1.1rem; margin-top: 1.75rem; }
.ad-auth__row { display: flex; align-items: center; justify-content: space-between; gap: 1rem; flex-wrap: wrap; }

.ad-field { display: grid; gap: .45rem; }
.ad-field__label {
  font-size: var(--ad-micro); letter-spacing: var(--ad-track-wide);
  text-transform: uppercase; color: var(--ad-mute); font-weight: 600;
}
.ad-field input {
  min-height: 3.1rem; padding: 0 .9rem; font: inherit; font-size: .95rem;
  background: transparent; color: var(--ad-paper);
  border: 1px solid var(--ad-line); border-radius: 0;
}
.ad-field input:focus-visible { border-color: var(--ad-paper); }
.ad-check { display: inline-flex; align-items: center; gap: .5rem; font-size: var(--ad-micro); letter-spacing: var(--ad-track-mid); text-transform: uppercase; color: var(--ad-mute); }
.ad-check input { accent-color: var(--ad-paper); width: 1rem; height: 1rem; }

.ad-account__nav { display: flex; flex-wrap: wrap; gap: 1.75rem; padding-bottom: 1.25rem; border-bottom: 1px solid var(--ad-line-soft); margin-bottom: 2.5rem; }
.ad-account__link {
  font-size: var(--ad-micro); letter-spacing: var(--ad-track-wide);
  text-transform: uppercase; font-weight: 600; color: var(--ad-mute);
  padding-bottom: .35rem; border-bottom: 1px solid transparent;
  transition: color .25s var(--ad-ease), border-color .25s var(--ad-ease);
}
.ad-account__link:hover { color: var(--ad-paper); }
.ad-account__link.is-current { color: var(--ad-paper); border-color: var(--ad-paper); }

.ad-account__cards {
  display: grid; gap: 1px; background: var(--ad-line-soft);
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 15rem), 1fr));
  border: 1px solid var(--ad-line-soft);
}
.ad-account__card { background: var(--ad-ink); padding: 1.6rem; }
.ad-account__stat { font-size: 1.5rem; font-weight: 700; letter-spacing: var(--ad-track-tight); margin: .75rem 0 .5rem; }
.ad-account__note { color: var(--ad-mute); font-size: .84rem; margin: 0; }

/* WooCommerce account tables inherit the system */
.woocommerce-orders-table, .woocommerce-table--order-details, .shop_table {
  width: 100%; border-collapse: collapse; font-size: .88rem;
}
.woocommerce-orders-table th, .woocommerce-table--order-details th, .shop_table th {
  text-align: left; padding: .8rem .5rem; border-bottom: 1px solid var(--ad-line);
  font-size: var(--ad-micro); letter-spacing: var(--ad-track-mid);
  text-transform: uppercase; color: var(--ad-mute); font-weight: 600;
}
.woocommerce-orders-table td, .woocommerce-table--order-details td, .shop_table td {
  padding: .9rem .5rem; border-bottom: 1px solid var(--ad-line-soft); color: var(--ad-mute-2);
}
.woocommerce-EditAccountForm, .woocommerce-address-fields { display: grid; gap: 1.1rem; max-width: 34rem; }
.woocommerce-EditAccountForm input, .woocommerce-address-fields input, .woocommerce-address-fields select {
  min-height: 3.1rem; padding: 0 .9rem; font: inherit; background: transparent;
  color: var(--ad-paper); border: 1px solid var(--ad-line); border-radius: 0; width: 100%;
}
.woocommerce-Button, .woocommerce-button, .button {
  display: inline-flex; align-items: center; justify-content: center;
  min-height: 3.25rem; padding: 0 1.9rem;
  background: var(--ad-paper); color: var(--ad-ink); border: 1px solid var(--ad-paper);
  font-size: var(--ad-small); font-weight: 600; letter-spacing: var(--ad-track-mid); text-transform: uppercase;
}
.woocommerce-Button:hover, .woocommerce-button:hover, .button:hover { background: transparent; color: var(--ad-paper); }

/* WordPress 7.1 emits root layout + padding onto <body> for classic themes as
   well as block themes, which constrained the whole site to the theme.json
   contentSize. theme.json no longer asks for it; this is the belt-and-braces. */
body.theme-afterdark {
  max-width: none !important;
  margin: 0 !important;
  padding: 0 !important;
}

/* ---------- waitlist ---------- */
/* The honeypot must be reachable by bots and invisible to people — moved off
   screen rather than display:none, which some bots detect and skip. */
.ad-hp {
  position: absolute !important;
  left: -9999px !important;
  width: 1px; height: 1px;
  opacity: 0; pointer-events: none;
}
.ad-consent {
  margin: .75rem 0 0;
  font-size: var(--ad-micro);
  letter-spacing: .04em;
  color: var(--ad-mute);
}
.ad-form__err {
  margin: .65rem 0 0;
  font-size: var(--ad-small);
  color: #e5645f;
}

/* ==========================================================================
   MENU PANEL — the header's three-line control had no behaviour behind it
   ========================================================================== */
.ad-menu { position: fixed; inset: 0; z-index: 130; }
.ad-menu[hidden] { display: none !important; }
.ad-menu__scrim {
  position: absolute; inset: 0; background: rgba(0,0,0,.66);
  backdrop-filter: blur(3px); opacity: 0; transition: opacity .35s var(--ad-ease);
}
.ad-menu__panel {
  position: absolute; top: 0; left: 0; bottom: 0;
  width: min(100%, 24rem);
  background: var(--ad-ink); border-right: 1px solid var(--ad-line);
  display: flex; flex-direction: column;
  transform: translateX(-100%); transition: transform .4s var(--ad-ease);
}
.ad-menu.is-open .ad-menu__scrim { opacity: 1; }
.ad-menu.is-open .ad-menu__panel { transform: none; }
@media (prefers-reduced-motion: reduce) {
  .ad-menu__panel, .ad-menu__scrim { transition: none; }
}
.ad-menu__head {
  display: flex; align-items: center; justify-content: space-between; gap: 1rem;
  padding: 1.25rem 1.4rem; border-bottom: 1px solid var(--ad-line-soft); flex: 0 0 auto;
}
.ad-menu__head .ad-brand { color: var(--ad-paper); }
.ad-menu__head .ad-logo { height: .68rem; }
.ad-menu__body { flex: 1 1 auto; overflow-y: auto; padding: 1.6rem 1.4rem; }
.ad-menu__body .ad-nav { display: grid; gap: 0; }
.ad-menu__body .ad-nav a {
  padding: 1rem 0; border-bottom: 1px solid var(--ad-line-soft);
  font-size: .95rem; letter-spacing: var(--ad-track-mid); color: var(--ad-paper);
}
.ad-menu__body .ad-nav a:hover { color: var(--ad-mute); }
.ad-menu__foot {
  flex: 0 0 auto; padding: 1.4rem; border-top: 1px solid var(--ad-line-soft);
  display: grid; gap: .9rem;
}
.ad-menu__foot a {
  font-size: var(--ad-micro); letter-spacing: var(--ad-track-wide);
  text-transform: uppercase; color: var(--ad-mute);
}
.ad-menu__foot a:hover { color: var(--ad-paper); }

/* ==========================================================================
   HOLDING PAGE — everything the site is until the drop opens
   ========================================================================== */
.ad-holding {
  position: relative; min-height: 100svh;
  display: grid; grid-template-rows: 1fr auto;
}
.ad-holding__media { position: absolute; inset: 0; }
.ad-holding__media img { width: 100%; height: 100%; object-fit: cover; }
.ad-holding__scrim {
  position: absolute; inset: 0;
  /* Two layers: a vertical wash so the type stays legible and the page settles
     into solid ink where the form sits, over a soft radial that keeps the
     photography readable rather than crushing it to black. */
  background:
    linear-gradient(180deg, rgba(13,13,15,.25) 0%, rgba(13,13,15,.55) 45%, rgba(13,13,15,.92) 100%),
    radial-gradient(120% 90% at 50% 38%, rgba(13,13,15,.3) 0%, rgba(13,13,15,.8) 62%, var(--ad-ink) 100%);
}
.ad-holding__body {
  position: relative; align-self: center; text-align: center;
  padding: clamp(4rem, 12vh, 8rem) var(--ad-gutter) clamp(2rem, 6vh, 4rem);
  max-width: 44rem; margin-inline: auto; width: 100%;
}
/* The mark is the page. It sits over photography, so it carries a soft
   shadow — enough to hold its edge on a light frame, invisible on a dark one. */
.ad-holding__brand {
  display: inline-block; color: var(--ad-paper);
  filter: drop-shadow(0 2px 30px rgba(0, 0, 0, .55));
}
.ad-holding__brand .ad-logo {
  width: clamp(13rem, 36vw, 20rem); height: auto;
}
@media (max-width: 560px) {
  .ad-holding__brand .ad-logo { width: min(16rem, 74vw); }
}
.ad-holding__drop { margin-top: 1.4rem; }
.ad-holding__title {
  margin-top: 1.9rem;
  font-size: clamp(1.9rem, 5.2vw, 3.1rem); font-weight: 800;
  letter-spacing: .01em; line-height: 1.08;
}
.ad-holding__sub {
  margin-top: .95rem; color: var(--ad-mute-2);
  font-size: var(--ad-small); letter-spacing: var(--ad-track-mid); text-transform: uppercase;
}
.ad-holding__count { margin-top: 2.6rem; justify-content: center; }
.ad-holding__form { margin-top: 2.6rem; }
.ad-holding__form .ad-consent { text-align: center; }
.ad-holding__signin {
  margin-top: 2rem; font-size: var(--ad-micro);
  letter-spacing: var(--ad-track-mid); text-transform: uppercase; color: var(--ad-mute);
}
.ad-holding__signin .ad-link { margin-left: .4rem; color: var(--ad-paper); }
.ad-holding__foot {
  position: relative;
  display: flex; flex-wrap: wrap; gap: 1rem 2rem;
  align-items: center; justify-content: space-between;
  padding: 1.6rem var(--ad-gutter);
  border-top: 1px solid var(--ad-line-soft);
}
.ad-holding__foot, .ad-holding__foot a {
  font-size: var(--ad-micro); letter-spacing: var(--ad-track-mid);
  text-transform: uppercase; color: var(--ad-mute);
}
.ad-holding__foot a:hover { color: var(--ad-paper); }
.ad-holding__links { display: flex; flex-wrap: wrap; gap: 1.4rem; }
@media (max-width: 640px) {
  .ad-holding__foot { justify-content: center; text-align: center; }
}

/* The admin bar is fixed at the top of the viewport, so full-height fixed
   overlays start underneath it and lose their first 32px. Only signed-in
   staff ever see this, but that includes everyone building the site. */
body.admin-bar .ad-menu,
body.admin-bar .ad-drawer { top: 32px; }
@media screen and (max-width: 782px) {
  body.admin-bar .ad-menu,
  body.admin-bar .ad-drawer { top: 46px; }
}
