/* CREA Kids AI Library · estilos
   Paleta: papel cálido, tinta azul profunda y los colores de los 6 temas PEP. */

@font-face { font-family: "Fraunces"; src: url("../fuentes/fraunces-latin-wght-normal.woff2") format("woff2"); font-weight: 100 900; font-display: swap; }
@font-face { font-family: "Nunito"; src: url("../fuentes/nunito-latin-wght-normal.woff2") format("woff2"); font-weight: 200 1000; font-display: swap; }

:root {
    --papel: #f6efe2; --papel-2: #efe5d2; --tinta: #1f2a44; --tinta-2: #3b4768;
    --suave: #6b6f7d; --linea: #ded3bd; --coral: #e8674a; --coral-2: #cf5237;
    --musgo: #4f7a4a; --mostaza: #d9a441; --cielo: #4a7ab5; --blanco: #fff;
    --radio: 14px; --sombra: 0 1px 0 #e6dcc6;
    --display: "Fraunces", Georgia, serif; --texto: "Nunito", system-ui, sans-serif;
}

* { box-sizing: border-box; }
html { -webkit-tap-highlight-color: transparent; }
body {
    margin: 0; font: 16px/1.5 var(--texto); color: var(--tinta); background: var(--papel);
    background-image: radial-gradient(circle at 20% 10%, rgb(255 255 255 / .5), transparent 40%),
                      radial-gradient(circle at 90% 80%, rgb(232 103 74 / .06), transparent 35%);
    background-attachment: fixed; -webkit-font-smoothing: antialiased; min-height: 100dvh;
}
h1, h2, h3 { font-family: var(--display); font-weight: 600; line-height: 1.1; margin: 0; }
h1 { font-size: clamp(2rem, 4vw, 2.6rem); }
h2 { font-size: 1.3rem; }
p { margin: 0; }
a { color: inherit; }
code { background: var(--papel-2); padding: 1px 6px; border-radius: 6px; font-size: .9em; }
:focus-visible { outline: 2px solid var(--coral); outline-offset: 2px; }
.suave { color: var(--suave); }
.sobretitulo { font-size: .8rem; font-weight: 800; letter-spacing: .2em; text-transform: uppercase; color: var(--coral); }
.mostaza { color: var(--mostaza); }
[hidden] { display: none !important; }
.pila > * + * { margin-top: 16px; }
.texto-error { color: var(--coral-2); }

/* ---------- Botones y formularios ---------- */
.boton {
    display: inline-flex; align-items: center; justify-content: center; gap: 8px;
    padding: 10px 18px; border-radius: 12px; border: 0; cursor: pointer; text-decoration: none;
    font: 800 .9rem var(--texto); background: var(--tinta); color: var(--papel);
    box-shadow: 0 2px 0 #0d1426; transition: background .15s, transform .05s;
}
.boton:hover { background: var(--tinta-2); }
.boton:active { transform: translateY(1px); }
.boton.secundario { background: var(--blanco); color: var(--tinta); border: 1px solid var(--linea); box-shadow: none; }
.boton.fantasma { background: transparent; color: var(--tinta-2); box-shadow: none; }
.boton.fantasma:hover { background: var(--papel-2); }
.boton.ancho { width: 100%; }

.campo { display: block; }
.campo > span { display: block; font-size: .875rem; font-weight: 800; color: var(--tinta-2); margin-bottom: 6px; }
.campo small { display: block; font-size: .78rem; color: var(--suave); margin-top: 5px; }
.campo small.error-campo { color: var(--coral-2); font-weight: 700; }
input:not([type=checkbox]), select, textarea {
    width: 100%; padding: 10px 14px; border: 1px solid var(--linea); border-radius: 12px;
    background: var(--blanco); color: var(--tinta); font: 15px var(--texto);
}
input:focus, select:focus, textarea:focus { outline: none; border-color: var(--tinta-2); box-shadow: 0 0 0 4px rgb(31 42 68 / .1); }
input:disabled, select:disabled { background: var(--papel-2); color: var(--suave); }
.casilla { display: flex; gap: 12px; align-items: center; padding: 12px 14px; background: var(--papel-2); border-radius: 12px; }
.casilla input { width: 18px; height: 18px; accent-color: var(--tinta); }
.acciones { display: flex; justify-content: flex-end; gap: 8px; padding-top: 8px; }

.aviso { padding: 10px 14px; border-radius: 12px; border: 1px solid; font-size: .92rem; margin-bottom: 16px; }
.aviso-error { background: rgb(232 103 74 / .1); color: var(--coral-2); border-color: rgb(232 103 74 / .3); }
.aviso-exito { background: rgb(79 122 74 / .1); color: var(--musgo); border-color: rgb(79 122 74 / .3); }

/* ---------- Tarjetas ---------- */
.tarjeta { background: rgb(255 255 255 / .72); border: 1px solid var(--linea); border-radius: 18px; box-shadow: var(--sombra); padding: 24px; margin-bottom: 20px; }
.tarjeta-oscura { display: block; background: var(--tinta); color: var(--papel); border-radius: 18px; padding: 24px; text-decoration: none; margin-bottom: 20px; }
.tarjeta-oscura:hover { background: var(--tinta-2); }
.tarjeta-oscura p { color: rgb(246 239 226 / .7); margin-top: 8px; }
.tarjeta-oscura .enlace { display: inline-block; margin-top: 16px; font-weight: 800; color: var(--mostaza); }
.dos-columnas { display: grid; gap: 0 20px; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); }
.puntos { margin: 12px 0 0; padding: 0; list-style: none; }
.puntos li { position: relative; padding-left: 18px; margin: 6px 0; }
.puntos li::before { content: ""; position: absolute; left: 2px; top: .65em; width: 6px; height: 6px; border-radius: 50%; background: var(--coral); }
.ficha { display: grid; grid-template-columns: auto 1fr; gap: 8px 24px; }
.ficha > span:nth-child(odd) { color: var(--suave); }
.cabecera { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 16px; margin-bottom: 24px; }
.cabecera .suave { margin-top: 6px; max-width: 42rem; }
.volver { font-size: .9rem; font-weight: 700; color: var(--suave); text-decoration: none; }
.formulario { max-width: 40rem; }

/* ---------- Temas PEP ---------- */
.temas { display: grid; gap: 12px; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); margin-top: 16px; }
.tema { display: flex; gap: 12px; align-items: center; padding: 12px; background: rgb(246 239 226 / .7); border-radius: 12px; }
.tema .barra { width: 8px; align-self: stretch; min-height: 40px; border-radius: 99px; }
.tema strong { display: block; line-height: 1.3; }
.tema small { color: var(--suave); }

