/* ============================================================
   KPU KOTA BANDUNG — LEAGUE SPARTAN GLOBAL FONT OVERRIDE
   Font: League Spartan (Bold, Geometric, Highly Readable)
   Diterapkan di seluruh halaman website KPU
   Versi: Font Size diperbesar untuk keterbacaan maksimal
   ============================================================ */

/* === GLOBAL BASE FONT SIZE === */
html {
  font-size: 17px !important; /* base scale naik dari 16px */
}

/* === GLOBAL BODY & WRAPPER === */
body, .wrapper {
  font-family: 'League Spartan', 'Arial Black', 'Helvetica Neue', sans-serif !important;
  font-weight: 500 !important;
  font-size: 1rem !important;
  line-height: 1.65 !important;
  -webkit-font-smoothing: antialiased !important;
  -moz-osx-font-smoothing: grayscale !important;
  letter-spacing: 0.2px !important;
}

/* === ALL HEADINGS === */
h1, h2, h3, h4, h5, h6,
.card-title, .modal-title,
.kpu-hero-title {
  font-family: 'League Spartan', 'Arial Black', sans-serif !important;
  font-weight: 700 !important;
  letter-spacing: 0.3px !important;
}

h1 { font-size: 2.2rem !important; }
h2 { font-size: 1.85rem !important; }
h3 { font-size: 1.55rem !important; }
h4 { font-size: 1.3rem !important; }
h5 { font-size: 1.15rem !important; }
h6 { font-size: 1rem !important; }

/* === ALL PARAGRAPHS & TEXT === */
p, span, a, li, td, th, label, div,
.card-category, .card-body,
.kpu-hero-sub, .kpu-hero-badge,
.kpu-hero-date,
.kpu-modal-label, .kpu-label,
.kpu-section-label span,
.text-section,
.footer, .footer *,
.dropdown-item,
.u-text h4, .u-text p,
.profile-username,
.profile-widget-name,
.profile-widget-role-badge,
.dm-alert,
.kpu-crud-alert,
.table-empty,
.table-empty div,
.dapil-legend-info h6,
.dapil-legend-info .dapil-kursi,
.dapil-legend-info .dapil-wilayah,
.dapil-popup,
.dapil-popup-header h4,
.dapil-popup-sub,
.dapil-popup-partai-name,
.dapil-popup-partai-suara,
.dapil-popup-calon-name,
.dapil-popup-calon-suara,
.dapil-popup-empty {
  font-family: 'League Spartan', 'Arial Black', 'Helvetica Neue', sans-serif !important;
}

/* === NUMBERS / STATISTICS (extra bold for readability) === */
.card-stats .card-title,
[data-count],
.kpu-crud-table td,
.kpu-crud-table tfoot td,
.dm-table td {
  font-family: 'League Spartan', 'Arial Black', sans-serif !important;
  font-weight: 800 !important;
  font-variant-numeric: tabular-nums lining-nums !important;
  letter-spacing: 0.5px !important;
}

/* === STAT CARD NUMBERS (the big counters) === */
.card-stats .card-title {
  font-size: 1.85rem !important;
  font-weight: 900 !important;
}

/* === STAT CARD CATEGORY LABELS === */
.card-stats .card-category {
  font-family: 'League Spartan', sans-serif !important;
  font-weight: 600 !important;
  font-size: 0.92rem !important;
  letter-spacing: 0.4px !important;
}

/* === TABLE HEADERS === */
.kpu-crud-table th,
.dm-table th {
  font-family: 'League Spartan', 'Arial Black', sans-serif !important;
  font-weight: 800 !important;
  font-size: 0.92rem !important;
  letter-spacing: 0.5px !important;
  padding: 15px 10px !important;
}

/* === TABLE BODY CELLS === */
.kpu-crud-table td,
.dm-table td {
  font-size: 1rem !important;
  font-weight: 700 !important;
  padding: 13px 10px !important;
}

/* === TABLE FOOTER (TOTALS) === */
.kpu-crud-table tfoot td {
  font-weight: 900 !important;
  font-size: 1.05rem !important;
}

/* === SECTION LABELS === */
.kpu-section-label span {
  font-family: 'League Spartan', sans-serif !important;
  font-weight: 800 !important;
  font-size: 0.92rem !important;
  letter-spacing: 1.5px !important;
}

