/* Editorial faces only. Navigation, metadata, captions and controls keep their existing design. */
@font-face{font-family:'LPTS Fraunces';font-style:normal;font-weight:400;font-display:swap;src:url('fonts/fraunces/fraunces-400.ttf') format('truetype')}
@font-face{font-family:'LPTS Fraunces';font-style:normal;font-weight:700;font-display:swap;src:url('fonts/fraunces/fraunces-700.ttf') format('truetype')}
@font-face{font-family:'LPTS Fraunces';font-style:italic;font-weight:400;font-display:swap;src:url('fonts/fraunces/fraunces-400-italic.ttf') format('truetype')}
@font-face{font-family:'LPTS Fraunces';font-style:italic;font-weight:700;font-display:swap;src:url('fonts/fraunces/fraunces-700-italic.ttf') format('truetype')}
[data-lpts-type="prose"],.j-post .excerpt,#lead-feature-dek{font-family:'LPTS Fraunces',serif!important;font-weight:400!important;font-synthesis:none}
[data-lpts-type="headline"],.j-post h2,.gallery-card .cap,#lead-feature-title{font-family:'LPTS Fraunces',serif!important;font-weight:700!important;font-synthesis:none}
[data-lpts-type] :where(strong,b){font-family:inherit!important;font-weight:700!important}
[data-lpts-type] :where(em,i){font-family:inherit!important;font-style:italic;font-weight:inherit}
/* These explicit attribution/description faces previously inherited a serif face. */
[data-lpts-type="byline"],[data-lpts-type="brand"],figcaption,.pb-body,.pb-chip,.wip-caption,.post-cap,.pr-dateline,.attribution,.sig-text,.sig-text h2,.sig-lede,.sig-fine,.map-caption,.caption,.vid-cap,.interstitial-cap,.pres-photo-filed{font-family:'Archivo',sans-serif!important}
/* Shared branding and supporting chrome must remain non-serif. */
.brand-tiv,.nav-tagline,.footer-tag,.footer-partnership em,.brand-tiv em,.sub-confirm,
.eyebrow,[class$="-eyebrow"]{font-family:'Archivo',sans-serif!important}
/* Approved headline size applies only to this article; all other sizes remain unchanged. */
body[data-lpts-page="armitage"] .post-hero h1{font-size:clamp(36px,6vw,64px)}
/* Explicit supporting text that had legacy Fraunces declarations. Sizes and styling stay intact. */
.pb-chip p,.sig-text .sig-headline,.sig-text .sig-headline em,.sig-text .sig-lede,.sig-text .sig-fine,
.o-role,.vv,.vitals-label,.ini-label,.vid-cs,.post-cta .cta-line,.brand-tiv,.brand-tiv em{
  font-family:'Archivo',sans-serif!important;
}
[data-lpts-type="prose"] :where(em,i),[data-lpts-type="headline"] :where(em,i){font-weight:inherit!important}
[data-lpts-type="prose"] :where(strong,b),[data-lpts-type="headline"] :where(strong,b){font-weight:700!important}
[data-lpts-type="headline"] :where(span,a){font-family:inherit!important;font-weight:inherit!important}
[data-lpts-type] .brand-tiv,[data-lpts-type] .brand-tiv em{font-family:'Archivo',sans-serif!important}
/* Existing serif UI accents are kept non-serif, without touching monospaced control values. */
.portal-card h1 em,.portal-lede,.portal-google-note,.portal-fine,.portal-modal h3 em,.portal-modal .modal-body,
.oa-builder .oa-step,.oa-builder .oa-slider-judge,.oa-builder .oa-tk-mark,.oa-builder .oa-tier-desc,.oa-builder .oa-copied-note{
  font-family:'Archivo',sans-serif!important;
}

/* Shared display scale: directory/stub titles and the matching editorial CTA cards.
   Keep article titles, body copy, brand lockups and controls at their existing sizes. */
.stub h1[data-lpts-type="headline"] {
  /* The 86px cap also keeps “Establishments.” inside the existing 640px column. */
  font-size: clamp(50.4px, 9vw, 86px);
}
:is(.foundation, .dispatch-capture, .join-cta) h2[data-lpts-type="headline"] {
  /* Cap long words inside the homepage’s two-column cards at wide screens. */
  font-size: clamp(43.2px, 5.4vw, 78px);
}
:is(.stub h1, .foundation h2, .dispatch-capture h2, .join-cta h2)[data-lpts-type="headline"] {
  max-width: 100%;
  overflow-wrap: anywhere; /* Safety net for text zoom; normal words remain intact. */
}
@media (max-width: 767px) {
  .stub h1[data-lpts-type="headline"] {
    font-size: clamp(30px, 8.2vw, 40px);
    line-height: 1.06;
  }
  :is(.foundation, .dispatch-capture, .join-cta) h2[data-lpts-type="headline"] {
    font-size: clamp(28px, 7.5vw, 36px);
    line-height: 1.08;
  }
}

/* One photo-description treatment, matching the Grand Beach editorial captions.
   WIP descriptive panels and card copy are intentionally not caption selectors. */
body :is(.post-body, .post-leadfigure, .post-figure, .diary-figure,
  .guide-feature-image, .release-image, .release-hero, .release-room,
  .release-gallery, .o-body, .archive-frame, .faq-photo) figcaption {
  font-family:'Archivo',Arial,sans-serif !important;
  font-size:10px !important;
  font-weight:400 !important;
  font-style:normal !important;
  line-height:1.5 !important;
  letter-spacing:1.4px !important;
  text-transform:uppercase !important;
  text-align:center !important;
  color:rgba(26,16,20,.40) !important;
  margin:12px 0 0 !important;
}
body :is(.post-body, .post-leadfigure, .post-figure, .diary-figure,
  .guide-feature-image, .release-image, .release-hero, .release-room,
  .release-gallery, .o-body, .archive-frame, .faq-photo) figcaption a {
  color:inherit !important;
  text-decoration:underline;
  text-underline-offset:3px;
}

/* Shared landing-page title scale. Opted-in by data-lpts-display, not by
   guessing page classes; editorial articles, WIP and UI labels are unchanged.
   A long brand word must shrink to the available phone width, not be cropped. */
html body h1[data-lpts-type="headline"][data-lpts-display="page-title"] {
  line-height:1.08;
  max-width:100%;
  min-width:0;
  white-space:normal;
  overflow-wrap:anywhere;
}
html body h1[data-lpts-type="headline"][data-lpts-display="page-title"] :is(em,strong,span,a) {
  font-family:inherit;
  font-size:inherit;
  white-space:normal;
}
/* The two standalone brand pages were the font/scale exceptions. Other
   landing pages retain their accepted desktop scale. */
html body :is(.tiv-hero, .td-hero) h1[data-lpts-type="headline"][data-lpts-display="page-title"] {
  font-size:clamp(36px,6vw,86px);
}
@media(max-width:767px) {
  html body h1[data-lpts-type="headline"][data-lpts-display="page-title"],
  html body :is(.tiv-hero, .td-hero) h1[data-lpts-type="headline"][data-lpts-display="page-title"] {
    font-size:clamp(30px,8.2vw,40px);
    line-height:1.08;
  }
}
/* Editorial headings may wrap long words under narrow viewports or text zoom.
   Do not apply to navigation, product titles, logos or UI controls. */
h1[data-lpts-type="headline"] { min-width:0; max-width:100%; overflow-wrap:anywhere; }
