/* ═══════════════════════════════════════════════════════════════════════
   PHANTASYA CODEX — Tema Notte (Dark Mode) — v2.4 (Soft Slate / Medium Dark)
   Attivato aggiungendo la classe .theme-dark al <body>.

   FIX v2.4 — Accessibilità: contrasti placeholder/disabled, btn-warning,
              variabili accent dichiarate, testo warning scuro per leggibilità
   FIX v2.3 — Contrasti, colori mancanti e coerenza visiva
   Tutti i fix sono marcati con il tag [FIX-v2.4]
═══════════════════════════════════════════════════════════════════════ */


body.theme-dark {
  /* ── Sfondi: scala ardesia/antracite morbida ────────────────────────── */
  --bg-deep:       #151921;   /* Sfondo base pagina */
  --bg-surface:    #1c222c;   /* Contenitori secondari, toolbar e input */
  --bg-card:       #242b38;   /* Superficie card principale */
  --bg-elevated:   #2e3746;   /* Chip inattivi, badge e dropdown */
  --bg-hover:      #374254;   /* Stati hover interattivi */

  /* ── Accento primario: Rosso corallo brillante ─────────────────────── */
  --main-color:          #e0483d;   /* Rosso primario ad alta leggibilità */
  --main-color-light:    #ea6c63;   /* Rosso chiaro per hover/focus */
  --main-color-dim:      #b3251c;   /* Rosso scuro per sfondi badge/accenti */
  --main-color-glow:     rgba(224, 72, 61, 0.22);

  /* ── Tipografia: Contrasti bilanciati su base ardesia ──────────────── */
  --text-primary:  #e2e8f0;   /* Testo principale chiaro e nitido */
  --text-muted:    #94a3b8;   /* Testo secondario ed etichette */
  --text-dim:      #7a8fa3;   /* Testo disabilitato e placeholder — FIX v2.4: AA Large compliant */

  /* ── Bordi ed Elevazione strutturale ───────────────────────────────── */
  --border:        rgba(255, 255, 255, 0.09); /* Delimitazione visiva card/input */
  --border-strong: rgba(255, 255, 255, 0.18); /* Separatori e focus */
  --border-accent: rgba(224, 72, 61, 0.35);  /* Bordi con tinta identitaria */

  --shadow-card:       0 4px 14px rgba(0, 0, 0, 0.35);
  --shadow-modal:      0 16px 48px rgba(0, 0, 0, 0.55);
  --shadow-main-color: 0 0 24px rgba(224, 72, 61, 0.25);
  /* [FIX-v2.4] Variabili accent mancanti dichiarate esplicitamente */
  --accent-red:   #c94a4a;
  --accent-green: #4a9d6f;
  --accent-blue:  #4a7fb5;
  --accent-amber: #c97a3f;


  background-color: var(--bg-deep);
  background-image:
    radial-gradient(ellipse 80% 60% at 20% 0%, rgba(224, 72, 61, 0.08) 0%, transparent 60%),
    radial-gradient(ellipse 50% 40% at 80% 100%, rgba(96, 165, 250, 0.06) 0%, transparent 50%);
  color: var(--text-primary);
}

/* ── Struttura di Navigazione e Canvas ───────────────────────────────── */
body.theme-dark .navbar {
  background: rgba(28, 34, 44, 0.95);
  backdrop-filter: blur(12px);
  border-bottom: 1px solid var(--border);
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.35);
}

body.theme-dark .login-page {
  background: radial-gradient(ellipse 70% 50% at 30% 20%, rgba(224, 72, 61, 0.09) 0%, transparent 60%),
              radial-gradient(ellipse 50% 60% at 70% 80%, rgba(96, 165, 250, 0.06) 0%, transparent 50%),
              var(--bg-deep);
}

/* ── Card e Superfici ────────────────────────────────────────────────── */
body.theme-dark .card,
body.theme-dark .event-card,
body.theme-dark .modal,
body.theme-dark .login-card,
body.theme-dark .archive-section {
  background-color: var(--bg-card);
  border: 1px solid var(--border);
  box-shadow: var(--shadow-card);
  color: var(--text-primary);
}

