/* Public typography system
   A single readability layer from 320px mobile to 5K/ultrawide displays.
   Loaded after page-specific and responsive styles. */

:root {
  --type-body: clamp(1rem, .97rem + .12vw, 1.125rem);
  --type-sm: clamp(.875rem, .84rem + .12vw, .975rem);
  --type-xs: clamp(.75rem, .72rem + .08vw, .825rem);
  --type-label: clamp(.75rem, .72rem + .09vw, .84rem);
  --type-button: clamp(.75rem, .72rem + .08vw, .825rem);
  --type-card-title: clamp(2rem, 1.65rem + 1.55vw, 3.35rem);
  --type-section-title: clamp(2.9rem, 2.05rem + 3.65vw, 7.15rem);
  --type-display: clamp(3.7rem, 2.2rem + 5.5vw, 9.75rem);
  --measure-body: 68ch;
  --measure-wide: 74ch;
}

body {
  font-size: var(--type-body);
  line-height: 1.65;
}

h1,
h2,
h3 {
  line-height: .94;
  letter-spacing: -.04em;
}

/* Core display hierarchy */
.hero h1,
.allergen-hero h1,
.menu-page-hero h1,
.product-hero__content h1,
.final-cta h2 {
  font-size: var(--type-display);
  line-height: .9;
}

h2,
.guide-heading h2,
.dietary-intro h2,
.cross-contact h2,
.business-grid h2,
.product-details__intro h2,
.product-related__heading h2,
.faq-intro h2,
.deals-intro h2,
.find-copy h2 {
  font-size: var(--type-section-title);
  line-height: .92;
}

.craft-chapter h2 {
  font-size: clamp(3rem, 2.15rem + 3.6vw, 7rem);
  line-height: .92;
}

.safety-notice h2,
.choice-steps h3,
.deal-card h3,
.product-detail-block h3,
.public-offer h3 {
  line-height: 1;
}

/* Navigation, labels and controls never drop into micro-text territory. */
.utility-strip,
.eyebrow,
.chapter-index,
.menu-tag,
.menu-filter,
.menu-status,
.item-pill,
.menu-footer-actions p,
.menu-breadcrumbs,
.product-availability,
.product-hero .menu-prices small,
.menu-prices small,
.menu-allergens,
.product-detail-block > span,
.product-allergen-note,
.location-details dt,
.special-hours-note,
.consent-kicker,
.text-button,
.order-note,
.footer-grid h2,
.footer-bottom,
.page-jumps a,
.safety-notice__label,
.choice-steps > li > span,
.source-link,
.allergen-list li > span,
.allergen-icon-credit,
.mobile-actions a,
.brand-name small,
.craft-hud,
.quick-trust small,
.trust-strip small,
.deal-card > span,
.deal-card a,
.map-pin strong,
.map-card > p {
  font-size: var(--type-label);
}

.desktop-nav a,
.menu-page-header nav,
.info-header nav a,
.legal-header nav a:not(.button),
.button {
  font-size: var(--type-button);
}

/* Body and supporting copy */
.hero-intro,
.allergen-lead,
.product-lead,
.legal-lead {
  font-size: clamp(1.05rem, 1rem + .22vw, 1.25rem);
  line-height: 1.65;
}

.story-side > p,
.craft-copy-card > p:not(.chapter-index),
.section-heading__aside p,
.deals-intro > p:not(.eyebrow),
.deal-card p,
.faq-intro > p:last-child,
.faq-list details p,
.final-cta__content > p:not(.eyebrow):not(.order-note),
.business-grid address,
.public-hours,
.public-offer p:not(.eyebrow),
.safety-notice p:not(.safety-notice__label),
.choice-steps p,
.dietary-intro > p:last-child,
.dietary-definitions dd,
.cross-contact__grid > div:last-child p,
.allergen-cta__inner > p,
.product-details__intro > p:last-child,
.product-detail-empty,
.legal-content p,
.legal-content li {
  font-size: var(--type-sm);
  line-height: 1.7;
}

.pizza-card__body .menu-description {
  font-size: var(--type-sm);
  line-height: 1.62;
}

.pizza-card__body .menu-ingredients,
.product-ingredients li,
.product-detail-block .menu-allergens,
.product-allergen-note,
.preference-row p,
.consent > div > p:last-child,
.noscript {
  font-size: var(--type-xs);
  line-height: 1.6;
}

.pizza-card :is(h2, h3),
.menu-item-card__heading :is(h2, h3),
.menu-section .menu-item-card__heading :is(h2, h3),
.menu-product-title {
  font-size: var(--type-card-title);
  line-height: .96;
}

.menu-prices strong {
  font-size: clamp(.9rem, .86rem + .12vw, 1rem);
  line-height: 1.2;
}

.product-hero .menu-prices strong {
  font-size: clamp(2rem, 1.75rem + 1vw, 3rem);
}

/* Small-copy contrast. Tiny low-opacity type was difficult to read. */
.brand-name small,
.quick-trust small,
.trust-strip small,
.hero-utility,
.craft-hud,
.footer-brand p,
.footer-grid h2,
.footer-grid address,
.footer-grid a,
.footer-bottom,
.order-note,
.product-availability,
.product-hero .menu-prices small,
.allergen-list small,
.allergen-icon-credit,
.info-header nav a {
  color: rgb(242 231 213 / 72%);
}

