/* Shared text roles for hotel and shop. Tinos preserves the banner's Times-like
   character without relying on an installed browser font. Both cuts are local.
   Layout, colours and icon glyphs are deliberately outside this layer. */
@font-face {
  font-family:Tinos;src:url('tinos-regular.woff2') format('woff2');
  font-style:normal;font-weight:400;font-display:swap;
}
@font-face {
  font-family:Tinos;src:url('tinos-italic.woff2') format('woff2');
  font-style:italic;font-weight:400;font-display:swap;
}
:root {
  --font:Jost,sans-serif;
  --font-display:Tinos,serif;
  --type-title:clamp(28px,3vw,38px);
  --type-subtitle:clamp(24px,2.3vw,28px);
  --type-compact-title:22px;
  --type-small-title:20px;
  --type-copy:18px;
  --type-small:16px;
  --type-meta:13px;
  --type-nav:14px;
  --type-label:12px;
  --legal-title:var(--type-title);
  --legal-heading:var(--type-subtitle);
  --legal-copy:var(--type-copy);
}
@media(max-width:800px) { :root { --type-copy:17px; } }

/* Important is limited to typography: historical inline page styles and Woo
   blocks have their own high-specificity mobile rules. This is the final source. */
body {
  font-family:var(--font)!important;
  font-size:var(--type-copy)!important;
  font-weight:400!important;
  line-height:1.6!important;
}
body :where(h1,h2,.display,.hero .hl,.hero-title,.quick-booking strong,
  .intro .lede,.quote blockquote,.card .name-block .name,
  .spa .compo .main .caption .ttl,.season-card strong) {
  font-family:var(--font-display)!important;
  font-style:normal!important;
  font-synthesis:none;
  font-size:var(--type-title)!important;
  font-weight:400!important;
  line-height:1.15!important;
  letter-spacing:-.02em!important;
  text-transform:none!important;
}
body :where(h3,h4,.home-discovery-card strong,.house-copy h3,
  .woocommerce-loop-product__title,.site-footer .award-title,
  .legal-document h2,.shop-document-page h2,.booking-drawer-title) {
  font-family:var(--font-display)!important;
  font-style:normal!important;
  font-synthesis:none;
  font-size:var(--type-subtitle)!important;
  font-weight:400!important;
  line-height:1.15!important;
  letter-spacing:-.02em!important;
  text-transform:none!important;
}
body :where(h1,h2,h3,h4,h5,h6,.display,.quick-booking strong,
  .card .name,.home-discovery-card strong,.season-card strong,.intro .lede,
  .quote blockquote,.mega-card strong,.mobile-house-card strong) em {
  font-family:inherit!important;
  font-size:inherit!important;
  font-weight:400!important;
  font-style:italic!important;
  line-height:inherit!important;
  letter-spacing:inherit!important;
}
body :where(p,.body,.body-copy,.lede,.hero-panel p,.hero-foot p,.intro-copy p,
  .story-copy p,.destination-copy p,.video-feature-copy p,.overview-head p,
  .main-house-copy p,.editorial-head p,.rosa-retreat p,.host-note p,
  .home-discovery-head p,.home-question-list p,.faq-card p,
  .station .info p,.amen .cell p,.spa .compo p,.spa .culinary .txt p,
  .region .pillar .desc,.faq .left p,.faq .a .inner,.house-copy p,
  .feature-card p,.activity-list p,.offer p,.booking .content p,
  .cta-content p,.footer-brand p,.legal-document p,.legal-document li,
  .shop-main p,.shop-main .product-size,.shop-main .price,
  .shop-document-page li,.woocommerce-product-details__short-description,
  .legal-document dt,.legal-document dd,.shop-document-page dt,.shop-document-page dd) {
  font-family:var(--font)!important;
  font-size:var(--type-copy)!important;
  font-weight:400!important;
  line-height:1.6!important;
  letter-spacing:0!important;
}
/* Editorial lead uses the heading face, not the old oversized sans serif. */
body .intro .lede {
  font-family:var(--font-display)!important;
  font-size:var(--type-title)!important;
  line-height:1.15!important;
  letter-spacing:-.02em!important;
}
body :where(.eyebrow,.hero-kicker,.location-label,.home-discovery-card small,
  .house-no,.fact small,.house-facts small,.booking-search-field>span,
  .shop-kicker,.product-facts dt,.site-footer h3,.site-footer h4) {
  font-family:var(--font)!important;
  font-size:var(--type-label)!important;
  font-weight:500!important;
  line-height:1.5!important;
  letter-spacing:.13em!important;
  text-transform:uppercase!important;
}
body :where(.fact strong,.house-facts strong,.product-facts dd,
  .station .info .fact .v,.home-question-list summary,.faq-card summary) {
  font-family:var(--font)!important;
  font-size:var(--type-copy)!important;
  font-weight:500!important;
  line-height:1.6!important;
  letter-spacing:0!important;
}
/* Text controls only: never target close icons, plus signs or quantity controls. */
body :where(.pill,.text-link,.gallery-more,.nav-cta,.booking-search-submit,
  .cta-content .button,.shop-main .button,.shop-main .wp-element-button,
  .shop-main .wc-block-components-button) {
  font-family:var(--font)!important;
  font-size:var(--type-label)!important;
  font-weight:500!important;
  line-height:1.4!important;
  letter-spacing:.1em!important;
}
body :where(input,select,textarea) {
  font-family:var(--font)!important;
  font-size:var(--type-small)!important;
  font-weight:400!important;
  line-height:1.5!important;
}
/* Dense navigation/checkout controls retain readable, purposeful smaller sizes. */
body :where(h5,.mega-card strong,.mega-rosa strong,.mobile-card strong,
  .mobile-house-card strong,.privacy-banner h2,.privacy-panel h2) {
  font-family:var(--font-display)!important;
  font-size:var(--type-compact-title)!important;
  font-weight:400!important;
  line-height:1.15!important;
  letter-spacing:-.02em!important;
}
body :where(h6,.legal-document h3,.shop-document-page h3) {
  font-family:var(--font-display)!important;
  font-size:var(--type-small-title)!important;
  font-weight:400!important;line-height:1.15!important;
  letter-spacing:-.02em!important;font-style:normal!important;
}

