/* CEMI Front UX · F1 · Foundations */
.cemi-ux {
  font-family: var(--cemi-font-sans);
  color: var(--cemi-color-text);
  line-height: var(--cemi-line-normal);
  text-rendering: optimizeLegibility;
  -webkit-font-smoothing: antialiased;
}
.cemi-ux *, .cemi-ux *::before, .cemi-ux *::after { box-sizing: border-box; }
.cemi-ux :where(h1,h2,h3,h4,p,ul,ol,figure) { margin-top: 0; }
.cemi-ux :where(h1,h2,h3,h4) { color: var(--cemi-color-ink); line-height: var(--cemi-line-tight); }
.cemi-ux :where(a) { color: inherit; text-underline-offset: .16em; }
.cemi-ux :where(img,svg,video) { display: block; max-width: 100%; }
.cemi-ux :where(button,input,select,textarea) { font: inherit; }
.cemi-ux :where(button,[role="button"],a,input,select,textarea):focus-visible {
  outline: 3px solid color-mix(in srgb, var(--cemi-color-focus) 70%, transparent);
  outline-offset: 3px;
}
.cemi-ux [hidden] { display: none !important; }
.cemi-ux__eyebrow { font-size: var(--cemi-font-size-xs); font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--cemi-color-muted); }
.cemi-ux__muted { color: var(--cemi-color-muted); }
.cemi-ux__sr-only { position:absolute !important; width:1px !important; height:1px !important; padding:0 !important; margin:-1px !important; overflow:hidden !important; clip:rect(0,0,0,0) !important; white-space:nowrap !important; border:0 !important; }


/* F2.9C · Global Typography Authority
   Front UX owns typography. Components choose semantic roles, not font families. */
.cemi-ux,
.cemi-ux-shell{
  font-family:var(--cemi-font-body);
  font-weight:var(--cemi-weight-regular);
  font-size:var(--cemi-type-body-size);
  line-height:var(--cemi-line-normal);
  font-kerning:normal;
  font-variant-ligatures:common-ligatures;
  text-rendering:optimizeLegibility;
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
}
.cemi-ux-shell :where(button,input,select,textarea){font-family:inherit}
.cemi-ux-shell :where(h1,h2,h3,h4,h5,h6),
.cemi-ux :where(h1,h2,h3,h4,h5,h6){
  font-family:var(--cemi-font-display);
  font-weight:var(--cemi-weight-extrabold);
  color:var(--cemi-color-ink);
}
.cemi-ux-shell :where(p,li,dd,dt,a,span,small,label,input,select,textarea,button){
  font-family:var(--cemi-font-body);
}
.cfx-type-display{
  font-family:var(--cemi-font-display);
  font-size:var(--cemi-type-display-size);
  line-height:var(--cemi-type-display-line);
  letter-spacing:var(--cemi-type-display-track);
  font-weight:var(--cemi-weight-extrabold);
}
.cfx-type-h1{
  font-size:var(--cemi-type-h1-size);
  line-height:var(--cemi-type-h1-line);
  letter-spacing:var(--cemi-type-h1-track);
  font-weight:var(--cemi-weight-extrabold);
}
.cfx-type-h2{
  font-size:var(--cemi-type-h2-size);
  line-height:var(--cemi-type-h2-line);
  letter-spacing:var(--cemi-type-h2-track);
  font-weight:var(--cemi-weight-extrabold);
}
.cfx-type-h3{
  font-size:var(--cemi-type-h3-size);
  line-height:var(--cemi-type-h3-line);
  letter-spacing:var(--cemi-type-h3-track);
  font-weight:var(--cemi-weight-bold);
}
.cfx-type-body-lg{font-size:var(--cemi-type-body-lg-size);line-height:1.58;font-weight:var(--cemi-weight-regular)}
.cfx-type-body{font-size:var(--cemi-type-body-size);line-height:1.55;font-weight:var(--cemi-weight-regular)}
.cfx-type-body-sm{font-size:var(--cemi-type-body-sm-size);line-height:1.5;font-weight:var(--cemi-weight-regular)}
.cfx-type-label,
.cfx-eyebrow{
  font-size:var(--cemi-type-label-size);
  line-height:1.2;
  letter-spacing:var(--cemi-type-label-track);
  font-weight:var(--cemi-weight-extrabold);
  text-transform:uppercase;
}
.cfx-button,
.cemi-ux-button,
.cemi-ux-shell button{
  font-size:var(--cemi-type-button-size);
  font-weight:var(--cemi-weight-bold);
  letter-spacing:-.01em;
}
@media(max-width:599px){
  :root{
    --cemi-type-display-size:clamp(2.4rem,10vw,3.15rem);
    --cemi-type-h1-size:clamp(2.2rem,9vw,3rem);
    --cemi-type-h2-size:clamp(1.8rem,7vw,2.35rem);
    --cemi-type-h3-size:1.3rem;
    --cemi-type-body-lg-size:1rem;
    --cemi-type-body-size:.96rem;
  }
}