/* === HERO BANNER === */
.kpu-hero-title {
  font-weight: 900 !important;
  font-size: clamp(1.4rem, 3.2vw, 2.2rem) !important;
  letter-spacing: 0.5px !important;
  line-height: 1.3 !important;
}

.kpu-hero-sub {
  font-weight: 500 !important;
  font-size: 1rem !important;
  line-height: 1.7 !important;
}

.kpu-hero-badge {
  font-weight: 700 !important;
  font-size: 0.88rem !important;
  letter-spacing: 1.2px !important;
}

.kpu-hero-date {
  font-weight: 700 !important;
  font-size: 0.95rem !important;
  letter-spacing: 0.5px !important;
}

/* === LIVE CLOCK === */
.kpu-live-clock {
  font-family: 'League Spartan', sans-serif !important;
  font-weight: 700 !important;
  font-size: 0.96rem !important;
  letter-spacing: 1px !important;
}

/* === BUTTONS === */
.btn-crud-add, .btn-dm-add,
.btn-crud-manage,
.btn-kpu-save,
.btn-kpu-cancel-modal, .btn-kpu-cancel,
.btn-map-toggle,
.btn-profile-widget-edit,
.dapil-tab {
  font-family: 'League Spartan', sans-serif !important;
  font-weight: 700 !important;
  font-size: 0.92rem !important;
  letter-spacing: 0.8px !important;
}

/* === MODAL INPUTS === */
.kpu-input, input, select, textarea {
  font-family: 'League Spartan', sans-serif !important;
  font-weight: 600 !important;
  font-size: 1rem !important;
}

/* === MODAL LABELS === */
.kpu-modal-label, .kpu-label {
  font-family: 'League Spartan', sans-serif !important;
  font-weight: 700 !important;
  font-size: 0.92rem !important;
  letter-spacing: 0.4px !important;
}

/* === MODAL TITLE === */
.modal-title {
  font-weight: 800 !important;
  font-size: 1.2rem !important;
}

/* === CARD TITLE (charts etc.) === */
.card-title {
  font-size: 1.05rem !important;
  font-weight: 700 !important;
}

.card-header .card-title {
  font-size: 1.1rem !important;
  font-weight: 800 !important;
}

/* === SIDEBAR === */
.sidebar .nav-item a p,
.sidebar .nav-item a,
.text-section {
  font-family: 'League Spartan', sans-serif !important;
  font-weight: 600 !important;
}

.sidebar .nav-item a p {
  font-size: 0.95rem !important;
}

.text-section {
  font-weight: 700 !important;
  font-size: 0.82rem !important;
  letter-spacing: 2px !important;
}

/* === FOOTER === */
.footer, .footer * {
  font-family: 'League Spartan', sans-serif !important;
  font-weight: 600 !important;
  font-size: 0.92rem !important;
}

/* === ALERTS === */
.dm-alert, .kpu-crud-alert {
  font-family: 'League Spartan', sans-serif !important;
  font-weight: 700 !important;
  font-size: 1rem !important;
}

/* === PROFILE WIDGET === */
.profile-widget-name {
  font-family: 'League Spartan', sans-serif !important;
  font-weight: 800 !important;
  font-size: 1.15rem !important;
}

.profile-widget-role-badge {
  font-family: 'League Spartan', sans-serif !important;
  font-weight: 700 !important;
  font-size: 0.82rem !important;
}

.custom-template .switch-block h4 {
  font-family: 'League Spartan', sans-serif !important;
  font-weight: 800 !important;
  font-size: 1rem !important;
}

/* === DROPDOWN === */
.dropdown-item, .dropdown-user * {
  font-family: 'League Spartan', sans-serif !important;
  font-weight: 600 !important;
  font-size: 0.95rem !important;
}

/* === DAPIL MAP ELEMENTS === */
.dapil-legend-info h6 {
  font-weight: 800 !important;
  font-size: 0.97rem !important;
}

.dapil-legend-info .dapil-kursi {
  font-weight: 700 !important;
  font-size: 0.92rem !important;
}

.dapil-legend-info .dapil-wilayah {
  font-weight: 500 !important;
  font-size: 0.9rem !important;
}

.dapil-popup-header h4 {
  font-weight: 800 !important;
  font-size: 1.1rem !important;
}

