/* Manual de uso.

   Tres sitios lo pintan con la misma cara: el panel del botón «?», la guía
   completa y la hoja impresa. Por eso el grueso del estilo cuelga de .ep-manual
   y no de la página, y las superficies van con las variables de tema para que el
   modo oscuro salga solo. */

/* --- Contenido (común al panel y a la guía) --- */
.ep-manual { color: var(--ep-text); line-height: 1.6; }
.ep-manual-resumen {
    font-size: 1rem;
    color: var(--ep-text-muted);
    border-left: 3px solid var(--ep-primary);
    padding-left: 0.85rem;
    margin: 0 0 1.1rem;
}
.ep-manual-h2 { font-size: 1.5rem; font-weight: 700; color: var(--ep-primary-dark); margin: 0 0 0.35rem; }
.ep-manual-h3 {
    font-size: 1.08rem;
    font-weight: 700;
    color: var(--ep-primary);
    margin: 1.6rem 0 0.6rem;
    padding-bottom: 0.3rem;
    border-bottom: 1px solid var(--ep-border);
}
.ep-manual-p { margin: 0 0 0.85rem; }

.ep-manual-lista { margin: 0 0 1rem; padding-left: 1.35rem; }
.ep-manual-lista li { margin-bottom: 0.45rem; }

/* Los pasos van numerados en círculo: en un manual "para tontos" el orden es la
   mitad de la información. */
.ep-manual-pasos { counter-reset: paso; list-style: none; margin: 0 0 1rem; padding-left: 0; }
.ep-manual-pasos > li { position: relative; padding-left: 2.1rem; margin-bottom: 0.7rem; }
.ep-manual-pasos > li::before {
    counter-increment: paso;
    content: counter(paso);
    position: absolute;
    left: 0;
    top: 0.05rem;
    width: 1.5rem;
    height: 1.5rem;
    border-radius: 50%;
    background: var(--ep-primary-soft);
    color: var(--ep-primary);
    font-size: 0.82rem;
    font-weight: 700;
    display: flex;
    align-items: center;
    justify-content: center;
}

.ep-manual-campos { margin: 0 0 1rem; }
.ep-manual-campos dt { font-weight: 700; color: var(--ep-primary-dark); margin-top: 0.7rem; }
.ep-manual-campos dd { margin: 0.15rem 0 0 0; padding-left: 0.9rem; border-left: 2px solid var(--ep-border); }

/* Avisos. Los tres niveles se distinguen por color Y por rótulo: solo por color
   no serviría para quien no distingue el rojo del amarillo. */