/* ---------- Listas de usuarios ---------- */
.filtros { display: flex; flex-wrap: wrap; gap: 12px; margin-bottom: 20px; }
.filtros input { flex: 1 1 240px; width: auto; }
.filtros select { flex: 0 1 220px; width: auto; }
.lista { padding: 0; overflow: hidden; }
.fila { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 14px; padding: 14px 20px; border-top: 1px solid var(--linea); }
.fila:first-child { border-top: 0; }
.fila.inactivo { opacity: .55; }
.avatar { width: 40px; height: 40px; flex: none; display: grid; place-items: center; border-radius: 50%; background: var(--papel-2); font: 600 1rem var(--display); }
.fila .datos { flex: 1 1 200px; min-width: 0; }
.fila .datos strong, .fila .datos span { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fila .datos small { font-weight: 400; color: var(--suave); }
.fila .datos span { font-size: .88rem; color: var(--suave); }
.fecha { width: 110px; text-align: right; font-size: .88rem; color: var(--suave); }
.insignia { padding: 2px 10px; border-radius: 99px; font-size: .75rem; font-weight: 800; white-space: nowrap; }
.rol-admin { background: var(--tinta); color: var(--papel); }
.rol-bibliotecario { background: rgb(217 164 65 / .25); color: #7a5510; }
.rol-docente { background: rgb(74 122 181 / .15); color: var(--cielo); }
.rol-coordinador { background: rgb(106 27 154 / .12); color: #5b2a86; }
.inactiva { background: rgb(232 103 74 / .15); color: var(--coral-2); }
.solo-google { background: var(--papel-2); color: var(--suave); }
.vacio { padding: 40px; text-align: center; color: var(--suave); }

/* ---------- Estructura con menú lateral ---------- */
.app { display: grid; grid-template-columns: 17rem 1fr; min-height: 100dvh; }
.lateral { background: var(--tinta); color: var(--papel); padding: 20px; display: flex; flex-direction: column; gap: 32px; position: sticky; top: 0; height: 100dvh; overflow-y: auto; }
.marca { display: flex; align-items: center; gap: 12px; }
.marca > svg { width: 34px; height: 34px; color: var(--mostaza); flex: none; }
.marca strong { display: block; font: 600 1.15rem var(--display); }
.marca small { display: block; font-size: .7rem; font-weight: 800; letter-spacing: .18em; text-transform: uppercase; color: rgb(246 239 226 / .5); }
.lateral nav { display: flex; flex-direction: column; gap: 4px; }
.nav-item { display: flex; align-items: center; gap: 12px; padding: 10px 12px; border-radius: 12px; text-decoration: none; font-weight: 700; color: rgb(246 239 226 / .88); }
.nav-item svg { width: 20px; height: 20px; flex: none; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
a.nav-item:hover { background: rgb(255 255 255 / .08); }
.nav-item.activo { background: var(--papel); color: var(--tinta); }
.nav-item.proximo { color: rgb(246 239 226 / .4); font-weight: 600; }
.nav-item em { margin-left: auto; font-style: normal; font-size: .62rem; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; border: 1px solid rgb(246 239 226 / .15); border-radius: 99px; padding: 0 8px; }
.quien { margin-top: auto; border-top: 1px solid rgb(255 255 255 / .1); padding-top: 16px; }
.quien strong, .quien span { display: block; }
.quien span { font-size: .88rem; color: rgb(246 239 226 / .6); }
.salir { margin-top: 10px; padding: 0; background: none; border: 0; color: rgb(246 239 226 / .7); font: 700 .88rem var(--texto); cursor: pointer; }
.salir:hover { color: var(--coral); }
.principal { min-width: 0; }
.contenido { max-width: 72rem; margin: 0 auto; padding: 32px; }
.barra-movil, .cerrar-menu, .velo { display: none; }

@media (max-width: 900px) {
    .app { display: block; }
    .lateral { position: fixed; inset: 0 auto 0 0; width: 18rem; z-index: 30; transform: translateX(-100%); transition: transform .2s; }
    .menu-toggle:checked + .app .lateral { transform: none; }
    .menu-toggle:checked + .app .velo { display: block; position: fixed; inset: 0; z-index: 20; background: rgb(31 42 68 / .4); }
    .cerrar-menu { display: block; margin-left: auto; cursor: pointer; font-size: 1.2rem; }
    .barra-movil { display: flex; align-items: center; gap: 14px; padding: 12px 16px; border-bottom: 1px solid var(--linea); font: 600 1rem var(--display); }
    .barra-movil label { cursor: pointer; font-size: 1.4rem; line-height: 1; }
    .contenido { padding: 24px 16px; }
    .fecha { display: none; }
    .ficha { grid-template-columns: 1fr; gap: 2px; }
    .ficha > span:nth-child(odd):not(:first-child) { margin-top: 10px; }
}

/* ---------- Login ---------- */
.login { display: grid; grid-template-columns: 1.1fr 1fr; min-height: 100dvh; }
.login-arte { background: var(--tinta); color: var(--papel); padding: 48px; display: flex; flex-direction: column; justify-content: space-between; overflow: hidden; }
.login-arte h1 { font-size: clamp(2.4rem, 4vw, 3.2rem); max-width: 28rem; line-height: 1.05; }
.login-arte h1 em { font-style: normal; color: var(--coral); }
.login-arte p:not(.sobretitulo) { color: rgb(246 239 226 / .7); max-width: 24rem; margin-top: 20px; }
.lomos { display: flex; align-items: flex-end; gap: 6px; height: 120px; }
.lomos span { width: 22px; border-radius: 3px 3px 1px 1px; box-shadow: inset -3px 0 0 rgb(0 0 0 / .12); }
.lomos i { flex: 1; height: 2px; background: rgb(246 239 226 / .2); }
.login-form { display: flex; align-items: center; justify-content: center; padding: 40px 20px; }
.caja { width: 100%; max-width: 22rem; }
.caja h2 { font-size: 1.9rem; margin-top: 4px; }
.caja form { margin-top: 28px; }
.separador { display: flex; align-items: center; gap: 12px; margin: 28px 0 16px; font-size: .72rem; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; color: var(--suave); }
.separador::before, .separador::after { content: ""; flex: 1; height: 1px; background: var(--linea); }
.google { display: flex; justify-content: center; min-height: 44px; }
.solo-movil { display: none; }
@media (max-width: 900px) {
    .login { grid-template-columns: 1fr; }
    .login-arte { display: none; }
    .solo-movil { display: block; }
}

/* ---------- Instalador y errores ---------- */
.instalador { padding: 40px 16px; }
.caja-ancha { max-width: 46rem; margin: 0 auto; }
.caja-ancha > h1 { margin: 6px 0 8px; }
.caja-ancha > .suave, .caja-ancha > p { margin-bottom: 20px; }
.rejilla { display: grid; gap: 14px; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); }
.ancho-total { grid-column: 1 / -1; }
.requisitos { list-style: none; padding: 0; margin: 12px 0 0; }
.requisitos li { padding: 4px 0; }
.requisitos span { display: inline-block; width: 24px; font-weight: 900; }
.requisitos .ok span { color: var(--musgo); }
.requisitos .falta span { color: var(--coral-2); }
.requisitos small { color: var(--suave); }
.codigo { width: 100%; font: 13px/1.5 ui-monospace, Consolas, monospace; background: var(--blanco); border: 1px solid var(--linea); border-radius: 12px; padding: 12px; white-space: pre-wrap; }
.error-pagina { max-width: 34rem; margin: 10vh auto; padding: 0 16px; text-align: center; }
.error-pagina .codigo-error { font: 700 4.5rem var(--display); color: var(--coral); }
.error-pagina h1 { margin-bottom: 10px; }
.error-pagina .boton { margin-top: 24px; }
details summary { cursor: pointer; font-weight: 700; color: var(--tinta-2); }

/* ---------- Importación ---------- */
.pequeno { font-size: .85rem; margin-top: 10px; }
.margen { margin: 16px 20px; }
.aviso-info { background: rgb(74 122 181 / .1); color: #2f5a8f; border-color: rgb(74 122 181 / .3); }
.zona-archivo { display: flex; flex-direction: column; align-items: center; gap: 4px; padding: 32px 16px; border: 2px dashed var(--linea); border-radius: 14px; background: rgb(246 239 226 / .6); cursor: pointer; text-align: center; transition: border-color .15s, background .15s; }
.zona-archivo:hover { border-color: var(--tinta-2); background: var(--papel); }
.zona-archivo input { width: auto; max-width: 100%; border: 0; background: transparent; padding: 0; margin-bottom: 8px; }
.zona-archivo span { color: var(--suave); font-size: .9rem; }
.zona-archivo .nombre-archivo { font-style: normal; font-weight: 800; color: var(--musgo); }
.ayuda summary { font: 600 1.1rem var(--display); color: var(--tinta); }
.ayuda[open] summary { margin-bottom: 12px; }
.ayuda p + p { margin-top: 10px; }
.ayuda .codigo { margin-top: 8px; font-size: 12px; overflow-x: auto; white-space: pre; }
.titulo-lista { padding: 18px 20px 10px; }
.titulo-lista.con-accion { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px; }
.fila-enlace { text-decoration: none; }
.fila-enlace:hover { background: rgb(246 239 226 / .7); }
.formato { width: 58px; flex: none; text-align: center; padding: 6px 0; border-radius: 8px; background: var(--papel-2); font-size: .7rem; font-weight: 900; letter-spacing: .05em; color: var(--tinta-2); }
.cifras { font-size: .85rem; color: var(--suave); }
.estado-ok { background: rgb(79 122 74 / .15); color: var(--musgo); }
.estado-aviso { background: rgb(217 164 65 / .22); color: #7a5510; }
.estado-error { background: rgb(232 103 74 / .15); color: var(--coral-2); }
.estado-pendiente { background: rgb(74 122 181 / .15); color: var(--cielo); }
.estado-apagado { background: var(--papel-2); color: var(--suave); }
.pasos { display: flex; gap: 6px; list-style: none; margin: 0; padding: 0; counter-reset: paso; flex-wrap: wrap; }
.pasos li { counter-increment: paso; padding: 4px 12px 4px 8px; border-radius: 99px; font-size: .8rem; font-weight: 700; color: var(--suave); background: var(--papel-2); }
.pasos li::before { content: counter(paso); display: inline-grid; place-items: center; width: 18px; height: 18px; margin-right: 6px; border-radius: 50%; background: var(--linea); font-size: .7rem; }
.pasos li.hecho { color: var(--musgo); }
.pasos li.hecho::before { content: "✓"; background: rgb(79 122 74 / .2); }
.pasos li.actual { background: var(--tinta); color: var(--papel); }
.pasos li.actual::before { background: var(--coral); color: #fff; }
.mapeo .datos span { white-space: normal; }
.mapeo select { flex: 0 1 280px; width: auto; }
.mapeo.asignada { background: rgb(79 122 74 / .06); }
.mapeo.asignada select { border-color: rgb(79 122 74 / .5); }
.cifras-grandes { display: grid; gap: 12px; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); margin-bottom: 20px; }
.cifras-grandes > div { background: rgb(255 255 255 / .72); border: 1px solid var(--linea); border-radius: 16px; padding: 16px 18px; }
.cifras-grandes strong { display: block; font: 600 2rem/1.1 var(--display); }
.cifras-grandes span { color: var(--suave); font-size: .88rem; }
.cifras-grandes .con-error strong { color: var(--coral-2); }
.cifras-grandes .con-aviso strong { color: #a0741c; }
.tabla { width: 100%; border-collapse: collapse; font-size: .92rem; }
.tabla th { text-align: left; font-size: .75rem; letter-spacing: .06em; text-transform: uppercase; color: var(--suave); padding: 8px 20px; border-bottom: 1px solid var(--linea); }
.tabla td { padding: 10px 20px; border-top: 1px solid var(--linea); vertical-align: top; }
.tabla td:first-child { width: 1%; white-space: nowrap; color: var(--suave); }
.tabla tbody tr:first-child td { border-top: 0; }
.barra-progreso { height: 14px; border-radius: 99px; background: var(--papel-2); overflow: hidden; }
.barra-progreso span { display: block; height: 100%; background: linear-gradient(90deg, var(--musgo), #6fa266); border-radius: 99px; transition: width .3s; }
.tema-chip { display: inline-flex; align-items: center; gap: 6px; font-size: .85rem; font-weight: 700; }
.tema-chip::before { content: ""; width: 10px; height: 10px; border-radius: 50%; background: var(--c, var(--suave)); }
.estadisticas { display: grid; gap: 12px; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); margin-bottom: 20px; }
.progreso-clasif { margin-top: 14px; }
.progreso-clasif .barra-progreso { height: 10px; margin-top: 6px; }
@media (max-width: 900px) {
    .tabla th, .tabla td { padding: 8px 12px; }
    .mapeo select { flex: 1 1 100%; }
}
@media (min-width: 901px) { .app { background: linear-gradient(to right, var(--tinta) 17rem, transparent 17rem); } }

/* ---------- Escaneo ---------- */
.escaner { max-width: 46rem; }
.camara { position: relative; overflow: hidden; border-radius: 14px; background: #000; aspect-ratio: 4 / 3; margin-bottom: 14px; }
.camara video { width: 100%; height: 100%; object-fit: cover; display: block; }
.camara .guia { position: absolute; inset: 25% 5%; border: 3px solid rgb(255 255 255 / .85); border-radius: 12px; box-shadow: 0 0 0 999px rgb(0 0 0 / .35); transition: border-color .2s; }
.camara .guia span { position: absolute; left: 6%; right: 6%; top: 50%; height: 2px; background: var(--coral); box-shadow: 0 0 8px var(--coral); animation: barrido 1.6s ease-in-out infinite alternate; }
@keyframes barrido { from { transform: translateY(-40px); } to { transform: translateY(40px); } }
.camara.leido .guia { border-color: #7bd389; }
.camara-estado { position: absolute; left: 0; right: 0; bottom: 10px; text-align: center; color: #fff; font-weight: 700; font-size: .9rem; text-shadow: 0 1px 3px #000; }
.camara-acciones { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 18px; }
.camara-acciones .boton { flex: 1 1 auto; }
.fila-entrada { display: flex; gap: 8px; }
.fila-entrada input { flex: 1; font-size: 1.1rem; letter-spacing: .04em; }
.resultado:empty { display: none; }
.resultado { margin-bottom: 20px; }
.hallazgo { display: flex; align-items: center; gap: 16px; text-decoration: none; margin: 0; border-color: var(--musgo); box-shadow: 0 0 0 3px rgb(79 122 74 / .15); animation: aparecer .25s ease-out; }
.hallazgo h2 { margin: 2px 0 4px; }
.hallazgo > div { flex: 1; min-width: 0; }
.hallazgo .tema-chip, .hallazgo .insignia { margin-top: 8px; }
@keyframes aparecer { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: none; } }
.pequeno-sin-margen { font-size: .82rem; }
.portada { width: 56px; height: 78px; flex: none; border-radius: 6px; object-fit: cover; box-shadow: 0 2px 6px rgb(0 0 0 / .15); }
.portada-vacia { display: grid; place-items: center; background: var(--c); color: #fff; font: 600 1.6rem var(--display); box-shadow: inset -6px 0 0 rgb(0 0 0 / .15), 0 2px 6px rgb(0 0 0 / .15); }
.historial ul, .resultados-texto { list-style: none; margin: 0; padding: 0; }
.historial .fila { font-size: .92rem; }
.historial a { text-decoration: none; }
.busqueda-texto { margin-top: 14px; }
.resultados-texto li { border-top: 1px solid var(--linea); }
.resultados-texto li:first-child { border-top: 0; margin-top: 10px; }
.resultados-texto a { display: flex; align-items: center; gap: 12px; padding: 10px 4px; text-decoration: none; }
.resultados-texto .portada { width: 38px; height: 52px; font-size: 1.1rem; }
.resultados-texto small { display: block; color: var(--suave); }
.resultados-texto li.suave { padding: 12px 4px; }
@media (max-width: 900px) {
    .hallazgo { flex-wrap: wrap; }
    .hallazgo .boton { width: 100%; }
}

/* ---------- Ficha del libro ---------- */
.ficha-libro { display: grid; grid-template-columns: 180px 1fr; gap: 28px; margin: 14px 0 24px; align-items: start; }
.ficha-portada img, .portada-vacia.grande { width: 180px; height: 250px; border-radius: 10px; object-fit: cover; box-shadow: 0 10px 24px rgb(31 42 68 / .2); }
.portada-vacia.grande { font-size: 4rem; }
.ficha-datos h1 { margin: 10px 0 4px; }
.subtitulo { font: italic 400 1.15rem var(--display); color: var(--tinta-2); }
.autores { font-weight: 700; margin-top: 8px; font-size: 1.05rem; }
.datos-biblio { display: grid; grid-template-columns: max-content 1fr; gap: 6px 18px; margin: 16px 0 0; }
.datos-biblio dt { color: var(--suave); font-size: .9rem; }
.datos-biblio dd { margin: 0; }
.categorias { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 14px; }
.categoria { padding: 3px 10px; border-radius: 99px; font-size: .8rem; font-weight: 800; color: var(--c); background: color-mix(in srgb, var(--c) 12%, white); border: 1px solid color-mix(in srgb, var(--c) 35%, white); }
.titulo-con-accion { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.clasificacion .fundamentacion { margin-top: 14px; padding: 12px 16px; border-left: 4px solid var(--musgo); background: rgb(79 122 74 / .07); border-radius: 0 10px 10px 0; }
.sin-clasificar { margin-top: 10px; padding: 14px 16px; border-radius: 12px; background: rgb(217 164 65 / .12); }
.sin-clasificar p + p { margin-top: 4px; }
.texto-largo { margin-top: 8px; max-width: 60rem; }
.tabla tr.resaltado td { background: rgb(79 122 74 / .1); }
@media (max-width: 700px) {
    .ficha-libro { grid-template-columns: 1fr; gap: 16px; }
    .ficha-portada { display: flex; justify-content: center; }
    .ficha-portada img, .portada-vacia.grande { width: 140px; height: 196px; }
}
.tabla-scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; }
.tabla-scroll .tabla { min-width: 520px; }

/* ---------- Registro y edición de libros (fase 5) ---------- */
.cabecera .derecha { margin-left: auto; }
.cabecera h1 + .derecha { margin-top: 10px; }
.acciones-hallazgo { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
.vista-previa { margin-top: 10px; color: var(--tinta); }
.hallazgo.previa { border: 0; box-shadow: none; animation: none; padding: 0; }
.buscar-isbn .aviso { margin: 12px 0 0; }
.formulario-libro > * + * { margin-top: 18px; }
.libro-editor { display: grid; grid-template-columns: 120px 1fr; gap: 20px; align-items: start; }
.portada-previa img, .portada-previa .portada-vacia { width: 120px; height: 168px; border-radius: 8px; object-fit: cover; box-shadow: 0 4px 12px rgb(0 0 0 / .18); }
.portada-previa .portada-vacia { --c: #6b6f7d; font-size: 3rem; }
fieldset { border: 0; padding: 0; margin: 0; min-width: 0; }
.categorias-elegir > div { display: flex; flex-wrap: wrap; gap: 8px; }
.categorias-elegir > span { display: block; font-size: .875rem; font-weight: 800; color: var(--tinta-2); margin-bottom: 6px; }
.chip-casilla { display: inline-flex; align-items: center; gap: 6px; padding: 6px 12px; border-radius: 99px; border: 1px solid var(--linea); background: var(--blanco); cursor: pointer; font-size: .88rem; }
.chip-casilla:has(input:checked) { background: var(--c); border-color: var(--c); color: #fff; }
.chip-casilla input { accent-color: var(--tinta); }
.ejemplar-inicial, .agregar-ejemplar { background: var(--papel-2); border-radius: 14px; padding: 16px; }
.ejemplar-inicial legend { font-weight: 800; padding: 0; margin-bottom: 10px; display: contents; }
.ejemplar-inicial > .rejilla { margin-top: 10px; }
.agregar-ejemplar { margin-top: 16px; }
.agregar-ejemplar > b { display: block; margin-bottom: 10px; }
.elegir-libros { list-style: none; margin: 0; padding: 0; }
.elegir-libros li { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px; padding: 12px 0; border-bottom: 1px solid var(--linea); }
.elegir-libros li > a { display: flex; flex-direction: column; text-decoration: none; color: inherit; min-width: 12rem; flex: 1; }
.elegir-libros form input { width: 9rem; font-size: 1rem; }
@media (max-width: 560px) {
    .libro-editor { grid-template-columns: 1fr; }
    .portada-previa { justify-self: center; }
}
.opciones-exportar { display: grid; gap: 8px; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); }
.opciones-exportar .opcion { display: flex; gap: 10px; align-items: flex-start; padding: 12px 14px; border: 1px solid var(--linea); border-radius: 12px; background: var(--blanco); cursor: pointer; }
.opciones-exportar .opcion:has(input:checked) { border-color: var(--tinta); box-shadow: 0 0 0 3px rgb(31 42 68 / .1); }
.opciones-exportar .opcion input { margin-top: 4px; accent-color: var(--tinta); }
.opciones-exportar small { display: block; color: var(--suave); font-size: .82rem; }
.pasos-texto { padding-left: 1.2rem; }
.pasos-texto li + li { margin-top: 6px; }

/* ---------- Clasificación con IA (fase 6) ---------- */
.acciones-cola { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.acciones-cola form { margin: 0; }
.estado-cola:empty { display: none; }
.registro-cola { list-style: none; margin: 0; padding: 10px 14px; max-height: 220px; overflow-y: auto; background: var(--papel-2); border-radius: 12px; font-size: .85rem; }
.registro-cola li + li { margin-top: 4px; }
pre.comando { white-space: pre-wrap; word-break: break-all; background: var(--tinta); color: var(--papel); padding: 12px 14px; border-radius: 12px; font-size: .82rem; margin: 0; }
details > summary { cursor: pointer; }
details[open] > summary { margin-bottom: 12px; }
.resultado-prueba:empty { display: none; }
.resultado-prueba.aviso { margin: 0; }
.ia-propuesta { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin-top: 14px; padding-top: 14px; border-top: 1px dashed var(--linea); }
.ia-propuesta form { margin: 0; }
.confianza { font-weight: 800; }
.confianza.baja { color: var(--coral-2); }
.confianza.media { color: #a0741c; }
.confianza.alta { color: var(--musgo); }

.boton:disabled, .boton[disabled] { opacity: .45; cursor: not-allowed; transform: none; }

/* ---------- Revisión y validación (fase 7) ---------- */
.chip-casilla { --c: var(--tinta-2); }
.nav-item em.contador { background: var(--coral); color: #fff; border-color: var(--coral); letter-spacing: 0; }
.filtros-revision { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 16px; }
.filtros-revision .filtro { padding: 7px 14px; border-radius: 99px; border: 1px solid var(--linea); background: var(--blanco); text-decoration: none; color: var(--tinta-2); font-size: .88rem; }
.filtros-revision .filtro b { margin-left: 4px; }
.filtros-revision .filtro.activo { background: var(--tinta); border-color: var(--tinta); color: var(--papel); }
.fila-filtros { display: flex; flex-wrap: wrap; gap: 8px; padding: 14px; }
.fila-filtros select, .fila-filtros input { flex: 1 1 200px; }
.vacio-grande { text-align: center; padding: 40px 20px; }
.lista-revision { list-style: none; margin: 0; padding: 0; }
.lista-revision li + li { border-top: 1px solid var(--linea); }
.lista-revision a { display: flex; align-items: center; gap: 14px; padding: 12px 20px; text-decoration: none; color: inherit; }
.lista-revision a:hover { background: var(--papel-2); }
.lista-revision .portada { width: 40px; height: 56px; font-size: 1.1rem; }
.lista-revision .datos { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.lista-revision .datos b { overflow: hidden; text-overflow: ellipsis; }
.lista-revision .lado { display: flex; flex-direction: column; align-items: flex-end; gap: 4px; }
.paginacion { display: flex; justify-content: center; gap: 16px; padding: 14px; font-size: .9rem; }
.revision { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.15fr); gap: 20px; align-items: start; }
.revision > .tarjeta { margin-bottom: 0; }
.revision-cabecera { display: flex; gap: 16px; align-items: flex-start; }
.revision-cabecera h1 { font-size: 1.6rem; margin: 0; }
.portada-grande { width: 96px; height: 134px; flex: none; border-radius: 8px; object-fit: cover; box-shadow: 0 4px 12px rgb(0 0 0 / .18); font-size: 2.4rem; }
.resumen-revision { max-height: 16rem; overflow-y: auto; margin-top: 14px; }
.tema-grande { display: flex; align-items: center; gap: 10px; font: 600 1.3rem/1.2 var(--display); margin: 10px 0 14px; }
.tema-grande::before { content: ""; width: 14px; height: 14px; border-radius: 50%; background: var(--c); flex: none; }
.acciones-revision { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 18px; }
.acciones-revision form { margin: 0; }
.boton-ok { background: var(--musgo); }
.boton-ok:hover { background: #3f6539; }
#corregir > summary h2, #observar > summary h2 { display: inline; }
.form-clasificacion > * + * { margin-top: 18px; }
.temas-elegir { display: grid; gap: 8px; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); }
.tema-opcion { display: flex; align-items: center; gap: 10px; padding: 10px 14px; border: 1px solid var(--linea); border-left: 6px solid var(--c); border-radius: 12px; background: var(--blanco); cursor: pointer; font-weight: 700; font-size: .92rem; }
.tema-opcion:has(input:checked) { box-shadow: 0 0 0 3px color-mix(in srgb, var(--c) 35%, transparent); border-color: var(--c); }
.tema-opcion input { accent-color: var(--c); }
.grupo-descriptores, .chips { display: flex; flex-wrap: wrap; gap: 8px; }
.grupo-descriptores + .grupo-descriptores { margin-top: 10px; }
.grupo-nombre { width: 100%; }
.historial-validacion { list-style: none; margin: 0; padding: 0; }
.historial-validacion li { padding: 10px 0; border-top: 1px solid var(--linea); }
.historial-validacion li:first-child { border-top: 0; }
@media (max-width: 900px) {
    .revision { grid-template-columns: 1fr; }
    .lista-revision a { padding: 10px 12px; }
}
.tema-opcion input, .opciones-exportar .opcion input { width: auto; flex: none; padding: 0; margin: 0; box-shadow: none; }
.campo > span small { display: inline; margin: 0; }

/* ---------- Catálogo y Panel IB (fase 8) ---------- */
.busqueda-catalogo .fila-entrada input { font-size: 1rem; letter-spacing: 0; }
.entendido { margin: 12px 0 0; display: flex; flex-wrap: wrap; gap: 6px; align-items: center; font-size: .9rem; }
.filtros-catalogo { margin-top: 14px; }
.filtros-catalogo > summary { font-weight: 800; color: var(--tinta-2); }
.casillas-fila { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 14px; }
.casillas-fila .casilla { flex: 1 1 240px; }
.resultados-cabecera { margin: 6px 0 12px; }
.resultados-cabecera h2 { margin: 0; }
.rejilla-libros { list-style: none; margin: 0 0 20px; padding: 0; display: grid; gap: 12px; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); }
.tarjeta-libro { display: flex; gap: 14px; height: 100%; padding: 14px; border: 1px solid var(--linea); border-radius: 16px; background: rgb(255 255 255 / .72); text-decoration: none; color: inherit; transition: box-shadow .15s, transform .15s; }
.tarjeta-libro:hover { box-shadow: var(--sombra); transform: translateY(-1px); }
.tarjeta-libro .portada { width: 64px; height: 90px; }
.tarjeta-libro .datos { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.titulo-libro { font: 600 1.02rem/1.25 var(--display); }
.disponible { color: var(--musgo); font-weight: 700; }
.filtro-panel { padding: 7px 14px; border-radius: 99px; border: 1px solid var(--linea); background: var(--blanco); text-decoration: none; color: var(--tinta-2); font-size: .85rem; }
.filtro-panel.activo { background: var(--tinta); border-color: var(--tinta); color: var(--papel); }
.barras { list-style: none; margin: 8px 0 0; padding: 0; display: grid; gap: 10px; }
.barras li { display: grid; grid-template-columns: minmax(150px, 15rem) 1fr auto; align-items: center; gap: 12px; }
.barra-etiqueta { font-size: .9rem; font-weight: 700; color: var(--tinta); text-decoration: none; }
a.barra-etiqueta:hover { text-decoration: underline; }
.barra-pista { height: 14px; background: var(--papel-2); border-radius: 0 4px 4px 0; overflow: hidden; }
.barra-valor { display: block; height: 100%; background: var(--c); border-radius: 0 4px 4px 0; }
.barra-numero { min-width: 4.5rem; text-align: right; font-size: .9rem; }
.barras.compactas li { grid-template-columns: minmax(110px, 10rem) 1fr auto; }
.barras.compactas .barra-pista { height: 10px; }
.nota-tabla { padding: 0 20px 10px; }
.matriz { width: 100%; border-collapse: separate; border-spacing: 2px; font-size: .88rem; }
.matriz thead th { font-size: .72rem; letter-spacing: .04em; text-transform: uppercase; color: var(--suave); padding: 6px 4px; text-align: center; white-space: nowrap; }
.matriz tbody th { text-align: left; padding: 6px 10px 6px 20px; white-space: nowrap; font-weight: 400; }
.matriz td { text-align: center; padding: 0; border-radius: 4px; min-width: 52px; }
.matriz td a { display: block; padding: 9px 4px; color: inherit; text-decoration: none; font-weight: 700; }
.matriz td a:hover { outline: 2px solid var(--tinta); outline-offset: -2px; border-radius: 4px; }
/* Escala secuencial de un tono (azul tinta), de claro a oscuro. */
.matriz .c0 { background: var(--papel-2); color: var(--suave); }
.matriz .c1 { background: #dfe6f1; }
.matriz .c2 { background: #bfcde3; }
.matriz .c3 { background: #8ea6cb; }
.matriz .c4 { background: #5c7aa8; color: #fff; }
.matriz .c5 { background: #2f4a78; color: #fff; }
.matriz td.falta a { box-shadow: inset 0 -3px 0 var(--coral); }
.necesidades, .lista-simple { list-style: none; margin: 10px 0 0; padding: 0; }
.necesidades li, .lista-simple li { padding: 7px 0; border-top: 1px solid var(--linea); display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.lista-simple li { justify-content: space-between; }
.necesidades li:first-child, .lista-simple li:first-child { border-top: 0; }
@media (max-width: 700px) {
    .barras li { grid-template-columns: 1fr auto; }
    .barras .barra-pista { grid-column: 1 / -1; grid-row: 2; }
    .rejilla-libros { grid-template-columns: 1fr; }
}
.necesidades li { flex-direction: column; align-items: flex-start; }
.niveles-falta { display: flex; flex-wrap: wrap; gap: 4px; }
.niveles-falta span { font-size: .78rem; padding: 2px 8px; border-radius: 99px; background: var(--papel-2); color: var(--tinta-2); }
.niveles-falta span.cero { background: rgb(232 103 74 / .12); color: var(--coral-2); font-weight: 700; }
.matriz td.falta a { box-shadow: inset 0 -2px 0 rgb(232 103 74 / .7); }

/* ---------- Préstamos y lectores (fase 10) ---------- */
.cifras-compactas strong { font-size: 1.6rem; }
.cifras-grandes > a { display: block; background: rgb(255 255 255 / .72); border: 1px solid var(--linea); border-radius: 16px; padding: 16px 18px; text-decoration: none; color: inherit; }
.cifras-grandes > a strong { display: block; font: 600 1.6rem/1.1 var(--display); }
.cifras-grandes > a span { color: var(--suave); font-size: .88rem; }
.cifras-grandes > a.con-error strong { color: var(--coral-2); }
.pestanas { display: inline-flex; gap: 4px; padding: 4px; background: var(--papel-2); border-radius: 14px; margin-bottom: 14px; }
.pestana { border: 0; background: transparent; padding: 10px 22px; border-radius: 10px; font: 800 .95rem var(--texto); color: var(--tinta-2); cursor: pointer; }
.pestana.activa { background: var(--blanco); color: var(--tinta); box-shadow: 0 1px 4px rgb(0 0 0 / .1); }
.mostrador-cuerpo { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); gap: 20px; align-items: start; }
.mostrador-cuerpo > .tarjeta { margin-bottom: 0; }
.mensaje-mostrador { font-size: 1.02rem; font-weight: 700; padding: 14px 18px; }
.sugerencias { list-style: none; margin: 8px 0 0; padding: 0; border: 1px solid var(--linea); border-radius: 12px; background: var(--blanco); overflow: hidden; }
.sugerencias li + li { border-top: 1px solid var(--linea); }
.sugerencias li.suave { padding: 10px 14px; }
.sugerencias button { display: block; width: 100%; text-align: left; border: 0; background: none; padding: 10px 14px; font: inherit; cursor: pointer; }
.sugerencias button:hover { background: var(--papel-2); }
.lector-elegido { padding: 14px 16px; border-radius: 14px; background: var(--papel-2); }
.lector-cabecera { display: flex; justify-content: space-between; align-items: flex-start; gap: 10px; }
.lector-nombre { display: block; font: 600 1.25rem/1.2 var(--display); }
.lector-estado { margin: 10px 0 0; display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.lista-prestamos, .lista-devueltos { list-style: none; margin: 0; padding: 0; }
.lista-prestamos li, .lista-devueltos li { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 8px; padding: 10px 0; border-top: 1px solid var(--linea); }
.lista-prestamos li > span:first-child { display: flex; flex-direction: column; min-width: 0; }
.lista-prestamos li.vencido, .lista-devueltos li.vencido { background: rgb(232 103 74 / .06); }
.prestamos-lector h3, .devueltos h3 { margin: 0 0 6px; font-size: 1rem; }
.fila-vencida td:first-child { border-left: 3px solid var(--coral); }
.tabla-reglas input { width: 6rem; }
.fila-filtros.sin-borde { padding: 0; align-items: flex-end; }
.mas-leidos { margin: 0; padding-left: 1.4rem; }
.mas-leidos li + li { margin-top: 6px; }
@media (max-width: 900px) {
    .mostrador-cuerpo { grid-template-columns: 1fr; }
    .mostrador-cuerpo .camara-caja { order: -1; }
}
.boton-camara { padding-left: 12px; padding-right: 12px; font-size: 1.1rem; }
.enlace-boton { border: 0; background: none; padding: 0; font: inherit; font-weight: 800; color: var(--tinta-2); text-decoration: underline; cursor: pointer; }
.registro-inventario li { font-size: .9rem; }

/* Copias de seguridad y acciones por fila */
.acciones.izquierda { justify-content: flex-start; flex-wrap: wrap; }
.acciones-fila { display: flex; gap: 6px; justify-content: flex-end; flex-wrap: wrap; }
.acciones-fila form { margin: 0; }
.boton.chico { padding: 6px 12px; font-size: .85rem; min-height: 0; }

/* Reservas en el mostrador */
.lista-prestamos li.reserva-lista { background: rgb(79 122 74 / .12); border-radius: 10px; padding-inline: 10px; }
.reservar-caja { border-top: 1px dashed var(--linea); padding-top: 10px; }
.reservar-caja summary { cursor: pointer; font-weight: 700; color: var(--tinta-2); }
.reservar-caja .paso { margin-top: 10px; }
.sugerencias-libros button { width: 100%; text-align: left; }

/* Estadísticas: columnas por mes (una serie; el año anterior, si existe, como sombra detrás) */
.columnas-mes { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: 6px; align-items: end; height: 220px; padding-top: 8px; }
.col-mes { display: grid; grid-template-rows: auto 1fr auto; height: 100%; text-align: center; gap: 4px; }
.col-numero { font-size: .8rem; font-weight: 800; color: var(--tinta); min-height: 1.1em; }
.col-pista { position: relative; display: flex; align-items: flex-end; justify-content: center; border-bottom: 1px solid var(--linea); }
.col-valor { position: relative; display: block; width: 62%; max-width: 34px; background: var(--tinta-2); border-radius: 4px 4px 0 0; }
.col-anterior { position: absolute; bottom: 0; left: 50%; transform: translateX(-50%); width: 86%; max-width: 46px; background: var(--papel-2); border-radius: 4px 4px 0 0; }
.col-etiqueta { font-size: .75rem; color: var(--suave); }
.col-mes:hover .col-valor { background: var(--tinta); }
.leyenda-meses { display: flex; align-items: center; gap: 6px; }
.muestra { display: inline-block; width: 12px; height: 12px; border-radius: 3px; }
.muestra-actual { background: var(--tinta-2); }
.muestra-anterior { background: var(--papel-2); border: 1px solid var(--linea); }
@media (max-width: 560px) { .columnas-mes { gap: 2px; } .col-numero { font-size: .65rem; } .col-etiqueta { font-size: .62rem; } }
.texto-aviso { color: #8a5d0c; font-weight: 700; }
.aviso-aviso { background: rgb(217 164 65 / .14); color: #6f4c0b; border-color: rgb(217 164 65 / .45); }
.pasos-actualizar { margin: 0; padding-left: 1.3rem; display: grid; gap: 12px; }
.pasos-actualizar li { line-height: 1.6; }
form.en-linea { display: inline-block; margin: 0 6px; vertical-align: middle; }
.pasos-actualizar small { display: block; }
.progreso-copia.con-error [data-estado] { color: var(--coral-2); font-weight: 700; }

/* Colecciones */
.coleccion-item { border-top: 1px solid var(--linea); padding: 10px 0; }
.coleccion-item > summary { cursor: pointer; display: flex; flex-wrap: wrap; gap: 10px; align-items: center; }
.coleccion-item[open] > summary { margin-bottom: 12px; }
.coleccion-item.inactiva > summary { opacity: .6; }
.categoria.coleccion { border-style: dashed; }
.fuera-pep { background: var(--papel-2); border-radius: 12px; padding: 14px 16px; }
input[type=color] { height: 42px; padding: 4px; cursor: pointer; }
.zona-peligro { border: 1px solid rgb(232 103 74 / .45); }
.boton.boton-peligro { background: var(--coral-2); box-shadow: none; }

/* Portadas */
.ficha-portada { display: flex; flex-direction: column; align-items: center; gap: 8px; }
.rejilla-portadas { display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 14px; }
.portada-candidata { margin: 0; text-align: center; }
.portada-candidata button { padding: 0; border: 2px solid transparent; border-radius: 10px; background: none; cursor: pointer; width: 100%; aspect-ratio: 2 / 3; overflow: hidden; }
.portada-candidata button:hover, .portada-candidata button:focus-visible { border-color: var(--tinta); }
.portada-candidata img { width: 100%; height: 100%; object-fit: cover; display: block; }
.portada-candidata small { display: block; margin-top: 4px; color: var(--suave); font-size: .78rem; }
.portada-actual { text-align: center; }
.portada-actual img { width: 90px; border-radius: 8px; display: block; box-shadow: 0 2px 8px rgb(0 0 0 / .15); }

/* ===================== Catálogo público (/explorar) ===================== */
body.explorar { background: var(--papel); min-height: 100vh; display: flex; flex-direction: column; }
.exp-barra { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; padding: 12px clamp(16px, 4vw, 40px); background: var(--tinta); color: var(--papel); }
.exp-marca { display: flex; align-items: center; gap: 10px; color: inherit; text-decoration: none; margin-right: auto; }
.exp-marca span { display: flex; flex-direction: column; line-height: 1.15; }
.exp-marca b { font: 600 1.15rem var(--display); }
.exp-marca small { font-size: .78rem; opacity: .8; }
.exp-logo { font-size: 1.8rem; }
.exp-busca-chica { display: flex; gap: 4px; }
.exp-busca-chica input { width: min(260px, 46vw); padding: 8px 12px; border-radius: 99px; border: 0; font: inherit; }
.exp-busca-chica button { border: 0; background: var(--mostaza); border-radius: 99px; padding: 0 12px; cursor: pointer; font-size: 1rem; }
.exp-entrar { color: var(--papel); font-size: .85rem; opacity: .85; }
.exp-main { width: min(1180px, 100%); margin: 0 auto; padding: 24px clamp(16px, 4vw, 40px) 48px; flex: 1; }
.exp-main h1 { font: 600 clamp(1.7rem, 4vw, 2.4rem)/1.15 var(--display); margin: 8px 0 14px; }
.exp-main h2 { font: 600 1.35rem var(--display); margin: 0 0 12px; }
.exp-pie { text-align: center; padding: 18px 16px; font-size: .85rem; color: var(--suave); border-top: 1px solid var(--linea); }

.exp-hero { text-align: center; padding: 28px 0 8px; }
.exp-hero h1 { font-size: clamp(2rem, 6vw, 3.2rem); }
.exp-busca { display: flex; gap: 8px; max-width: 720px; margin: 0 auto 10px; }
.exp-busca input { flex: 1; min-width: 0; padding: 16px 20px; font: 1.1rem var(--texto); border-radius: 99px; border: 2px solid var(--linea); background: var(--blanco); }
.exp-busca input:focus { border-color: var(--tinta); outline: none; }
.exp-busca .boton { border-radius: 99px; padding: 0 26px; font-size: 1.05rem; }

.exp-bloque { margin-top: 34px; }
.exp-edades { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 12px; }
.exp-edades a { display: flex; flex-direction: column; gap: 2px; padding: 16px 18px; border-radius: 18px; background: var(--blanco); border: 2px solid var(--linea); color: var(--tinta); text-decoration: none; }
.exp-edades a:hover { border-color: var(--tinta); }
.exp-edades b { font-size: 1.1rem; }
.exp-edades small { color: var(--suave); }
.exp-temas { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 14px; }
.exp-temas a { display: flex; flex-direction: column; justify-content: flex-end; min-height: 110px; padding: 16px 18px; border-radius: 20px; color: #fff; text-decoration: none;
               background: var(--c); box-shadow: inset 0 -60px 60px -40px rgb(0 0 0 / .25); transition: transform .12s; }
.exp-temas a:hover { transform: translateY(-3px); }
.exp-temas b { font: 600 1.2rem/1.2 var(--display); }
.exp-temas small { opacity: .9; margin-top: 4px; }
.exp-colecciones { display: flex; flex-wrap: wrap; gap: 10px; }
.exp-colecciones a { padding: 10px 16px; border-radius: 99px; font-weight: 800; text-decoration: none; color: var(--c); background: color-mix(in srgb, var(--c) 12%, white); border: 2px solid color-mix(in srgb, var(--c) 35%, white); }
.exp-colecciones small { opacity: .7; margin-left: 4px; }

.exp-libros { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 22px 16px; }
.exp-libros a { display: flex; flex-direction: column; gap: 6px; color: var(--tinta); text-decoration: none; }
.exp-libros a:hover .exp-tapa { transform: translateY(-4px); box-shadow: 0 10px 22px rgb(31 42 68 / .22); }
.exp-tapa { position: relative; aspect-ratio: 2 / 3; border-radius: 10px; overflow: hidden; background: var(--c); box-shadow: 0 4px 12px rgb(31 42 68 / .15); transition: transform .12s, box-shadow .12s;
            display: flex; align-items: center; justify-content: center; }
.exp-tapa img { width: 100%; height: 100%; object-fit: cover; }
.exp-tapa > span { font: 600 3rem var(--display); color: rgb(255 255 255 / .9); }
.exp-tapa em { position: absolute; left: 6px; bottom: 6px; font-style: normal; font-size: .72rem; font-weight: 800; padding: 3px 8px; border-radius: 99px; background: #fff; }
.exp-tapa em.hay { color: var(--musgo); }
.exp-tapa em.no-hay { color: var(--suave); }
.exp-tapa:has(.tg) em { top: 6px; bottom: auto; left: auto; right: 6px; }
.exp-libros b { font-size: .95rem; line-height: 1.25; }
.exp-libros small { color: var(--suave); font-size: .82rem; }

.exp-titulo { border-left: 8px solid var(--c); padding-left: 14px; margin-bottom: 8px; }
.exp-filtros { display: flex; flex-wrap: wrap; gap: 8px; margin: 6px 0 14px; }
.exp-chip { display: inline-block; padding: 7px 14px; border-radius: 99px; border: 1px solid var(--linea); background: var(--blanco); color: var(--tinta-2); text-decoration: none; font-size: .88rem; font-weight: 700; }
a.exp-chip:hover { border-color: var(--tinta); }
.exp-chip.activo { background: var(--tinta); border-color: var(--tinta); color: var(--papel); }
.exp-vacio { text-align: center; padding: 50px 16px; background: var(--blanco); border-radius: 20px; }
.exp-paginas { display: flex; justify-content: center; align-items: center; gap: 14px; margin-top: 28px; flex-wrap: wrap; }

.exp-ficha { display: grid; grid-template-columns: minmax(180px, 280px) 1fr; gap: clamp(20px, 4vw, 44px); align-items: start; margin-top: 12px; }
.exp-ficha-tapa { aspect-ratio: 2 / 3; border-radius: 14px; overflow: hidden; background: var(--c); box-shadow: 0 10px 28px rgb(31 42 68 / .22); display: flex; align-items: center; justify-content: center; }
.exp-ficha-tapa img { width: 100%; height: 100%; object-fit: cover; }
.exp-ficha-tapa span { font: 600 5rem var(--display); color: rgb(255 255 255 / .9); }
.exp-ficha-datos h1 { margin-top: 0; }
.exp-autor { font-size: 1.1rem; margin: 0 0 6px; }
.exp-disponible { display: flex; flex-direction: column; gap: 4px; padding: 16px 18px; border-radius: 16px; margin: 16px 0; }
.exp-disponible.hay { background: rgb(79 122 74 / .12); border: 2px solid rgb(79 122 74 / .35); }
.exp-disponible.hay b { color: var(--musgo); font-size: 1.15rem; }
.exp-disponible.no-hay { background: var(--papel-2); border: 2px solid var(--linea); }
.exp-disponible.no-hay b { font-size: 1.15rem; }
.exp-etiquetas { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.exp-etiquetas a { text-decoration: none; }
.exp-resumen { background: var(--blanco); border-radius: 16px; padding: 16px 20px; margin: 16px 0; font-size: 1.05rem; line-height: 1.6; }
.exp-resumen h2 { font-size: 1.1rem; margin-bottom: 6px; }
@media (max-width: 640px) {
    .exp-ficha { grid-template-columns: 1fr; }
    .exp-ficha-tapa { max-width: 220px; margin: 0 auto; }
    .exp-libros { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .exp-busca { flex-direction: column; }
    .exp-busca .boton { padding: 14px; }
    .exp-busca-chica input { width: 100%; }
    .exp-busca-chica { flex: 1; }
}
/* Kiosco: botones más grandes para dedos pequeños; sin selección de texto */
body.kiosco { user-select: none; -webkit-user-select: none; }
body.kiosco .exp-libros { grid-template-columns: repeat(auto-fill, minmax(170px, 1fr)); }
body.kiosco .exp-chip { padding: 12px 18px; font-size: 1rem; }
.centrado { text-align: center; }
.tabla-registro tr.fila-baja td { opacity: .6; }

/* Listas por unidad de indagación (1.7) */
.tapa-mini { flex: none; width: 40px; height: 56px; border-radius: 4px; background: var(--c, #6b6f7d); color: #fff; display: inline-flex; align-items: center; justify-content: center; font-weight: 700; overflow: hidden; box-shadow: 0 1px 3px rgba(0,0,0,.18); }
.tapa-mini img { width: 100%; height: 100%; object-fit: cover; }
.libro-fila { display: flex; gap: 10px; align-items: flex-start; }
.tabla-lista td { vertical-align: top; }
.tabla-lista input.cantidad { width: 4.5em; }
.tabla-lista input[name^="nota"] { min-width: 12em; }
.libros-elegir { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.libros-elegir li { display: flex; gap: 12px; align-items: center; padding: 8px; border-radius: 10px; background: var(--papel-2); }
.libros-elegir li > span:not(.tapa-mini) { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.paso-lista { display: flex; gap: 16px; align-items: center; justify-content: space-between; flex-wrap: wrap; }
@media (max-width: 640px) { .tabla-lista input[name^="nota"] { min-width: 8em; } }

/* Bibliotecas (2.0) */
.bibliotecas-menu { margin-top: -14px; display: flex; flex-direction: column; gap: 8px; }
.bib-titulo { font-size: .72rem; letter-spacing: .08em; text-transform: uppercase; opacity: .65; }
.bib-opciones { display: flex; flex-direction: column; gap: 6px; }
.bib-opcion { display: flex; align-items: center; gap: 10px; width: 100%; text-align: left; padding: 7px 10px; border-radius: 12px; cursor: pointer;
  border: 1px solid rgba(255,255,255,.14); background: rgba(255,255,255,.04); color: inherit; font: inherit; transition: background .15s, border-color .15s, transform .1s; }
.bib-opcion:hover { background: rgba(255,255,255,.1); border-color: color-mix(in srgb, var(--c, #fff) 70%, transparent); }
.bib-opcion:active { transform: scale(.98); }
.bib-opcion:focus-visible { outline: 3px solid var(--mostaza); outline-offset: 2px; }
.bib-opcion.activa { background: var(--c, rgba(255,255,255,.18)); border-color: var(--c, rgba(255,255,255,.4)); color: #fff; box-shadow: 0 6px 16px -8px var(--c, #000); }
.bib-opcion.ambas.activa { background: rgba(255,255,255,.18); border-color: rgba(255,255,255,.5); }
.bib-opcion.fija { cursor: default; }
.bib-sello { flex: none; width: 34px; height: 34px; border-radius: 10px; display: grid; place-items: center; font-weight: 800; font-size: .82rem; letter-spacing: .02em;
  background: var(--c, #555); color: #fff; box-shadow: inset 0 0 0 2px rgba(255,255,255,.25); }
.bib-opcion.activa .bib-sello { background: #fff; color: var(--c); }
.bib-opcion.ambas .bib-sello { background: rgba(255,255,255,.12); display: flex; gap: 3px; padding: 8px; }
.bib-opcion.ambas .bib-sello i { flex: 1; height: 100%; border-radius: 4px; }
.bib-texto { display: flex; flex-direction: column; line-height: 1.15; min-width: 0; }
.bib-texto b { font-size: .95rem; }
.bib-texto small { font-size: .74rem; opacity: .75; }
.franja-biblioteca { background: var(--c); color: #fff; padding: 6px 24px; font-size: .9rem; letter-spacing: .01em; position: sticky; top: 0; z-index: 5;
  box-shadow: 0 2px 8px -4px rgba(0,0,0,.35); }
.franja-biblioteca b { font-weight: 800; }
@media (max-width: 900px) { .franja-biblioteca { padding: 6px 16px; } }
.chip-biblioteca { display: inline-block; padding: 1px 8px; border-radius: 999px; font-size: .74rem; font-weight: 700; color: #fff; background: var(--c, #1f2a44); white-space: nowrap; }
.contenido:has(.solo-lectura) form[method="post"]:not(.se-ve), .contenido:has(.solo-lectura) .solo-opera { display: none !important; }
fieldset.sin-borde { border: 0; padding: 0; margin: 0; min-width: 0; }
.exp-bibliotecas { display: flex; gap: 6px; flex-wrap: wrap; }
.exp-bibliotecas a { padding: 6px 12px; border-radius: 999px; border: 2px solid var(--c); color: inherit; text-decoration: none; font-weight: 700; font-size: .9rem; }
.exp-bibliotecas a.activo { background: var(--c); color: #fff; }
.exp-en-bibliotecas { font-size: .95rem; }

/* Pantalla «¿A qué biblioteca entras hoy?» (2.0.4) */
.elegir-bib { min-height: 100dvh; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 28px; padding: 40px 16px;
  background: radial-gradient(1200px 600px at 50% -10%, #fffaf0 0%, transparent 60%), var(--papel); }
.elegir-cabecera { text-align: center; max-width: 640px; }
.elegir-logo { display: inline-grid; place-items: center; width: 56px; height: 56px; border-radius: 16px; background: var(--tinta); color: var(--mostaza); margin-bottom: 14px; }
.elegir-logo svg { width: 30px; height: 30px; }
.elegir-hola { margin: 0; font-weight: 700; color: var(--suave); letter-spacing: .02em; }
.elegir-cabecera h1 { font: 600 clamp(1.8rem, 4vw, 2.8rem)/1.1 var(--display); margin: 6px 0 8px; color: var(--tinta); }
.elegir-tarjetas { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 24px; width: min(920px, 100%); }
.elegir-tarjeta { position: relative; overflow: hidden; display: flex; flex-direction: column; align-items: flex-start; gap: 6px; text-align: left; cursor: pointer;
  padding: 28px 28px 24px; min-height: 340px; border: 0; border-radius: 28px; color: #fff; font: inherit;
  background: linear-gradient(155deg, color-mix(in srgb, var(--c) 82%, white) 0%, var(--c) 55%, color-mix(in srgb, var(--c) 78%, black) 100%);
  box-shadow: 0 24px 48px -24px color-mix(in srgb, var(--c) 80%, black), 0 2px 0 rgba(255,255,255,.25) inset;
  transition: transform .2s ease, box-shadow .2s ease; animation: elegir-entra .45s ease both; animation-delay: calc(var(--i) * 90ms); }
.elegir-tarjeta:hover, .elegir-tarjeta:focus-visible { transform: translateY(-6px) rotate(-.4deg); box-shadow: 0 34px 60px -26px color-mix(in srgb, var(--c) 85%, black); outline: none; }
.elegir-tarjeta:focus-visible { box-shadow: 0 0 0 4px var(--papel), 0 0 0 8px var(--c); }
.elegir-tarjeta:active { transform: translateY(-2px) scale(.99); }
.elegir-tarjeta.es-actual::after { content: 'Donde estabas'; position: absolute; top: 18px; right: 18px; font-size: .72rem; font-weight: 800; letter-spacing: .04em;
  background: rgba(255,255,255,.25); padding: 4px 10px; border-radius: 99px; }
.elegir-sello { width: 72px; height: 72px; border-radius: 22px; display: grid; place-items: center; background: #fff; color: var(--c);
  font: 800 1.6rem var(--display); margin-bottom: 10px; box-shadow: 0 10px 24px -12px rgba(0,0,0,.45); }
.elegir-nombre { font: 600 2rem/1.05 var(--display); }
.elegir-desc { font-size: 1.05rem; opacity: .92; }
.elegir-grados { font-size: .85rem; opacity: .8; }
.elegir-cifras { display: flex; flex-wrap: wrap; gap: 8px; margin-top: auto; padding-top: 16px; }
.elegir-cifras > span { background: rgba(255,255,255,.18); border-radius: 12px; padding: 6px 10px; font-size: .82rem; }
.elegir-cifras b { font-size: 1rem; }
.elegir-entrar { align-self: stretch; margin-top: 14px; padding: 12px 16px; border-radius: 14px; background: #fff; color: var(--c); font-weight: 800; text-align: center;
  transition: letter-spacing .2s; }
.elegir-tarjeta:hover .elegir-entrar { letter-spacing: .04em; }
.elegir-lomos { position: absolute; right: 26px; top: 30px; display: flex; align-items: flex-end; gap: 5px; opacity: .28; pointer-events: none; }
.elegir-lomos i { display: block; width: 16px; border-radius: 4px 4px 2px 2px; background: #fff; }
.elegir-lomos i:nth-child(1) { height: 70px; } .elegir-lomos i:nth-child(2) { height: 94px; } .elegir-lomos i:nth-child(3) { height: 60px; }
.elegir-lomos i:nth-child(4) { height: 82px; transform: rotate(8deg); transform-origin: bottom left; } .elegir-lomos i:nth-child(5) { height: 54px; }
.elegir-general .boton { display: inline-flex; align-items: center; gap: 10px; }
.elegir-mini { display: inline-flex; gap: 3px; } .elegir-mini i { width: 10px; height: 18px; border-radius: 3px; }
.elegir-salir .enlace-boton { color: var(--suave); font-size: .85rem; }
@keyframes elegir-entra { from { opacity: 0; transform: translateY(16px); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) { .elegir-tarjeta { animation: none; transition: none; } }
@media (max-width: 640px) { .elegir-tarjeta { min-height: 0; padding: 22px; } .elegir-nombre { font-size: 1.6rem; } .elegir-lomos { display: none; } }
.bib-titulo a { color: inherit; }
/* Menú: selector compacto de biblioteca y grupos (2.0.5) */
.bib-segmento { display: flex; gap: 4px; padding: 4px; border-radius: 14px; background: rgba(255,255,255,.07); border: 1px solid rgba(255,255,255,.12); }
.bib-segmento > button, .bib-segmento > span { flex: 1 1 0; min-width: 0; display: flex; flex-direction: column; align-items: center; gap: 4px; padding: 7px 2px 6px;
  border: 0; border-radius: 10px; background: transparent; color: inherit; font: 700 .74rem var(--texto); cursor: pointer; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; transition: background .15s; }
.bib-segmento > span.fija { flex-direction: row; justify-content: center; gap: 8px; font-size: .9rem; cursor: default; }
.bib-segmento > button:hover { background: rgba(255,255,255,.1); }
.bib-segmento > button:focus-visible { outline: 3px solid var(--mostaza); outline-offset: 1px; }
.bib-segmento .activa { background: var(--c, rgba(255,255,255,.2)); color: #fff; box-shadow: 0 4px 12px -6px var(--c, #000); }
.bib-segmento .ambas.activa { background: rgba(255,255,255,.2); }
.bib-segmento .bib-sello { width: 28px; height: 28px; border-radius: 8px; font-size: .72rem; }
.bib-segmento .activa .bib-sello { background: #fff; color: var(--c); }
.bib-segmento .ambas .bib-sello { background: rgba(255,255,255,.12); display: flex; gap: 2px; padding: 6px; }
.bib-segmento .ambas .bib-sello i { flex: 1; height: 100%; border-radius: 3px; }
.nav-grupo { display: block; margin: 14px 0 2px 12px; font-size: .68rem; font-weight: 800; letter-spacing: .09em; text-transform: uppercase; opacity: .5; }
.lateral nav .nav-item { padding-top: 7px; padding-bottom: 7px; }
/* Inicio por biblioteca (2.0.5) */
.inicio-cabecera { border-left: 6px solid var(--c, var(--mostaza)); padding: 4px 0 4px 18px; margin-bottom: 18px; }
.inicio-cabecera h1 { margin: 2px 0; }
.inicio-donde { margin: 0; font-size: 1.05rem; }
.inicio-donde b { color: var(--c, var(--tinta)); }
.atajos { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 12px; margin-bottom: 20px; }
.atajo { display: flex; flex-direction: column; gap: 3px; padding: 14px 16px; border-radius: 16px; background: #fffdf8; border: 1px solid var(--linea);
  border-top: 4px solid var(--c, var(--mostaza)); text-decoration: none; color: var(--tinta); transition: transform .15s, box-shadow .15s; }
.atajo:hover { transform: translateY(-2px); box-shadow: 0 10px 22px -14px rgba(0,0,0,.4); }
.atajo b { font-size: 1rem; } .atajo small { color: var(--suave); font-size: .82rem; }
.resumen-bib button { width: 100%; display: flex; flex-direction: column; align-items: flex-start; gap: 4px; padding: 18px 20px; border: 0; border-radius: 18px; cursor: pointer;
  background: var(--c); color: #fff; font: inherit; text-align: left; box-shadow: 0 14px 28px -18px var(--c); }
.resumen-bib b { font: 600 1.4rem var(--display); } .resumen-bib em { font-style: normal; font-weight: 800; margin-top: 6px; }
/* Catálogo público: elegir biblioteca (2.0.5) */
a.elegir-tarjeta { text-decoration: none; }
.elegir-bib.publico { min-height: calc(100dvh - 160px); background: none; padding-top: 24px; }
.elegir-bib.publico .elegir-tarjeta { min-height: 300px; }
.elegir-ambas { display: inline-flex; align-items: center; gap: 10px; }
.exp-cambiar { border-color: transparent !important; font-size: 1.1rem !important; }
.elegir-tarjeta.es-actual::after { z-index: 2; background: rgba(0,0,0,.22); }
.elegir-tarjeta.es-actual .elegir-lomos { top: 64px; }
.fila-kiosco { display: flex; gap: 6px; align-items: center; flex-wrap: wrap; } .fila-kiosco select { padding: 8px 10px; border-radius: 10px; border: 1px solid var(--linea); font: inherit; background: #fff; }

/* Calendario, anuncios, ambientes y proyectos (2.1) */
.panel-anuncios { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 12px; margin-bottom: 18px; }
.anuncio { position: relative; background: #fffdf5; border-radius: 14px; padding: 14px 16px 12px; border: 1px solid var(--linea); border-left: 6px solid var(--c);
  box-shadow: 0 8px 18px -14px rgba(0,0,0,.35); display: flex; flex-direction: column; gap: 4px; }
.anuncio.fijado { background: #fff7df; }
.anuncio p { margin: 0; }
.anuncio-pin { position: absolute; top: 8px; right: 10px; }
.calendario .cal-cabecera { display: flex; align-items: center; gap: 10px; margin-bottom: 10px; }
.calendario .cal-cabecera h2 { margin: 0; min-width: 190px; text-align: center; }
.cal-grilla { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 4px; }
.cal-dia-nombre { font-size: .72rem; text-transform: uppercase; letter-spacing: .06em; color: var(--suave); text-align: center; padding: 4px 0; }
.cal-celda { position: relative; min-height: 96px; background: #fffdf8; border: 1px solid var(--linea); border-radius: 10px; padding: 4px 5px; display: flex; flex-direction: column; gap: 3px; overflow: hidden; }
.cal-celda.fuera { opacity: .45; }
.cal-celda.hoy { border: 2px solid var(--tinta); }
.cal-num { font-weight: 800; font-size: .85rem; }
.cal-celda.hoy .cal-num { background: var(--tinta); color: #fff; border-radius: 99px; width: 24px; height: 24px; display: grid; place-items: center; }
.cal-evento { display: block; font-size: .74rem; line-height: 1.2; padding: 2px 5px; border-radius: 6px; background: color-mix(in srgb, var(--c) 16%, white); border-left: 3px solid var(--c);
  color: var(--tinta); text-decoration: none; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cal-evento i { font-style: normal; font-weight: 800; }
.cal-mas { position: absolute; top: 3px; right: 6px; font-weight: 800; text-decoration: none; color: var(--suave); opacity: 0; transition: opacity .15s; }
.cal-celda:hover .cal-mas, .cal-mas:focus { opacity: 1; }
@media (max-width: 700px) { .cal-celda { min-height: 58px; } .cal-evento { font-size: 0; padding: 0; height: 6px; } }
.ag-lista { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 10px; }
.ag-lista li { display: flex; gap: 12px; align-items: flex-start; }
.ag-fecha { flex: none; width: 92px; display: flex; flex-direction: column; padding: 6px 8px; border-radius: 10px; background: color-mix(in srgb, var(--c) 14%, white); border-left: 4px solid var(--c); }
.ag-fecha small { color: var(--suave); }
.ag-datos { flex: 1; display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.ag-lista.pasadas li { opacity: .8; }
.ambientes-grilla { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 14px; }
.ambiente { border-top: 5px solid var(--c, var(--mostaza)); }
.ambiente.nuevo { border-top-style: dashed; }
.proy-seccion { margin-top: 26px; }
.proy-seccion h2 { font: 600 1.4rem var(--display); }
.proy-linea { display: grid; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: 16px; }
.proy-mes { grid-column: 1 / -1; font-weight: 800; color: var(--suave); text-transform: uppercase; letter-spacing: .06em; font-size: .78rem;
  border-bottom: 1px dashed var(--linea); padding-bottom: 4px; margin-top: 4px; }
.proy-tarjeta { display: flex; flex-direction: column; border-radius: 18px; overflow: hidden; background: #fffdf8; border: 1px solid var(--linea); text-decoration: none; color: var(--tinta);
  box-shadow: 0 12px 26px -20px rgba(0,0,0,.5); transition: transform .15s, box-shadow .15s; }
.proy-tarjeta:hover { transform: translateY(-3px); box-shadow: 0 18px 30px -18px rgba(0,0,0,.45); }
.proy-img { aspect-ratio: 16 / 9; background: color-mix(in srgb, var(--c) 22%, white); display: grid; place-items: center; overflow: hidden; }
.proy-img img { width: 100%; height: 100%; object-fit: cover; }
.proy-sin-img { font-size: 2.6rem; }
.proy-cuerpo { padding: 12px 14px 14px; display: flex; flex-direction: column; gap: 4px; border-top: 4px solid var(--c); }
.proy-cuerpo b { font-size: 1.05rem; }
.proy-tipo { align-self: flex-start; font-size: .7rem; font-weight: 800; letter-spacing: .04em; text-transform: uppercase; padding: 2px 8px; border-radius: 99px; background: #e8eef8; color: #1f4f8f; }
.proy-tipo.cra { background: #fdeee0; color: #9a4b07; }
.realizados .proy-tarjeta { filter: saturate(.75); }
.proy-portada { width: 100%; max-height: 380px; object-fit: cover; border-radius: 20px; margin: 10px 0 6px; }
.proy-ficha { max-width: 980px; }
.proy-tipos { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 10px; }
.proy-tipo-opcion { display: flex; gap: 10px; align-items: flex-start; padding: 12px 14px; border: 2px solid var(--linea); border-radius: 14px; cursor: pointer; background: #fff; }
.proy-tipo-opcion:has(input:checked) { border-color: var(--tinta); box-shadow: 0 0 0 3px rgba(31,42,68,.12); }
.proy-tipo-opcion span { display: flex; flex-direction: column; gap: 2px; } .proy-tipo-opcion small { color: var(--suave); }
.proy-tipo-opcion input { width: auto; flex: none; margin: 4px 0 0; accent-color: var(--tinta); } .proy-tipo-opcion span { flex: 1; text-align: left; }
.proy-mini { max-width: 220px; border-radius: 12px; display: block; margin: 4px 0; }
.donde-bib { display: flex; gap: 4px; flex-wrap: wrap; margin-top: 2px; }
.donde-bib .chip-biblioteca { font-size: .68rem; padding: 1px 7px; }
.exp-novedades { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 12px; }

/* ---- Tapas generadas (libros sin portada): color del tema, ícono, título y autor (2.2) ---- */
.portada-vacia:has(.tg), .exp-tapa:has(.tg), .exp-ficha-tapa:has(.tg) { container-type: inline-size; display: block; padding: 0; }
.tg { position: absolute; inset: 0; display: flex; flex-direction: column; justify-content: space-between; gap: 6cqw; padding: 10cqw 9cqw 11cqw 13cqw;
      color: #fff; text-align: left; background: linear-gradient(90deg, rgb(0 0 0 / .18) 0 5cqw, transparent 5cqw), var(--c); }
.portada-vacia:has(.tg), .exp-ficha-tapa:has(.tg) { position: relative; overflow: hidden; }
.tg svg { width: 26cqw; height: 26cqw; opacity: .85; flex: none; }
.tg b { font: 700 clamp(7px, 12.5cqw, 34px)/1.08 var(--display); overflow: hidden; display: -webkit-box; -webkit-line-clamp: 5; -webkit-box-orient: vertical; margin-top: auto; }
.tg small, .exp-libros .tg small { color: #fff; font-size: clamp(6px, 7.5cqw, 15px); opacity: .9; font-weight: 700; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
@container (max-width: 90px) {
    .tg { justify-content: center; align-items: center; padding: 8px 6px 8px 9px; }
    .tg svg { width: 52%; height: auto; }
    .tg b, .tg small { display: none; }
}

/* ---- Completar portadas (2.2) ---- */
.portadas-lote-cabeza { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 12px; }
.barra-avance { height: 12px; background: var(--papel-2); border-radius: 99px; overflow: hidden; }
.barra-avance span { display: block; height: 100%; background: var(--musgo); border-radius: 99px; transition: width .4s; }
.portada-duda { display: flex; flex-wrap: wrap; align-items: center; gap: 18px; margin-bottom: 12px; padding: 16px 18px; }
.portada-duda-libro { flex: 1 1 240px; display: flex; flex-direction: column; }
.portada-duda-opciones { display: flex; flex-wrap: wrap; gap: 10px; }
.portada-duda-opciones form { margin: 0; }
.portada-duda-opciones button { width: 92px; padding: 0; border: 2px solid var(--linea); border-radius: 10px; background: var(--blanco); cursor: pointer; overflow: hidden; display: flex; flex-direction: column; }
.portada-duda-opciones button:hover, .portada-duda-opciones button:focus-visible { border-color: var(--tinta); }
.portada-duda-opciones img { width: 100%; aspect-ratio: 2 / 3; object-fit: cover; display: block; background: var(--papel-2); }
.portada-duda-opciones small { font-size: .7rem; font-weight: 800; color: var(--suave); padding: 3px 0; }
.portadas-foto-cta { display: flex; flex-wrap: wrap; gap: 18px; align-items: center; justify-content: space-between; background: var(--tinta); color: #fff; }
.portadas-foto-cta > div { flex: 1 1 380px; }
.portadas-foto-cta p { color: #d5dbe8; margin-top: 6px; overflow-wrap: anywhere; }
.foto-libro { display: flex; flex-wrap: wrap; gap: 24px; align-items: flex-start; }
.foto-libro > .pila { flex: 1 1 260px; }
.foto-tapa { width: 160px; height: 228px; border-radius: 8px 14px 14px 8px; flex: none; overflow: hidden; }
.foto-tapa img { width: 100%; height: 100%; object-fit: cover; }
.foto-boton { min-height: 64px; font-size: 1.1rem; width: 100%; cursor: pointer; }
.foto-codigo { display: flex; flex-wrap: wrap; gap: 10px; align-items: flex-end; }
.foto-codigo .campo { flex: 1 1 260px; margin: 0; }

/* ===================== Catálogo público 2.2: más visual ===================== */
body.explorar { background: #fffdf8; }
.exp-barra { background: color-mix(in srgb, var(--bib, #1f2a44) 82%, #000); color: #fff; padding: 12px clamp(16px, 4vw, 40px); gap: 12px 18px; }
.exp-logo { width: 38px; height: 38px; border-radius: 12px; background: rgb(255 255 255 / .16); display: grid; place-items: center; font-size: 0; }
.exp-logo svg { width: 24px; height: 24px; }
.exp-marca b { font-size: 1.2rem; }
.exp-busca-chica { flex: 1 1 260px; max-width: 520px; }
.exp-busca-chica input { width: 100%; padding: 10px 16px; font-size: 1rem; }
.exp-busca-chica button { background: #fff; color: var(--tinta); display: grid; place-items: center; padding: 0 14px; }
.exp-cambiar-bib, .exp-entrar { color: #fff; text-decoration: none; font-weight: 800; font-size: .9rem; padding: 7px 14px; border-radius: 99px; border: 2px solid rgb(255 255 255 / .55); opacity: 1; }
.exp-entrar { border-color: transparent; opacity: .85; }
.exp-cambiar-bib:hover, .exp-entrar:hover { background: rgb(255 255 255 / .14); }
.exp-main { width: min(1240px, 100%); }
.exp-hero { padding: 26px 0 4px; }
.exp-hero h1 { font-size: clamp(2.1rem, 6vw, 3.4rem); margin-bottom: 18px; }
.exp-busca input { border: 3px solid var(--tinta); font-size: 1.15rem; padding: 16px 22px; }
.exp-busca .boton { min-height: 60px; font-size: 1.1rem; }
.exp-atajos { display: flex; flex-wrap: wrap; justify-content: center; gap: 8px; margin: 14px 0 8px; }
.exp-atajos .exp-chip, .exp-filtros .exp-chip { font-size: .95rem; padding: 9px 16px; background: #f2f4f8; border-color: transparent; color: var(--tinta); font-weight: 800; }
.exp-chip-verde { background: #e3f1e7 !important; color: #1f6b3f !important; }
.exp-bloque { margin-top: 40px; }
.exp-bloque h2, .exp-donde h2 { font: 650 clamp(1.4rem, 3vw, 1.8rem)/1.15 var(--display); margin: 0 0 14px; }
.exp-bloque-cabeza { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; }
.exp-bloque-cabeza a { font-weight: 800; color: var(--tinta); }
.exp-dibujos { display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 12px; }
.exp-dibujos a { display: flex; flex-direction: column; align-items: center; gap: 8px; padding: 18px 10px 16px; border-radius: 22px; background: var(--fondo); color: var(--trazo);
                 text-decoration: none; transition: transform .12s, box-shadow .12s; text-align: center; }
.exp-dibujos a:hover { transform: translateY(-3px); box-shadow: 0 8px 18px rgb(31 42 68 / .12); }
.exp-dibujos svg { width: 54px; height: 54px; }
.exp-dibujos b { color: var(--tinta); font-size: 1.02rem; font-weight: 900; }
.exp-fila { display: flex; overflow-x: auto; gap: 18px; padding: 4px 4px 14px; scroll-snap-type: x proximity; grid-template-columns: none; }
.exp-fila > li { flex: none; width: 152px; scroll-snap-align: start; }
.exp-tapa { border-radius: 6px 12px 12px 6px; }
.exp-tapa em { font-weight: 900; }
.exp-tapa em.no-hay { color: #8a4b06; }
.exp-temas a { min-height: 128px; gap: 4px; }
.exp-temas svg { width: 34px; height: 34px; margin-bottom: auto; opacity: .9; }
.exp-pasa { background: #f2f4f8; border-radius: 26px; padding: 22px; }
.exp-pasa .anuncio { background: #fff; }

.exp-resultados { display: flex; flex-wrap: wrap; gap: 28px; align-items: flex-start; margin-top: 6px; }
.exp-facetas { flex: 1 1 230px; max-width: 280px; position: sticky; top: 12px; }
.exp-facetas summary { font: 650 1.2rem var(--display); cursor: pointer; list-style: none; padding: 4px 0 10px; }
.exp-facetas summary::-webkit-details-marker { display: none; }
.exp-faceta-grupo { border-top: 1px solid #ece6db; padding: 12px 0; display: flex; flex-direction: column; gap: 2px; }
.exp-faceta-grupo h3 { font: 900 .92rem var(--texto); margin: 0 0 6px; }
.exp-faceta { display: flex; align-items: center; gap: 10px; min-height: 36px; padding: 4px 6px; border-radius: 10px; color: var(--tinta); text-decoration: none; font-size: .96rem; }
.exp-faceta:hover { background: #f2f4f8; }
.exp-faceta .caja { width: 20px; height: 20px; flex: none; border-radius: 6px; border: 2px solid var(--c, #9aa1b0); background: #fff; }
.exp-faceta.activo .caja { background: var(--c, var(--tinta)); border-color: var(--c, var(--tinta));
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6L9 17l-5-5'/%3E%3C/svg%3E"); background-size: 14px; background-position: center; background-repeat: no-repeat; }
.exp-faceta.activo .texto { font-weight: 900; }
.exp-faceta .texto { flex: 1; }
.exp-faceta small { color: var(--suave); font-size: .82rem; }
.exp-lista { flex: 999 1 520px; min-width: 0; display: flex; flex-direction: column; gap: 12px; }
.exp-lista-cabeza { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 12px; }
.exp-lista-cabeza h1 { margin: 0; }
.exp-orden select { font: inherit; padding: 8px 12px; border-radius: 10px; border: 1px solid var(--linea); background: #fff; margin-left: 6px; }
.exp-orden label { font-weight: 800; }
.exp-activos { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.exp-activo { display: inline-flex; align-items: center; gap: 8px; padding: 7px 12px 7px 14px; border-radius: 99px; background: var(--tinta); color: #fff; text-decoration: none; font-weight: 800; font-size: .9rem; }
.exp-activo span { background: rgb(255 255 255 / .2); border-radius: 99px; width: 22px; height: 22px; display: grid; place-items: center; }
@media (max-width: 760px) {
    .exp-facetas { position: static; max-width: none; background: #fff; border: 1px solid #ece6db; border-radius: 16px; padding: 4px 14px; }
    .exp-facetas details:not([open]) .exp-faceta-grupo { display: none; }
}

.exp-ficha { grid-template-columns: minmax(170px, 300px) 1fr; }
.exp-ficha-tapa { border-radius: 10px 18px 18px 10px; }
.exp-ficha-datos h1 { font-size: clamp(2rem, 5vw, 3rem); }
.exp-ficha-datos .exp-etiquetas { margin: 10px 0 4px; }
.exp-disponible { flex-direction: row; align-items: center; gap: 14px; border-radius: 20px; }
.exp-disponible svg { width: 40px; height: 40px; flex: none; }
.exp-disponible > div { display: flex; flex-direction: column; gap: 2px; }
.exp-disponible.hay { background: #e3f1e7; border: 0; color: #1f6b3f; }
.exp-disponible.hay b { color: #1f6b3f; font-size: 1.3rem; }
.exp-disponible.no-hay { background: #fff4e0; border: 0; color: #8a4b06; }
.exp-disponible.no-hay b { font-size: 1.3rem; }
.exp-disponible span { color: var(--tinta-2); }
.exp-resumen { border: 1px solid #ece6db; }
.exp-donde { margin-top: 32px; background: #f2f4f8; border-radius: 26px; padding: 24px; display: flex; flex-wrap: wrap; gap: 24px; align-items: center; }
.exp-donde-texto { flex: 1 1 280px; }
.exp-donde .grande { font-size: 1.2rem; }
.exp-plano { flex: 1 1 380px; background: #fff; border-radius: 18px; padding: 14px; display: flex; flex-direction: column; gap: 12px; }
.exp-plano-ambiente small { font-weight: 900; color: var(--suave); text-transform: uppercase; font-size: .72rem; letter-spacing: .08em; }
.exp-plano-estantes { display: grid; grid-template-columns: repeat(auto-fill, minmax(90px, 1fr)); gap: 8px; margin-top: 4px; }
.exp-plano-estantes span { min-height: 54px; border-radius: 10px; display: grid; place-items: center; text-align: center; padding: 4px; font-size: .78rem; font-weight: 800;
    background: color-mix(in srgb, var(--c) 18%, white); color: color-mix(in srgb, var(--c) 70%, black); }
.exp-plano-estantes span.aqui { background: var(--c); color: #fff; font-size: 1rem; outline: 4px solid color-mix(in srgb, var(--c) 35%, white); animation: latido 1.6s ease-in-out infinite; }
@keyframes latido { 50% { transform: scale(1.06); } }
@media (prefers-reduced-motion: reduce) { .exp-plano-estantes span.aqui { animation: none; } }
.tabla-estantes input, .tabla-estantes select { font: inherit; padding: 6px 8px; border-radius: 8px; border: 1px solid var(--linea); background: #fff; max-width: 100%; }
.tabla-estantes input[type=color] { width: 44px; height: 36px; padding: 2px; }
.estante-reglas { display: flex; flex-direction: column; gap: 4px; min-width: 180px; }
.acciones-fila { display: flex; gap: 4px; }
.acciones-fila form { margin: 0; }

/* ===================== Personal 2.2: más limpio, por tareas ===================== */
:root { --papel: #f7f5f1; --papel-2: #efebe4; --linea: #e3ded5; --sombra: 0 1px 2px rgb(31 42 68 / .05); }
body { background: var(--papel); background-image: none; }
.tarjeta, .cifras-grandes > div { background: #fff; }
.lateral { gap: 20px; }
.nav-item.activo { background: #fff; }
.nav-item em.contador { font-size: .74rem; padding: 1px 8px; }
.nav-mas { margin-top: 14px; padding-top: 12px; border-top: 1px solid rgb(255 255 255 / .12); display: flex; flex-direction: column; gap: 2px; }
.nav-mas a { color: rgb(246 239 226 / .72); text-decoration: none; font-size: .9rem; font-weight: 700; padding: 6px 12px; border-radius: 10px; }
.nav-mas a:hover, .nav-mas a.activo { background: rgb(255 255 255 / .08); color: #fff; }
.subnav { display: flex; gap: 2px; overflow-x: auto; margin: -8px 0 24px; border-bottom: 2px solid var(--linea); scrollbar-width: thin; }
.subnav a { flex: none; padding: 10px 14px; font-weight: 700; color: var(--suave); text-decoration: none; border-bottom: 3px solid transparent; margin-bottom: -2px; white-space: nowrap; }
.subnav a:hover { color: var(--tinta); }
.subnav a.activo { color: var(--tinta); border-bottom-color: var(--tinta); font-weight: 900; }

.inicio-cabeza { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 14px; margin-bottom: 20px; }
.inicio-fecha { font-weight: 800; color: var(--suave); font-size: .92rem; }
.inicio-cabeza h1 { margin-top: 2px; }
.inicio-botones { display: flex; flex-wrap: wrap; gap: 8px; }
.escanea-todo { background: var(--tinta); color: #fff; border-radius: 22px; padding: 22px 24px; display: flex; flex-direction: column; gap: 10px; margin-bottom: 26px; }
.escanea-todo label { font: 650 1.35rem var(--display); }
.escanea-todo > div { display: flex; flex-wrap: wrap; gap: 10px; }
.escanea-todo input { flex: 1 1 320px; min-width: 0; font: inherit; font-size: 1.1rem; padding: 14px 18px; border-radius: 14px; border: 0; outline: 3px solid var(--mostaza); }
.escanea-todo input:focus { outline-color: #fff; }
.escanea-todo .boton { min-height: 52px; padding: 0 22px; background: var(--mostaza); color: var(--tinta); }
.escanea-todo .boton.secundario { background: rgb(255 255 255 / .12); color: #fff; border: 0; }
.escanea-todo p { color: #c9d0df; font-size: .9rem; }
.inicio-h2 { font: 900 1.05rem var(--texto); margin: 0 0 10px; }
.tareas-hoy { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(200px, 44%), 1fr)); gap: 14px; margin-bottom: 24px; }
.tarea { background: #fff; border: 1px solid var(--linea); border-radius: 18px; padding: 16px 18px; display: flex; flex-direction: column; gap: 4px; text-decoration: none; color: var(--tinta); transition: transform .1s, box-shadow .1s; }
.tarea:hover { transform: translateY(-2px); box-shadow: 0 6px 16px rgb(31 42 68 / .08); }
.tarea strong { font: 650 2.3rem/1 var(--display); }
.tarea span { font-weight: 800; }
.tarea small { color: var(--suave); }
.tarea.tono-rojo strong { color: #b42318; }
.tarea.tono-verde strong { color: #2e7d4f; }
.tarea.tono-naranja strong { color: #b5520a; }
.tarea.cero strong { color: #b9bfcb; }
.inicio-dos { display: grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); gap: 18px; margin-bottom: 18px; }
.inicio-dos .tarjeta { margin-bottom: 0; }
.inicio-bloque { display: flex; flex-direction: column; gap: 10px; }
.inicio-bloque .titulo-con-accion a { font-weight: 800; font-size: .92rem; }
.titulo-con-accion { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; }
.agenda-mini { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 10px; }
.agenda-mini li { display: flex; gap: 12px; align-items: center; }
.agenda-mini .dia { width: 52px; flex: none; text-align: center; border-radius: 12px; padding: 4px 0; background: color-mix(in srgb, var(--c) 12%, white); }
.agenda-mini .dia small { display: block; font-size: .72rem; font-weight: 900; text-transform: uppercase; color: color-mix(in srgb, var(--c) 75%, black); }
.agenda-mini .dia b { font: 650 1.35rem var(--display); }
.agenda-mini li > span:last-child { display: flex; flex-direction: column; }
.anuncio-mini { background: #f2f4f8; border-radius: 14px; padding: 12px 14px; display: flex; flex-direction: column; }
.anuncio-mini.fijado { background: #fff7e0; }
.fila-revisar { display: flex; justify-content: space-between; gap: 12px; padding: 12px 14px; border-radius: 12px; background: #f2f4f8; text-decoration: none; color: var(--tinta); font-weight: 700; }
.fila-revisar:hover { background: #e8ecf3; }
.fila-proyecto { display: flex; align-items: center; gap: 12px; text-decoration: none; color: var(--tinta); padding: 4px 0; }
.fila-proyecto > span:nth-child(2) { flex: 1; display: flex; flex-direction: column; }
.fila-proyecto .mini { width: 48px; height: 48px; border-radius: 12px; flex: none; overflow: hidden; background: color-mix(in srgb, var(--c) 30%, white); }
.fila-proyecto .mini img { width: 100%; height: 100%; object-fit: cover; }
.coleccion-necesita { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 14px; }
.coleccion-necesita p { margin-top: 4px; color: var(--tinta-2); }
.coleccion-necesita a:not(.boton) { font-weight: 800; }
.bib-tarjetas { display: grid; grid-template-columns: repeat(auto-fit, minmax(340px, 1fr)); gap: 18px; margin-bottom: 18px; }
.bib-tarjeta { background: #fff; border: 1px solid var(--linea); border-radius: 20px; overflow: hidden; }
.bib-tarjeta header { background: color-mix(in srgb, var(--c) 88%, black); color: #fff; padding: 14px 18px; display: flex; justify-content: space-between; align-items: center; gap: 10px; }
.bib-tarjeta header h2 { font-size: 1.35rem; }
.bib-tarjeta header small { opacity: .9; }
.bib-tarjeta header form { margin: 0; }
.bib-tarjeta header button { font: inherit; font-weight: 800; background: rgb(255 255 255 / .18); color: #fff; border: 0; border-radius: 10px; padding: 8px 14px; cursor: pointer; }
.bib-cifras { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); border-bottom: 1px solid var(--linea); }
.bib-cifras > div { padding: 14px 18px; display: flex; flex-direction: column; }
.bib-cifras strong { font: 650 1.8rem/1.1 var(--display); }
.bib-cifras span { color: var(--suave); font-size: .88rem; }
.bib-cifras .alerta strong { color: #b42318; }
.bib-lectura { padding: 14px 18px 16px; display: flex; flex-direction: column; gap: 8px; }
.barras { display: flex; align-items: flex-end; gap: 8px; height: 70px; }
.barras span { flex: 1; background: color-mix(in srgb, var(--c) 45%, white); border-radius: 6px 6px 0 0; position: relative; }
.barras span:last-child { background: var(--c); }
.barras em { position: absolute; top: -18px; left: 0; right: 0; text-align: center; font-style: normal; font-size: .75rem; font-weight: 800; color: var(--suave); }
.hub { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 14px; }
.hub-tarjeta { background: #fff; border: 1px solid var(--linea); border-radius: 18px; padding: 18px; display: flex; gap: 14px; align-items: flex-start; text-decoration: none; color: var(--tinta); position: relative; transition: transform .1s, box-shadow .1s; }
.hub-tarjeta:hover { transform: translateY(-2px); box-shadow: 0 6px 16px rgb(31 42 68 / .08); }
.hub-icono { width: 46px; height: 46px; flex: none; border-radius: 14px; background: #f2f4f8; display: grid; place-items: center; }
.hub-icono svg { width: 24px; height: 24px; fill: none; stroke: var(--tinta); stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.hub-texto { display: flex; flex-direction: column; gap: 2px; }
.hub-texto small { color: var(--suave); }
.hub-tarjeta em { position: absolute; top: 12px; right: 14px; font-style: normal; font-size: .75rem; font-weight: 800; color: #8a4b06; background: #fff4e0; padding: 2px 8px; border-radius: 99px; }
.pestanas-ficha { display: flex; gap: 2px; overflow-x: auto; border-bottom: 2px solid var(--linea); margin: 8px 0 20px; }
.pestanas-ficha a { flex: none; padding: 12px 16px; font-weight: 700; color: var(--suave); text-decoration: none; border-bottom: 3px solid transparent; margin-bottom: -2px; }
.pestanas-ficha a.activo { color: var(--tinta); border-bottom-color: var(--tinta); font-weight: 900; }
.ficha-disponible { display: flex; flex-wrap: wrap; gap: 8px; margin: 10px 0 4px; }
.ficha-disponible .disp { display: inline-flex; align-items: center; gap: 8px; background: #fff; border: 1px solid var(--linea); border-radius: 12px; padding: 6px 12px; font-weight: 700; color: var(--suave); }
.ficha-disponible .disp i { width: 10px; height: 10px; border-radius: 99px; background: #b9bfcb; }
.ficha-disponible .disp.hay { color: var(--tinta); }
.ficha-disponible .disp.hay i { background: #2e7d4f; }
.ficha-acciones { display: flex; flex-wrap: wrap; gap: 8px; margin: 10px 0 6px; }
.hub-tarjeta em { position: static; align-self: flex-start; margin-left: auto; white-space: nowrap; }
.tarjeta.portadas-foto-cta { background: var(--tinta); color: #fff; }

/* 2.2.1 · Préstamo en bloque */
.prestar-todos { display: flex; flex-wrap: wrap; gap: .75rem; align-items: center; justify-content: space-between; padding: .85rem 1rem; border: 1px dashed var(--borde, #d6d8e0); border-radius: 12px; background: var(--fondo-suave, #f7f8fb); }
.prestar-todos > div { flex: 1 1 260px; }
.formulario-aula { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: .75rem; align-items: end; }
.formulario-aula input[name=cantidad] { max-width: 8rem; }

/* 2.2.2 · Colecciones y temáticas */
.cat-cabeza { display: flex; flex-wrap: wrap; gap: 12px; align-items: flex-start; justify-content: space-between; }
.cat-cabeza > div { flex: 1 1 320px; }
.cat-lista { list-style: none; margin: 0; padding: 0; }
.cat-fila { border-top: 1px solid var(--linea); padding: 12px 0; }
.cat-fila.inactiva .cat-principal { opacity: .6; }
.cat-fila.resaltada { background: rgb(217 164 65 / .08); border-radius: 10px; }
.cat-principal { display: grid; grid-template-columns: auto 1fr auto auto; gap: 14px; align-items: center; }
.cat-color { width: 14px; height: 14px; border-radius: 50%; background: var(--c); display: inline-block; flex: none; box-shadow: 0 0 0 3px color-mix(in srgb, var(--c) 18%, transparent); }
.cat-color.grande { width: 20px; height: 20px; vertical-align: .1em; }
.cat-texto { display: flex; flex-direction: column; min-width: 0; }
.cat-texto > a { text-decoration: none; }
.cat-texto > a:hover b { text-decoration: underline; }
.cat-texto small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cat-marcas { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 2px; }
.cat-marcas:empty { display: none; }
.cat-cuantos { text-align: right; text-decoration: none; line-height: 1.1; min-width: 70px; }
.cat-cuantos b { font-size: 1.15rem; display: block; }
.cat-cuantos small { color: var(--suave); }
.cat-cuantos:hover b { text-decoration: underline; }
.cat-botones { display: flex; gap: 6px; flex-wrap: wrap; justify-content: flex-end; }
.boton.peligro { color: var(--coral-2); }
.boton.peligro:not(.fantasma):not(.chico) { background: var(--coral-2); color: #fff; }
.cat-panel { margin: 12px 0 4px 28px; padding: 14px 16px; border: 1px solid var(--linea); border-radius: 12px; background: var(--papel); }
.cat-eliminar { border-color: rgb(232 103 74 / .35); background: rgb(232 103 74 / .04); }
.cat-eliminar select { margin: 0 6px; max-width: 260px; }
.cat-parecidas { list-style: none; margin: 0; padding: 0; }
.cat-parecidas li { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; justify-content: space-between; padding: 8px 0; border-top: 1px solid var(--linea); }
.cat-libros { list-style: none; margin: 0; padding: 0; }
.cat-libros li { display: flex; gap: 10px; align-items: center; justify-content: space-between; padding: 8px 0; border-top: 1px solid var(--linea); }
.cat-libro { display: flex; flex-direction: column; text-decoration: none; min-width: 0; }
.cat-libro:hover b { text-decoration: underline; }
.cat-detalle { align-items: start; }
@media (max-width: 760px) {
    .cat-principal { grid-template-columns: auto 1fr auto; }
    .cat-botones { grid-column: 1 / -1; justify-content: flex-start; padding-left: 28px; }
    .cat-panel { margin-left: 0; }
}

/* 2.3 · Fuentes de portadas */
.portadas-fuentes { border-top: 1px solid var(--linea); padding-top: 14px; }
.portadas-fuentes h3 { font-size: 1rem; margin-bottom: 8px; }
.portadas-fuentes ul { list-style: none; margin: 0 0 10px; padding: 0; display: grid; gap: 6px; }
.portadas-fuentes li { display: grid; grid-template-columns: auto 1fr auto; gap: 10px; align-items: center; }
.portadas-fuentes li small { display: block; }
.portadas-fuentes em { font-style: normal; font-weight: 800; white-space: nowrap; }
.fuente-punto { width: 10px; height: 10px; border-radius: 50%; background: var(--musgo); }
.fuente-pausa .fuente-punto { background: var(--mostaza); }
.fuente-apagada .fuente-punto { background: var(--linea); }
.fuente-apagada b { color: var(--suave); }

/* 3.0 · Marca del colegio */
.marca-logo { width: 40px; height: 40px; object-fit: contain; border-radius: 10px; background: #fff; padding: 3px; flex: none; }
.marca-pie { font-size: .72rem; color: rgb(246 239 226 / .45); text-decoration: none; letter-spacing: .04em; }
.marca-pie:hover { color: rgb(246 239 226 / .8); }
.identidad-logo { display: flex; gap: 14px; align-items: center; }
.identidad-logo img { width: 64px; height: 64px; object-fit: contain; border: 1px solid var(--linea); border-radius: 12px; background: #fff; padding: 4px; }