.dapil-popup-partai-suara {
  font-weight: 800 !important;
  font-size: 0.95rem !important;
}

.dapil-popup-partai-name {
  font-weight: 700 !important;
  font-size: 0.95rem !important;
}

.dapil-popup-calon-name {
  font-weight: 600 !important;
  font-size: 0.9rem !important;
}

.dapil-popup-calon-suara {
  font-weight: 700 !important;
  font-size: 0.9rem !important;
}

/* === SEARCH & FILTER ELEMENTS === */
.search-container input,
.calon-picker-search,
.partai-select {
  font-family: 'League Spartan', sans-serif !important;
  font-weight: 600 !important;
  font-size: 0.97rem !important;
}

.dapil-filter-label,
.dapil-chip,
.result-counter,
.no-results-query {
  font-family: 'League Spartan', sans-serif !important;
  font-weight: 700 !important;
  font-size: 0.82rem !important;
}

/* === BADGE / TAG === */
.calon-preview-badge,
.partai-active-badge {
  font-family: 'League Spartan', sans-serif !important;
  font-weight: 700 !important;
  font-size: 0.88rem !important;
}

/* === LOGIN / REGISTER SPECIFIC === */
.login-title, .register-title,
.login-card h1, .login-card h2, .login-card h3,
.login-card h4, .login-card h5, .login-card h6 {
  font-family: 'League Spartan', sans-serif !important;
  font-weight: 900 !important;
}

/* === DATA TABLES (DataTables plugin) === */
.dataTable th, .dataTable td,
table.dataTable thead th,
table.dataTable tbody td {
  font-family: 'League Spartan', sans-serif !important;
}

table.dataTable thead th {
  font-weight: 800 !important;
  font-size: 0.95rem !important;
}

table.dataTable tbody td {
  font-weight: 600 !important;
  font-size: 0.97rem !important;
}

/* === CHART.JS TOOLTIP FIX === */
.chart-container, .pull-in {
  font-family: 'League Spartan', sans-serif !important;
}

/* === KEGIATAN / NEWS CARDS === */
.kegiatan-card *, .news-card * {
  font-family: 'League Spartan', sans-serif !important;
}

/* === GENERAL BOLD OVERRIDE === */
.fw-bold {
  font-weight: 800 !important;
}

/* === PARAGRAPH / BODY TEXT === */
p {
  font-size: 1rem !important;
  line-height: 1.7 !important;
}

/* === SMALL TEXT ADJUSTMENTS === */
small, .small {
  font-size: 0.88rem !important;
  font-weight: 600 !important;
}

/* === CALON PICKER DROPDOWN === */
.calon-picker-option .cp-name {
  font-size: 0.97rem !important;
  font-weight: 700 !important;
}

.calon-picker-option .cp-partai {
  font-size: 0.88rem !important;
}

.calon-picker-option .cp-num {
  font-size: 0.88rem !important;
  font-weight: 800 !important;
}

/* === PROFILE USERNAME in navbar === */
.profile-username span {
  font-size: 0.97rem !important;
  font-weight: 700 !important;
}

/* === RESPONSIVE ADJUSTMENTS FOR READABILITY === */
@media (max-width: 992px) {
  html {
    font-size: 16px !important;
  }

  .card-stats .card-title {
    font-size: 1.6rem !important;
  }

  .kpu-hero-title {
    font-size: 1.4rem !important;
  }

  .kpu-crud-table td,
  .dm-table td {
    font-size: 0.92rem !important;
  }

  .kpu-crud-table th,
  .dm-table th {
    font-size: 0.85rem !important;
  }
}

@media (max-width: 768px) {
  html {
    font-size: 15px !important;
  }

  body, .wrapper {
    font-size: 0.97rem !important;
  }

  .card-stats .card-title {
    font-size: 1.45rem !important;
  }

  .kpu-hero-title {
    font-size: 1.25rem !important;
  }

  .kpu-crud-table td,
  .dm-table td {
    font-size: 0.88rem !important;
    padding: 10px 8px !important;
  }

  .kpu-crud-table th,
  .dm-table th {
    font-size: 0.8rem !important;
    padding: 12px 8px !important;
  }

  .modal-title {
    font-size: 1.05rem !important;
  }

  .kpu-input, input, select, textarea {
    font-size: 0.97rem !important;
  }
}
