/*
 * Type calibration
 *
 * Cormorant Garamond has a more generous visual footprint than the former
 * serif. Keep the agreed font families, while returning the site to the
 * quieter editorial scale used before the font migration. Rules that control
 * a landing title's intentional line count stay in its own component and are
 * deliberately not reset here.
 */
:root {
  --font-display: "Cormorant Garamond", Georgia, serif;
  --font-subtitle: "Playfair Display", Georgia, serif;
  --font-ui: Inter, "Helvetica Neue", Arial, sans-serif;
}

body { font-size: 15px; }

/* Home: slide titles remain prominent without dominating the photography. */
.home .tsf-slide-content h1,
.home .tsf-slide-content > .tsf-slide-title {
  font-size: clamp(42px, 4.4vw, 70px);
  line-height: .94;
}
.home .tsf-slide-content > p:not(.tsf-slide-title) {
  font-size: clamp(15px, 1.05vw, 17px);
}

/* Shared form-landing rhythm. max-width rules are intentionally untouched:
 * they carry the author-approved number of lines for each individual title. */
.tsf-balcony-landing .tsf-balcony-hero h1,
.tsf-service-landing .tsf-balcony-hero h1 {
  font-size: clamp(46px, 5vw, 84px);
}
.tsf-balcony-landing .tsf-balcony-story h2,
.tsf-service-landing .tsf-balcony-story h2 {
  font-size: clamp(42px, 4.45vw, 76px);
}
.tsf-balcony-landing .tsf-balcony-hero > .tsf-balcony-hero__inner > p:not(.tsf-label),
.tsf-service-landing .tsf-balcony-hero > .tsf-balcony-hero__inner > p:not(.tsf-label) {
  font-size: clamp(15px, 1.12vw, 16px);
}

/* The explicitly composed tours, Bull Fair and contact headlines retain the
 * individual sizes chosen to lock their intended line breaks. */
.tsf-service-landing--tours .tsf-balcony-hero h1 { font-size: clamp(44px, 3.7vw, 60px); }
.tsf-service-landing--feria .tsf-balcony-hero h1 { font-size: clamp(46px, 4.15vw, 64px); }
.tsf-service-landing--contacto .tsf-balcony-hero h1 { font-size: clamp(40px, 3.1vw, 56px); }

/* Dates and territory pages: editorial rather than oversized display type. */
.tsf-dates-hero h1 { font-size: clamp(48px, 5.15vw, 84px); }
.tsf-dates-hero__content > p:not(.tsf-label) { font-size: clamp(18px, 1.55vw, 23px); }
.tsf-dates-editorial h2 { font-size: clamp(36px, 3.75vw, 58px); }
.tsf-dates-editorial__copy > p:not(.tsf-label) { font-size: 15px; }
.tsf-vertical-page__hero h1 { font-size: clamp(44px, 5.15vw, 84px); }
.tsf-route-hub__hero h1 { font-size: clamp(58px, 6.55vw, 108px); }
.tsf-route-hub__opening h2,
.tsf-route-hub__section-head h2,
.tsf-route-hub__pamplona h2,
.tsf-route-hub__rhythm h2 { font-size: clamp(44px, 4.35vw, 70px); }

/* The long-form service templates use the same restrained body measure. */
.tsf-service-context p:not(.tsf-label),
.tsf-service-faq details p,
.tsf-territory-landing__detail-copy p,
.tsf-territory-landing__continuity p,
.tsf-pamplona-guide p,
.tsf-route-hub__opening-grid > div p,
.tsf-route-hub__pamplona p:not(.tsf-label),
.tsf-route-hub__rhythm p:not(.tsf-label) {
  font-size: 15px;
}

/* Home: preserve the established widths and line breaks, only soften scale. */
.home .tsf-intro h2 { font-size: clamp(42px, 4.35vw, 64px); }
.home .tsf-world h2 { font-size: clamp(40px, 4.1vw, 60px); }
.home .tsf-calendar-lab h2 { font-size: clamp(40px, 4vw, 58px); }
.home .tsf-moments .tsf-section-top h2 { font-size: clamp(42px, 4.15vw, 60px); }
.home .tsf-process-heading h2 { font-size: clamp(39px, 3.9vw, 56px); }
.home .tsf-testimonials-heading h2 { font-size: clamp(39px, 3.9vw, 56px); }
.home .tsf-local-directions__intro h2 { font-size: clamp(40px, 3.85vw, 56px); }
.home .tsf-faq h2 { font-size: clamp(40px, 3.95vw, 58px); }
.home .tsf-other-projects-heading h2 { font-size: clamp(32px, 3.25vw, 48px); }