/* [FIX-v2.3] Archive card specifiche */
body.theme-dark .archive-card {
  background: var(--bg-surface);
  border-color: var(--border-strong);
}
body.theme-dark .archive-card:hover {
  border-color: var(--main-color);
}
body.theme-dark .archive-card.empty-card {
  background: rgba(224, 72, 61, 0.04);
  border-color: var(--main-color-dim);
}

/* ── Form, Input e Placeholder ───────────────────────────────────────── */
body.theme-dark input,
body.theme-dark select,
body.theme-dark textarea,
body.theme-dark .form-input,
body.theme-dark .form-select,
body.theme-dark .form-textarea {
  background-color: var(--bg-surface);
  border: 1px solid var(--border-strong);
  color: var(--text-primary);
}

body.theme-dark input::placeholder,
body.theme-dark textarea::placeholder,
body.theme-dark .form-input::placeholder {
  color: var(--text-dim);
  opacity: 1;
}

body.theme-dark input:focus,
body.theme-dark select:focus,
body.theme-dark textarea:focus,
body.theme-dark .form-input:focus,
body.theme-dark .form-select:focus,
body.theme-dark .form-textarea:focus {
  border-color: var(--main-color);
  box-shadow: 0 0 0 2px var(--main-color-glow);
  outline: none;
}

/* [FIX-v2.3] Counter input nelle form */
body.theme-dark .counter-input {
  background: var(--bg-deep);
  color: var(--text-primary);
  border-color: var(--border);
}
body.theme-dark .counter-btn {
  background: var(--bg-elevated);
  color: var(--text-primary);
}
body.theme-dark .counter-btn:hover {
  background: var(--bg-hover);
}

/* ── Bottoni ─────────────────────────────────────────────────────────── */
body.theme-dark .btn-primary {
  background-color: var(--main-color);
  border-color: var(--main-color);
  color: #ffffff;
}

body.theme-dark .btn-primary:hover:not(:disabled) {
  background-color: var(--main-color-light);
  border-color: var(--main-color-light);
  color: #ffffff;
  box-shadow: 0 0 16px rgba(224, 72, 61, 0.4);
}

body.theme-dark .btn-secondary,
body.theme-dark .btn-outline,
body.theme-dark .btn-ghost {
  background-color: var(--bg-surface);
  border: 1px solid var(--border-strong);
  color: var(--text-primary);
}

body.theme-dark .btn-secondary:hover:not(:disabled),
body.theme-dark .btn-outline:hover:not(:disabled),
body.theme-dark .btn-ghost:hover:not(:disabled) {
  background-color: var(--bg-elevated);
  border-color: rgba(255, 255, 255, 0.3);
  color: #ffffff;
}

/* [FIX-v2.3] btn-danger — contrasto migliorato */
body.theme-dark .btn-danger {
  background: rgba(224, 72, 61, 0.18);
  color: #ff8a8a;
  border-color: rgba(224, 72, 61, 0.4);
}
body.theme-dark .btn-danger:hover:not(:disabled) {
  background: rgba(224, 72, 61, 0.35);
  border-color: rgba(224, 72, 61, 0.6);
}

/* [FIX-v2.3] btn-danger-outline */
body.theme-dark .btn-danger-outline {
  background: transparent;
  color: #ff8a8a;
  border-color: rgba(224, 72, 61, 0.5);
}
body.theme-dark .btn-danger-outline:hover:not(:disabled) {
  background: rgba(224, 72, 61, 0.12);
}

/* [FIX-v2.3] btn-success — verde più brillante per contrasto */
body.theme-dark .btn-success {
  background: rgba(74, 157, 111, 0.18);
  color: #7ee8a0;
  border-color: rgba(74, 157, 111, 0.4);
}
body.theme-dark .btn-success:hover:not(:disabled) {
  background: rgba(74, 157, 111, 0.35);
  border-color: rgba(74, 157, 111, 0.6);
}

/* [FIX-v2.3] btn-warning */
body.theme-dark .btn-warning {
  background: #c9a227;
  color: #1a1a1a;
  border-color: #b08f22;
  font-weight: 600;
}
body.theme-dark .btn-warning:hover {
  background: #d4ad2f;
}

