/* Site typography contract. Loaded after component and responsive styles. */
:root {
  --beca-site-font: 'Open Sans', Arial, sans-serif;
  --font-body: var(--beca-site-font);
  --font-heading: var(--beca-site-font);
  --beca-font-family: var(--beca-site-font);
  --leading-normal: 1.65;
}
body { font-family: var(--beca-site-font); font-size: 1rem; line-height: 1.65; }
/* Target text elements rather than every node: icon glyphs and code keep their
 * own font families. Do not reset pseudo-elements used by icon libraries. */
body :is(h1,h2,h3,h4,h5,h6,p,a,li,dt,dd,label,legend,input,textarea,select,button,option,th,td,figcaption,blockquote,cite,summary,small,strong,b,em) {
  font-family: var(--beca-site-font) !important;
}
body span:not(:is(.fa,.fas,.far,.fab,.fal,.fad,.fat,.fass,.fasr,.fasl,.fast,.fa-solid,.fa-regular,.fa-brands,.fa-light,.fa-thin,.fa-duotone,.material-icons,.material-symbols-outlined,[class*="icon"],[class*="Icon"])) {
  font-family: var(--beca-site-font) !important;
}
body .layout-container :is(h1,h2,h3,h4,h5,h6) {
  font-weight: 600 !important;
  line-height: 1.25 !important;
  letter-spacing: -0.015em;
  overflow-wrap: break-word;
}
/* Defaults scale smoothly; module-specific sizing still controls hero/card roles. */
h1 { font-size: clamp(2rem, 3.5vw, 3rem); }
h2 { font-size: clamp(1.65rem, 2.65vw, 2.55rem); }
h3 { font-size: clamp(1.25rem, 2vw, 1.75rem); }
body .layout-container :is(.beca-1column-section-body,.beca-z-matrix-row__body,.beca-image-text-row__body,.beca-story__body,.text-content) {
  font-size: 1rem;
  font-weight: 400;
  line-height: 1.65 !important;
  text-align: start !important;
}
body .layout-container :is(.beca-1column-section-body,.beca-z-matrix-row__body,.beca-image-text-row__body,.beca-story__body,.text-content) p {
  line-height: 1.65 !important;
  text-align: start;
}
body .layout-container :is(.eyebrow,.bfc-eyebrow,.bfs-eyebrow,.beca-1column-section-eyebrow,.beca-2column-section-eyebrow,.beca-location__eyebrow,.beca-contact-channel__eyebrow) {
  font-weight: 700 !important;
  line-height: 1.4 !important;
  letter-spacing: 0.08em;
}
body :is(button,input,textarea,select) { line-height: 1.5; }
body :is(button,.beca-mega-nav__link) { font-weight: 600; }
body figcaption { font-size: .875rem; line-height: 1.5; }
/* Preserve semantic monospace content, including highlighted code tokens. */
body :is(pre,code,kbd,samp), body :is(pre,code,kbd,samp) * {
  font-family: var(--font-mono, Consolas, monospace) !important;
}