/* Editorial and legal pages follow the same quieter reading scale. */
.tsf-blog-masthead h1,
.tsf-blog-cover h1 { font-size: clamp(54px, 6.15vw, 98px); }
.tsf-blog-intro h2,
.tsf-blog-feature h2,
.tsf-blog-territory h2,
.tsf-blog-cta h2,
.tsf-blog-listing__heading h2 { font-size: clamp(40px, 3.9vw, 66px); }
.tsf-blog-card h2,
.tsf-blog-card:nth-child(2) h2 { font-size: clamp(31px, 2.75vw, 46px); }
.tsf-article-body > p { font-size: clamp(17px, 1.16vw, 19px); }
.tsf-article-body > p:first-of-type { font-size: clamp(26px, 1.86vw, 31px); }
.tsf-article-body h2 { font-size: clamp(36px, 2.8vw, 46px); }
.tsf-article-body h3 { font-size: clamp(25px, 1.82vw, 30px); }
.tsf-cookies-page__hero h1,
.tsf-legal-page__hero h1,
.tsf-legal-placeholder h1 { font-size: clamp(48px, 5.9vw, 86px); }
.tsf-cookies-page__copy h2,
.tsf-cookies-page__layout aside h2,
.tsf-legal-page__copy h2 { font-size: clamp(34px, 3.35vw, 48px); }

@media (max-width: 767px) {
  body { font-size: 15px; }
  .home .tsf-slide-content h1,
  .home .tsf-slide-content > .tsf-slide-title { font-size: 47px; line-height: .95; }
  .tsf-balcony-landing .tsf-balcony-hero h1,
  .tsf-service-landing .tsf-balcony-hero h1 { font-size: clamp(46px, 12.2vw, 66px); }
  .tsf-balcony-landing .tsf-balcony-story h2,
  .tsf-service-landing .tsf-balcony-story h2 { font-size: clamp(39px, 10.5vw, 58px); }
  .tsf-service-landing--tours .tsf-balcony-hero h1 { font-size: clamp(42px, 10.5vw, 56px); }
  .tsf-service-landing--feria .tsf-balcony-hero h1 { font-size: clamp(43px, 11vw, 59px); }
  .tsf-service-landing--contacto .tsf-balcony-hero h1 { font-size: clamp(40px, 10vw, 52px); }
  .tsf-dates-hero h1 { font-size: 52px; }
  .tsf-dates-hero__content > p:not(.tsf-label) { font-size: 18px; }
  .tsf-dates-editorial h2 { font-size: 42px; }
  .tsf-vertical-page__hero h1 { font-size: 50px; }
  .tsf-route-hub__hero h1 { font-size: clamp(53px, 14vw, 74px); }
  .home .tsf-intro h2 { font-size: 50px; }
  .home .tsf-world h2 { font-size: 48px; }
  .home .tsf-calendar-lab h2 { font-size: 48px; }
  .home .tsf-moments .tsf-section-top h2 { font-size: 50px; }
  .home .tsf-process-heading h2,
  .home .tsf-testimonials-heading h2,
  .home .tsf-local-directions__intro h2,
  .home .tsf-faq h2 { font-size: 47px; }
  .tsf-blog-masthead h1,
  .tsf-blog-cover h1 { font-size: clamp(50px, 15vw, 72px); }
  .tsf-blog-intro h2,
  .tsf-blog-feature h2,
  .tsf-blog-territory h2,
  .tsf-blog-cta h2,
  .tsf-blog-listing__heading h2 { font-size: clamp(42px, 11.5vw, 56px); }
  .tsf-blog-card h2,
  .tsf-blog-card:nth-child(2) h2 { font-size: 38px; }
  .tsf-article-body > p { font-size: 17px; }
  .tsf-article-body > p:first-of-type { font-size: 26px; }
  .tsf-article-body h2 { font-size: clamp(34px, 9vw, 40px); }
  .tsf-article-body h3 { font-size: 25px; }
  .tsf-cookies-page__hero h1,
  .tsf-legal-page__hero h1,
  .tsf-legal-placeholder h1 { font-size: 50px; }
  .tsf-cookies-page__copy h2,
  .tsf-cookies-page__layout aside h2,
  .tsf-legal-page__copy h2 { font-size: 40px; }
}
