/**
 * DWC typography scale — applies shared type rules project-wide.
 * Variables are defined in dwc-fonts.css.
 */

html {
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
}

body,
#appCapsule {
  font-size: var(--dwc-font-size-root);
  line-height: var(--dwc-line-height-body);
}

/* --------------------------------------------------------------------------
   Heading level 1 — page / hero / empty state titles
   -------------------------------------------------------------------------- */

.dwc-banner__title {
  font-size: var(--dwc-font-size-hero);
  line-height: var(--dwc-line-height-heading);
}

.header-large-title .title,
.dwc-welcome-title,
.dwc-glass-title,
.dwc-empty-state-card__title,
.error-page .title {
  font-size: var(--dwc-font-size-h1);
  line-height: var(--dwc-line-height-heading);
}

.dwc-empty-state-card__message {
  font-size: var(--dwc-font-size-md);
  line-height: var(--dwc-line-height-body);
}

/* --------------------------------------------------------------------------
   Heading level 2 — section titles, date groups, schedule breaks
   -------------------------------------------------------------------------- */

.section-title,
.country-standings-section .section-title,
.country-medals-section .section-title,
.judges-page-heading .section-title,
.judges-page .section-title,
.judges-section-heading,
.home-dash-section-tag,
.manage-dancers-country-heading__title,
.dancer-schedule-date-heading,
.country-genre-standings-section-title__text,
.section h4.title,
#table_data .section-title.competition-schedule-table-heading,
.section .listview.image-listview > li .item.fw-bold .in,
.section .listview.image-listview > li .item.fw-bold .in > div {
  font-size: var(--dwc-font-size-h2);
  line-height: var(--dwc-line-height-heading);
}

.section-title small,
#table_data .section-title.competition-schedule-table-heading small {
  font-size: var(--dwc-font-size-sm);
}

/* --------------------------------------------------------------------------
   Heading level 3 — cards, modals, class blocks
   -------------------------------------------------------------------------- */

.modal-title,
.dancer-schedule-card__class-title,
.dancer-entry-card__title,
#table_data .competition-schedule-table-heading,
.listview-title.sticky-title strong,
.appHeader .pageTitle,
.judges_card_title,
.media_card_title,
.live-schedule-panel-heading,
.live-schedule-class-label {
  font-size: var(--dwc-font-size-h3);
  line-height: var(--dwc-line-height-heading);
}

/* --------------------------------------------------------------------------
   Heading level 4 — labels, subsections, meta headings
   -------------------------------------------------------------------------- */

.home-dash-subheading,
.manage-dancers-group-title,
.dancer-schedule-card__detail-label,
.dancer-entry-card__meta dt,
.country-medals-card__stat-label,
.dancer-schedule-card__order-badge,
.live-schedule-class__time-label {
  font-size: var(--dwc-font-size-xs);
  line-height: var(--dwc-line-height-meta);
}

/* --------------------------------------------------------------------------
   Body / supporting text
   -------------------------------------------------------------------------- */

.dancer-schedule-card__piece,
.dancer-schedule-card__class-sponsor,
.dancer-schedule-card__detail-value,
.dancer-entry-card__meta dd,
.manage-dancers-tip__text,
.manage-dancer-card__membership,
.country-medals-card__stat,
.country-standings-card__points,
.dancer-entry-empty,
.judges_card_body,
.media_card_body,
.live-schedule-class__name-text,
.form-group .label,
.form-group.boxed .label {
  font-size: var(--dwc-font-size-sm);
  line-height: var(--dwc-line-height-body);
}

.form-control,
.form-select,
.btn {
  font-size: var(--dwc-font-size-md);
}

.class-schedule-search-bar #searchButton,
.class-schedule-search-bar #resetButton,
.class-schedule-action-btn {
  font-size: var(--dwc-font-size-sm);
}

/* --------------------------------------------------------------------------
   Card titles & user content
   -------------------------------------------------------------------------- */

.country-medals-card__name,
.country-standings-card__name,
.manage-dancer-card__name,
.dwc-user-text {
  font-size: var(--dwc-font-size-card-title);
  line-height: var(--dwc-line-height-heading);
}

/* --------------------------------------------------------------------------
   Emphasis numbers — ranks, order, points
   -------------------------------------------------------------------------- */

.country-medals-card__rank,
.country-genre-standings-card__points-value {
  font-size: var(--dwc-font-size-display);
  line-height: 1;
}

.country-standings-card__rank {
  font-size: var(--dwc-font-size-stat);
  line-height: 1;
}

.dancer-schedule-card__order-num,
.dancer-schedule-card__entry-cutout,
.dancer-entry-card__order {
  font-size: var(--dwc-font-size-entry-num);
  line-height: 1;
}

/* --------------------------------------------------------------------------
   Tables
   -------------------------------------------------------------------------- */

#table_data .table,
.table-responsive > .table {
  font-size: var(--dwc-font-size-sm);
}

#table_data .table thead th,
.table-responsive > .table thead th {
  font-size: var(--dwc-font-size-xs);
}

#table_data .table tbody td,
.table-responsive > .table tbody td {
  font-size: var(--dwc-font-size-sm);
}

/* --------------------------------------------------------------------------
   Badges & chips — readable minimum
   -------------------------------------------------------------------------- */

.badge,
.section-title .badge,
.listview-title .badge,
#filter_header .badge,
.dancer-schedule-card__detail-row--badge .badge,
.live-schedule-panel-heading .badge {
  font-size: var(--dwc-font-size-xs);
  line-height: 1.2;
}

@media (max-width: 420px) {
  #filter_header .badge {
    font-size: clamp(0.6875rem, 2.4vw, 0.75rem);
  }
}

@media (max-width: 340px) {
  #filter_header .badge {
    font-size: 0.6875rem;
  }
}

/* --------------------------------------------------------------------------
   Home dashboard tiles
   -------------------------------------------------------------------------- */

.home-dash-tile-label,
.home-dash-tile__title {
  font-size: var(--dwc-font-size-sm);
  line-height: var(--dwc-line-height-heading);
}

.home-dash-tile-sub {
  font-size: var(--dwc-font-size-xs);
  line-height: var(--dwc-line-height-body);
}

@media (min-width: 768px) {
  .home-dash-tile__title {
    font-size: var(--dwc-font-size-md);
  }
}

/* --------------------------------------------------------------------------
   Live schedule & gallery modals
   -------------------------------------------------------------------------- */

.live-schedule-class__time-value {
  font-size: var(--dwc-font-size-sm);
}

.dancer-gallery-modal__counter,
.country-genre-calc-modal .dancer-gallery-modal__counter {
  font-size: var(--dwc-font-size-xs);
}

.country-genre-calc-modal .modal-title {
  font-size: var(--dwc-font-size-h3);
}

.country-genre-calc-toolbar__label,
.country-genre-calc-toolbar__notice {
  font-size: var(--dwc-font-size-xs);
}

.country-genre-calc-toolbar__select,
.country-genre-calc-toolbar__btn {
  font-size: var(--dwc-font-size-sm);
}

.country-genre-calc-table thead th,
.country-genre-calc-table tbody td,
.country-genre-calc-log__item {
  font-size: var(--dwc-font-size-sm);
}

/* --------------------------------------------------------------------------
   Sidebar
   -------------------------------------------------------------------------- */

#sidebarPanel .listview .item .in div,
#sidebarPanel .listview .item strong {
  font-size: var(--dwc-font-size-md);
}

#sidebarPanel .listview .item .text-muted,
#sidebarPanel .listview .item small {
  font-size: var(--dwc-font-size-xs);
}