.menu-ingredients,
.menu-prices small,
.menu-allergens,
.menu-footer-actions p,
.location-details dt,
.product-allergen-note,
.product-detail-empty,
.dietary-definitions dd,
.choice-steps p,
.legal-date {
  color: rgb(11 9 8 / 66%);
}

/* Keep editorial copy at readable line lengths on large monitors. */
.hero-intro,
.allergen-lead,
.product-lead,
.story-side > p,
.section-heading__aside p,
.faq-intro > p:last-child,
.product-details__intro > p:last-child,
.legal-lead,
.legal-content p,
.legal-content li,
.cross-contact__grid > div:last-child p,
.dietary-intro > p:last-child {
  max-width: var(--measure-body);
}

.legal-content section {
  max-width: var(--measure-wide);
}

.footer-grid a,
.footer-grid address {
  font-size: var(--type-sm);
  line-height: 1.5;
}

.footer-brand p {
  font-size: clamp(1.1rem, 1.04rem + .16vw, 1.25rem);
  line-height: 1.45;
}

.allergen-list strong {
  font-size: clamp(1.35rem, 1.25rem + .3vw, 1.65rem);
  line-height: 1.08;
}

.allergen-list small {
  font-size: var(--type-xs);
  line-height: 1.55;
}

.dietary-definitions dt {
  font-size: clamp(1.45rem, 1.35rem + .3vw, 1.7rem);
  line-height: 1.15;
}

.faq-list summary {
  font-size: clamp(1.3rem, 1.15rem + .55vw, 1.85rem);
  line-height: 1.25;
}

/* Tablet: preserve hierarchy without allowing viewport-width headings to dominate. */
@media (max-width: 1040px) {
  :root {
    --type-display: clamp(3.65rem, 2.65rem + 5.4vw, 6.6rem);
    --type-section-title: clamp(2.85rem, 2.2rem + 3.4vw, 5.3rem);
    --type-card-title: clamp(2rem, 1.7rem + 1.7vw, 2.85rem);
  }

  .mobile-menu > a:not(.button) {
    font-size: clamp(2.5rem, 2rem + 3.2vw, 4rem);
    line-height: 1.05;
  }
}

/* Mobile: minimum readable supporting text and stable display sizes. */
@media (max-width: 760px) {
  :root {
    --type-body: 1rem;
    --type-sm: .9375rem;
    --type-xs: .8125rem;
    --type-label: .75rem;
    --type-button: .75rem;
    --type-card-title: clamp(2rem, 1.72rem + 1.7vw, 2.45rem);
    --type-section-title: clamp(2.8rem, 2.25rem + 2.8vw, 3.9rem);
    --type-display: clamp(3.55rem, 3rem + 3vw, 4.8rem);
  }

  h1,
  h2,
  h3,
  .menu-page-hero h1,
  .product-hero__content h1 {
    letter-spacing: -.035em;
  }

  .hero h1,
  .allergen-hero h1,
  .menu-page-hero h1,
  .product-hero__content h1,
  .final-cta h2 {
    line-height: .92;
  }

  .hero-utility {
    font-size: .75rem;
    line-height: 1.5;
  }

  .brand-name strong {
    font-size: 1.2rem;
    line-height: 1.05;
  }

  .brand-name small {
    font-size: .7rem;
    letter-spacing: .1em;
  }

  .mobile-actions a {
    font-size: .7rem;
    letter-spacing: .04em;
  }

  .footer-grid h2 {
    font-size: .75rem;
  }

  .footer-bottom {
    font-size: .75rem;
    line-height: 1.5;
  }

  .allergen-list small,
  .allergen-icon-credit,
  .product-allergen-note,
  .menu-allergens,
  .menu-ingredients {
    font-size: .8125rem;
  }
}

@media (max-width: 480px) {
  :root {
    --type-section-title: clamp(2.65rem, 2.2rem + 2.4vw, 3.35rem);
    --type-display: clamp(3.35rem, 3rem + 2vw, 4.05rem);
    --type-card-title: clamp(1.95rem, 1.72rem + 1.3vw, 2.25rem);
  }

  .hero-intro,
  .allergen-lead,
  .product-lead,
  .legal-lead {
    font-size: 1rem;
    line-height: 1.65;
  }

  .page-jumps a,
  .menu-filter,
  .button {
    font-size: .75rem;
    letter-spacing: .05em;
  }
}

@media (max-width: 360px) {
  :root {
    --type-display: 3.25rem;
    --type-section-title: 2.6rem;
    --type-card-title: 1.9rem;
  }

  .mobile-actions a {
    font-size: .68rem;
  }
}

/* Large and 5K displays: scale reading text, then stop display type before it overwhelms the page. */
@media (min-width: 1920px) {
  :root {
    --type-body: 1.0625rem;
    --type-sm: .9375rem;
    --type-xs: .8125rem;
    --type-label: .8125rem;
    --type-button: .8125rem;
  }
}

@media (min-width: 2400px) {
  :root {
    --type-body: 1.125rem;
    --type-sm: 1rem;
    --type-xs: .875rem;
    --type-label: .875rem;
    --type-button: .875rem;
    --type-display: 9.75rem;
    --type-section-title: 7.15rem;
  }
}