/* [FIX-v2.3] btn-remove */
body.theme-dark .btn-remove {
  border-color: var(--border);
  color: var(--text-muted);
}
body.theme-dark .btn-remove:hover {
  color: #ff8a8a;
  border-color: rgba(224, 72, 61, 0.4);
}

/* [FIX-v2.3] btn-icon-only */
body.theme-dark .btn-icon-only {
  color: var(--text-muted);
}
body.theme-dark .btn-icon-only:hover {
  background: var(--bg-hover);
  color: var(--text-primary);
}

/* ── Filtri, Pill e Badge Temporali ──────────────────────────────────── */
body.theme-dark .filter-pill,
body.theme-dark .city-filter,
body.theme-dark .city-pill,
body.theme-dark .date-pill,
body.theme-dark .day-chip {
  background-color: var(--bg-elevated);
  border: 1px solid var(--border);
  color: var(--text-muted);
}

body.theme-dark .filter-pill.active,
body.theme-dark .city-filter.active,
body.theme-dark .city-pill.active {
  background-color: var(--main-color);
  border-color: var(--main-color);
  color: #ffffff;
}

body.theme-dark .filter-pill:hover:not(.active),
body.theme-dark .city-filter:hover:not(.active),
body.theme-dark .city-pill:hover:not(.active) {
  background-color: var(--bg-hover);
  color: var(--text-primary);
  border-color: var(--border-strong);
}

/* ── Griglia e Prenotazioni ──────────────────────────────────────────── */
body.theme-dark .sq-empty { border-color: rgba(255, 255, 255, 0.25); }
body.theme-dark .sq-empty.is-min { border-color: rgba(255, 255, 255, 0.45); }
body.theme-dark .sq-empty:not(.is-min) { border-color: rgba(224, 72, 61, 0.4); }
body.theme-dark .sq-filled-min { background-color: var(--text-primary); border-color: var(--text-primary); }
body.theme-dark .sq-filled-opt { background-color: var(--main-color); border-color: var(--main-color); }

/* [FIX-v2.3] Slot griglia — grigio-blu soft invece del rosso invasivo */
body.theme-dark .grid-cell.cell-filled {
  background: rgba(148, 163, 184, 0.06);
  border-color: rgba(148, 163, 184, 0.15);
}
body.theme-dark .grid-cell.cell-filled:hover {
  background: rgba(148, 163, 184, 0.12);
  border-color: rgba(148, 163, 184, 0.25);
  cursor: pointer;
}

/* [FIX-v2.3] Celle vuote griglia — simboli visibili */
body.theme-dark .grid-cell.cell-empty .cell-inner::after {
  color: var(--text-muted);
}
body.theme-dark .grid-cell.cell-empty.cell-editable:hover .cell-inner::after {
  color: var(--text-primary);
}

body.theme-dark .bookings-left-cell { background: rgba(224, 72, 61, 0.06); border-color: var(--border-strong); }
body.theme-dark .notepad-list {
  background-color: var(--bg-surface);
  background-image: repeating-linear-gradient(
    transparent,
    transparent 35px,
    rgba(255, 255, 255, 0.10) 35px,
    rgba(255, 255, 255, 0.10) 36px
  );
}