.ep-manual-aviso {
    display: flex;
    gap: 0.7rem;
    padding: 0.75rem 0.9rem;
    border-radius: 0.55rem;
    border-left: 4px solid;
    margin: 0 0 1rem;
    font-size: 0.95rem;
}
.ep-manual-aviso i { font-size: 1.05rem; line-height: 1.5; }
.ep-manual-aviso-rotulo {
    display: block;
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    margin-bottom: 0.15rem;
}
.ep-manual-aviso.is-importante { background: #fdf2f2; border-color: #b42318; color: #7a1d15; }
.ep-manual-aviso.is-atencion   { background: #fff9e6; border-color: #ad8200; color: #6b5200; }
.ep-manual-aviso.is-truco      { background: var(--ep-primary-soft); border-color: var(--ep-primary); color: #14456f; }

/* Las capturas se pulsan para verlas grandes: dentro del panel salen a 400 px
   de ancho y ahí no se lee ni un rótulo.
   Van centradas y ajustadas al ancho real de la imagen: si la figura ocupara
   todo el ancho, la lupa se quedaría flotando lejos de la foto. */
.ep-manual-captura {
    position: relative;
    width: fit-content;
    max-width: 100%;
    margin: 0 auto 1.2rem;
}
.ep-manual-captura img {
    max-width: 100%;
    border: 1px solid var(--ep-border);
    border-radius: 0.5rem;
    display: block;
    cursor: zoom-in;
    transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.ep-manual-captura img:hover {
    border-color: var(--ep-primary);
    box-shadow: 0 0 0 3px var(--ep-primary-soft);
}
/* La lupa solo aparece al pasar por encima. Fija estorbaba: tapa la esquina
   superior derecha de la captura, que es justo donde esta aplicación pone
   botones, y se colaba en todas las imágenes del manual a la vez. Quien usa
   ratón la ve cuando le hace falta; el cursor de aumento dice lo mismo. */
.ep-manual-captura::after {
    content: '\F52A';                 /* bi-zoom-in */
    font-family: 'bootstrap-icons';
    position: absolute;
    top: 0.5rem;
    right: 0.5rem;
    width: 1.9rem;
    height: 1.9rem;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 0.4rem;
    background: rgba(15, 39, 68, 0.72);
    color: #fff;
    font-size: 0.9rem;
    pointer-events: none;
    opacity: 0;
    transition: opacity 0.15s ease;
}
.ep-manual-captura:hover::after { opacity: 1; }

/* Y nunca al imprimir: en papel no se puede pulsar nada. */
@media print {
    .ep-manual-captura::after { display: none; }
}

/* La capa de la imagen ampliada. */
.ep-manual-lupa {
    position: fixed;
    inset: 0;
    z-index: 2000;
    display: none;
    align-items: center;
    justify-content: center;
    flex-direction: column;
    gap: 0.8rem;
    padding: 2rem;
    background: rgba(8, 15, 26, 0.88);
    cursor: zoom-out;
}
.ep-manual-lupa.is-open { display: flex; }
.ep-manual-lupa { overflow: auto; }

.ep-manual-lupa img {
    max-width: 98vw;
    max-height: 88vh;
    border-radius: 0.5rem;
    box-shadow: 0 10px 40px rgba(0, 0, 0, 0.5);
    cursor: zoom-out;
}

.ep-manual-lupa-ayuda {
    color: #94a3b8;
    font-size: 0.8rem;
    margin: 0;
    text-align: center;
}
.ep-manual-lupa-pie {
    color: #e2e8f0;
    font-size: 0.9rem;
    text-align: center;
    margin: 0;
    max-width: 70ch;
}
.ep-manual-lupa-cerrar {
    position: absolute;
    top: 1rem;
    right: 1rem;
    width: 2.6rem;
    height: 2.6rem;
    border-radius: 50%;
    border: none;
    background: rgba(255, 255, 255, 0.14);
    color: #fff;
    font-size: 1.1rem;
    cursor: pointer;
}
.ep-manual-lupa-cerrar:hover { background: rgba(255, 255, 255, 0.26); }
body.ep-manual-lupa-abierta { overflow: hidden; }
.ep-manual-captura figcaption { font-size: 0.85rem; color: var(--ep-text-muted); text-align: center; margin-top: 0.4rem; }

/* Cada tema enseña su captura. Solo aparecen estas clases cuando existen las
   dos versiones del fichero; con una sola, la imagen va sin clase y se ve
   siempre. */
.ep-manual-captura img.ep-captura-oscura { display: none; }
html[data-theme="dark"] .ep-manual-captura img.ep-captura-clara { display: none; }
html[data-theme="dark"] .ep-manual-captura img.ep-captura-oscura { display: block; }

/* Al imprimir siempre va la clara: el papel es blanco. */
@media print {
    .ep-manual-captura img.ep-captura-clara { display: block !important; }
    .ep-manual-captura img.ep-captura-oscura { display: none !important; }
}

/* Hueco de captura todavía sin hacer: se marca en lugar de callarlo, para que se
   vea qué falta y el texto no quede cojo sin avisar. */
.ep-manual-captura-falta {
    display: flex;
    gap: 0.7rem;
    align-items: center;
    padding: 1.1rem 1rem;
    border: 2px dashed var(--ep-border);
    border-radius: 0.55rem;
    background: var(--ep-surface-3);
    color: var(--ep-text-muted);
    font-size: 0.9rem;
    margin: 0 0 1.2rem;
}
.ep-manual-captura-falta i { font-size: 1.6rem; opacity: 0.55; }
.ep-manual-captura-falta-rotulo {
    display: block;
    font-weight: 700;
    font-size: 0.78rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}

/* --- Panel del botón «?» --- */
.ep-manual-panel { width: min(560px, 92vw); }
.ep-manual-panel .offcanvas-header { align-items: flex-start; border-bottom: 1px solid var(--ep-border); }
.ep-manual-panel-kicker {
    display: block;
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--ep-primary);
    margin-bottom: 0.15rem;
}
.ep-manual-panel .offcanvas-body { font-size: 0.95rem; }

/* Asa para ensanchar el panel.
   Se ve siempre, no solo al pasar por encima: una zona que solo se descubre
   tanteando con el ratón es, para casi todo el mundo, una zona que no existe. */
.ep-manual-resizer {
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    width: 12px;
    z-index: 5;
    cursor: col-resize;
    background: var(--ep-surface-3);
    border-right: 1px solid var(--ep-border);
    touch-action: none;
    user-select: none;
}
.ep-manual-resizer:hover,
.ep-manual-resizer:focus-visible,
.ep-manual-resizer.is-dragging {
    background: var(--ep-primary-soft);
    outline: none;
}

/* Las rayitas del centro, iguales que las del panel partido de Administración. */
.ep-manual-resizer::before {
    content: '';
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 4px;
    height: 34px;
    border-radius: 4px;
    background: repeating-linear-gradient(
        to bottom,
        #94a3b8 0,
        #94a3b8 2px,
        transparent 2px,
        transparent 5px
    );
}
.ep-manual-resizer:hover::before,
.ep-manual-resizer:focus-visible::before,
.ep-manual-resizer.is-dragging::before {
    background: repeating-linear-gradient(
        to bottom,
        var(--ep-primary) 0,
        var(--ep-primary) 2px,
        transparent 2px,
        transparent 5px
    );
}

/* El contenido no debe meterse debajo del asa. */
.ep-manual-panel .offcanvas-header,
.ep-manual-panel .offcanvas-body,
.ep-manual-panel .ep-manual-panel-pie { padding-left: 1.35rem; }

/* Mientras se arrastra, el cursor no cambia por pasar sobre el texto. */
body.ep-manual-dragging,
body.ep-manual-dragging * {
    cursor: col-resize !important;
    user-select: none !important;
}

html[data-theme="dark"] .ep-manual-resizer { background: var(--ep-surface-3); }
.ep-manual-panel-pie { padding: 0.85rem 1rem; border-top: 1px solid var(--ep-border); background: var(--ep-surface-3); }
.ep-manual-vacio { text-align: center; color: var(--ep-text-muted); padding: 2.5rem 1rem; }
.ep-manual-vacio i { font-size: 2.2rem; opacity: 0.4; display: block; margin-bottom: 0.6rem; }

/* --- Guía completa --- */
.ep-manual-guia-head {
    display: flex;
    gap: 1rem;
    align-items: flex-start;
    justify-content: space-between;
    flex-wrap: wrap;
    margin-bottom: 1.2rem;
}
.ep-manual-guia-titulo { font-size: 1.8rem; font-weight: 700; color: var(--ep-primary-dark); margin: 0 0 0.3rem; }
.ep-manual-pendientes {
    display: flex;
    gap: 0.6rem;
    align-items: center;
    background: var(--ep-surface-4);
    border: 1px solid var(--ep-border);
    border-radius: 0.55rem;
    padding: 0.6rem 0.9rem;
    font-size: 0.9rem;
    color: var(--ep-text-muted);
    margin-bottom: 1.2rem;
}

.ep-manual-guia-cuerpo { display: grid; grid-template-columns: 250px minmax(0, 1fr); gap: 2rem; align-items: start; }
@media (max-width: 900px) { .ep-manual-guia-cuerpo { grid-template-columns: 1fr; } }

.ep-manual-indice {
    position: sticky;
    top: calc(var(--ep-header-h) + 1rem);
    max-height: calc(100vh - var(--ep-header-h) - 2rem);
    overflow-y: auto;
    background: var(--ep-surface);
    border: 1px solid var(--ep-border);
    border-radius: var(--ep-radius);
    padding: 0.9rem;
}
.ep-manual-buscador { position: relative; display: block; margin-bottom: 0.8rem; }
.ep-manual-buscador i {
    position: absolute;
    left: 0.6rem;
    top: 50%;
    transform: translateY(-50%);
    color: var(--ep-text-muted);
    font-size: 0.85rem;
}
.ep-manual-buscador input { padding-left: 1.9rem; }
/* El nombre del grupo abre su página: es un botón, y tiene que parecerlo. */
.ep-manual-indice-grupo {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
    width: 100%;
    text-align: left;
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--ep-text-muted);
    background: none;
    border: none;
    border-radius: 0.35rem;
    padding: 0.4rem 0.5rem;
    margin: 0.6rem 0 0.2rem;
    cursor: pointer;
}
.ep-manual-indice-grupo:hover { background: var(--ep-surface-4); color: var(--ep-text); }
.ep-manual-indice-grupo.is-active { background: var(--ep-primary); color: #fff; }
.ep-manual-indice-num {
    flex: 0 0 auto;
    min-width: 1.3rem;
    height: 1.3rem;
    border-radius: 0.3rem;
    background: var(--ep-surface-4);
    color: var(--ep-text-muted);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 0.7rem;
}
.ep-manual-indice-grupo.is-active .ep-manual-indice-num {
    background: rgba(255, 255, 255, 0.22);
    color: #fff;
}
.ep-manual-indice ul { list-style: none; margin: 0; padding: 0; }
.ep-manual-indice li a {
    display: block;
    padding: 0.28rem 0.5rem;
    border-radius: 0.35rem;
    color: var(--ep-text);
    text-decoration: none;
    font-size: 0.9rem;
}
.ep-manual-indice li a:hover { background: var(--ep-primary-soft); color: var(--ep-primary); }

.ep-manual-contenido {
    background: var(--ep-surface);
    border: 1px solid var(--ep-border);
    border-radius: var(--ep-radius);
    padding: 1.6rem 1.9rem;
}
.ep-manual-cap {
    padding-bottom: 1.6rem;
    margin-bottom: 1.6rem;
    border-bottom: 1px solid var(--ep-border);
    scroll-margin-top: calc(var(--ep-header-h) + 1rem);
}
.ep-manual-cap:last-of-type { border-bottom: none; margin-bottom: 0; }
.ep-manual-cap-grupo {
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--ep-text-muted);
    margin: 0 0 0.2rem;
}
.ep-manual-sinresultados { color: var(--ep-text-muted); text-align: center; padding: 2rem 0; }

/* --- Paginador --- */
.ep-manual-paginador {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 1.2rem;
    padding: 0.7rem 0;
}
.ep-manual-paginador--arriba { border-bottom: 1px solid var(--ep-border); margin-bottom: 1.4rem; }
.ep-manual-paginador--abajo { border-top: 1px solid var(--ep-border); margin-top: 1.4rem; }

.ep-manual-pag-flecha {
    flex: 0 0 auto;
    width: 2.4rem;
    height: 2.4rem;
    border-radius: 50%;
    border: 1px solid var(--ep-border);
    background: var(--ep-surface);
    color: var(--ep-primary);
    font-size: 1rem;
    cursor: pointer;
}
.ep-manual-pag-flecha:hover:not(:disabled) { background: var(--ep-primary); color: #fff; border-color: var(--ep-primary); }
.ep-manual-pag-flecha:disabled { opacity: 0.3; cursor: default; }

.ep-manual-pag-centro { text-align: center; line-height: 1.35; }
.ep-manual-pag-nombre { display: block; font-weight: 700; color: var(--ep-primary-dark); }
.ep-manual-pag-cuenta { display: block; font-size: 0.82rem; color: var(--ep-text-muted); }

/* Los puntos: se ve de un vistazo cuántas páginas hay y por cuál se va. */
.ep-manual-pag-puntos { display: flex; justify-content: center; gap: 0.35rem; margin-top: 0.4rem; }
.ep-manual-pag-punto {
    width: 0.55rem;
    height: 0.55rem;
    padding: 0;
    border: none;
    border-radius: 50%;
    background: var(--ep-border);
    cursor: pointer;
}
.ep-manual-pag-punto:hover { background: var(--ep-text-muted); }
.ep-manual-pag-punto.is-active { background: var(--ep-primary); transform: scale(1.25); }

html[data-theme="dark"] .ep-manual-pag-nombre { color: #dbe7f3; }

/* Mientras se busca no hay páginas: se enseña todo lo que encaje. */
body.ep-manual-buscando .ep-manual-paginador { display: none; }

/* --- Tema oscuro --- */

/* El panel es un offcanvas de Bootstrap, y este es el primero que se usa en toda
   la aplicación: nadie le había puesto tema oscuro, así que salía blanco encima
   de una pantalla oscura. Bootstrap lo resuelve con sus propias variables, que
   es lo que se toca aquí; el resto del CSS ya usa las variables del tema. */
html[data-theme="dark"] .ep-manual-panel {
    --bs-offcanvas-bg: var(--ep-surface);
    --bs-offcanvas-color: var(--ep-text);
    --bs-offcanvas-border-color: var(--ep-border);
    background-color: var(--ep-surface);
    color: var(--ep-text);
}
html[data-theme="dark"] .ep-manual-panel .offcanvas-header,
html[data-theme="dark"] .ep-manual-panel .ep-manual-panel-pie {
    border-color: var(--ep-border);
}
html[data-theme="dark"] .ep-manual-panel .offcanvas-title { color: var(--ep-text); }
html[data-theme="dark"] .ep-manual-panel .btn-close {
    filter: invert(1) grayscale(100%) brightness(1.6);
}

/* --- Lo que lleva color fijo --- */
html[data-theme="dark"] .ep-manual-aviso.is-importante { background: #3a1a17; color: #ffb4ab; }
html[data-theme="dark"] .ep-manual-aviso.is-atencion   { background: #3a3117; color: #ffd54a; }
html[data-theme="dark"] .ep-manual-aviso.is-truco      { background: #16304a; color: #9dc7f0; }
html[data-theme="dark"] .ep-manual-h2,
html[data-theme="dark"] .ep-manual-guia-titulo,
html[data-theme="dark"] .ep-manual-campos dt { color: #dbe7f3; }

/* --- Impresión: se van el índice y los adornos, queda el texto --- */
@media print {
    .ep-header,
    .ep-manual-indice,
    .ep-manual-guia-head .btn,
    .ep-manual-paginador,
    .ep-manual-pendientes { display: none !important; }

    /* En papel no hay páginas que pasar: se imprime el manual entero. */
    .ep-manual-pagina[hidden] { display: block !important; }
    .ep-manual-guia-cuerpo { grid-template-columns: 1fr; }
    .ep-manual-contenido { border: none; padding: 0; }
    .ep-manual-cap { break-inside: avoid-page; page-break-inside: avoid; }
    .ep-manual-h2 { break-after: avoid-page; }
}

/* Aviso de datos inventados.
   Los nombres de las capturas se generan al azar y algunos coinciden con
   personas que existen, asi que hay que decirlo donde se ven: la etiqueta
   acompana a cada captura y la frase entera va en la cabecera de la guia. */
.ep-manual-captura-ficticio {
    display: inline-block;
    margin-left: 0.35rem;
    padding: 0.02rem 0.45rem;
    border: 1px solid var(--ep-border);
    border-radius: 999px;
    font-size: 0.72rem;
    line-height: 1.5;
    color: var(--ep-text-muted);
    white-space: nowrap;
    vertical-align: middle;
}

.ep-manual-guia-ficticio {
    margin-top: 0.5rem;
    font-size: 0.82rem;
    color: var(--ep-text-muted);
}
