/* ==========================================================================
   bydex.ca 2.0 — Signature brand components
   OverlayBox · RuleLabel · Eyebrow · Tag · Button · Numerals · Card ·
   QuoteBlock · Divider · Header/nav primitives
   All values come from tokens — no raw hex here.
   ========================================================================== */

/* ---- Type roles ---- */
.eyebrow {
  font-family: var(--font-body);
  font-size: var(--fs-label);
  font-weight: var(--fw-semibold);
  letter-spacing: var(--track-max);
  text-transform: uppercase;
  color: var(--text-label);
}

.callout {
  font-family: var(--font-callout);
  font-weight: var(--fw-bold);
  font-size: var(--fs-callout);
  letter-spacing: var(--track-wider);
  text-transform: uppercase;
}

.headline {
  font-family: var(--font-display);
  font-weight: var(--fw-regular);
  line-height: var(--lh-snug);
}
.headline--xl { font-size: clamp(48px, 9vw, var(--fs-display-xl)); line-height: var(--lh-tight); }
.headline--l  { font-size: clamp(38px, 6vw, var(--fs-display-l)); line-height: var(--lh-tight); }
.headline--m  { font-size: clamp(30px, 4.5vw, var(--fs-display-m)); }
.headline--s  { font-size: var(--fs-display-s); }

.quote {
  font-family: var(--font-display);
  font-style: italic;
  font-weight: var(--fw-regular);
  line-height: var(--lh-snug);
}

.body-copy {
  color: var(--text-secondary);
  max-width: var(--measure);
}

/* ---- RuleLabel — hairlines flanking a tracked word ---- */
.rule-label {
  display: flex;
  align-items: center;
  gap: var(--space-4);
  font-family: var(--font-callout);
  font-size: var(--fs-label);
  font-weight: var(--fw-bold);
  letter-spacing: var(--track-label);
  text-transform: uppercase;
  color: var(--text-label);
}
.rule-label::before,
.rule-label::after {
  content: "";
  flex: 1;
  height: var(--hairline);
  background: var(--border-hairline);
  transform-origin: center;
}
.rule-label--start::before { display: none; }
.rule-label--start::after { max-width: 120px; }

/* ---- Tag — the one rounded element ---- */
.tag {
  display: inline-block;
  padding: 6px var(--space-4);
  border: var(--border-thin);
  border-radius: var(--radius-pill);
  font-family: var(--font-callout);
  font-size: var(--fs-label);
  font-weight: var(--fw-medium);
  letter-spacing: var(--track-label);
  text-transform: uppercase;
  color: var(--text-secondary);
  transition: var(--transition-base);
}

/* ---- Buttons — ink shifts only, never color ---- */
.btn {
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  padding: var(--space-4) var(--space-8);
  border: 1px solid var(--dm-black);
  border-radius: var(--radius-xs);
  font-family: var(--font-callout);
  font-weight: var(--fw-bold);
  font-size: var(--fs-caption);
  letter-spacing: var(--track-wider);
  text-transform: uppercase;
  background: var(--dm-black);
  color: var(--dm-white);
  transition: opacity var(--dur-base) var(--ease-standard),
              background var(--dur-base) var(--ease-standard);
}
.btn:hover { opacity: 0.82; }
.btn:active { opacity: 0.7; }

.btn--ghost { background: transparent; color: var(--dm-black); }
.btn--ghost:hover { opacity: 1; background: var(--hover-overlay); }

.on-dark .btn { background: var(--dm-white); color: var(--dm-black); border-color: var(--dm-white); }
.on-dark .btn--ghost { background: transparent; color: var(--dm-white); border-color: var(--border-on-dark); }
.on-dark .btn--ghost:hover { background: var(--hover-overlay-dark); }

/* ---- OverlayBox — text protection over photography ---- */
.overlay-box {
  display: inline-block;
  background: var(--overlay-box);
  color: var(--dm-white);
  padding: var(--space-5) var(--space-6);
  max-width: var(--measure);
}

.scrim-bottom { position: relative; }
.scrim-bottom::after {
  content: "";
  position: absolute;
  inset: 0;
  background: var(--overlay-scrim);
  pointer-events: none;
}

/* ---- Oversized numerals ---- */
.numeral {
  font-family: var(--font-callout);
  font-weight: var(--fw-heavy);
  font-size: clamp(40px, 6vw, 64px);
  line-height: 1;
  color: var(--dm-grey-light);
}
.on-dark .numeral { color: var(--text-on-dark-mute); }

/* ---- Card ---- */
.card {
  background: var(--surface-card);
  border: var(--border-thin);
  border-radius: var(--radius-sm);
  padding: var(--pad-card);
}
.card--accent { border-top: var(--border-accent); border-radius: 0; }

/* ---- Divider ---- */
.divider { border: 0; border-top: var(--border-thin); margin: 0; }

/* ---- Site header ---- */
.site-header {
  position: sticky;
  top: 0;
  z-index: 100;
  background: var(--surface-page);
  border-bottom: var(--hairline) solid transparent;
  transition: border-color var(--dur-base) var(--ease-standard);
}
.site-header.is-scrolled { border-bottom-color: var(--border-hairline); }
.site-header > .container {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding-block: var(--space-4);
}
.site-nav { display: flex; gap: var(--space-8); }
.site-nav a {
  font-family: var(--font-callout);
  font-size: var(--fs-label);
  font-weight: var(--fw-medium);
  letter-spacing: var(--track-label);
  text-transform: uppercase;
  color: var(--text-secondary);
  transition: color var(--dur-fast) var(--ease-standard);
}
.site-nav a:hover { color: var(--text-primary); }
