/* Bid2Stay Release 15.0.12.7 — platform-wide responsive typography cleanup
   Scope: visual type scale only. No route, workflow, authentication or data changes. */
:root{
  --b2s-type-body:clamp(.9375rem,.18vw + .91rem,1rem);
  --b2s-type-display:clamp(2.15rem,3.6vw,3.25rem);
  --b2s-type-page-title:clamp(1.85rem,2.65vw,2.5rem);
  --b2s-type-auth-title:clamp(1.85rem,3vw,2.35rem);
  --b2s-type-section-title:clamp(1.3rem,1.75vw,1.75rem);
  --b2s-type-card-title:clamp(1.05rem,1.2vw,1.3rem);
  --b2s-type-kpi:clamp(1.65rem,2.35vw,2.25rem);
  --b2s-type-button:clamp(.875rem,.25vw + .84rem,1rem);
}

html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{
  font-size:var(--b2s-type-body)!important;
  line-height:1.55;
}

/* One controlled heading scale across the product. */
body :where(h1,h2,h3,h4,h5,h6){
  max-inline-size:100%;
  margin-block-start:0;
  text-wrap:balance;
  overflow-wrap:break-word;
  word-break:normal;
}
body :where(h1){
  font-size:var(--b2s-type-page-title)!important;
  line-height:1.08!important;
  letter-spacing:-.035em!important;
}
body :where(h2){
  font-size:var(--b2s-type-section-title)!important;
  line-height:1.17!important;
  letter-spacing:-.022em!important;
}
body :where(h3){
  font-size:var(--b2s-type-card-title)!important;
  line-height:1.25!important;
  letter-spacing:-.012em!important;
}
body :where(h4){font-size:1.05rem!important;line-height:1.3!important}
body :where(h5,h6){font-size:.95rem!important;line-height:1.35!important}

/* Public discovery and marketing heroes retain prominence, but are capped. */
body:not([data-portal-role]):not([data-auth-page]) :where(
  .hero,.r11-hero,.b2s-about-hero,.b2s30-discovery-hero,.b2s30-search-hero,
  .b2s-login-intro,.public-hero,.landing-hero
) h1{
  font-size:var(--b2s-type-display)!important;
  line-height:1.04!important;
  letter-spacing:-.042em!important;
}

/* Portal page titles should feel operational, not billboard-sized. */
body[data-portal-role] :where(
  .page-head,.admin-head,.b2s-saas-hero,.b2s151-hero,.b2s15-hero,.b2s40-hero,
  .b2s45-hero,.s04-hero,.bpr-hero,.b2s-onboard-hero,.b2s1503-hero,
  .b2s1503-checkin-hero
) h1{
  font-size:var(--b2s-type-page-title)!important;
}

/* Authentication pages use the same compact title treatment. */
body[data-auth-page] :where(h1,.b2s-auth-recovery-card h1),
body.b2s-login-page :where(.b2s-login-card h1,.b2s-login-card h2){
  font-size:var(--b2s-type-auth-title)!important;
  line-height:1.08!important;
  letter-spacing:-.034em!important;
}
body[data-auth-page] .b2s-auth-intro,
body.b2s-login-page :where(.b2s-login-card-header p,.b2s-login-intro>p){
  font-size:clamp(.94rem,.35vw + .88rem,1.05rem)!important;
}

/* KPI, balance and status figures share one safe scale and may wrap cleanly. */
body :where(
  [class*="metric"] > strong,
  [class*="metric"] > b,
  [class*="stat"] > strong,
  [class*="stat"] > b,
  [class*="kpi"] > strong,
  [class*="kpi"] > b,
  .bpr-balance strong,
  .b2s-live-revenue-total,
  .b2s-report-total,
  .b2s-summary-value,
  .b2s-onboard-step-number
){
  max-inline-size:100%;
  font-size:var(--b2s-type-kpi)!important;
  line-height:1.04!important;
  letter-spacing:-.035em!important;
  white-space:normal!important;
  overflow-wrap:break-word!important;
  word-break:normal!important;
  text-wrap:balance;
  font-variant-numeric:tabular-nums;
}

/* Long labels and milestone values must stay inside their cards. */
body :where(
  .bpr-metric,.bpr-balance,.admin-metric,.hotel-metric,.metric,.b2s151-metric,
  .b2s-provider-metric,.b2s1503-metric,.b2s-assist-metric,.b2s-stay-stat,
  .r11-live-stat,[class*="kpi-card"],[class*="stat-card"],[class*="metric-card"]
){
  min-width:0;
}
body :where(
  .bpr-metric strong,.bpr-balance strong,.admin-metric strong,.hotel-metric strong,
  .metric strong,.b2s151-metric strong,.b2s-provider-metric strong,
  .b2s1503-metric strong,.b2s-assist-metric strong,.b2s-stay-stat strong,
  .r11-live-stat strong
){
  display:block;
  max-width:100%;
}

/* Buttons and form controls should not compete with page headings. */
body :where(button,.btn,[role="button"],input,select,textarea){
  font-size:var(--b2s-type-button)!important;
}
body :where(.btn,button,[role="button"]){
  line-height:1.25!important;
}
body :where(label,.field label,.b2s-auth-field label,.s04-field label){
  font-size:clamp(.78rem,.18vw + .75rem,.88rem)!important;
}

/* Compact descriptive copy while retaining accessibility. */
body :where(.eyebrow,.kicker,[class*="-kicker"],[class*="-eyebrow"]){
  font-size:clamp(.68rem,.16vw + .65rem,.78rem)!important;
  line-height:1.35!important;
}
body :where(.page-subtitle,.section-subtitle,.card-subtitle,.subtitle,.description,.supporting-text,.helper-text){
  font-size:clamp(.86rem,.2vw + .82rem,.98rem)!important;
}

@media(max-width:900px){
  :root{
    --b2s-type-display:clamp(2rem,6.4vw,2.75rem);
    --b2s-type-page-title:clamp(1.75rem,5vw,2.2rem);
    --b2s-type-auth-title:clamp(1.75rem,5.5vw,2.15rem);
    --b2s-type-section-title:clamp(1.22rem,3.5vw,1.55rem);
    --b2s-type-kpi:clamp(1.55rem,4.6vw,2rem);
  }
}

@media(max-width:640px){
  :root{
    --b2s-type-body:1rem;
    --b2s-type-display:clamp(2rem,9vw,2.45rem);
    --b2s-type-page-title:clamp(1.7rem,7.5vw,2.05rem);
    --b2s-type-auth-title:clamp(1.7rem,7.5vw,2rem);
    --b2s-type-section-title:clamp(1.18rem,5.5vw,1.45rem);
    --b2s-type-card-title:clamp(1rem,4.5vw,1.2rem);
    --b2s-type-kpi:clamp(1.5rem,7vw,1.9rem);
  }
  body :where(h1,h2,h3){text-wrap:pretty}
  body :where(.bpr-metric,.admin-metric,.hotel-metric,.metric,.b2s151-metric,[class*="kpi-card"],[class*="stat-card"],[class*="metric-card"]){
    overflow:hidden;
  }
}
