/* ============================================================
   Hamburg · OTF — Base element defaults & signature utilities
   Lightweight; tokens do the heavy lifting. Safe for consumers.
   ============================================================ */

body {
  font-family: var(--font-body);
  font-size: var(--text-base);
  line-height: var(--leading-normal);
  color: var(--text-body);
  background: var(--surface-page);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

/* Display / poster headline */
.otf-display {
  font-family: var(--font-display);
  font-weight: 400;
  text-transform: uppercase;
  line-height: var(--leading-none);
  letter-spacing: var(--tracking-tight);
  color: var(--color-primary);
}

/* Tracked-out uppercase overline / eyebrow */
.otf-overline {
  font-family: var(--font-heading);
  font-weight: var(--fw-bold);
  text-transform: uppercase;
  letter-spacing: var(--tracking-caps);
  font-size: var(--text-xs);
  color: var(--color-accent);
}

/* Festive brush accent */
.otf-script {
  font-family: var(--font-script);
  font-weight: 400;
  color: var(--color-festival);
  line-height: 1.1;
}

/* Barn-quilt dotted divider band (the medallion's clock dots) */
.otf-dotted {
  background-image: radial-gradient(var(--cardinal-500) 22%, transparent 24%);
  background-size: 18px 18px;
  background-repeat: repeat-x;
  background-position: center;
  height: 18px;
}

/* Soft warm card surface */
.otf-card {
  background: var(--surface-card);
  border: var(--border-hairline) solid var(--border-subtle);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-sm);
}

*:focus-visible {
  outline: none;
  box-shadow: var(--focus-ring);
  border-radius: var(--radius-xs);
}
