/*
 * v180.5.4 — Visual Regression QA + Legacy Widget Normalization
 * Patch incremental sobre v180.5.3. No altera PHP, SQL ni lógica académica.
 * Objetivo: normalizar contraste en botones, KPIs, cards, inputs/selects, tablas y widgets legacy.
 */
:root{
  --saas54-bg:#06111f;
  --saas54-surface:#0b1729;
  --saas54-surface-2:#101d31;
  --saas54-surface-3:#16263f;
  --saas54-border:rgba(147,197,253,.34);
  --saas54-border-strong:rgba(191,219,254,.52);
  --saas54-text:#f8fbff;
  --saas54-muted:#c7d7ee;
  --saas54-muted-strong:#e2e8f0;
  --saas54-primary:#2563eb;
  --saas54-primary-2:#60a5fa;
  --saas54-info:#38bdf8;
  --saas54-success:#22c55e;
  --saas54-warning:#f59e0b;
  --saas54-danger:#ef4444;
  --saas54-shadow:0 16px 38px rgba(0,0,0,.28);
  color-scheme:dark;
}

/* Superficies claras heredadas: asistencia/calificaciones alumno + formularios docente. */
.cg-card,.cg-head,.cg-kpi,.cg-table-wrap,.cg-empty,.cg-teacher,
.al-card,.al-head,.al-kpi,.al-table-wrap,.al-empty,.al-teacher,
.al28-light,.al28-subject,.al28-control select,
.card[style*="background:#fff5f5"],.card[style*="background: #fff5f5"],
.card[style*="background:#f8fafc"],.card[style*="background: #f8fafc"],
[style*="background:#e5e7eb"],[style*="background: #e5e7eb"],
[style*="background:#dfe7f3"],[style*="background: #dfe7f3"],
[style*="background:#f8fbff"],[style*="background: #f8fbff"],
[style*="background:#eaf3ff"],[style*="background: #eaf3ff"],
[style*="background:rgba(255,255,255,.62)"],[style*="background: rgba(255,255,255,.62)"]{
  background:linear-gradient(180deg,var(--saas54-surface-2),var(--saas54-surface))!important;
  color:var(--saas54-text)!important;
  border-color:var(--saas54-border)!important;
  box-shadow:var(--saas54-shadow)!important;
}

/* Texto dentro de cards KPI y encabezados que quedaba blanco/gris sobre fondos claros. */
.cg-head h1,.cg-head h2,.cg-head h3,.cg-sub,.cg-title,.cg-kpi small,.cg-kpi strong,.cg-table th,.cg-table td,.cg-empty,.cg-teacher,.cg-teacher b,.cg-teacher small,
.al-head h1,.al-head h2,.al-head h3,.al-sub,.al-title,.al-kpi small,.al-kpi strong,.al-table th,.al-table td,.al-empty,.al-teacher,.al-teacher b,.al-teacher small,
.al28-light,.al28-light *:not(.al28-btn):not(.al28-link):not(.tool):not(.badge):not(.tag),
.al28-subject,.al28-subject h3,.al28-subject *:not(.al28-btn):not(.al28-link):not(.tool):not(.badge):not(.tag),
.card[style*="background:#f8fafc"] *, .card[style*="background: #f8fafc"] *,
.card[style*="background:#fff5f5"] *, .card[style*="background: #fff5f5"] *{
  color:var(--saas54-text)!important;
  -webkit-text-fill-color:var(--saas54-text)!important;
}
.cg-sub,.cg-kpi small,.cg-teacher small,.al-sub,.al-kpi small,.al-teacher small,.al28-doc,.al28-mini,.al28-tag,.al28-section-title,
.text-muted,.text-secondary,.small,small,.muted,.help,.hint,.description,.asis-help,.workflow-sub{
  color:var(--saas54-muted)!important;
  -webkit-text-fill-color:var(--saas54-muted)!important;
}
.cg-title,.al-title,.al28-section-title{color:var(--saas54-text)!important;-webkit-text-fill-color:var(--saas54-text)!important;}

