@font-face{font-family:Unbounded;src:url('./assets/fonts/unbounded/Unbounded-Regular.ttf') format('truetype');font-weight:400;font-display:swap}
@font-face{font-family:Unbounded;src:url('./assets/fonts/unbounded/Unbounded-Medium.ttf') format('truetype');font-weight:500;font-display:swap}
@font-face{font-family:Unbounded;src:url('./assets/fonts/unbounded/Unbounded-SemiBold.ttf') format('truetype');font-weight:600;font-display:swap}
@font-face{font-family:Unbounded;src:url('./assets/fonts/unbounded/Unbounded-Bold.ttf') format('truetype');font-weight:700;font-display:swap}
@font-face{font-family:Unbounded;src:url('./assets/fonts/unbounded/Unbounded-ExtraBold.ttf') format('truetype');font-weight:800 900;font-display:swap}

:root{--font-brand:Unbounded,Arial,sans-serif;--font-display:Unbounded,Arial,sans-serif;--font-body:Unbounded,Arial,sans-serif;--font-ui:Unbounded,Arial,sans-serif}
body:not(.cms){font-family:var(--font-body)}
body:not(.cms) :where(button,input,select,textarea,option,label){font-family:var(--font-ui)}
body:not(.cms) :where(h1,h2,h3,h4,h5,h6,.display,.eyebrow){font-family:var(--font-display)}
html[lang="ru"] body:not(.cms) :where(.results-experience,.public-results-shell,.results-sport-heading,.public-results-toolbar,.results-event,.results-round-nav,.public-results-table,.public-results-empty,.public-schedule-groups,.public-schedule-empty),
html[lang="uz"] body:not(.cms) :where(.results-experience,.public-results-shell,.results-sport-heading,.public-results-toolbar,.results-event,.results-round-nav,.public-results-table,.public-results-empty,.public-schedule-groups,.public-schedule-empty){font-family:var(--font-body)}
html[lang="ru"] body:not(.cms) :where(.results-experience,.public-results-shell,.results-sport-heading,.public-results-toolbar,.results-event,.results-round-nav,.public-results-table,.public-results-empty,.public-schedule-groups,.public-schedule-empty) *,
html[lang="uz"] body:not(.cms) :where(.results-experience,.public-results-shell,.results-sport-heading,.public-results-toolbar,.results-event,.results-round-nav,.public-results-table,.public-results-empty,.public-schedule-groups,.public-schedule-empty) *{font-family:inherit}
.public-results-empty h3,.public-results-empty p,.results-sport-heading h2{font-family:var(--font-display)}

/* Public typography and rhythm contract. Kept here so legacy page bundles cannot
   silently fall back to browser serif faces after a locale or empty-state render. */
:root{
  --font-brand:'Unbounded';
  --font-display:'Unbounded';
  --font-body:'Unbounded';
  --font-ui:'Unbounded';
  --public-gutter:clamp(20px,4.8vw,92px);
  --public-section-space:clamp(64px,8vw,132px);
  --public-section-space-compact:clamp(42px,5vw,82px);
  --public-copy-gap:clamp(16px,2vw,28px);
}
body:not(.cms),body:not(.cms) :where(p,a,span,strong,b,small,time,figcaption,li,dt,dd,label,button,input,select,textarea,option){font-family:var(--font-body)!important}
body:not(.cms) :where(h1,h2,h3,h4,h5,h6,.display,.eyebrow,.records-hero__title,.athletes-hero .display,.arena-heading,.public-content-empty h3){font-family:var(--font-display)!important;font-style:normal;word-break:normal;overflow-wrap:normal;hyphens:none}
body:not(.cms) :where(button,input,select,textarea,option,label){font-family:var(--font-ui)!important}
body:not(.cms) main :where(h1,.display){font-size:clamp(2.65rem,6.7vw,7.35rem);line-height:.92;text-wrap:balance}
body:not(.cms) main :where(h2,.arena-heading){font-size:clamp(2rem,4.4vw,5.25rem);line-height:.98;text-wrap:balance}
.public-content-empty :where(h3,p){font-family:var(--font-body)!important}
@media(max-width:560px){:root{--public-gutter:18px;--public-section-space:56px;--public-section-space-compact:38px}body:not(.cms) main :where(h1,.display){font-size:clamp(2.35rem,12vw,4rem)}body:not(.cms) main :where(h2,.arena-heading){font-size:clamp(1.8rem,9.2vw,3.1rem)}}

/* Canonical multilingual typography contract. Text may wrap only at natural
   word boundaries; component geometry, never emergency word breaking, adapts. */
:root{
  --display-xl-size:clamp(3rem,6.7vw,7.35rem);
  --display-lg-size:clamp(2.2rem,4.5vw,5.4rem);
  --section-heading-size:clamp(2rem,4vw,4.75rem);
  --card-title-size:clamp(1rem,1.5vw,1.45rem);
  --body-lg-size:clamp(1rem,1.35vw,1.25rem);
  --body-md-size:clamp(.875rem,1vw,1rem);
}
body:not(.cms) :where(
  h1,h2,h3,h4,h5,h6,
  .display,.display-xl,.display-lg,.section-heading,.card-title,
  .arena-heading,.tashkent-heading,.records-hero__title,
  .hero-title-line,.public-nav-child,.public-schedule-item strong,
  .schedule-item h3,.results-event-toggle>span:nth-child(2),
  .athlete-directory-identity b,.athlete-public-identity b,
  .ta-related b,.public-news-card h3,.media-section-heading h2,
  .tashkent-place h3,.ticket-contact-action
){overflow-wrap:normal!important;word-break:normal!important;hyphens:none!important}
body:not(.cms) :where(button,[role=button],nav a,label){hyphens:none;word-break:normal;overflow-wrap:normal}
.display-xl{font-size:var(--display-xl-size);line-height:.92}
.display-lg{font-size:var(--display-lg-size);line-height:.96}
.section-heading{font-size:var(--section-heading-size);line-height:.98}
.card-title{font-size:var(--card-title-size);line-height:1.12}
.body-lg{font-size:var(--body-lg-size);line-height:1.6}
.body-md{font-size:var(--body-md-size);line-height:1.6}
@media(max-width:560px){:root{--display-xl-size:clamp(2.35rem,12vw,4rem);--display-lg-size:clamp(2rem,10vw,3.2rem);--section-heading-size:clamp(1.8rem,9vw,3rem)}}
