/* ============================================================
   BUKA · brands.css: the /brands page (brand placement)
   Page layout only. The components come from buka.css:
   .p-hero, .lanes/.lane, .stats/.stat, .phases/.phase,
   .contact, .form.
   Rules kept: no CSS transition on transform (hover movement
   uses `translate`); no opacity 0 on content; every number on
   the page is plain HTML text, never generated or counted up.
   ============================================================ */

/* ---- Anchors clear the sticky header (two rows on phones) ---- */
main [id] { scroll-margin-top: 84px; }
@media (max-width: 700px) { main [id] { scroll-margin-top: 120px; } }

/* ---- 1. Hero ---- */
.brands-hero { position: relative; overflow: hidden; }
.brands-hero > .wrap { position: relative; z-index: 1; }
.brands-hero h1 { margin-top: 18px; }
.lede__core { display: block; margin-top: 12px; color: var(--text-hi); font-weight: 700; }
/* The brand's play mark, drawn large and quiet behind the hero on wide screens. */
@media (min-width: 1080px) {
  .brands-hero::after {
    content: "";
    position: absolute; z-index: 0;
    right: calc(max(0px, (100vw - var(--max)) / 2) + var(--gutter));
    top: 50%; translate: 0 -50%;
    width: min(30vw, 400px); aspect-ratio: 1;
    background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'%3E%3Cpath d='M19 12.5C19 7.2 24.7 3.9 29.3 6.5L88.4 44.8C92.9 47.4 92.9 53.9 88.4 56.5L29.3 94.8C24.7 97.4 19 94.1 19 88.8V12.5Z' fill='%23F5B405' fill-opacity='0.05' stroke='%23F5B405' stroke-opacity='0.4' stroke-width='0.35'/%3E%3C/svg%3E") no-repeat center / contain;
    pointer-events: none;
  }
}

/* ---- 2. What you buy ----
   The rate card's line is long, so it runs a step smaller and wider
   than the other section heads to land in two or three lines. */
#buy .sec-head { max-width: 920px; }
#buy .sec-head h2 { font-size: clamp(2rem, 4.6vw, 3.6rem); }
.buy .lane h3 .tri { font-size: 10px; }
/* Three cards stay one row down to tablet width (no 2 + 1 orphan). */
.lanes.buy { grid-template-columns: repeat(3, minmax(0, 1fr)); }
@media (max-width: 760px) { .lanes.buy { grid-template-columns: minmax(0, 1fr); } }

