/* ============================================================
   OliverDeck — BASE · TYPOGRAPHY
   Semantic type roles as utility classes. One definition each —
   the duplicate .od-eyebrow / .od-hint that lived in both
   tokens.css and kit.css are consolidated here (eyebrow) and in
   primitives (hint). Manrope for everything except display +
   numerals, which use Unbounded.
   ============================================================ */

.od-display-1 {
  font-family: var(--od-font-display);
  font-size: var(--fs-d1);
  line-height: var(--lh-tight);
  letter-spacing: var(--tracking-tight);
  font-weight: var(--fw-semi);
}
.od-display-2 {
  font-family: var(--od-font-display);
  font-size: var(--fs-d2);
  line-height: var(--lh-tight);
  letter-spacing: var(--tracking-tight);
  font-weight: var(--fw-medium);
}
.od-h1 {
  font-family: var(--od-font-display);
  font-size: var(--fs-h1);
  line-height: var(--lh-snug);
  letter-spacing: var(--tracking-snug);
  font-weight: var(--fw-semi);
}
.od-h2 {
  font-family: var(--od-font-body);
  font-size: var(--fs-h2);
  line-height: var(--lh-snug);
  letter-spacing: var(--tracking-snug);
  font-weight: var(--fw-bold);
}
.od-h3 {
  font-family: var(--od-font-body);
  font-size: var(--fs-h3);
  line-height: 1.3;
  font-weight: var(--fw-bold);
}
.od-h4 {
  font-family: var(--od-font-body);
  font-size: var(--fs-h4);
  line-height: 1.35;
  font-weight: var(--fw-semi);
}
.od-body-lg {
  font-family: var(--od-font-body);
  font-size: var(--fs-body-lg);
  line-height: var(--lh-body);
  font-weight: var(--fw-regular);
}
.od-body {
  font-family: var(--od-font-body);
  font-size: var(--fs-body);
  line-height: var(--lh-body);
  font-weight: var(--fw-regular);
}
.od-body-sm {
  font-family: var(--od-font-body);
  font-size: var(--fs-body-sm);
  line-height: var(--lh-body);
}
.od-caption {
  font-family: var(--od-font-body);
  font-size: var(--fs-small);
  line-height: var(--lh-snug);
  color: var(--od-color-text-muted);
}

/* Eyebrow — the section kicker. SINGLE canonical definition.
   (was duplicated with conflicting values in tokens.css + kit.css) */
.od-eyebrow {
  font-family: var(--od-font-body);
  font-size: var(--fs-tiny);
  text-transform: uppercase;
  letter-spacing: var(--tracking-caps);
  font-weight: var(--fw-bold);
  color: var(--od-color-text-brand);
  margin: 0 0 10px;
}
/* Caps label — muted variant for table heads, meta rows */
.od-caps {
  font-family: var(--od-font-body);
  font-size: var(--fs-tiny);
  text-transform: uppercase;
  letter-spacing: var(--tracking-caps);
  font-weight: var(--fw-bold);
  color: var(--od-color-text-muted);
}
.od-mono {
  font-family: var(--od-font-mono);
  font-size: var(--fs-body-sm);
  letter-spacing: 0;
}

/* Numerals in display face look best tabular for prices/stats */
.od-num { font-family: var(--od-font-display); font-variant-numeric: tabular-nums; letter-spacing: var(--tracking-snug); }

/* ---------- ICON FONT — Material Symbols Outlined ---------- */
.material-symbols-outlined {
  font-family: 'Material Symbols Outlined';
  font-weight: normal;
  font-style: normal;
  font-size: 24px;
  line-height: 1;
  letter-spacing: normal;
  text-transform: none;
  display: inline-block;
  white-space: nowrap;
  word-wrap: normal;
  direction: ltr;
  user-select: none;
  -webkit-font-feature-settings: 'liga';
  font-feature-settings: 'liga';
  -webkit-font-smoothing: antialiased;
  font-variation-settings: 'wght' 300, 'FILL' 0, 'opsz' 24;
}