/* ── Badge Ruoli ─────────────────────────────────────────────────────── */
body.theme-dark .role-superadmin,
body.theme-dark .role-admin { background: rgba(168, 85, 247, 0.18); color: #c084fc; border: 1px solid rgba(168, 85, 247, 0.4); }
body.theme-dark .role-direttivo  { background: rgba(239, 68, 68, 0.18);  color: #f87171; border: 1px solid rgba(239, 68, 68, 0.4); }
body.theme-dark .role-capo_area  { background: rgba(245, 158, 11, 0.18);  color: #fbbf24; border: 1px solid rgba(245, 158, 11, 0.45); }
body.theme-dark .role-desk,
body.theme-dark .role-organizzativo { background: rgba(59, 130, 246, 0.18);  color: #60a5fa; border: 1px solid rgba(59, 130, 246, 0.4); }
body.theme-dark .role-master,
body.theme-dark .role-socio      { background: rgba(224, 72, 61, 0.18);  color: #f87171; border: 1px solid rgba(224, 72, 61, 0.35); }

body.theme-dark .form-select.role-select.role-select-desk,
body.theme-dark .form-select.role-select.role-select-organizzativo { background: rgba(59, 130, 246, 0.18); color: #60a5fa; border-color: rgba(59, 130, 246, 0.4); }
body.theme-dark .form-select.role-select.role-select-master        { background: rgba(224, 72, 61, 0.18);  color: #f87171; border-color: rgba(224, 72, 61, 0.35); }
body.theme-dark .form-select.role-select option[value="desk"],
body.theme-dark .form-select.role-select option[value="organizzativo"] { background: var(--bg-card); color: #60a5fa; }
body.theme-dark .form-select.role-select option[value="master"]        { background: var(--bg-card); color: #f87171; }

/* ── Tag e Header Slot ───────────────────────────────────────────────── */
body.theme-dark .cell-tag-genre { background: rgba(224, 72, 61, 0.18); color: #fca5a5; border: 1px solid rgba(224, 72, 61, 0.35); }
body.theme-dark .cell-tag-sensitive { background: rgba(239, 68, 68, 0.15); border-color: rgba(239, 68, 68, 0.3); color: #f87171; }

body.theme-dark .timeslot-header {
  background: linear-gradient(90deg, rgba(224, 72, 61, 0.18), rgba(224, 72, 61, 0) 55%), var(--bg-surface);
  border: 1px solid var(--border-strong);
  border-left: 4px solid var(--main-color) !important;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.3);
}
body.theme-dark .timeslot-header:hover {
  background: var(--bg-elevated);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4);
  border-color: var(--border-accent);
}
body.theme-dark .timeslot-content {
  background: var(--bg-surface);
  border: 1px solid var(--border-strong);
  border-left: 4px solid var(--main-color) !important;
}

/* ── Pannelli e Notifiche ────────────────────────────────────────────── */
body.theme-dark .notif-panel,
body.theme-dark .dropdown-menu,
body.theme-dark .user-drawer-panel {
  background: var(--bg-card);
  border: 1px solid var(--border-strong);
  box-shadow: var(--shadow-modal);
}
body.theme-dark .notif-item { border-bottom-color: var(--border); }
body.theme-dark .notif-item.unread { background: rgba(96, 165, 250, 0.12); }

/* ═══════════════════════════════════════════════════════════════════════
   [FIX-v2.3] ELEMENTI MANCANTI / CONTRASTI INSUFFICIENTI
   Tutto ciò che segue è nuovo rispetto alla v2.2
═══════════════════════════════════════════════════════════════════════ */

/* ── Flash Messages ───────────────────────────────────────────────────── */
body.theme-dark .flash-success {
  background: rgba(74, 157, 111, 0.18);
  border-color: rgba(74, 157, 111, 0.4);
  color: #7ee8a0;
}
body.theme-dark .flash-danger {
  background: rgba(224, 72, 61, 0.18);
  border-color: rgba(224, 72, 61, 0.4);
  color: #ff8a8a;
}
body.theme-dark .flash-info {
  background: rgba(96, 165, 250, 0.15);
  border-color: rgba(96, 165, 250, 0.35);
  color: #93c5fd;
}
body.theme-dark .flash-warning {
  background: rgba(245, 158, 11, 0.15);
  border-color: rgba(245, 158, 11, 0.35);
  color: #fcd34d;
}
body.theme-dark .flash-close {
  color: var(--text-muted);
}
body.theme-dark .flash-close:hover {
  color: var(--text-primary);
}

/* ── Banner ───────────────────────────────────────────────────────────── */
body.theme-dark .readonly-banner {
  background: rgba(245, 158, 11, 0.12);
  border-bottom-color: rgba(245, 158, 11, 0.3);
  color: #fbbf24;
}
body.theme-dark .conflict-banner {
  background: rgba(224, 72, 61, 0.15);
  border-color: rgba(224, 72, 61, 0.35);
  color: #ff8a8a;
}

/* ── Status Badge ────────────────────────────────────────────────────── */
body.theme-dark .status-inactive {
  background: rgba(239, 68, 68, 0.18);
  color: #f87171;
  border: 1px solid rgba(239, 68, 68, 0.3);
}
body.theme-dark .status-active {
  background: rgba(74, 157, 111, 0.18);
  color: #7ee8a0;
  border: 1px solid rgba(74, 157, 111, 0.3);
}

/* ── Text Utilities ──────────────────────────────────────────────────── */
body.theme-dark .text-muted { color: var(--text-muted); }
body.theme-dark .text-danger { color: #ff8a8a; }
body.theme-dark .text-sm { font-size: .85rem; }

/* ── Data Table ──────────────────────────────────────────────────────── */
body.theme-dark .data-table th {
  background: var(--bg-surface);
  color: var(--text-muted);
  border-bottom-color: var(--border-strong);
}
body.theme-dark .data-table td {
  border-bottom-color: rgba(255, 255, 255, 0.06);
}
body.theme-dark .data-table tr:hover td {
  background: var(--bg-hover);
}
body.theme-dark .data-table th.sortable-th:hover {
  color: var(--text-primary);
}
body.theme-dark .row-disabled td {
  opacity: .35;
}
body.theme-dark .username-cell {
  color: var(--text-muted);
}

/* ── Grid Headers (sticky left column) ───────────────────────────────── */
body.theme-dark .grid-th-corner,
body.theme-dark .grid-td-time {
  background: var(--bg-surface);
  border-color: var(--border);
  color: var(--text-muted);
}
body.theme-dark .grid-th-table {
  background: var(--bg-surface);
  border-color: var(--border);
  color: var(--text-muted);
}
body.theme-dark .grid-th-table.master-col {
  color: var(--main-color);
  border-top-color: var(--main-color);
}

/* ── Cell Tags (segnalazioni desk) ──────────────────────────────────── */
body.theme-dark .cell-tag-tint {
  pointer-events: none;
}
body.theme-dark .cell-tag-corner-empty {
  border-color: transparent rgba(255, 255, 255, 0.22) transparent transparent;
}
body.theme-dark .cell-tag-corner-empty:hover {
  border-color: transparent rgba(255, 255, 255, 0.45) transparent transparent;
}
body.theme-dark .cell-tag-cancelled-badge {
  background: rgba(15, 15, 15, 0.85);
  border-color: var(--accent-red, #c94a4a);
  color: #ff8a8a;
}
body.theme-dark .cell-tag-note-hover {
  background: rgba(15, 15, 15, 0.92);
  border-color: var(--border-strong);
  color: #e2e8f0;
}

/* ── Bookings / Prenotazioni ─────────────────────────────────────────── */
body.theme-dark .booking-count-badge {
  background: var(--bg-elevated);
  color: var(--text-muted);
  border-color: var(--border);
}
body.theme-dark .booking-row:hover {
  background: var(--bg-hover);
}
body.theme-dark .booking-num {
  color: var(--text-dim);
}
body.theme-dark .booking-notes {
  color: var(--text-primary);
}
body.theme-dark .booking-donation-badge {
  color: var(--main-color-light);
}
body.theme-dark .bookings-empty {
  color: var(--text-muted);
}
body.theme-dark .bookings-slot-title {
  color: var(--text-primary);
}
body.theme-dark .bookings-slot-sub {
  color: var(--text-muted);
}

/* ── Donation Panel ──────────────────────────────────────────────────── */
body.theme-dark .donation-panel {
  background: var(--bg-elevated);
  border-color: var(--border);
}
body.theme-dark .donation-panel-label {
  color: var(--text-muted);
}
body.theme-dark .donation-panel-value {
  color: var(--main-color-light);
}
body.theme-dark .donation-panel-value.is-loading {
  color: var(--text-dim);
}

/* ── Version Badge ───────────────────────────────────────────────────── */
body.theme-dark .version-badge {
  color: var(--text-muted);
}

/* ── Login Ornaments ───────────────────────────────────────────────────── */
body.theme-dark .login-ornament {
  border-color: rgba(255, 255, 255, 0.15);
}

/* ── PTR Indicator (pull-to-refresh) ──────────────────────────────────── */
body.theme-dark .ptr-indicator {
  background: var(--bg-surface);
  border-bottom-color: var(--border);
  color: var(--text-muted);
}
body.theme-dark .ptr-indicator.is-ready .ptr-text {
  color: var(--main-color);
}
body.theme-dark .ptr-spinner {
  color: var(--main-color);
}

/* ── Mobile Search Sticky ────────────────────────────────────────────── */
body.theme-dark .mobile-search-sticky {
  background: rgba(28, 34, 44, 0.98);
  border-bottom-color: var(--border);
}
body.theme-dark .mobile-search-sticky.is-visible {
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.35);
}

/* ── Back to Top Button ──────────────────────────────────────────────── */
body.theme-dark .back-to-top-btn {
  background: var(--main-color);
  color: #fff;
  border-color: var(--border-strong);
}
body.theme-dark .back-to-top-btn:hover {
  background: var(--main-color-light);
}

/* ── Switch / Toggle ─────────────────────────────────────────────────── */
body.theme-dark .slider {
  background-color: var(--bg-elevated);
  border-color: var(--border-strong);
}
body.theme-dark .slider:before {
  background-color: var(--text-muted);
}
body.theme-dark input:checked + .slider {
  background-color: rgba(224, 72, 61, 0.2);
  border-color: var(--main-color);
}
body.theme-dark input:checked + .slider:before {
  background-color: var(--main-color);
}

/* ── Zoom Bar ─────────────────────────────────────────────────────────── */
body.theme-dark .grid-zoom-bar {
  background: var(--bg-surface);
  border-color: var(--border);
}
body.theme-dark .btn-zoom {
  background: var(--bg-elevated);
  border-color: var(--border);
  color: var(--text-primary);
}
body.theme-dark .btn-zoom:hover {
  border-color: var(--main-color);
  color: var(--main-color);
}
body.theme-dark .zoom-slider {
  accent-color: var(--main-color);
}
body.theme-dark .grid-zoom-value {
  color: var(--main-color);
}

/* ── Modale Segnalazione Cella ────────────────────────────────────────── */
body.theme-dark .celltag-status-btn {
  background: var(--bg-deep);
  color: var(--text-muted);
  border-color: var(--border-strong);
}
body.theme-dark .celltag-status-btn:hover {
  background: var(--bg-elevated);
}
body.theme-dark .celltag-status-partito.is-active {
  background: var(--accent-green, #4a9d6f);
  color: #fff;
}
body.theme-dark .celltag-status-cancelled.is-active {
  background: var(--accent-red, #c94a4a);
  color: #fff;
}
body.theme-dark .celltag-swatch {
  border-color: transparent;
}
body.theme-dark .celltag-swatch.is-active {
  border-color: var(--text-primary);
  box-shadow: 0 0 0 2px var(--bg-surface), 0 0 0 3px var(--text-primary);
}
body.theme-dark .celltag-checkbox-label {
  color: var(--text-muted);
}

/* ── Avatar ───────────────────────────────────────────────────────────── */
body.theme-dark .avatar {
  background: var(--bg-surface);
  color: var(--text-muted);
}
body.theme-dark .avatar-placeholder {
  border-color: var(--border);
}

/* ── Profile Picture ──────────────────────────────────────────────────── */
body.theme-dark .profile-pic-preview {
  background: var(--bg-elevated);
  border-color: var(--border-strong);
}
body.theme-dark .profile-pic-placeholder {
  color: var(--text-muted);
}

/* ── Sidebar Indice Prenotazioni ─────────────────────────────────────── */
body.theme-dark .bookings-sidebar {
  background: var(--bg-surface);
  border-color: var(--border);
}
body.theme-dark .sidebar-title {
  color: var(--text-primary);
  border-bottom-color: var(--border-strong);
}
body.theme-dark .sidebar-ts-link {
  color: var(--main-color-light);
}
body.theme-dark .sidebar-ts-link:hover {
  color: var(--main-color);
}
body.theme-dark .sidebar-tbl-link {
  color: var(--text-muted);
  border-left-color: var(--border);
}
body.theme-dark .sidebar-tbl-link:hover {
  color: var(--text-primary);
  border-left-color: var(--main-color);
}
body.theme-dark .sidebar-tbl-master {
  color: var(--text-dim);
}

/* ── Superadmin Tabs ──────────────────────────────────────────────────── */
body.theme-dark .sa-tabs {
  border-bottom-color: var(--border);
}
body.theme-dark .sa-tab {
  color: var(--text-muted);
}
body.theme-dark .sa-tab:hover {
  color: var(--text-primary);
}
body.theme-dark .sa-tab.active {
  color: var(--main-color);
  border-bottom-color: var(--main-color);
}

/* ── Config Grid ──────────────────────────────────────────────────────── */
body.theme-dark .config-row {
  background: var(--bg-card);
  border-color: var(--border);
}
body.theme-dark .config-key {
  color: var(--text-primary);
}
body.theme-dark .config-desc {
  color: var(--text-muted);
}

/* ── Log Entries ──────────────────────────────────────────────────────── */
body.theme-dark .log-time {
  color: var(--text-dim);
}
body.theme-dark .log-action {
  background: var(--bg-elevated);
  color: var(--text-muted);
}
body.theme-dark .log-detail {
  color: var(--text-muted);
}
body.theme-dark .log-ip {
  color: var(--text-dim);
}

/* ── Backup/Restore Section ───────────────────────────────────────────── */
body.theme-dark .backup-restore-section {
  background: var(--bg-card);
  border-color: rgba(224, 72, 61, 0.2);
}

/* ── Toolbar Griglia/Prenotazioni ─────────────────────────────────────── */
body.theme-dark .grid-toolbar {
  background: var(--bg-surface);
  border-bottom-color: var(--border);
}
body.theme-dark .toolbar-grid {
  border-left-color: var(--accent-amber, #c97a3f);
}
body.theme-dark .toolbar-bookings {
  border-left-color: var(--accent-blue, #4a7fb5);
}
body.theme-dark .toolbar-section-dot {
  background: var(--accent-amber, #c97a3f);
}
body.theme-dark .toolbar-bookings .toolbar-section-dot {
  background: var(--accent-blue, #4a7fb5);
}

/* ── Day Tabs ─────────────────────────────────────────────────────────── */
body.theme-dark .day-tabs-bar {
  border-bottom-color: var(--border);
}
body.theme-dark .day-tab {
  color: var(--text-muted);
}
body.theme-dark .day-tab:hover {
  color: var(--text-primary);
}
body.theme-dark .day-tab.active {
  color: var(--main-color);
  border-bottom-color: var(--main-color);
}
body.theme-dark .day-tab-add {
  color: var(--text-dim);
}
body.theme-dark .day-tab-add:hover {
  color: var(--main-color);
}

/* ── Empty State ──────────────────────────────────────────────────────── */
body.theme-dark .empty-state {
  color: var(--text-muted);
}
body.theme-dark .empty-icon {
  color: var(--text-dim);
}

/* ── Event Card ───────────────────────────────────────────────────────── */
body.theme-dark .event-card-banner--placeholder {
  background: var(--bg-elevated);
}
body.theme-dark .event-profile-logo {
  border-color: var(--bg-card);
  background: var(--bg-surface);
}
body.theme-dark .event-name {
  color: var(--text-primary);
}
body.theme-dark .event-desc {
  color: var(--text-muted);
}
body.theme-dark .event-card-stats {
  color: var(--text-muted);
}
body.theme-dark .stat-value {
  color: var(--text-primary);
}
body.theme-dark .stat-sep {
  color: var(--text-dim);
}

/* ── Structure Section ────────────────────────────────────────────────── */
body.theme-dark .structure-section-title {
  color: var(--main-color-dim);
  border-bottom-color: var(--border);
}
body.theme-dark .structure-item-name {
  color: var(--text-primary);
}
body.theme-dark .structure-item-deleted {
  opacity: .35;
}

/* ── Scrollbar ────────────────────────────────────────────────────────── */
body.theme-dark ::-webkit-scrollbar-track {
  background: var(--bg-deep);
}
body.theme-dark ::-webkit-scrollbar-thumb {
  background: var(--border-strong);
}
body.theme-dark ::-webkit-scrollbar-thumb:hover {
  background: var(--main-color-dim);
}
body.theme-dark * {
  scrollbar-color: var(--border-strong) var(--bg-deep);
}

/* ── Loading ─────────────────────────────────────────────────────────── */
body.theme-dark .grid-loading {
  color: var(--text-muted);
}
body.theme-dark .loading-sigil {
  color: var(--main-color);
}

/* ── Drag & Drop ──────────────────────────────────────────────────────── */
body.theme-dark .grid-cell.drag-source {
  outline-color: var(--main-color);
}
body.theme-dark .grid-cell.drag-over {
  background: rgba(224, 72, 61, 0.18);
  outline-color: var(--main-color);
}

/* ── Player Counter ──────────────────────────────────────────────────── */
body.theme-dark .player-counter {
  border-color: var(--border);
}

/* ── Modal Footer Fixed ───────────────────────────────────────────────── */
body.theme-dark .modal-footer-fixed {
  background-color: var(--bg-card);
  border-top-color: var(--border);
}

/* ── Modal Body Scroller ─────────────────────────────────────────────── */
body.theme-dark .modal-body-scroller {
  scrollbar-color: var(--border-strong) transparent;
}

/* ── Nav Tab ──────────────────────────────────────────────────────────── */
body.theme-dark .nav-tab {
  color: var(--text-muted);
}
body.theme-dark .nav-tab:hover {
  color: var(--text-primary);
  background: var(--bg-elevated);
}
body.theme-dark .nav-tab.active {
  color: var(--main-color);
  background: var(--main-color-glow);
}

/* ── Nav Link ──────────────────────────────────────────────────────────── */
body.theme-dark .nav-link {
  color: var(--text-muted);
}
body.theme-dark .nav-link:hover {
  color: var(--text-primary);
  background: var(--bg-elevated);
}
body.theme-dark .superadmin-link:hover {
  color: var(--main-color);
}
body.theme-dark .nav-logout:hover {
  color: #ff8a8a;
}

/* ── User Info ───────────────────────────────────────────────────────── */
body.theme-dark .user-name {
  color: var(--text-primary);
}

/* ── Form Section Title ───────────────────────────────────────────────── */
body.theme-dark .form-section-title {
  color: var(--main-color-dim);
  border-bottom-color: var(--border);
}

/* ── Page Title ───────────────────────────────────────────────────────── */
body.theme-dark .page-title {
  color: var(--text-primary);
}
body.theme-dark .page-title-icon {
  color: var(--main-color);
}

/* ── Section Title/Subtitle ───────────────────────────────────────────── */
body.theme-dark .section-title {
  color: var(--text-primary);
}
body.theme-dark .section-subtitle {
  color: var(--text-muted);
}

/* ── Cell Contents ────────────────────────────────────────────────────── */
body.theme-dark .cell-master {
  color: var(--text-primary);
}
body.theme-dark .cell-adventure {
  color: var(--text-muted);
}
body.theme-dark .cell-tag {
  background: var(--bg-elevated);
  border-color: var(--border);
  color: var(--text-muted);
}
body.theme-dark .cell-players {
  color: var(--text-muted);
}
body.theme-dark .cell-players-full {
  color: var(--accent-green, #4a9d6f);
}

/* ── Archive Actions ──────────────────────────────────────────────────── */
body.theme-dark .archive-actions {
  color: var(--text-muted);
}
body.theme-dark .archive-actions:hover {
  color: #ff8a8a;
}

/* ── Dropdown ─────────────────────────────────────────────────────────── */
body.theme-dark .dropdown-item {
  color: var(--text-primary);
}
body.theme-dark .dropdown-item:hover {
  background: var(--bg-hover);
}
body.theme-dark .dropdown-item.text-danger {
  color: #ff8a8a;
}

/* ── Toolbar Drawer Toggle (mobile) ───────────────────────────────────── */
body.theme-dark .toolbar-drawer-toggle {
  background: var(--bg-elevated);
  border-color: var(--border);
  color: var(--text-primary);
}

/* ── Sidebar Accordion ──────────────────────────────────────────────── */
body.theme-dark .sidebar-title-toggle:hover {
  color: var(--main-color);
}
body.theme-dark .sidebar-ts-chevron {
  color: var(--text-muted);
}
body.theme-dark .sidebar-tbl-grid {
  column-rule-color: var(--border);
}

/* ── Print (PDF Export) ───────────────────────────────────────────────── */
/* Il print mantiene i colori del dark per coerenza se l'utente stampa in dark */
body.theme-dark #pdf-export-root {
  background: var(--bg-deep);
  color: var(--text-primary);
}