/* ---- 3. Ways in: a ladder from a title card to a whole series ---- */
.lanes.ways { grid-template-columns: repeat(4, minmax(0, 1fr)); }
@media (max-width: 980px) { .lanes.ways { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 640px) { .lanes.ways { grid-template-columns: minmax(0, 1fr); } }
.ways .lane { --d: 1; }
.ways .lane:nth-child(2) { --d: 2; }
.ways .lane:nth-child(3) { --d: 3; }
.ways .lane:nth-child(4) { --d: 4; }
.ways .lane:nth-child(5) { --d: 5; }
/* Depth pips: five segments, filled to how deep the brand goes. Decoration only. */
.ways .lane::before {
  content: "";
  display: block;
  width: 68px; height: 4px;
  margin-bottom: 18px;
  background: linear-gradient(90deg, var(--amber) calc(var(--d) * 14px), var(--line-strong) 0);
  -webkit-mask: repeating-linear-gradient(90deg, #000 0 12px, transparent 12px 14px);
          mask: repeating-linear-gradient(90deg, #000 0 12px, transparent 12px 14px);
}
.ways__whole {
  grid-column: 1 / -1;
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.7fr);
  gap: 10px clamp(24px, 4vw, 56px);
  align-items: baseline;
  background: var(--bg);
  border-color: rgba(245, 180, 5, 0.45);
}
.ways__whole::before { grid-column: 1 / -1; }
.ways .ways__whole h3 { font-size: var(--step-h3); line-height: 1.15; text-wrap: balance; }
.ways .ways__whole p { margin-top: 0; font-size: var(--step-body-lg); color: var(--text); max-width: 60ch; }
@media (max-width: 760px) {
  .ways__whole { grid-template-columns: minmax(0, 1fr); }
  .ways .ways__whole p { margin-top: 4px; }
}

/* ---- 5. The recall test ----
   Two paragraphs beside four tiles on desktop, stacked on phones.
   The caveat spans the full width under both, in full-contrast
   type at the size of the story, so it reads with the number
   rather than under it. */
.recall {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr);
  gap: clamp(28px, 4vw, 64px) clamp(28px, 5vw, 72px);
  align-items: start;
}
@media (max-width: 880px) { .recall { grid-template-columns: minmax(0, 1fr); } }
.recall__story p { font-size: var(--step-body-lg); line-height: 1.6; color: var(--text); max-width: 56ch; }
.recall__story p + p { margin-top: 18px; }

.stats.recall__stats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.recall__stats .stat { border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.recall__stats .stat:nth-child(2n) { border-right: none; }
.recall__stats .stat:nth-child(n+3) { border-bottom: none; }

.recall__caveat {
  grid-column: 1 / -1;
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 2.2fr);
  gap: 14px clamp(24px, 4vw, 56px);
  padding: clamp(22px, 3.2vw, 44px);
  border: 1px solid rgba(245, 180, 5, 0.45);
  border-radius: var(--r-lg);
  background: var(--bg);
}
@media (max-width: 880px) { .recall__caveat { grid-template-columns: minmax(0, 1fr); } }
.recall__caveat h3 { font-size: var(--step-h3); line-height: 1.15; letter-spacing: -0.01em; text-wrap: balance; }
.recall__caveat p { font-size: var(--step-body-lg); line-height: 1.6; color: var(--text-hi); max-width: 68ch; }

/* ---- 6. How a campaign runs: numbers come from a CSS counter ---- */
.steps { list-style: none; margin: 0; padding: 0; counter-reset: step; }
.steps .phase { grid-template-columns: minmax(64px, 180px) minmax(0, 1fr); }
.steps .phase::before {
  counter-increment: step;
  content: counter(step, decimal-leading-zero);
  font: 500 var(--step-mono)/1 var(--mono);
  letter-spacing: var(--track-mono-wide);
  color: var(--amber);
  padding-top: 0.55em;
}
@media (max-width: 700px) { .steps .phase { grid-template-columns: 40px minmax(0, 1fr); gap: 12px; } }
.steps .phase p strong { color: var(--text-hi); font-weight: 700; }

/* ---- 7. Read more ---- */
#how { padding-bottom: clamp(36px, 5vw, 64px); }
#read { padding-top: clamp(36px, 5vw, 64px); }
.reads {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 2.6fr);
  gap: 18px clamp(24px, 5vw, 72px);
  align-items: start;
}
.reads > .eyebrow { padding-top: 22px; }
@media (max-width: 760px) {
  .reads { grid-template-columns: minmax(0, 1fr); }
  .reads > .eyebrow { padding-top: 0; }
}
.reads__list { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--line); }
.reads__list li { border-bottom: 1px solid var(--line); }
.reads__list a {
  display: flex; align-items: center; justify-content: space-between; gap: 18px;
  min-height: var(--tap);
  padding: 20px 4px;
  font: 700 clamp(1.0625rem, 1.8vw, 1.375rem)/1.3 var(--sans);
  letter-spacing: -0.01em;
  color: var(--text-hi);
  transition: color 140ms ease;
}
.reads__list a::after {
  content: "";
  flex: none;
  width: 0; height: 0;
  border-top: 0.36em solid transparent;
  border-bottom: 0.36em solid transparent;
  border-left: 0.54em solid var(--amber);
  translate: 0 0;
  transition: translate 200ms var(--ease-play);
}
.reads__list a:hover { color: var(--amber); }
.reads__list a:hover::after { translate: 6px 0; }

/* ---- 8. Contact ---- */
.contact__direct h2 { margin-top: 16px; font-size: clamp(2rem, 4.4vw, 3.4rem); }
.contact__line { margin-top: 20px; font-size: var(--step-body-lg); color: var(--text-mut); max-width: 40ch; }
.contact__direct .contact__wa { margin-top: 24px; color: var(--text-hi); }
.contact__direct .contact__wa:hover { color: var(--amber); }
