/* Shared visual system. Keep operational colours (shifts, alerts, status) intact. */
:root {
  color-scheme: light;
  --primary-color: #245bd7;
  --primary-dark: #1947ad;
  --primary-light: #4295e8;
  --bg-color: #eef3f9;
  --main-bg: transparent;
  --text-color: #182942;
  --text-muted: #52647e;
  --text-secondary: #52647e;
  --accent-color: #52647e;
  --card-bg: rgba(255,255,255,.84);
  --border-color: #d5dfec;
  --glass-border: rgba(133,157,190,.26);
  --glass-field: rgba(250,252,255,.92);
  --glass-hover: rgba(36,91,215,.055);
  --glass-shadow: 0 12px 36px -20px rgba(28,54,93,.28), inset 0 1px 0 rgba(255,255,255,.8);
  --box-shadow: 0 4px 18px -8px rgba(28,54,93,.2);
  --box-shadow-md: var(--glass-shadow);
  --border-radius: 12px;
  --border-radius-lg: 18px;
  --topbar-bg: rgba(248,251,255,.86);
}
[data-theme="dark"] {
  color-scheme: dark;
  --primary-color: #7aabff;
  --primary-dark: #9bc1ff;
  --bg-color: #101a2c;
  --main-bg: transparent;
  --text-color: #e5edf8;
  --text-muted: #aabbd0;
  --text-secondary: #aabbd0;
  --accent-color: #aabbd0;
  --card-bg: rgba(26,40,62,.9);
  --border-color: #3c4f69;
  --glass-border: rgba(152,177,210,.22);
  --glass-field: rgba(15,27,46,.9);
  --glass-hover: rgba(122,171,255,.08);
  --glass-shadow: 0 16px 40px -22px rgba(0,0,0,.65), inset 0 1px 0 rgba(255,255,255,.06);
  --topbar-bg: rgba(18,30,49,.88);
}
html { background: var(--bg-color); }
body {
  background: radial-gradient(ellipse at 12% 0%, rgba(74,139,236,.14), transparent 48%),
    radial-gradient(ellipse at 95% 35%, rgba(39,184,174,.09), transparent 48%), var(--bg-color) !important;
  background-attachment: fixed !important;
  color: var(--text-color);
  font-family: "Segoe UI Variable", "Segoe UI", -apple-system, BlinkMacSystemFont, sans-serif;
  -webkit-font-smoothing: antialiased;
}
body .app-main { background: transparent; min-width: 0; }
body .sidebar {
  background: linear-gradient(160deg, rgba(20,37,62,.98), rgba(13,25,43,.96));
  border-right: 1px solid rgba(154,186,229,.16);
  box-shadow: 10px 0 45px -30px rgba(8,20,39,.6);
}
body .sidebar-header { padding-top: 24px; padding-bottom: 22px; }
body .sidebar-logo {
  background: linear-gradient(145deg, #367dec, #2251b3);
  border: 1px solid rgba(255,255,255,.25); border-radius: 12px;
  box-shadow: 0 4px 14px rgba(36,91,215,.28);
}
body .sidebar-title { letter-spacing: -.04em; }
body .nav-section-label { color: #95a8c2; font-size: .64rem; letter-spacing: .14em; }
body .sidebar-link {
  margin: 3px 10px; padding: 11px 12px; border-radius: 10px;
  border-left: 0; color: #c1cee1;
}
body .sidebar-link.active {
  color: #fff; background: linear-gradient(110deg, rgba(73,134,235,.3), rgba(73,134,235,.12));
  box-shadow: inset 0 0 0 1px rgba(127,173,248,.22);
}
body .sidebar-link::before { display: none; }
body .nav-icon svg { width: 19px; height: 19px; display: block; }
body .top-bar {
  background: var(--topbar-bg); border-bottom: 1px solid var(--glass-border);
  backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px);
  box-shadow: 0 4px 24px -18px rgba(28,54,93,.3);
  min-height: 68px; height: auto; gap: 12px; padding-block: 12px; box-sizing: border-box;
}
body .top-bar-title { color: var(--text-color); font-size: 1.1rem; letter-spacing: -.025em; margin: 0; min-width: 0; }
body .top-bar :is(button,input) { width: auto; margin: 0; }
body .top-bar .theme-toggle { width: 40px; height: 40px; flex-shrink: 0; }
body .top-bar .hamburger { width: 40px; height: 40px; color: var(--text-color); }
body .theme-toggle { border-radius: 12px; background: var(--glass-field); border-color: var(--glass-border); }
body .main-content { padding: 28px; }
body table { background-color: var(--card-bg); color: var(--text-color); }
body tbody tr:nth-child(even) { background-color: var(--glass-hover); }
body tr:hover { background-color: var(--glass-hover); }
body .watermark { opacity: .025; }
[hidden] { display: none !important; }
body h1, body h2, body h3 { color: var(--text-color) !important; letter-spacing: -.025em; }
/* Broadly shared panels plus the specialised administrative screens. */
body :is(.card,.stat-box,.summary-card,.user-create-card,.form-container,.admin-table-container,
  .attendance-controls,.attendance-table-wrap,.rend-filters,.rend-stat-card,.rend-dept,
  .rend-table-wrap,.filtros-panel,.row-order-toolbar,.panel-alertas,.modal-box,.modal-content,
  .comentario-modal-content,.config-card,.section-card,.filter-bar-users,.glass-surface,
  .bloque-departamentos,.bloque-impresion,.admin-card,.report-card,.current-config,.info-section,
  .dept-table-container,.geo-config-panel,.filter-bar,.stat-card,.create-admin-panel,.permissions-module,
  .geo-stat-card,.geo-dept-section,.control-panel) {
  background: var(--card-bg) !important;
  color: var(--text-color);
  border: 1px solid var(--glass-border) !important;
  border-radius: 16px !important;
  box-shadow: var(--glass-shadow) !important;
}
/* Explicit surfaces prevent legacy fixed light backgrounds with inherited dark text. */
body #panel-control-horas, body #tabla-fichajes-panel, body .scheduler-panel, body .scheduler-results,
body :is(.historial-panel,.control-block,.rule-editor,.rule-item,.quota-box,.diagnostics,.status) {
  background: var(--card-bg) !important; color: var(--text-color);
  border-color: var(--glass-border) !important;
}
body #panel-incidencias-horas { background: #fff7ed; color: #7c2d12; }
[data-theme="dark"] body #panel-incidencias-horas { background: #35271e !important; color: #ffd9af; border-color: #815433 !important; }
[data-theme="dark"] body #panel-incidencias-horas > div:first-child { background: #7d3516 !important; color: #fff; }
[data-theme="dark"] body #panel-incidencias-horas > div:last-child > div { border-color: #66422e !important; }
body #tabla-fichajes :is(td,th) { background: transparent; }
body .resumen-turnos-table th.label-col {
  background: var(--glass-field) !important; color: var(--text-color) !important;
}
body :is(.resumen-turnos-table .row-semana,.resumen-turnos-table .row-dia,.resumen-turnos-table .row-diasemana,
  .resumen-turnos-table .row-m,.resumen-turnos-table .row-t,.resumen-turnos-table .row-n) {
  background: var(--glass-field) !important; color: var(--text-color) !important;
}
body :is(.scheduler-panel,.scheduler-results) { border-radius:18px; box-shadow:var(--glass-shadow); }
body :is(.scheduler-panel label,.turn-checks,.rule-text,.quota-box strong,.apply-note,.diagnostics) { color:var(--text-color); }
body .scheduler-results td.name { background:var(--glass-field); color:var(--text-color); }
body .scheduler-panel .btn-secondary { background:var(--glass-field); color:var(--text-color); border:1px solid var(--border-color); }
body .generator-quota-table { background:var(--glass-field); box-shadow:none; margin-bottom:0; }
body .generator-quota-table :is(th,td) { background:transparent; color:var(--text-color); text-transform:none; }
body :is(.dept-form-container,.config-container) > form {
  background:var(--card-bg); color:var(--text-color); border-color:var(--glass-border); box-shadow:var(--glass-shadow);
}
body :is(.current-config p,.admin-info-row,.admin-info-row .label,.report-card-body label,.config-container label) { color:var(--text-muted); }
body :is(.report-card-header,.admin-card-header,.admin-card-actions,.info-section li) { border-color:var(--glass-border); }
body :is(.info-banner,.notice-success,.week-info,.report-lock-summary,.report-lock-intro,.report-lock-badge,.info-box) {
  background:var(--glass-field); color:var(--text-color); border-color:var(--border-color);
}
body .report-lock-summary::after { color:var(--primary-color); }
body .report-lock-card .report-card-header { background:var(--glass-field); }
body :is(.report-lock-muted,.report-lock-current,.report-lock-current strong) { color:var(--text-muted); }
body .current-config code { background:var(--glass-field) !important; color:var(--text-color); }
body :is(.nivel-help,.permissions-module-header,.permissions-help,.permissions-editor-footer) { background:var(--glass-field); color:var(--text-color); border-color:var(--glass-border); }
body :is(.permissions-module-toggle,.permissions-toolbar button) { background:var(--glass-field); color:var(--text-color); border-color:var(--border-color); }
body .permissions-table { background:var(--card-bg); color:var(--text-color); }
body .permissions-table th { background:var(--glass-field); color:var(--text-color); }
body .permissions-table td:first-child { color:var(--text-color); }
body .historial-panel { overflow-x:auto; }
body .historial-table th { background:var(--glass-field); color:var(--text-muted); }
body .historial-table tr:hover { background:var(--glass-hover); }
body .geo-dept-header { background:var(--glass-field); border-color:var(--glass-border); }
body .geo-table { background:transparent; color:var(--text-color); }
body .geo-table td { color:var(--text-color); }
body .geo-table th { background:var(--glass-field); color:var(--text-muted); }
body .config-field label { color:var(--text-muted); }
body :is(.departamento-texto,.reloj) { color:var(--text-color); }
body .geo-date-filter label { color:var(--text-color) !important; }
body .geo-date-filter .btn { background:var(--glass-field) !important; color:var(--text-color) !important; border-color:var(--border-color) !important; }
body .alerta-meta span { background:var(--glass-field); color:var(--text-color); }
body .alerta-meta strong { color:var(--text-color); }
body :is(.tab-departamento,.tab-configuracion) { color:var(--text-muted) !important; }
[data-theme="dark"] body #tabla-fichajes tbody tr.auto-cerrado { background:#45242a !important; }
[data-theme="dark"] body #tabla-fichajes tbody tr.salida-automatica { background:#382d1e !important; }
body :is(.card,.attendance-controls,.rend-filters,.filtros-panel,.modal-box,.modal-content,dialog,.form-container) {
  backdrop-filter: blur(16px); -webkit-backdrop-filter: blur(16px);
}
body :is(.stat-box,.summary-card,.rend-stat-card) { transform: none; }
body :is(.stat-info h4,.stat-value,.number,.rend-table td,.attendance-table td) { font-variant-numeric: tabular-nums; }
body :is(.stat-info h4,.stat-value,.stat-label,.stat-detail,.sc-no-data) { color: var(--text-color); }
body :is(.stat-label,.stat-detail) { color: var(--text-muted); }
body .rend-stat-card :is(.stat-label,.stat-detail) { color: var(--text-muted); }
body .rend-corrections > summary { color: var(--primary-color); }
body [style*="color: #1e293b"], body [style*="color: #475569"], body [style*="color: #64748b"], body [style*="color: #333"] { color: var(--text-color) !important; }
body .rend-filters { padding: 16px; }
body .filtros-panel > div { background: var(--card-bg); border-color: var(--glass-border); box-shadow: var(--glass-shadow); }
body .alerta-item { background: var(--card-bg) !important; color: var(--text-color); }
body :is(.alerta-texto,.alerta-meta) { color: var(--text-color); }
body .filtros-row label { color: var(--text-muted); }
body #tabs-departamentos { background: var(--glass-field) !important; border-color: var(--glass-border) !important; }
body .dept-tab { color: var(--text-muted) !important; }
body .dept-tab.active { background: var(--card-bg) !important; color: var(--primary-color) !important; }
body .rend-filters :is(input:not([type="checkbox"]),select) { width: auto; flex: 1 1 220px; margin: 0; }
body .rend-filters label { margin: 0; color: var(--text-muted) !important; white-space: nowrap; }
body input[type="checkbox"], body input[type="radio"] { width: auto; min-height: 0; margin: 0; accent-color: var(--primary-color); }
body :is(.card-header,.sc-header,.rend-dept-header) {
  background: transparent; border-bottom-color: var(--glass-border);
}
body :is(input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="color"]), select, textarea) {
  background: var(--glass-field) !important; color: var(--text-color) !important;
  border: 1px solid var(--border-color) !important; border-radius: 10px !important;
  box-sizing: border-box; min-height: 40px;
  font: inherit; font-size: .875rem; box-shadow: inset 0 1px 2px rgba(15,30,50,.025);
}
body input::placeholder, body textarea::placeholder { color: var(--text-muted); opacity: .85; }
body option { background: var(--bg-color); color: var(--text-color); }
body :is(input,select,textarea):focus { border-color: var(--primary-color) !important; box-shadow: 0 0 0 3px rgba(70,124,221,.16); }
body :is(button,.btn,.button,input[type="submit"]) {
  border-radius: 10px; font-weight: 600; letter-spacing: .005em;
  transition: background .16s ease, box-shadow .16s ease, border-color .16s ease;
}
body :is(.btn-primary,.attendance-table button,#state-submit,#new-entry,#apply-filter) {
  background: linear-gradient(135deg, #2866df, #2254bc); color: #fff;
  border: 1px solid rgba(31,78,161,.25); box-shadow: 0 4px 12px -6px rgba(36,91,215,.55);
}
body :is(button,.btn,.button):hover { transform: none; }
body :is(button,a,input,select,textarea,summary):focus-visible {
  outline: 3px solid #568be4; outline-offset: 3px;
}
body :is(button,.btn):disabled { opacity: .5; cursor: not-allowed; }
body :is(.table-modern,.rend-table,.attendance-table,#tabla-fichajes) {
  background: transparent; color: var(--text-color); font-family: inherit;
}
body :is(.table-modern,.rend-table,.attendance-table,#tabla-fichajes) th {
  background: var(--glass-field) !important; color: var(--text-muted) !important;
  font-size: .73rem; letter-spacing: .04em; font-weight: 700;
  border-color: var(--glass-border);
}
body :is(.table-modern,.rend-table,.attendance-table,#tabla-fichajes) td {
  border-color: var(--glass-border); color: var(--text-color);
}
body :is(.table-modern,.rend-table,.attendance-table,#tabla-fichajes) tbody tr:not(.auto-cerrado):not(.salida-automatica) {
  background: transparent;
}
body :is(.table-modern,.rend-table,.attendance-table,#tabla-fichajes) tbody tr:hover { background: var(--glass-hover); }
body .cuadrante-container { border-radius: 14px; border: 1px solid var(--glass-border); box-shadow: var(--glass-shadow); }
body .cuadrante-table td.nombre { background: var(--glass-field); color: var(--text-color); }
body .modal-overlay, dialog::backdrop { background: rgba(9,20,37,.48); backdrop-filter: blur(5px); }
body dialog { background: var(--card-bg) !important; color: var(--text-color); border-radius: 18px !important; border-color: var(--glass-border) !important; box-shadow: 0 24px 80px rgba(0,0,0,.25); }
body #state-reason { display: block; width: 100%; margin-top: 8px; padding: 10px 12px; }
body .login-container { max-width: 460px; }
body .login-icon { border-radius: 22px; }
body .header-top { background: var(--card-bg); border-bottom: 1px solid var(--glass-border); backdrop-filter: blur(16px); }
body .pagination :is(a,strong) { border-radius: 9px; }
body .sidebar.collapsed .sidebar-link { margin: 3px 6px; padding-inline: 10px; }
@supports not (backdrop-filter: blur(1px)) {
  :root { --card-bg: #fff; --topbar-bg: #f8fbff; }
  [data-theme="dark"] { --card-bg: #1a283e; --topbar-bg: #121e31; }
}
@media (max-width: 768px) {
  body .main-content { padding: 16px 12px; }
  body .top-bar { padding-inline: 12px; flex-wrap: nowrap; gap: 8px; }
  body .top-bar-actions { gap: 6px; }
  body .top-bar .search-input { width: 100px !important; }
  body .top-bar .search-container { padding: 0; margin: 0; }
  body .attendance-header { flex-wrap: wrap; }
  body .attendance-header > div { flex: 1 1 100%; }
  body .top-bar-title { font-size: 1rem; }
  body :is(.attendance-controls,.rend-filters,.filtros-panel) { padding: 16px !important; gap: 12px; }
  body .attendance-table td { padding: 12px; }
  body .sidebar-link { min-height: 44px; box-sizing: border-box; }
}
@media screen {
  body .cuadrante-container { max-width: 100%; overflow-x: auto !important; }
  body .cuadrante-sticky-header { overflow:hidden !important; max-width:calc(100vw - 24px) !important; }
  [data-theme="dark"] body .cuadrante-table td:not([class*="turno-"]) { background:var(--glass-field); color:var(--text-color); }
  body .create-admin-panel { overflow-x:auto; }
  body .main-nav { margin:0 0 24px !important; background:var(--topbar-bg) !important; }
  body .main-nav .nav-container { flex-wrap:wrap !important; }
  body :is(.nav-brand,.breadcrumb-link,.breadcrumb-current) { color:var(--text-color) !important; }
  body .nav-link:not(.active) { background:var(--glass-field) !important; color:var(--text-color) !important; border-color:var(--border-color) !important; }
  body #qr-actual { background:var(--card-bg); border-color:var(--glass-border); }
  body #qr-img { background:white; border-radius:8px; }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; }
}
@media print {
  html,body { background: white !important; color: black !important; }
  body * { backdrop-filter: none !important; -webkit-backdrop-filter: none !important; box-shadow: none !important; }
  body .sidebar, body .top-bar { display: none !important; }
  body .app-main { margin: 0 !important; }
  body .main-content { padding: 0; }
  body :is(.card,.admin-table-container,.rend-table-wrap,.rend-dept,.cuadrante-container) { background: white !important; border-radius: 0 !important; }
  body :is(.table-modern,.rend-table,.attendance-table,#tabla-fichajes) :is(th,td) { color: black !important; }
  body .resumen-turnos-table th.label-col,
  body .resumen-turnos-table :is(.row-semana,.row-dia,.row-diasemana,.row-m,.row-t,.row-n) {
    background:white !important; color:black !important;
  }
  body table { background:white !important; color:black; }
  body :is(.scheduler-results,.scheduler-results td.name) { background:white !important; color:black !important; }
}
