/* ═══════════════════════════════════════════════════════════════════════════
   LIBRO DE CLASES DIGITAL — Pestaña del launcher (profeacademi.html)
   Carcasa de los 6 módulos mínimos · Circular N° 30 MINEDUC
   Sigue el patrón de variables por tema de pa-monitoreo.css.
   ═══════════════════════════════════════════════════════════════════════════ */

.pa-libro-section {
  width: 100%;
  max-width: 1100px;
  margin: 0 auto;
  padding: 4px 12px 28px;
  box-sizing: border-box;

  /* Defaults (theme-light) */
  --pa-lib-glass-bg:     rgba(255, 255, 255, 0.55);
  --pa-lib-glass-bg-2:   rgba(255, 255, 255, 0.35);
  --pa-lib-glass-border: rgba(255, 255, 255, 0.65);
  --pa-lib-glass-shadow: 0 8px 26px rgba(31, 45, 80, 0.12);
  --pa-lib-text:    #1e2a44;
  --pa-lib-muted:   #5a6a8c;
  --pa-lib-accent:  #4f46e5;
  --pa-lib-accent-2:#3b82f6;
}

body.theme-dark .pa-libro-section,
body.theme-neon .pa-libro-section {
  --pa-lib-glass-bg:     rgba(255, 255, 255, 0.07);
  --pa-lib-glass-bg-2:   rgba(255, 255, 255, 0.04);
  --pa-lib-glass-border: rgba(255, 255, 255, 0.14);
  --pa-lib-glass-shadow: 0 8px 26px rgba(0, 0, 0, 0.35);
  --pa-lib-text:    #eef1f8;
  --pa-lib-muted:   #aab4cc;
  --pa-lib-accent:  #c0c0c0;
  --pa-lib-accent-2:#e0e0e0;
}

body.theme-neon .pa-libro-section {
  --pa-lib-accent:  #00e5ff;
  --pa-lib-accent-2:#00ffff;
}

body.theme-rosa .pa-libro-section {
  --pa-lib-glass-bg:     rgba(255, 235, 248, 0.6);
  --pa-lib-glass-bg-2:   rgba(255, 220, 240, 0.42);
  --pa-lib-glass-border: rgba(244, 114, 182, 0.36);
  --pa-lib-glass-shadow: 0 8px 26px rgba(200, 80, 150, 0.12);
  --pa-lib-text:    #4a0028;
  --pa-lib-muted:   #9d174d;
  --pa-lib-accent:  #ec4899;
  --pa-lib-accent-2:#f472b6;
}

/* ── Encabezado ── */
.pa-libro-header {
  text-align: center;
  margin: 4px auto 22px;
}
.pa-libro-title {
  margin: 0 0 4px;
  font-family: 'Poppins', sans-serif;
  font-size: 1.45rem;
  font-weight: 800;
  letter-spacing: 0.2px;
  color: var(--pa-lib-text);
}
.pa-libro-subtitle {
  margin: 0;
  font-size: 0.85rem;
  font-weight: 500;
  color: var(--pa-lib-muted);
}

/* ── Grid de los 6 módulos ──
   Mismas tarjetas que la pestaña Apps (.launcher-app-item) pero un 50% más
   grandes: las apps usan minmax(182px, 200px) → aquí ×1.5. ── */
.pa-libro-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, 190px);
  gap: 20px;
  justify-content: center;
}

/* ── Tarjeta ilustrada (nombre + función DENTRO del recuadro) ──
   Cada módulo aporta su propia paleta vía variables --m*. ── */
.pa-libro-card {
  position: relative;
  width: 100%;
  max-width: 190px;
  margin: 0 auto;
  cursor: pointer;
  background: none;
  border: none;
  -webkit-tap-highlight-color: transparent;
  /* paleta por defecto (índigo) — se sobreescribe por módulo */
  --m1: #4f46e5; --m2: #6366f1;
  --mtext: #4338ca;
  --mtint: rgba(99, 102, 241, 0.16);
  --mglow: rgba(99, 102, 241, 0.30);
}