/* Botones: jerarquía estable y legibilidad AA. */
.btn,.button,button,a.btn,.cg-btn,.al-btn,.al28-btn,.al28-link,.mat-btn,.pub28-btn,.di40-btn,.workflow-actions a,
.action-btn,.btn-action,.mode-btn,.smart-nav-link,.nav-link,.tab,.pill{
  border:1px solid var(--saas54-border)!important;
  color:#f8fbff!important;
  -webkit-text-fill-color:#f8fbff!important;
  text-decoration:none!important;
  text-shadow:0 1px 0 rgba(0,0,0,.25)!important;
}
.btn:not(.btn-danger):not(.btn-warning):not(.btn-success):not(.btn-outline-secondary),
.cg-btn,.al-btn,.al28-btn,.mat-btn:not(.secondary),.pub28-btn:not(.secondary),.di40-btn,.action-btn,.btn-action,
.workflow-actions a.active{
  background:linear-gradient(180deg,#3b82f6,#1d4ed8)!important;
  box-shadow:0 10px 24px rgba(37,99,235,.28)!important;
}
.workflow-actions a.back,.btn-success,.success,.green:not(.al28-kpi):not(.di40-alert){
  background:linear-gradient(180deg,#34d399,#16a34a)!important;
  color:#052e16!important;
  -webkit-text-fill-color:#052e16!important;
  border-color:#86efac!important;
  text-shadow:none!important;
}
.btn-secondary,.btn-light,.btn-outline-secondary,.secondary,.ghost,.al28-link.secondary,.mat-btn.secondary,.pub28-btn.secondary,
.workflow-actions a:not(.active):not(.back),.smart-nav-link,.nav-link,.pill,.tab{
  background:linear-gradient(180deg,rgba(30,58,92,.92),rgba(15,27,45,.96))!important;
  color:#e2e8f0!important;
  -webkit-text-fill-color:#e2e8f0!important;
  border-color:var(--saas54-border-strong)!important;
  box-shadow:0 10px 22px rgba(0,0,0,.22)!important;
}
.btn-light:hover,.btn-secondary:hover,.btn-outline-secondary:hover,.secondary:hover,.ghost:hover,.al28-link.secondary:hover,
.workflow-actions a:not(.active):not(.back):hover{
  background:linear-gradient(180deg,#1d4ed8,#1e40af)!important;
  color:#fff!important;
  -webkit-text-fill-color:#fff!important;
}
button:disabled,.btn:disabled,.disabled,[disabled],.btn-action[disabled],.al28-link.disabled,.al28-link[aria-disabled="true"]{
  opacity:1!important;
  background:linear-gradient(180deg,#334155,#1e293b)!important;
  color:#e2e8f0!important;
  -webkit-text-fill-color:#e2e8f0!important;
  border-color:rgba(226,232,240,.38)!important;
  cursor:not-allowed!important;
  box-shadow:none!important;
  text-shadow:none!important;
}

/* Botones de materias alumno: Contenido y herramientas. */
.al28-link.secondary[href*="contenido"]{
  background:linear-gradient(180deg,rgba(14,165,233,.34),rgba(37,99,235,.24))!important;
  color:#e0f2fe!important;
  -webkit-text-fill-color:#e0f2fe!important;
  border-color:rgba(125,211,252,.60)!important;
}
.al28-link.tool.blue,.workflow-actions a[href*="actividades"],.workflow-actions a.active[href*="actividades"]{
  background:linear-gradient(180deg,#2563eb,#1d4ed8)!important;
  color:#fff!important;
  -webkit-text-fill-color:#fff!important;
}
.al28-link.tool.gold{background:linear-gradient(180deg,#fbbf24,#f59e0b)!important;color:#111827!important;-webkit-text-fill-color:#111827!important;text-shadow:none!important;border-color:#fde68a!important;}
.al28-link.tool.green{background:linear-gradient(180deg,#14b8a6,#0f766e)!important;color:#fff!important;-webkit-text-fill-color:#fff!important;}
.al28-link.tool.gray{background:linear-gradient(180deg,#475569,#334155)!important;color:#fff!important;-webkit-text-fill-color:#fff!important;}

/* Workflow docente: Libro / Asistencia / Actividades. */
.workflow-actions a[href*="libro"],.workflow-actions a[href*="libro-temas"]{
  background:linear-gradient(180deg,rgba(15,23,42,.98),rgba(30,41,59,.98))!important;
  color:#f8fafc!important;
  -webkit-text-fill-color:#f8fafc!important;
}
.workflow-actions a[href*="asistencia"]{
  background:linear-gradient(180deg,#60a5fa,#2563eb)!important;
  color:#fff!important;
  -webkit-text-fill-color:#fff!important;
}
.workflow-actions a[href*="actividades"]{
  background:linear-gradient(180deg,#2563eb,#1d4ed8)!important;
  color:#fff!important;
  -webkit-text-fill-color:#fff!important;
}

/* Inputs/selects/textarea legacy docente: actividades y filtros. */
input,select,textarea,.form-control,.form-select,.input,
.doc-acts input,.doc-acts select,.doc-acts textarea,.card input,.card select,.card textarea,
.al28-control select{
  background:linear-gradient(180deg,#122037,#0b1729)!important;
  color:#f8fbff!important;
  -webkit-text-fill-color:#f8fbff!important;
  border:1px solid var(--saas54-border-strong)!important;
  border-radius:12px!important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.04)!important;
}
input::placeholder,textarea::placeholder{color:#b6c6dc!important;opacity:1!important;-webkit-text-fill-color:#b6c6dc!important;}
select option{background:#0b1729!important;color:#f8fbff!important;}
label{color:var(--saas54-muted-strong)!important;-webkit-text-fill-color:var(--saas54-muted-strong)!important;}

/* Tablas: evita filas claras y texto invisible en calificaciones/asistencia. */
.cg-table,.al-table,.asis-table,.table,table{color:var(--saas54-text)!important;}
.cg-table thead,.al-table thead,.asis-table thead,.table thead,thead,
.cg-table th,.al-table th,.asis-table th,.table th,th{
  background:#0b1729!important;
  color:#e2e8f0!important;
  -webkit-text-fill-color:#e2e8f0!important;
  border-color:rgba(148,163,184,.28)!important;
}
.cg-table td,.al-table td,.asis-table td,.table td,td{
  background:transparent!important;
  color:#f8fbff!important;
  -webkit-text-fill-color:#f8fbff!important;
  border-color:rgba(148,163,184,.18)!important;
}
.cg-table tbody tr:hover td,.al-table tbody tr:hover td,.asis-table tbody tr:hover td,.table tbody tr:hover td{
  background:rgba(96,165,250,.08)!important;
}
.nota-pill,.tag-ok,.tag-no,.tag-ta,.tag-ju,.badge,.tag,.chip,.status{
  border:1px solid rgba(255,255,255,.22)!important;
  text-shadow:none!important;
  font-weight:900!important;
}
.nota-pill,.tag-ok{background:#d9f99d!important;color:#17330d!important;-webkit-text-fill-color:#17330d!important;}
.tag-no{background:#fecaca!important;color:#7f1d1d!important;-webkit-text-fill-color:#7f1d1d!important;}
.tag-ta{background:#fde68a!important;color:#713f12!important;-webkit-text-fill-color:#713f12!important;}
.tag-ju{background:#bfdbfe!important;color:#1e3a8a!important;-webkit-text-fill-color:#1e3a8a!important;}

/* Editor/toolbar actividades docente: botones creados por JS o inline. */
.toolbar button,.editor-toolbar button,.ql-toolbar button,.doc-acts button[type="button"],.doc-acts .btn-action{
  background:linear-gradient(180deg,#1e293b,#0f172a)!important;
  color:#f8fafc!important;
  -webkit-text-fill-color:#f8fafc!important;
  border-color:rgba(147,197,253,.42)!important;
}
.toolbar button:hover,.editor-toolbar button:hover,.doc-acts button[type="button"]:hover{
  background:linear-gradient(180deg,#2563eb,#1d4ed8)!important;
}

/* Reglas para colores inline heredados de editores ricos sin destruir semántica de estados. */
[style*="color:#0f172a"],[style*="color: #0f172a"],[style*="color:#111827"],[style*="color: #111827"],
[style*="color:#334155"],[style*="color: #334155"],[style*="color:#475569"],[style*="color: #475569"],
[style*="color:#64748b"],[style*="color: #64748b"],[style*="color:#08203f"],[style*="color: #08203f"]{
  color:var(--saas54-text)!important;
  -webkit-text-fill-color:var(--saas54-text)!important;
}

/* Print conserva salida clara para PDF/impresión. */
@media print{
  html,body{background:#fff!important;color:#111!important;}
  .cg-card,.cg-head,.cg-kpi,.cg-table-wrap,.al-card,.al-head,.al-kpi,.al-table-wrap,.card,.panel,.box{
    background:#fff!important;color:#111!important;border-color:#333!important;box-shadow:none!important;
  }
  *{color:#111!important;-webkit-text-fill-color:#111!important;text-shadow:none!important;}
  .btn,.button,button,a.btn{background:#fff!important;color:#111!important;border:1px solid #333!important;box-shadow:none!important;}
}