/* Navigation is identical on hotel and shop, including the standalone Rosa link. */
body :where(.site-footer ul,.site-footer li,.footer-rosa>a,.footer-cookie-settings,
  .footer-contact,.footer-contact a,.shop-toolbar nav>a,.shop-service-links,
  .shop-service-links a,.shop-shipping-banner .shop-wrap,.booking-quicklinks a,
  .booking-slow-help p,.booking-slow-help a,.privacy-banner p,.privacy-panel p,
  .privacy-option,.privacy-actions button,.privacy-banner-actions button,
  .shop-cart-feedback p,.shop-added-confirmation,.shop-feedback-link,
  .woocommerce-tabs ul.tabs li a,.withdrawal-receipt) {
  font-family:var(--font)!important;font-size:var(--type-small)!important;
  font-weight:400!important;line-height:1.6!important;letter-spacing:0!important;
}
body :where(.site-nav ul a,.mobile-menu-all,.mobile-menu-heading strong) {
  font-family:var(--font)!important;font-size:var(--type-nav)!important;
  font-weight:500!important;line-height:1.5!important;letter-spacing:.1em!important;
}
body :where(.mobile-menu-links>a) {
  font-family:var(--font)!important;font-size:var(--type-compact-title)!important;
  font-weight:400!important;line-height:1.4!important;letter-spacing:0!important;
}
body :where(.privacy-option small,.privacy-links,.privacy-links a,
  .shop-cart-count,.woocommerce-price-suffix,.image-note,.lightbox-caption,
  .site-footer .partner-award-falstaff p:last-child) {
  font-family:var(--font)!important;font-size:var(--type-meta)!important;
  font-weight:400!important;line-height:1.6!important;letter-spacing:0!important;
}
/* Keep the expressly requested small credits; use the same metadata token. */
body .site-credits p {
  font-family:var(--font)!important;font-size:var(--type-meta)!important;
  font-weight:400!important;line-height:1.6!important;letter-spacing:0!important;
}
body :where(.footer-cta,.hero .cta,.autumn-inline-cta,.autumn-special-cta,
  .filter,.home-autumn-special .autumn-inline-label,.autumn-special-label) {
  font-family:var(--font)!important;font-size:var(--type-label)!important;
  font-weight:500!important;line-height:1.5!important;letter-spacing:.1em!important;
}
/* Woo blocks are loaded dynamically, so these shared role rules beat their
   component defaults without changing forms, cart totals or commerce behaviour. */
body.fe-shop :where(.wc-block-cart,.wc-block-checkout) {
  font-family:var(--font)!important;font-size:var(--type-copy)!important;
  font-weight:400!important;line-height:1.6!important;
}
body.fe-shop :where(.wc-block-cart,.wc-block-checkout) :where(
  .wc-block-components-product-price,.wc-block-components-formatted-money-amount,
  .wc-block-components-totals-item,.wc-block-components-product-metadata,
  .wc-block-components-checkout-step__description,.wc-block-components-checkout-step__heading-content,
  .wc-block-components-checkout-order-summary__title-text,.wc-block-components-checkbox__label,
  .wc-block-components-checkout-terms,.wc-block-components-panel__button,
  .wc-block-components-notice-banner,th,label) {
  font-family:var(--font)!important;font-size:var(--type-small)!important;
  font-weight:400!important;line-height:1.6!important;letter-spacing:0!important;
}
body.fe-shop :is(.wc-block-cart,.wc-block-checkout) .wc-block-components-product-name {
  font-family:var(--font)!important;font-size:var(--type-small)!important;
  font-weight:500!important;line-height:1.6!important;letter-spacing:0!important;
}
/* The award title is a paragraph semantically, but an editorial heading visually. */
body .site-footer .award-title {
  font-family:var(--font-display)!important;font-size:var(--type-subtitle)!important;
  font-style:normal!important;font-weight:400!important;
  line-height:1.15!important;letter-spacing:-.02em!important;
}
body .shop-main :where(.wc-block-components-title,.wc-block-components-checkout-step__title) {
  font-family:var(--font-display)!important;
  font-size:var(--type-subtitle)!important;
  font-weight:400!important;
  line-height:1.15!important;
  letter-spacing:-.02em!important;
}