/* Paleta por módulo (mtext garantiza contraste AA del nombre sobre vidrio claro) */
.pa-libro-card[data-modulo="antecedentes"] { --m1:#2563eb; --m2:#60a5fa; --mtext:#1d4ed8; --mtint:rgba(59,130,246,.18);  --mglow:rgba(37,99,235,.34); }
.pa-libro-card[data-modulo="leccionario"]  { --m1:#7c3aed; --m2:#a78bfa; --mtext:#6d28d9; --mtint:rgba(124,58,237,.18); --mglow:rgba(124,58,237,.34); }
.pa-libro-card[data-modulo="asistencia"]   { --m1:#059669; --m2:#34d399; --mtext:#047857; --mtint:rgba(16,185,129,.18); --mglow:rgba(5,150,105,.32); }
.pa-libro-card[data-modulo="evaluaciones"] { --m1:#d97706; --m2:#fbbf24; --mtext:#b45309; --mtint:rgba(245,158,11,.20); --mglow:rgba(217,119,6,.34); }
.pa-libro-card[data-modulo="convivencia"]  { --m1:#be123c; --m2:#fb7185; --mtext:#be123c; --mtint:rgba(244,63,94,.18);  --mglow:rgba(190,18,60,.32); }
.pa-libro-card[data-modulo="pie"]          { --m1:#7c3aed; --m2:#c084fc; --mtext:#7c3aed; --mtint:rgba(168,85,247,.20); --mglow:rgba(124,58,237,.34); }

/* Recuadro de vidrio claro + lavado de color del módulo */
.pa-libro-card-tile {
  position: relative;
  overflow: hidden;
  box-sizing: border-box;
  width: 100%;
  aspect-ratio: 1 / 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 7px;
  padding: 16px 14px;
  border-radius: 22px;
  /* Fondo esmerilado SIN backdrop-filter: evita el bug de composición de
     Chrome (contenido hijo atrapado "detrás del blur" en paneles de cristal
     hermanos sobre fondo animado) y reduce el costo de GPU en móvil.
     Se compensa con gradiente blanco más opaco. */
  background:
    radial-gradient(120% 82% at 50% -8%, var(--mtint), transparent 60%),
    linear-gradient(158deg, rgba(255,255,255,0.94), rgba(255,255,255,0.78));
  border: 1px solid rgba(255, 255, 255, 0.85);
  box-shadow: 0 12px 28px -12px rgba(31,45,80,0.30), inset 0 1px 0 rgba(255,255,255,0.9);
  user-select: none;
  transition: transform .28s cubic-bezier(.2,.8,.2,1), box-shadow .28s ease, border-color .28s ease;
}
/* Brillo de color suave en la esquina superior (gradiente barato, no es otra capa de blur) */
.pa-libro-card-tile::before {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: inherit;
  pointer-events: none;
  background: radial-gradient(56% 46% at 100% 0%, var(--mglow), transparent 62%);
  opacity: .55;
}

.pa-libro-card:hover .pa-libro-card-tile,
.pa-libro-card:focus-visible .pa-libro-card-tile {
  transform: translateY(-6px) scale(1.03);
  border-color: var(--m2);
  box-shadow: 0 24px 44px -16px var(--mglow), 0 6px 14px -8px rgba(31,45,80,.22), inset 0 1px 0 rgba(255,255,255,.92);
}
.pa-libro-card:focus-visible { outline: none; }
.pa-libro-card:active .pa-libro-card-tile { transform: scale(.96); }

/* Ilustración sobre halo de color */
.pa-libro-card-icon {
  position: relative;
  z-index: 1;
  width: 66px;
  height: 66px;
  flex: none;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  background: radial-gradient(circle at 50% 48%, var(--mtint), transparent 70%);
  box-shadow: none;
}
.pa-libro-card-icon svg,
.pa-libro-card-icon img {
  width: 54px;
  height: 54px;
  display: block;
}

/* Nombre del módulo — DENTRO del recuadro, en el color del módulo */
.pa-libro-card-name {
  position: relative;
  z-index: 1;
  margin: 0;
  width: 100%;
  text-align: center;
  font-family: 'Poppins', sans-serif;
  font-size: 0.95rem;
  font-weight: 700;
  line-height: 1.15;
  letter-spacing: .1px;
  color: var(--mtext);
}

/* Descripción de la función — bajo el nombre.
   Gris oscuro fijo: el recuadro es claro en todos los temas. */
.pa-libro-card-desc {
  position: relative;
  z-index: 1;
  margin: 0;
  width: 100%;
  text-align: center;
  font-size: 0.72rem;
  font-weight: 500;
  line-height: 1.32;
  color: #54607a;
}

/* El badge no se muestra en este diseño */
.pa-libro-card-badge {
  display: none;
}

/* ── Navegación interna: pestañas de las 6 hojas (una sola app) ── */
.pa-libro-tabs {
  display: flex;
  gap: 8px;
  max-width: 760px;
  margin: 0 auto 16px;
  padding: 2px 4px 10px;
  overflow-x: auto;
  scrollbar-width: none;
  -webkit-overflow-scrolling: touch;
  scroll-snap-type: x proximity;
}
.pa-libro-tabs::-webkit-scrollbar { display: none; }
.pa-libro-tab {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  gap: 7px;
  padding: 9px 15px;
  border-radius: 999px;
  border: 1px solid var(--pa-lib-glass-border);
  background: var(--pa-lib-glass-bg);
  color: var(--pa-lib-muted);
  font-family: 'Poppins', sans-serif;
  font-size: 13px;
  font-weight: 700;
  cursor: pointer;
  white-space: nowrap;
  scroll-snap-align: start;
  -webkit-tap-highlight-color: transparent;
  transition: transform .15s ease, border-color .15s ease, color .15s ease, background .15s ease, box-shadow .15s ease;
}
.pa-libro-tab .ico { font-size: 15px; line-height: 1; }
.pa-libro-tab:hover { color: var(--pa-lib-text); border-color: var(--pa-lib-accent); transform: translateY(-1px); }
.pa-libro-tab:focus-visible { outline: none; box-shadow: var(--pa-lib-focus-ring); }
.pa-libro-tab.is-active {
  color: var(--pa-lib-on-accent);
  border-color: transparent;
  background: linear-gradient(135deg, var(--pa-lib-accent-2), var(--pa-lib-accent));
  box-shadow: 0 8px 18px -8px var(--pa-lib-accent);
}

/* ── Host de la hoja activa ── */
.pa-libro-modulo-host {
  max-width: 760px;
  margin: 0 auto;
}

/* Lite mode: pestañas sin blur (coherente con el resto) */
html.lite-mode .pa-libro-tab { background: var(--pa-lib-glass-bg); }

@media (prefers-reduced-motion: reduce) {
  .pa-libro-tab { transition: none; }
}

/* ═══ Shell común de los módulos (barra volver + título) ═══ */
.pa-lib-modulo {
  max-width: 760px;
  margin: 0 auto;
  padding: 18px 20px 22px;
  border-radius: 18px;
  background: linear-gradient(150deg, var(--pa-lib-glass-bg), var(--pa-lib-glass-bg-2));
  border: 1px solid var(--pa-lib-glass-border);
  box-shadow: var(--pa-lib-glass-shadow);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
}
.pa-lib-modulo-bar {
  display: flex;
  align-items: center;
  gap: 14px;
  margin-bottom: 14px;
}
.pa-lib-back {
  border: 1px solid var(--pa-lib-glass-border);
  background: var(--pa-lib-glass-bg-2);
  color: var(--pa-lib-text);
  border-radius: 50px;
  padding: 6px 14px;
  font-size: 13px;
  font-weight: 700;
  cursor: pointer;
  transition: transform 0.15s ease, border-color 0.15s ease;
}
.pa-lib-back:hover { transform: translateX(-2px); border-color: var(--pa-lib-accent); }
.pa-lib-modulo-titulo {
  margin: 0;
  font-family: 'Poppins', sans-serif;
  font-size: 1.15rem;
  font-weight: 800;
  color: var(--pa-lib-text);
}

/* ═══ Toolbar (curso / fecha / bloque) ═══ */
.pa-lib-toolbar {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-bottom: 14px;
}
.pa-lib-select {
  flex: 1 1 150px;
  min-width: 0;
  padding: 9px 12px;
  border-radius: 12px;
  border: 1px solid var(--pa-lib-glass-border);
  background: var(--pa-lib-glass-bg);
  color: var(--pa-lib-text);
  font: inherit;
  font-size: 13.5px;
  font-weight: 600;
}
.pa-lib-select:focus { outline: 2px solid var(--pa-lib-accent); outline-offset: 1px; }

/* ═══ Resumen (chips por estado) ═══ */
.pa-lib-asis-resumen {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 12px;
}
.pa-lib-chip {
  padding: 3px 11px;
  border-radius: 50px;
  font-size: 11.5px;
  font-weight: 800;
  color: var(--pa-lib-muted);
  background: rgba(120, 130, 160, 0.14);
  border: 1px solid rgba(120, 130, 160, 0.24);
}
.pa-lib-chip--presente    { color: #059669; background: rgba(16,185,129,0.13); border-color: rgba(16,185,129,0.3); }
.pa-lib-chip--ausente     { color: #be123c; background: rgba(244,63,94,0.12);  border-color: rgba(244,63,94,0.3); }
.pa-lib-chip--atrasado    { color: #b45309; background: rgba(245,158,11,0.14); border-color: rgba(245,158,11,0.32); }
.pa-lib-chip--retirado    { color: #6d28d9; background: rgba(139,92,246,0.13); border-color: rgba(139,92,246,0.3); }
.pa-lib-chip--justificado { color: #1d4ed8; background: rgba(59,130,246,0.13); border-color: rgba(59,130,246,0.3); }
body.theme-dark .pa-lib-chip--presente,    body.theme-neon .pa-lib-chip--presente    { color: #34d399; }
body.theme-dark .pa-lib-chip--ausente,     body.theme-neon .pa-lib-chip--ausente     { color: #fb7185; }
body.theme-dark .pa-lib-chip--atrasado,    body.theme-neon .pa-lib-chip--atrasado    { color: #fbbf24; }
body.theme-dark .pa-lib-chip--retirado,    body.theme-neon .pa-lib-chip--retirado    { color: #a78bfa; }
body.theme-dark .pa-lib-chip--justificado, body.theme-neon .pa-lib-chip--justificado { color: #60a5fa; }

/* ═══ Lista de estudiantes ═══ */
.pa-lib-asis-lista {
  display: flex;
  flex-direction: column;
  gap: 6px;
  max-height: 52vh;
  overflow-y: auto;
  padding-right: 4px;
}
.pa-lib-asis-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 8px 12px;
  border-radius: 12px;
  background: var(--pa-lib-glass-bg-2);
  border: 1px solid transparent;
}
.pa-lib-asis-row:hover { border-color: var(--pa-lib-glass-border); }
.pa-lib-asis-nombre {
  font-size: 13.5px;
  font-weight: 600;
  color: var(--pa-lib-text);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.pa-lib-asis-estados {
  display: flex;
  gap: 4px;
  flex-shrink: 0;
}
.pa-lib-estado {
  min-width: 34px;
  padding: 5px 7px;
  border-radius: 9px;
  border: 1px solid var(--pa-lib-glass-border);
  background: transparent;
  color: var(--pa-lib-muted);
  font-size: 11.5px;
  font-weight: 800;
  cursor: pointer;
  transition: background 0.15s ease, color 0.15s ease;
}
.pa-lib-estado:hover { color: var(--pa-lib-text); }
.pa-lib-estado.is-active { color: #fff; border-color: transparent; }
.pa-lib-estado--presente    { background: #059669; }
.pa-lib-estado--ausente     { background: #be123c; }
.pa-lib-estado--atrasado    { background: #d97706; }
.pa-lib-estado--retirado    { background: #7c3aed; }
.pa-lib-estado--justificado { background: #2563eb; }

/* ═══ Footer: guardar + firma SIGE ═══ */
.pa-lib-asis-footer {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-top: 14px;
}
.pa-lib-btn {
  padding: 9px 18px;
  border-radius: 12px;
  border: 1px solid var(--pa-lib-glass-border);
  background: var(--pa-lib-glass-bg);
  color: var(--pa-lib-text);
  font: inherit;
  font-size: 13.5px;
  font-weight: 700;
  cursor: pointer;
  transition: transform 0.15s ease, opacity 0.15s ease;
}
.pa-lib-btn:hover:not(:disabled) { transform: translateY(-1px); }
.pa-lib-btn:disabled { opacity: 0.45; cursor: not-allowed; }
.pa-lib-btn--primary {
  color: #fff;
  border: none;
  background: linear-gradient(135deg, var(--pa-lib-accent-2), var(--pa-lib-accent));
}
.pa-lib-firma {
  display: flex;
  align-items: center;
  gap: 8px;
}
.pa-lib-firma-input {
  width: 168px;
  padding: 9px 12px;
  border-radius: 12px;
  border: 1px solid var(--pa-lib-glass-border);
  background: var(--pa-lib-glass-bg);
  color: var(--pa-lib-text);
  font: inherit;
  font-size: 13.5px;
  font-weight: 700;
  letter-spacing: 2px;
  text-align: center;
}
.pa-lib-firma-ok {
  font-size: 13px;
  font-weight: 800;
  color: #059669;
}
body.theme-dark .pa-lib-firma-ok, body.theme-neon .pa-lib-firma-ok { color: #34d399; }

/* ═══ Estados de carga / error / vacío ═══ */
.pa-lib-loading, .pa-lib-empty {
  padding: 22px;
  text-align: center;
  font-size: 13.5px;
  font-weight: 600;
  color: var(--pa-lib-muted);
}
.pa-lib-error {
  padding: 14px 16px;
  border-radius: 12px;
  font-size: 13px;
  font-weight: 600;
  color: #be123c;
  background: rgba(244, 63, 94, 0.1);
  border: 1px solid rgba(244, 63, 94, 0.3);
}
.pa-lib-status {
  min-height: 18px;
  margin-top: 8px;
  font-size: 12.5px;
  font-weight: 700;
  color: var(--pa-lib-muted);
}
.pa-lib-status--ok    { color: #059669; }
.pa-lib-status--error { color: #be123c; }
body.theme-dark .pa-lib-status--ok,    body.theme-neon .pa-lib-status--ok    { color: #34d399; }
body.theme-dark .pa-lib-status--error, body.theme-neon .pa-lib-status--error { color: #fb7185; }

/* ═══ Leccionario: lista del día + formulario ═══ */
.pa-lib-lecc-lista {
  display: flex;
  flex-direction: column;
  gap: 6px;
  max-height: 48vh;
  overflow-y: auto;
  padding-right: 4px;
}
.pa-lib-lecc-row {
  display: flex;
  align-items: center;
  gap: 12px;
  width: 100%;
  padding: 10px 12px;
  border-radius: 12px;
  border: 1px solid transparent;
  background: var(--pa-lib-glass-bg-2);
  color: var(--pa-lib-text);
  font: inherit;
  text-align: left;
  cursor: pointer;
  transition: border-color 0.15s ease, transform 0.15s ease;
}
.pa-lib-lecc-row:hover { border-color: var(--pa-lib-accent); transform: translateY(-1px); }
.pa-lib-lecc-bloque {
  flex-shrink: 0;
  min-width: 38px;
  padding: 5px 8px;
  border-radius: 9px;
  text-align: center;
  font-size: 12px;
  font-weight: 800;
  color: #fff;
  background: linear-gradient(135deg, var(--pa-lib-accent-2), var(--pa-lib-accent));
}
.pa-lib-lecc-info {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.pa-lib-lecc-info strong {
  font-size: 13.5px;
  font-weight: 700;
  color: var(--pa-lib-text);
}
.pa-lib-lecc-contenido {
  font-size: 12px;
  color: var(--pa-lib-muted);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.pa-lib-lecc-badge {
  flex-shrink: 0;
  padding: 3px 10px;
  border-radius: 50px;
  font-size: 10.5px;
  font-weight: 800;
  letter-spacing: 0.3px;
  color: var(--pa-lib-muted);
  background: rgba(120, 130, 160, 0.14);
  border: 1px solid rgba(120, 130, 160, 0.24);
}
.pa-lib-lecc-badge--ok {
  color: #059669;
  background: rgba(16, 185, 129, 0.13);
  border-color: rgba(16, 185, 129, 0.32);
}
body.theme-dark .pa-lib-lecc-badge--ok,
body.theme-neon .pa-lib-lecc-badge--ok { color: #34d399; }

.pa-lib-lecc-campo { width: 100%; box-sizing: border-box; margin-bottom: 10px; }
.pa-lib-textarea {
  display: block;
  width: 100%;
  box-sizing: border-box;
  margin-bottom: 10px;
  padding: 10px 12px;
  border-radius: 12px;
  border: 1px solid var(--pa-lib-glass-border);
  background: var(--pa-lib-glass-bg);
  color: var(--pa-lib-text);
  font: inherit;
  font-size: 13.5px;
  resize: vertical;
}
.pa-lib-textarea:focus { outline: 2px solid var(--pa-lib-accent); outline-offset: 1px; }
.pa-lib-lecc-cuerpo .pa-lib-toolbar { margin-bottom: 10px; }

/* ═══ Evaluaciones: input de nota 1,0–7,0 ═══ */
.pa-lib-eva-nota {
  flex-shrink: 0;
  width: 64px;
  padding: 8px 10px;
  border-radius: 10px;
  border: 1px solid var(--pa-lib-glass-border);
  background: var(--pa-lib-glass-bg);
  color: var(--pa-lib-text);
  font: inherit;
  font-size: 14px;
  font-weight: 700;
  text-align: center;
}
.pa-lib-eva-nota:focus { outline: 2px solid var(--pa-lib-accent); outline-offset: 1px; }
.pa-lib-eva-nota--rojo { color: #dc2626; border-color: rgba(220, 38, 38, 0.45); }
.pa-lib-eva-nota--invalida {
  border-color: #dc2626;
  background: rgba(220, 38, 38, 0.08);
}
body.theme-dark .pa-lib-eva-nota--rojo,
body.theme-neon .pa-lib-eva-nota--rojo { color: #f87171; }
.pa-lib-eva-badge--rojo {
  color: #dc2626;
  background: rgba(220, 38, 38, 0.10);
  border-color: rgba(220, 38, 38, 0.30);
}
body.theme-dark .pa-lib-eva-badge--rojo,
body.theme-neon .pa-lib-eva-badge--rojo { color: #f87171; }

/* ═══ Convivencia: categoría, detalle y aviso de cifrado ═══ */
.pa-lib-conv-cat {
  flex-shrink: 0;
  min-width: 78px;
  padding: 5px 10px;
  border-radius: 9px;
  text-align: center;
  font-size: 11px;
  font-weight: 800;
  letter-spacing: 0.3px;
  color: #fff;
}
.pa-lib-conv-cat--positiva    { background: linear-gradient(135deg, #10b981, #059669); }
.pa-lib-conv-cat--observacion { background: linear-gradient(135deg, #64748b, #475569); }
.pa-lib-conv-cat--leve        { background: linear-gradient(135deg, #f59e0b, #d97706); }
.pa-lib-conv-cat--grave       { background: linear-gradient(135deg, #f97316, #ea580c); }
.pa-lib-conv-cat--gravisima   { background: linear-gradient(135deg, #ef4444, #b91c1c); }

.pa-lib-conv-detalle {
  padding: 14px 16px;
  border-radius: 14px;
  border: 1px solid var(--pa-lib-glass-border);
  background: var(--pa-lib-glass-bg-2);
}
.pa-lib-conv-detalle-head {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
  margin-bottom: 6px;
}
.pa-lib-conv-detalle-head strong { font-size: 15px; color: var(--pa-lib-text); }
.pa-lib-conv-subtitulo {
  margin: 14px 0 4px;
  font-size: 11.5px;
  font-weight: 800;
  letter-spacing: 0.8px;
  text-transform: uppercase;
  color: var(--pa-lib-muted);
}
.pa-lib-conv-texto {
  margin: 0;
  font-size: 13.5px;
  line-height: 1.55;
  color: var(--pa-lib-text);
  white-space: pre-wrap;
}
.pa-lib-conv-aviso {
  margin: 16px 0 0;
  font-size: 12px;
  color: var(--pa-lib-muted);
}

/* ═══ PIE: tipo de necesidad (transitoria / permanente) ═══ */
.pa-lib-pie-tipo {
  flex-shrink: 0;
  min-width: 86px;
  padding: 5px 10px;
  border-radius: 9px;
  text-align: center;
  font-size: 11px;
  font-weight: 800;
  letter-spacing: 0.3px;
  color: #fff;
}
.pa-lib-pie-tipo--transitoria { background: linear-gradient(135deg, #38bdf8, #0284c7); }
.pa-lib-pie-tipo--permanente  { background: linear-gradient(135deg, #a78bfa, #7c3aed); }

/* ═══ Antecedentes: ficha (solo lectura y formulario) ═══ */
.pa-lib-ant-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 10px;
}
.pa-lib-ant-campo {
  display: flex;
  flex-direction: column;
  gap: 3px;
  padding: 11px 13px;
  border-radius: 12px;
  border: 1px solid var(--pa-lib-glass-border);
  background: var(--pa-lib-glass-bg-2);
}
.pa-lib-ant-label {
  font-size: 11px;
  font-weight: 800;
  letter-spacing: 0.6px;
  text-transform: uppercase;
  color: var(--pa-lib-muted);
}
.pa-lib-ant-valor {
  font-size: 14px;
  font-weight: 600;
  color: var(--pa-lib-text);
  white-space: pre-wrap;
}
.pa-lib-ant-valor--vacio { font-weight: 400; font-style: italic; color: var(--pa-lib-muted); }

.pa-lib-ant-form {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 12px;
}
.pa-lib-ant-field {
  display: flex;
  flex-direction: column;
  gap: 5px;
}
/* Observaciones (textarea) ocupa la fila completa */
.pa-lib-ant-field:last-child { grid-column: 1 / -1; }
.pa-lib-ant-field .pa-lib-select,
.pa-lib-ant-field .pa-lib-textarea { margin-bottom: 0; }

/* Badge "Disponible" en la tarjeta del grid */
.pa-libro-card-badge--on {
  color: #059669;
  background: rgba(16, 185, 129, 0.13);
  border-color: rgba(16, 185, 129, 0.32);
}
body.theme-dark .pa-libro-card-badge--on,
body.theme-neon .pa-libro-card-badge--on { color: #34d399; }

/* Responsive del módulo */
@media (max-width: 520px) {
  .pa-lib-modulo { padding: 14px 12px 16px; }
  .pa-lib-asis-row { flex-wrap: wrap; }
  .pa-lib-asis-nombre { flex: 1 1 100%; white-space: normal; }
  .pa-lib-asis-estados { margin-left: auto; }
  .pa-lib-asis-footer { flex-direction: column; align-items: stretch; }
  .pa-lib-firma { justify-content: space-between; }
}
html.lite-mode .pa-lib-modulo {
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
  background: var(--pa-lib-glass-bg);
}

/* ── Glass radio con 4 pestañas: más aire horizontal para que el texto
      "Libro de Clases" no quede pegado a los bordes de la píldora.
      (El padding se aplica a todos los labels para que sigan teniendo el
      mismo ancho — el glider mide 25% fijo.) ── */
.glass-radio-group:has(#pa-view-libro) label {
  padding: 0.65rem 1.9rem;
}

/* ── Glass radio con 4 pestañas: compactar labels en pantallas angostas
      para que "Libro de Clases" no desborde el grupo ── */
@media (max-width: 700px) {
  .glass-radio-group:has(#pa-view-libro) label {
    min-width: 0;
    padding: 0.6rem 0.75rem;
    font-size: 12.5px;
  }
}
@media (max-width: 420px) {
  .glass-radio-group:has(#pa-view-libro) label {
    font-size: 11px;
    padding: 0.55rem 0.5rem;
    letter-spacing: 0;
  }
}

/* ── Responsive del grid ── */
@media (max-width: 640px) {
  .pa-libro-grid { grid-template-columns: repeat(2, 1fr); gap: 12px; }
  .pa-libro-card { max-width: none; }
  .pa-libro-card-tile { padding: 14px 10px; gap: 5px; border-radius: 18px; }
  .pa-libro-card-icon { width: 58px; height: 58px; }
  .pa-libro-card-icon svg,
  .pa-libro-card-icon img { width: 48px; height: 48px; }
  .pa-libro-card-name { font-size: 0.86rem; }
  .pa-libro-card-desc { font-size: 0.68rem; }
}
@media (max-width: 380px) {
  .pa-libro-grid { grid-template-columns: 1fr; }
}

/* ── Lite mode: sin backdrop-filter (mismo criterio que lite-mode.css),
      se compensa con fondo más opaco ── */
html.lite-mode .pa-libro-card-tile {
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
  background:
    radial-gradient(120% 82% at 50% -8%, var(--mtint), transparent 60%),
    linear-gradient(158deg, #ffffff, #eef1f7);
}

@media (prefers-reduced-motion: reduce) {
  .pa-libro-card-tile { transition: none; }
}

/* ═══════════════════════════════════════════════════════════════════════════
   REDISEÑO LECCIONARIO — mobile-first, glassmorphism, multi-tema
   (Claude Design · handoff). TODO va dentro de un contenedor .pa-lib para
   no alterar los otros 5 módulos, que se montan sin ese envoltorio.
   ═══════════════════════════════════════════════════════════════════════════ */

/* ── Tokens derivados del tema (nombres nuevos: no afectan módulos previos) ── */
.pa-libro-section {
  --pa-lib-radius:      18px;
  --pa-lib-radius-sm:   12px;
  --pa-lib-accent-ring: rgba(79, 70, 229, 0.30);
  --pa-lib-accent-soft: rgba(79, 70, 229, 0.10);
  --pa-lib-focus-ring:  0 0 0 3px var(--pa-lib-accent-ring);
  --pa-lib-on-accent:   #ffffff;
  --pa-lib-ok:          #15803d;
  --pa-lib-ok-bg:       rgba(22, 163, 74, 0.12);
  --pa-lib-bad:         #c2253b;
  --pa-lib-bad-bg:      rgba(220, 38, 38, 0.10);
  color-scheme: light;
}
body.theme-dark .pa-libro-section,
body.theme-neon .pa-libro-section {
  --pa-lib-accent-ring: rgba(200, 207, 222, 0.30);
  --pa-lib-accent-soft: rgba(210, 216, 230, 0.10);
  --pa-lib-on-accent:   #16181f;
  --pa-lib-ok:          #4ade80;
  --pa-lib-ok-bg:       rgba(34, 197, 94, 0.14);
  --pa-lib-bad:         #f87171;
  --pa-lib-bad-bg:      rgba(248, 113, 113, 0.14);
  color-scheme: dark;
}
body.theme-neon .pa-libro-section {
  --pa-lib-accent-ring: rgba(34, 224, 255, 0.34);
  --pa-lib-accent-soft: rgba(34, 224, 255, 0.10);
  --pa-lib-on-accent:   #041519;
  --pa-lib-ok:          #2fe6a8;
  --pa-lib-ok-bg:       rgba(47, 230, 168, 0.14);
  --pa-lib-bad:         #ff6b81;
  --pa-lib-bad-bg:      rgba(255, 107, 129, 0.14);
}
body.theme-rosa .pa-libro-section {
  --pa-lib-accent-ring: rgba(233, 30, 99, 0.30);
  --pa-lib-accent-soft: rgba(233, 30, 99, 0.10);
  --pa-lib-on-accent:   #ffffff;
  --pa-lib-ok:          #15803d;
  --pa-lib-ok-bg:       rgba(22, 163, 74, 0.12);
  --pa-lib-bad:         #c2253b;
  --pa-lib-bad-bg:      rgba(220, 38, 38, 0.10);
  color-scheme: light;
}

/* ── Contenedor del módulo: container-query para adaptarse a SU panel ── */
.pa-lib {
  font-family: 'Poppins', 'Inter', -apple-system, system-ui, sans-serif;
  color: var(--pa-lib-text);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  container-type: inline-size;
  container-name: palib;
}
.pa-lib *, .pa-lib *::before, .pa-lib *::after { box-sizing: border-box; }

.pa-lib .pa-lib-shell {
  width: 100%;
  display: flex;
  flex-direction: column;
  gap: 0.85rem;
  padding: 0.2rem;
}
/* El cuerpo (lista/form) es transparente al layout: sus hijos participan
   del gap del shell. */
.pa-lib .pa-lib-lecc-body { display: contents; }

/* ── Cabecera de contexto ── */
.pa-lib .pa-lib-head {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.4rem 0.7rem;
  padding: 0.15rem 0.25rem 0;
}
.pa-lib .pa-lib-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  font-size: 0.66rem;
  font-weight: 600;
  letter-spacing: 0.09em;
  text-transform: uppercase;
  color: var(--pa-lib-muted);
}
.pa-lib .pa-lib-eyebrow .dot {
  width: 5px; height: 5px; border-radius: 50%;
  background: var(--pa-lib-accent);
}
.pa-lib .pa-lib-chip {
  margin-left: auto;
  font-size: 0.64rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  color: var(--pa-lib-muted);
  background: var(--pa-lib-accent-soft);
  border: 1px solid var(--pa-lib-glass-border);
  border-radius: 999px;
  padding: 0.28rem 0.62rem;
  white-space: nowrap;
}

/* ── Tarjeta glass base ── */
.pa-lib .pa-lib-card {
  background: var(--pa-lib-glass-bg);
  border: 1px solid var(--pa-lib-glass-border);
  border-radius: var(--pa-lib-radius);
  box-shadow: var(--pa-lib-glass-shadow);
  -webkit-backdrop-filter: blur(18px);
  backdrop-filter: blur(18px);
}

/* ── Toolbar ── */
.pa-lib .pa-lib-toolbar {
  display: flex;
  flex-direction: column;
  gap: 0.7rem;
  padding: 0.85rem;
  margin: 0;
}
.pa-lib .pa-lib-toolbar-row {
  display: grid;
  grid-template-columns: 1fr;
  gap: 0.7rem;
}
.pa-lib .pa-lib-selector {
  display: flex;
  flex-direction: column;
  gap: 0.32rem;
  min-width: 0;
}
.pa-lib .pa-lib-selector > span {
  font-size: 0.66rem;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--pa-lib-muted);
  padding-left: 0.15rem;
}

/* ── Campos ── */
.pa-lib .pa-lib-field {
  display: flex;
  flex-direction: column;
  gap: 0.36rem;
  min-width: 0;
}
.pa-lib .pa-lib-field > label,
.pa-lib .pa-lib-label {
  font-size: 0.78rem;
  font-weight: 600;
  letter-spacing: 0.01em;
  color: var(--pa-lib-text);
  padding-left: 0.1rem;
}
.pa-lib .pa-lib-hint { font-size: 0.7rem; color: var(--pa-lib-muted); font-weight: 400; }

.pa-lib .pa-lib-input,
.pa-lib .pa-lib-select,
.pa-lib .pa-lib-textarea {
  width: 100%;
  font-family: inherit;
  font-size: 0.92rem;
  color: var(--pa-lib-text);
  background: var(--pa-lib-glass-bg-2);
  border: 1px solid var(--pa-lib-glass-border);
  border-radius: var(--pa-lib-radius-sm);
  padding: 0.72rem 0.85rem;
  min-height: 46px;
  margin: 0;
  transition: border-color 0.18s ease, box-shadow 0.18s ease, background 0.18s ease;
  -webkit-appearance: none;
  appearance: none;
}
.pa-lib .pa-lib-textarea {
  min-height: 116px;
  resize: vertical;
  line-height: 1.55;
  padding-top: 0.65rem;
}
.pa-lib .pa-lib-input::placeholder,
.pa-lib .pa-lib-textarea::placeholder { color: var(--pa-lib-muted); opacity: 0.75; }
.pa-lib .pa-lib-input:hover,
.pa-lib .pa-lib-select:hover,
.pa-lib .pa-lib-textarea:hover { border-color: var(--pa-lib-accent); }
.pa-lib .pa-lib-input:focus,
.pa-lib .pa-lib-select:focus,
.pa-lib .pa-lib-textarea:focus { outline: none; }
.pa-lib .pa-lib-input:focus-visible,
.pa-lib .pa-lib-select:focus-visible,
.pa-lib .pa-lib-textarea:focus-visible {
  outline: none;
  border-color: var(--pa-lib-accent);
  box-shadow: var(--pa-lib-focus-ring);
  background: var(--pa-lib-glass-bg);
}

/* Select con chevron propio */
.pa-lib .pa-lib-select-wrap { position: relative; }
.pa-lib .pa-lib-select { padding-right: 2.4rem; cursor: pointer; }
.pa-lib .pa-lib-select-wrap::after {
  content: "";
  position: absolute;
  right: 1rem; top: 50%;
  width: 9px; height: 9px;
  border-right: 2px solid var(--pa-lib-muted);
  border-bottom: 2px solid var(--pa-lib-muted);
  transform: translateY(-65%) rotate(45deg);
  pointer-events: none;
}
.pa-lib .pa-lib-input[type="date"] { cursor: pointer; }
.pa-lib .pa-lib-input[type="date"]::-webkit-calendar-picker-indicator { opacity: 0.7; cursor: pointer; }
.pa-lib .pa-lib-input[type="date"]:hover::-webkit-calendar-picker-indicator { opacity: 1; }

/* ── Rejilla del formulario ── */
.pa-lib .pa-lib-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 0.95rem;
}
.pa-lib .pa-lib-grid .pa-lib-span-2 { grid-column: 1 / -1; }

/* ── Botones ── */
.pa-lib .pa-lib-btn-primary {
  width: 100%;
  min-height: 48px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  font-family: inherit;
  font-size: 0.95rem;
  font-weight: 700;
  letter-spacing: 0.01em;
  color: var(--pa-lib-on-accent);
  background: linear-gradient(135deg, var(--pa-lib-accent-2), var(--pa-lib-accent));
  border: none;
  border-radius: 999px;
  padding: 0.8rem 1.4rem;
  cursor: pointer;
  transition: transform 0.18s ease, box-shadow 0.18s ease, filter 0.18s ease, opacity 0.18s ease;
  box-shadow: 0 6px 18px var(--pa-lib-accent-ring);
}
.pa-lib .pa-lib-btn-primary:hover { transform: translateY(-2px); filter: brightness(1.04); box-shadow: 0 10px 26px var(--pa-lib-accent-ring); }
.pa-lib .pa-lib-btn-primary:active { transform: translateY(0) scale(0.99); }
.pa-lib .pa-lib-btn-primary:focus-visible { outline: none; box-shadow: var(--pa-lib-focus-ring), 0 6px 18px var(--pa-lib-accent-ring); }
.pa-lib .pa-lib-btn-primary:disabled { cursor: progress; opacity: 0.7; transform: none; box-shadow: none; filter: saturate(0.85); }

.pa-lib .pa-lib-btn-ghost {
  min-height: 48px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.45rem;
  font-family: inherit;
  font-size: 0.92rem;
  font-weight: 600;
  color: var(--pa-lib-text);
  background: var(--pa-lib-glass-bg-2);
  border: 1px solid var(--pa-lib-glass-border);
  border-radius: 999px;
  padding: 0.75rem 1.3rem;
  cursor: pointer;
  transition: background 0.18s ease, border-color 0.18s ease, transform 0.18s ease;
}
.pa-lib .pa-lib-btn-ghost:hover { background: var(--pa-lib-accent-soft); border-color: var(--pa-lib-accent); transform: translateY(-1px); }
.pa-lib .pa-lib-btn-ghost:active { transform: translateY(0); }
.pa-lib .pa-lib-btn-ghost:focus-visible { outline: none; box-shadow: var(--pa-lib-focus-ring); }
.pa-lib .pa-lib-btn-sm { min-height: 44px; padding: 0.6rem 1.1rem; font-size: 0.88rem; }

.pa-lib .pa-lib-spinner {
  width: 16px; height: 16px;
  border: 2px solid color-mix(in srgb, var(--pa-lib-on-accent) 35%, transparent);
  border-top-color: var(--pa-lib-on-accent);
  border-radius: 50%;
  animation: pa-lib-spin 0.7s linear infinite;
}
.pa-lib .pa-lib-spinner.is-muted {
  border-color: var(--pa-lib-glass-border);
  border-top-color: var(--pa-lib-muted);
}
@keyframes pa-lib-spin { to { transform: rotate(360deg); } }

/* ── Acciones ── */
.pa-lib .pa-lib-actions {
  display: flex;
  flex-direction: column;
  gap: 0.7rem;
  padding: 0;
}
.pa-lib .pa-lib-form-actions {
  display: flex;
  flex-direction: column-reverse;
  gap: 0.7rem;
  padding: 0.2rem 0 0;
}
.pa-lib .pa-lib-form-actions .pa-lib-btn-primary,
.pa-lib .pa-lib-form-actions .pa-lib-btn-ghost { width: 100%; }

/* ── Mensajes de estado ── */
.pa-lib .pa-lib-status {
  display: flex;
  align-items: center;
  gap: 0.55rem;
  font-size: 0.85rem;
  font-weight: 500;
  line-height: 1.4;
  border-radius: var(--pa-lib-radius-sm);
  padding: 0.7rem 0.85rem;
  border: 1px solid transparent;
  margin: 0;
}
.pa-lib .pa-lib-status.is-loading {
  color: var(--pa-lib-muted);
  background: var(--pa-lib-glass-bg-2);
  border-color: var(--pa-lib-glass-border);
}
.pa-lib .pa-lib-status.is-success {
  color: var(--pa-lib-ok);
  background: var(--pa-lib-ok-bg);
  border-color: color-mix(in srgb, var(--pa-lib-ok) 35%, transparent);
}
.pa-lib .pa-lib-status.is-error {
  color: var(--pa-lib-bad);
  background: var(--pa-lib-bad-bg);
  border-color: color-mix(in srgb, var(--pa-lib-bad) 35%, transparent);
}

/* ── Estados vacíos ── */
.pa-lib .pa-lib-empty {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: 0.7rem;
  padding: 2.4rem 1.4rem;
  margin: 0;
  min-height: 0;
  font-size: inherit;
  color: inherit;
}
.pa-lib .pa-lib-empty .glyph {
  width: 52px; height: 52px;
  display: grid; place-items: center;
  border-radius: 16px;
  background: var(--pa-lib-accent-soft);
  border: 1px solid var(--pa-lib-glass-border);
  font-size: 1.5rem;
}
.pa-lib .pa-lib-empty h3 { margin: 0; font-size: 1rem; font-weight: 700; color: var(--pa-lib-text); }
.pa-lib .pa-lib-empty p { margin: 0; max-width: 34ch; font-size: 0.86rem; line-height: 1.5; color: var(--pa-lib-muted); }

/* ── Cabecera con título (Antecedentes) ── */
.pa-lib .pa-lib-head h2 {
  margin: 0;
  font-size: 1.22rem;
  font-weight: 700;
  letter-spacing: -0.01em;
  line-height: 1.15;
  color: var(--pa-lib-text);
}

/* ── Aviso de bloqueo (vista lectura) ── */
.pa-lib .pa-lib-notice {
  display: flex;
  align-items: flex-start;
  gap: 0.6rem;
  padding: 0.8rem 0.9rem;
  margin: 1rem 1rem 0;
  border-radius: var(--pa-lib-radius-sm);
  background: var(--pa-lib-accent-soft);
  border: 1px solid var(--pa-lib-glass-border);
  color: var(--pa-lib-text);
  font-size: 0.82rem;
  line-height: 1.4;
}
.pa-lib .pa-lib-notice .ico { flex: none; font-size: 0.95rem; line-height: 1.4; }

/* ── Ficha de solo lectura (pares etiqueta/valor) ── */
.pa-lib .pa-lib-readlist {
  display: grid;
  grid-template-columns: 1fr;
  gap: 0;
  padding: 0.35rem 1rem 0.6rem;
}
.pa-lib .pa-lib-readrow {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
  padding: 0.85rem 0.1rem;
  border-bottom: 1px solid var(--pa-lib-glass-border);
}
.pa-lib .pa-lib-readrow:last-child { border-bottom: none; }
.pa-lib .pa-lib-readrow .pa-lib-label {
  font-size: 0.66rem;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--pa-lib-muted);
  padding-left: 0;
}
.pa-lib .pa-lib-readvalue {
  font-size: 0.98rem;
  font-weight: 500;
  line-height: 1.45;
  color: var(--pa-lib-text);
  white-space: pre-wrap;
  word-break: break-word;
}
.pa-lib .pa-lib-readvalue.is-empty {
  color: var(--pa-lib-muted);
  font-weight: 400;
  font-style: italic;
  opacity: 0.85;
}
.pa-lib .pa-lib-tag {
  align-self: flex-start;
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  font-size: 0.82rem;
  font-weight: 600;
  color: var(--pa-lib-text);
  background: var(--pa-lib-accent-soft);
  border: 1px solid var(--pa-lib-glass-border);
  border-radius: 999px;
  padding: 0.28rem 0.7rem;
}
.pa-lib .pa-lib-tag .dot { width: 7px; height: 7px; border-radius: 50%; background: var(--pa-lib-accent); }

/* ── Barra del día (vista lista) ── */
.pa-lib .pa-lib-daybar {
  display: flex;
  align-items: baseline;
  gap: 0.5rem;
  padding: 0.1rem 0.35rem;
  flex-wrap: wrap;
}
.pa-lib .pa-lib-daybar .count { font-size: 0.78rem; font-weight: 600; color: var(--pa-lib-text); }
.pa-lib .pa-lib-daybar .sub { font-size: 0.74rem; color: var(--pa-lib-muted); text-transform: capitalize; }

/* ── Lista de clases ── */
.pa-lib .pa-lib-list {
  display: flex;
  flex-direction: column;
  gap: 0.6rem;
  padding: 0.85rem;
}
.pa-lib .pa-lib-class {
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: 0.85rem;
  width: 100%;
  text-align: left;
  min-height: 56px;
  padding: 0.7rem 0.8rem;
  border-radius: var(--pa-lib-radius-sm);
  background: var(--pa-lib-glass-bg-2);
  border: 1px solid var(--pa-lib-glass-border);
  font-family: inherit;
  color: var(--pa-lib-text);
  cursor: pointer;
  transition: background 0.18s ease, border-color 0.18s ease, transform 0.18s ease, box-shadow 0.18s ease;
}
.pa-lib .pa-lib-class:hover {
  transform: translateY(-2px);
  border-color: var(--pa-lib-accent);
  background: var(--pa-lib-glass-bg);
  box-shadow: var(--pa-lib-glass-shadow);
}
.pa-lib .pa-lib-class:focus-visible { outline: none; box-shadow: var(--pa-lib-focus-ring); }
.pa-lib .pa-lib-class.is-signed {
  background: var(--pa-lib-ok-bg);
  border-color: color-mix(in srgb, var(--pa-lib-ok) 28%, var(--pa-lib-glass-border));
}
.pa-lib .pa-lib-bloque {
  flex: none;
  min-width: 44px;
  height: 44px;
  display: grid;
  place-items: center;
  border-radius: 12px;
  background: var(--pa-lib-accent-soft);
  border: 1px solid var(--pa-lib-glass-border);
  font-weight: 700;
  font-size: 0.92rem;
  letter-spacing: 0.02em;
  color: var(--pa-lib-text);
}
.pa-lib .pa-lib-class.is-signed .pa-lib-bloque {
  background: color-mix(in srgb, var(--pa-lib-ok) 16%, transparent);
  border-color: color-mix(in srgb, var(--pa-lib-ok) 32%, transparent);
}
.pa-lib .pa-lib-class-main { min-width: 0; display: flex; flex-direction: column; gap: 0.15rem; }
.pa-lib .pa-lib-class-asig {
  font-size: 0.95rem;
  font-weight: 600;
  line-height: 1.25;
  color: var(--pa-lib-text);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.pa-lib .pa-lib-class-asig.is-empty { color: var(--pa-lib-muted); font-weight: 500; font-style: italic; }
.pa-lib .pa-lib-class-sum {
  font-size: 0.78rem;
  line-height: 1.35;
  color: var(--pa-lib-muted);
  display: -webkit-box;
  -webkit-line-clamp: 1;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.pa-lib .pa-lib-badge {
  flex: none;
  display: inline-flex;
  align-items: center;
  gap: 0.32rem;
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: 0.01em;
  border-radius: 999px;
  padding: 0.32rem 0.6rem;
  white-space: nowrap;
}
.pa-lib .pa-lib-badge svg { width: 13px; height: 13px; }
.pa-lib .pa-lib-badge.is-signed {
  color: var(--pa-lib-ok);
  background: color-mix(in srgb, var(--pa-lib-ok) 14%, transparent);
  border: 1px solid color-mix(in srgb, var(--pa-lib-ok) 35%, transparent);
}
.pa-lib .pa-lib-badge.is-unsigned {
  color: var(--pa-lib-muted);
  background: var(--pa-lib-glass-bg-2);
  border: 1px solid var(--pa-lib-glass-border);
}

/* ── Vista formulario ── */
.pa-lib .pa-lib-lecc-form { padding: 1rem; display: flex; flex-direction: column; gap: 0.95rem; }
.pa-lib .pa-lib-lecc-form .pa-lib-grid { padding: 0; }
.pa-lib .pa-lib-formhead {
  display: flex;
  align-items: center;
  gap: 0.6rem;
  padding: 0.1rem 0.4rem 0.2rem;
}
.pa-lib .pa-lib-formback {
  flex: none;
  width: 38px; height: 38px;
  display: grid; place-items: center;
  border-radius: 11px;
  background: var(--pa-lib-glass-bg-2);
  border: 1px solid var(--pa-lib-glass-border);
  color: var(--pa-lib-text);
  cursor: pointer;
  transition: background 0.18s ease, border-color 0.18s ease;
}
.pa-lib .pa-lib-formback:hover { background: var(--pa-lib-accent-soft); border-color: var(--pa-lib-accent); }
.pa-lib .pa-lib-formback:focus-visible { outline: none; box-shadow: var(--pa-lib-focus-ring); }
.pa-lib .pa-lib-formback svg { width: 18px; height: 18px; }
.pa-lib .pa-lib-formhead .ttl { display: flex; flex-direction: column; gap: 0.1rem; min-width: 0; }
.pa-lib .pa-lib-formhead .ttl b { font-size: 1.02rem; font-weight: 700; line-height: 1.2; }
.pa-lib .pa-lib-formhead .ttl span { font-size: 0.74rem; color: var(--pa-lib-muted); }

.pa-lib .pa-lib-req {
  display: inline-flex;
  align-items: center;
  gap: 0.3rem;
  margin-left: 0.45rem;
  font-size: 0.62rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--pa-lib-accent);
  background: var(--pa-lib-accent-soft);
  border-radius: 999px;
  padding: 0.12rem 0.46rem;
  vertical-align: middle;
}
.pa-lib .pa-lib-field.has-error .pa-lib-textarea,
.pa-lib .pa-lib-field.has-error .pa-lib-input {
  border-color: var(--pa-lib-bad);
  box-shadow: 0 0 0 3px var(--pa-lib-bad-bg);
}

/* ── Caja de firma SIGE ── */
.pa-lib .pa-lib-firma {
  margin: 0;
  padding: 0.95rem 1rem;
  border-radius: var(--pa-lib-radius-sm);
  background: var(--pa-lib-glass-bg-2);
  border: 1px solid var(--pa-lib-glass-border);
  display: block;
}
.pa-lib .pa-lib-firma-head {
  display: flex; align-items: center; gap: 0.5rem;
  font-size: 0.68rem; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase;
  color: var(--pa-lib-muted);
  margin-bottom: 0.7rem;
}
.pa-lib .pa-lib-firma-head .ico { font-size: 0.85rem; }
.pa-lib .pa-lib-firma-done {
  display: flex; align-items: center; gap: 0.6rem; flex-wrap: wrap;
  color: var(--pa-lib-ok);
  font-weight: 600;
  font-size: 0.92rem;
}
.pa-lib .pa-lib-firma-done svg { width: 18px; height: 18px; flex: none; }
.pa-lib .pa-lib-firma-done .meta { color: var(--pa-lib-muted); font-weight: 500; font-size: 0.78rem; }
.pa-lib .pa-lib-firma-done .meta b { color: var(--pa-lib-text); font-weight: 600; font-family: 'Courier New', monospace; letter-spacing: 0.04em; }
.pa-lib .pa-lib-firma-row {
  display: flex;
  flex-direction: column;
  gap: 0.6rem;
}
.pa-lib .pa-lib-firma-field {
  width: 100%;
  font-family: 'Courier New', Consolas, monospace;
  font-size: 1.25rem;
  font-weight: 700;
  letter-spacing: 0.55em;
  text-align: center;
  text-indent: 0.55em;
  color: var(--pa-lib-text);
  background: var(--pa-lib-glass-bg);
  border: 1px solid var(--pa-lib-glass-border);
  border-radius: var(--pa-lib-radius-sm);
  padding: 0.7rem 0.6rem;
  min-height: 52px;
}
.pa-lib .pa-lib-firma-field::placeholder { color: var(--pa-lib-muted); letter-spacing: 0.5em; }
.pa-lib .pa-lib-firma-field:focus-visible { outline: none; border-color: var(--pa-lib-accent); box-shadow: var(--pa-lib-focus-ring); }
.pa-lib .pa-lib-firma-field.has-error { border-color: var(--pa-lib-bad); box-shadow: 0 0 0 3px var(--pa-lib-bad-bg); }

/* ── Responsivo (container-query: se adapta al panel, no al viewport) ── */
@container palib (min-width: 680px) {
  .pa-lib .pa-lib-shell { gap: 1.1rem; }
  .pa-lib .pa-lib-toolbar { flex-direction: row; align-items: flex-end; padding: 1rem 1.15rem; }
  .pa-lib .pa-lib-toolbar-row { grid-template-columns: minmax(0, 2fr) minmax(0, 1fr); flex: 1; }
  .pa-lib .pa-lib-grid { grid-template-columns: 1fr 1fr; gap: 1.1rem 1.3rem; }
  .pa-lib .pa-lib-grid .pa-lib-span-2 { grid-column: 1 / -1; }
  .pa-lib .pa-lib-readlist { grid-template-columns: 1fr 1fr; column-gap: 2rem; padding: 0.5rem 1.3rem 0.8rem; }
  .pa-lib .pa-lib-readlist .pa-lib-span-2 { grid-column: 1 / -1; }
  .pa-lib .pa-lib-list { padding: 1.1rem 1.3rem; }
  .pa-lib .pa-lib-class { padding: 0.85rem 1rem; gap: 1rem; }
  .pa-lib .pa-lib-class-asig { font-size: 1rem; }
  .pa-lib .pa-lib-class-sum { font-size: 0.82rem; }
  .pa-lib .pa-lib-firma { padding: 1.1rem 1.2rem; }
  .pa-lib .pa-lib-firma-row { flex-direction: row; align-items: center; }
  .pa-lib .pa-lib-firma-row .pa-lib-firma-field { max-width: 280px; }
  .pa-lib .pa-lib-firma-row .pa-lib-btn-primary { width: auto; min-width: 160px; }
  .pa-lib .pa-lib-actions { flex-direction: row; align-items: center; justify-content: flex-end; }
  .pa-lib .pa-lib-actions .pa-lib-status { flex: 1; }
  .pa-lib .pa-lib-actions .pa-lib-btn-primary { width: auto; min-width: 200px; }
  .pa-lib .pa-lib-form-actions { flex-direction: row; justify-content: flex-end; align-items: center; }
  .pa-lib .pa-lib-form-actions .pa-lib-status { flex: 1; }
  .pa-lib .pa-lib-form-actions .pa-lib-btn-primary,
  .pa-lib .pa-lib-form-actions .pa-lib-btn-ghost { width: auto; min-width: 160px; }
}

/* Respaldo para navegadores sin @container: usa el viewport */
@supports not (container-type: inline-size) {
  @media (min-width: 720px) {
    .pa-lib .pa-lib-toolbar { flex-direction: row; align-items: flex-end; }
    .pa-lib .pa-lib-toolbar-row { grid-template-columns: minmax(0, 2fr) minmax(0, 1fr); flex: 1; }
    .pa-lib .pa-lib-grid { grid-template-columns: 1fr 1fr; }
    .pa-lib .pa-lib-grid .pa-lib-span-2 { grid-column: 1 / -1; }
    .pa-lib .pa-lib-readlist { grid-template-columns: 1fr 1fr; column-gap: 2rem; }
    .pa-lib .pa-lib-readlist .pa-lib-span-2 { grid-column: 1 / -1; }
    .pa-lib .pa-lib-firma-row { flex-direction: row; align-items: center; }
    .pa-lib .pa-lib-firma-row .pa-lib-firma-field { max-width: 280px; }
    .pa-lib .pa-lib-actions,
    .pa-lib .pa-lib-form-actions { flex-direction: row; justify-content: flex-end; align-items: center; }
    .pa-lib .pa-lib-actions .pa-lib-btn-primary,
    .pa-lib .pa-lib-form-actions .pa-lib-btn-primary,
    .pa-lib .pa-lib-form-actions .pa-lib-btn-ghost { width: auto; min-width: 160px; }
  }
}

@media (prefers-reduced-motion: reduce) {
  .pa-lib .pa-lib-btn-primary,
  .pa-lib .pa-lib-btn-ghost,
  .pa-lib .pa-lib-class,
  .pa-lib .pa-lib-input, .pa-lib .pa-lib-select, .pa-lib .pa-lib-textarea { transition: none; }
  .pa-lib .pa-lib-spinner { animation-duration: 1.4s; }
}

/* Lite mode: sin blur (coherente con el resto de la app) */
html.lite-mode .pa-lib .pa-lib-card {
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
}

/* ═══════════════════════════════════════════════════════════════════════════
   REDISEÑO MÓDULOS RESTANTES — Asistencia · Evaluaciones · Convivencia · PIE
   Unifica los 4 módulos bajo el MISMO sistema .pa-lib que Leccionario, para
   que el Libro de Clases se vea como una sola app (no como mini-apps sueltas).
   Todo scopeado bajo .pa-lib para no afectar el resto de la página.
   ═══════════════════════════════════════════════════════════════════════════ */

/* ── Toolbar de 3 columnas (Asistencia: curso / fecha / bloque) ── */
@container palib (min-width: 680px) {
  .pa-lib .pa-lib-toolbar-row--3 { grid-template-columns: minmax(0,1.4fr) minmax(0,1fr) minmax(0,1fr); }
}
@supports not (container-type: inline-size) {
  @media (min-width: 720px) {
    .pa-lib .pa-lib-toolbar-row--3 { grid-template-columns: minmax(0,1.4fr) minmax(0,1fr) minmax(0,1fr); }
  }
}

/* ── Resumen en píldoras (conteo por estado) ── */
.pa-lib .pa-lib-stats {
  display: flex;
  flex-wrap: wrap;
  gap: 0.45rem;
  padding: 0.1rem 0.35rem;
}
.pa-lib .pa-lib-stat {
  display: inline-flex;
  align-items: center;
  gap: 0.42rem;
  font-size: 0.74rem;
  font-weight: 700;
  color: var(--pa-lib-muted);
  background: var(--pa-lib-glass-bg-2);
  border: 1px solid var(--pa-lib-glass-border);
  border-radius: 999px;
  padding: 0.32rem 0.72rem;
}
.pa-lib .pa-lib-stat .dot { width: 8px; height: 8px; border-radius: 50%; background: currentColor; flex: none; }
.pa-lib .pa-lib-stat b { font-weight: 800; color: var(--pa-lib-text); }
.pa-lib .pa-lib-stat--presente    { color: #059669; }
.pa-lib .pa-lib-stat--ausente     { color: #be123c; }
.pa-lib .pa-lib-stat--atrasado    { color: #b45309; }
.pa-lib .pa-lib-stat--retirado    { color: #6d28d9; }
.pa-lib .pa-lib-stat--justificado { color: #1d4ed8; }
body.theme-dark .pa-lib .pa-lib-stat--presente,    body.theme-neon .pa-lib .pa-lib-stat--presente    { color: #34d399; }
body.theme-dark .pa-lib .pa-lib-stat--ausente,     body.theme-neon .pa-lib .pa-lib-stat--ausente     { color: #fb7185; }
body.theme-dark .pa-lib .pa-lib-stat--atrasado,    body.theme-neon .pa-lib .pa-lib-stat--atrasado    { color: #fbbf24; }
body.theme-dark .pa-lib .pa-lib-stat--retirado,    body.theme-neon .pa-lib .pa-lib-stat--retirado    { color: #a78bfa; }
body.theme-dark .pa-lib .pa-lib-stat--justificado, body.theme-neon .pa-lib .pa-lib-stat--justificado { color: #60a5fa; }

/* ── Fila estática (nómina de Asistencia): nombre + botones de estado ── */
.pa-lib .pa-lib-row {
  display: grid;
  grid-template-columns: 1fr auto;
  align-items: center;
  gap: 0.7rem;
  min-height: 50px;
  padding: 0.55rem 0.7rem;
  border-radius: var(--pa-lib-radius-sm);
  background: var(--pa-lib-glass-bg-2);
  border: 1px solid var(--pa-lib-glass-border);
}
.pa-lib .pa-lib-row .name {
  font-size: 0.92rem;
  font-weight: 600;
  color: var(--pa-lib-text);
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.pa-lib .pa-lib-row .estados { display: flex; gap: 0.3rem; flex: none; }
.pa-lib .pa-lib-row .pa-lib-nota { flex: none; }

/* Botones de estado de asistencia dentro del shell .pa-lib */
.pa-lib .pa-lib-estado {
  min-width: 36px;
  padding: 0.34rem 0.46rem;
  border-radius: 9px;
  border: 1px solid var(--pa-lib-glass-border);
  background: var(--pa-lib-glass-bg);
  color: var(--pa-lib-muted);
  font: inherit;
  font-size: 0.72rem;
  font-weight: 800;
  cursor: pointer;
  transition: background 0.15s ease, color 0.15s ease, transform 0.15s ease;
}
.pa-lib .pa-lib-estado:hover { color: var(--pa-lib-text); transform: translateY(-1px); }
.pa-lib .pa-lib-estado.is-active { color: #fff; border-color: transparent; }
.pa-lib .pa-lib-estado--presente    { background: #059669; }
.pa-lib .pa-lib-estado--ausente     { background: #be123c; }
.pa-lib .pa-lib-estado--atrasado    { background: #d97706; }
.pa-lib .pa-lib-estado--retirado    { background: #7c3aed; }
.pa-lib .pa-lib-estado--justificado { background: #2563eb; }

/* Input de nota (Evaluaciones) dentro del shell .pa-lib */
.pa-lib .pa-lib-nota {
  width: 66px;
  padding: 0.5rem 0.4rem;
  border-radius: 10px;
  border: 1px solid var(--pa-lib-glass-border);
  background: var(--pa-lib-glass-bg);
  color: var(--pa-lib-text);
  font: inherit;
  font-size: 0.95rem;
  font-weight: 700;
  text-align: center;
}
.pa-lib .pa-lib-nota:focus-visible { outline: none; border-color: var(--pa-lib-accent); box-shadow: var(--pa-lib-focus-ring); }
.pa-lib .pa-lib-nota.is-bad { color: var(--pa-lib-bad); border-color: color-mix(in srgb, var(--pa-lib-bad) 45%, transparent); }
.pa-lib .pa-lib-nota.is-invalid { border-color: var(--pa-lib-bad); box-shadow: 0 0 0 3px var(--pa-lib-bad-bg); }

/* ── Píldora-tag de lista (categoría / tipo / fecha) en col. 1 de .pa-lib-class ── */
.pa-lib .pa-lib-ltag {
  flex: none;
  min-width: 44px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  padding: 0.4rem 0.6rem;
  border-radius: 11px;
  font-size: 0.68rem;
  font-weight: 800;
  letter-spacing: 0.02em;
  line-height: 1.1;
  color: #fff;
}
.pa-lib .pa-lib-ltag--date {
  flex-direction: column;
  gap: 0.05rem;
  color: var(--pa-lib-text);
  background: var(--pa-lib-accent-soft);
  border: 1px solid var(--pa-lib-glass-border);
}
.pa-lib .pa-lib-ltag--positiva    { background: linear-gradient(135deg, #10b981, #059669); }
.pa-lib .pa-lib-ltag--observacion { background: linear-gradient(135deg, #64748b, #475569); }
.pa-lib .pa-lib-ltag--leve        { background: linear-gradient(135deg, #f59e0b, #d97706); }
.pa-lib .pa-lib-ltag--grave       { background: linear-gradient(135deg, #f97316, #ea580c); }
.pa-lib .pa-lib-ltag--gravisima   { background: linear-gradient(135deg, #ef4444, #b91c1c); }
.pa-lib .pa-lib-ltag--transitoria { background: linear-gradient(135deg, #38bdf8, #0284c7); }
.pa-lib .pa-lib-ltag--permanente  { background: linear-gradient(135deg, #a78bfa, #7c3aed); }

/* ── Variantes extra de badge (col. 3 de la fila) ── */
.pa-lib .pa-lib-badge.is-bad {
  color: var(--pa-lib-bad);
  background: var(--pa-lib-bad-bg);
  border: 1px solid color-mix(in srgb, var(--pa-lib-bad) 35%, transparent);
}
.pa-lib .pa-lib-badge.is-info {
  color: var(--pa-lib-text);
  background: var(--pa-lib-accent-soft);
  border: 1px solid var(--pa-lib-glass-border);
}

/* ── Tarjeta de detalle (Convivencia / PIE): texto cifrado + aviso ── */
.pa-lib .pa-lib-detail { padding: 1rem 1.1rem 1.1rem; display: flex; flex-direction: column; gap: 0.2rem; }
.pa-lib .pa-lib-detail-head {
  display: flex;
  align-items: center;
  gap: 0.6rem;
  flex-wrap: wrap;
  margin-bottom: 0.5rem;
}
.pa-lib .pa-lib-detail-head strong { font-size: 1rem; font-weight: 700; color: var(--pa-lib-text); }
.pa-lib .pa-lib-detail-meta {
  width: 100%;
  font-size: 0.74rem;
  color: var(--pa-lib-muted);
}
.pa-lib .pa-lib-detail h4 {
  margin: 0.9rem 0 0.25rem;
  font-size: 0.66rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--pa-lib-muted);
}
.pa-lib .pa-lib-detail p {
  margin: 0;
  font-size: 0.92rem;
  line-height: 1.55;
  color: var(--pa-lib-text);
  white-space: pre-wrap;
  word-break: break-word;
}
.pa-lib .pa-lib-detail .aviso {
  margin-top: 0.9rem;
  font-size: 0.76rem;
  line-height: 1.45;
  color: var(--pa-lib-muted);
}

/* ── Etiqueta de sección dentro de un formulario (ej. "Notas por estudiante") ── */
.pa-lib .pa-lib-field-label {
  font-size: 0.78rem;
  font-weight: 600;
  letter-spacing: 0.01em;
  color: var(--pa-lib-text);
  padding-left: 0.1rem;
  margin-top: 0.1rem;
}

/* ── Sección editable (plan/seguimiento): selectores + guardar ── */
.pa-lib .pa-lib-editbar { padding: 1rem 1.1rem 1.1rem; display: flex; flex-direction: column; gap: 0.85rem; }
.pa-lib .pa-lib-editbar .pa-lib-grid { padding: 0; }

/* ── Barra de acciones con botón Volver ghost + primario ── */
.pa-lib .pa-lib-actions.has-back { justify-content: space-between; }
@container palib (min-width: 680px) {
  .pa-lib .pa-lib-actions.has-back .pa-lib-btn-ghost { width: auto; min-width: 130px; }
}
