/*
 * TEMA DE MARCA. Mismos tonos que jirafasistemas.com (verde de marca y azul del logo), en un registro más
 * actual: menú en verde bosque, lienzo gris-menta muy claro, superficies blancas redondeadas y líneas finas.
 * El verde de la web (#6EBA01) sólo se usa donde tiene contraste: sobre el verde bosque o como acento
 * (barras, foco); sobre blanco se usan sus versiones oscuras. Todos los pares de texto >= 4.5:1.
 * Tipografía: Schibsted Grotesk (interfaz y títulos) + Geist Mono (números de serie e identificadores).
 * Lo cargan _Layout, _LayoutPublico y Login, después de Bootstrap y site.css.
 */
:root {
    --jf-bosque: #0F2E1D;          /* menú lateral y cabeceras oscuras */
    --jf-green: #6EBA01;           /* verde de la web: acentos; texto sólo sobre el bosque (6.1:1) */
    --jf-green-strong: #3F7A00;    /* botones con texto blanco (5.3:1) */
    --jf-green-stronger: #336300;  /* hover de botones */
    --jf-green-darkest: #2A5200;   /* botón pulsado */
    --jf-green-text: #3A7000;      /* texto verde sobre blanco (6.0:1) o sobre brote (5.4:1) */
    --jf-green-soft: #EDF6E1;      /* brote: fondos suaves, fila al pasar el ratón */
    --jf-blue: #136C9E;            /* azul del logo, oscurecido: datos e identificadores */
    --jf-blue-soft: #EAF4FA;
    --jf-blue-line: #C8E0EE;
    --jf-ink: #15201A;             /* títulos */
    --jf-text: #34413A;            /* texto */
    --jf-muted: #66736B;           /* texto secundario (4.6:1 sobre el lienzo) */
    --jf-border: #E2E7E1;          /* líneas */
    --jf-bg: #F5F7F4;              /* lienzo */
    --jf-surface-tint: #F8FAF7;    /* cabeceras de tabla, zonas secundarias */
    --jf-dark: #0F2E1D;            /* compatibilidad: antes cabeceras de tabla y pie público */
    --jf-radius: 14px;
    --jf-radius-sm: 10px;
    --jf-font-heading: 'Schibsted Grotesk', system-ui, sans-serif;
    --jf-font-body: 'Schibsted Grotesk', system-ui, sans-serif;
    --jf-font-mono: 'Geist Mono', ui-monospace, 'SFMono-Regular', Consolas, monospace;

    /* Bootstrap 5.3 */
    --bs-primary: #3F7A00;
    --bs-primary-rgb: 63, 122, 0;
    --bs-link-color: #3A7000;
    --bs-link-color-rgb: 58, 112, 0;
    --bs-link-hover-color: #2A5200;
    --bs-link-hover-color-rgb: 42, 82, 0;
    --bs-body-font-family: var(--jf-font-body);
    --bs-body-color: #34413A;
    --bs-secondary-color: #66736B;
    --bs-border-color: #E2E7E1;
    --bs-border-radius: 10px;
    --bs-focus-ring-color: rgba(110, 186, 1, .28);
}

/* ── Tipografía ───────────────────────────── */
html, body {
    font-family: var(--jf-font-body);
    font-size: 14.5px;
    color: var(--jf-text);
    background-color: var(--jf-bg);
    font-variant-numeric: lining-nums;
    -webkit-font-smoothing: antialiased;
}

table, input, select, textarea, .badge {
    font-variant-numeric: lining-nums tabular-nums;
}

h1, h2, h3, h4, h5, h6,
.h1, .h2, .h3, .h4, .h5, .h6 {
    font-family: var(--jf-font-heading);
    color: var(--jf-ink);
    letter-spacing: -0.015em;
}

h1, .h1, h2, .h2, h3, .h3 {
    font-weight: 800;
}

h4, h5, h6, .h4, .h5, .h6 {
    font-weight: 700;
}

/* Títulos de página (todas las vistas usan <h1 class="h3">) */
h1.h3 {
    font-size: 1.65rem;
    letter-spacing: -0.025em;
}

dt {
    font-weight: 600;
    color: var(--jf-muted);
}

dd {
    color: var(--jf-ink);
}

/* ── Placas de identificación: números de serie e identificadores ──
   Como la placa metálica de la máquina: el dato que se escanea, se teclea y se compara. */
.tag-serie,
.tag-id {
    display: inline-block;
    font-family: var(--jf-font-mono);
    font-weight: 500;
    font-size: 0.86em;
    line-height: 1.5;
    padding: 0.05em 0.5em;
    border-radius: 6px;
    border: 1px solid var(--jf-blue-line);
    background: var(--jf-blue-soft);
    color: var(--jf-blue);
    letter-spacing: 0.01em;
    white-space: nowrap;
}

.tag-id {
    border-color: var(--jf-border);
    background: var(--jf-surface-tint);
    color: var(--jf-text);
}

h1 .tag-serie,
h1 .tag-id {
    font-size: 0.8em;
    padding: 0.08em 0.45em;
    vertical-align: 0.08em;
}

/* ── Botones ──────────────────────────────── */
.btn {
    font-family: var(--jf-font-heading);
    font-weight: 600;
    border-radius: var(--jf-radius-sm);
    padding: 0.45rem 0.95rem;
    transition: background-color .15s ease, border-color .15s ease, color .15s ease, box-shadow .15s ease;
}

.btn-sm {
    border-radius: 8px;
    padding: 0.25rem 0.6rem;
}

.btn-primary,
.btn-success {
    --bs-btn-bg: var(--jf-green-strong);
    --bs-btn-border-color: var(--jf-green-strong);
    --bs-btn-hover-bg: var(--jf-green-stronger);
    --bs-btn-hover-border-color: var(--jf-green-stronger);
    --bs-btn-active-bg: var(--jf-green-darkest);
    --bs-btn-active-border-color: var(--jf-green-darkest);
    --bs-btn-disabled-bg: var(--jf-green-strong);
    --bs-btn-disabled-border-color: var(--jf-green-strong);
    --bs-btn-focus-shadow-rgb: 110, 186, 1;
}

.btn-outline-primary {
    --bs-btn-color: var(--jf-green-text);
    --bs-btn-border-color: #BFD8A0;
    --bs-btn-bg: #fff;
    --bs-btn-hover-color: var(--jf-green-darkest);
    --bs-btn-hover-bg: var(--jf-green-soft);
    --bs-btn-hover-border-color: var(--jf-green);
    --bs-btn-active-color: #fff;
    --bs-btn-active-bg: var(--jf-green-strong);
    --bs-btn-active-border-color: var(--jf-green-strong);
    --bs-btn-focus-shadow-rgb: 110, 186, 1;
}

.btn-outline-secondary {
    --bs-btn-color: var(--jf-text);
    --bs-btn-bg: #fff;
    --bs-btn-border-color: var(--jf-border);
    --bs-btn-hover-color: var(--jf-ink);
    --bs-btn-hover-bg: var(--jf-bg);
    --bs-btn-hover-border-color: #CBD3CA;
    --bs-btn-active-color: var(--jf-ink);
    --bs-btn-active-bg: var(--jf-border);
    --bs-btn-active-border-color: #CBD3CA;
}

.btn-outline-danger {
    --bs-btn-bg: #fff;
    --bs-btn-border-color: #F0C9C5;
}

/* ── Formularios ──────────────────────────── */
.form-control,
.form-select {
    border-radius: var(--jf-radius-sm);
    border-color: var(--jf-border);
    color: var(--jf-ink);
    padding: 0.5rem 0.8rem;
}

.form-control::placeholder {
    color: #8A958E;
}

.form-control:focus,
.form-select:focus,
.form-check-input:focus {
    border-color: var(--jf-green);
    box-shadow: 0 0 0 4px rgba(110, 186, 1, .2);
}

.form-check-input:checked {
    background-color: var(--jf-green-strong);
    border-color: var(--jf-green-strong);
}

.form-label {
    font-weight: 600;
    font-size: 0.86rem;
    color: var(--jf-text);
    margin-bottom: 0.35rem;
}

.input-group-text {
    border-radius: var(--jf-radius-sm);
    border-color: var(--jf-border);
    background: var(--jf-surface-tint);
    color: var(--jf-muted);
}

/* ── Superficies: tarjetas y bloques "bg-white rounded shadow-sm" de las vistas ── */
.card,
.page-content .bg-white.rounded {
    border: 1px solid var(--jf-border) !important;
    border-radius: var(--jf-radius) !important;
    box-shadow: 0 1px 2px rgba(15, 46, 29, 0.04) !important;
}

/* ── Tablas ───────────────────────────────── */
.table {
    --bs-table-bg: #fff;
    --bs-table-hover-bg: var(--jf-green-soft);
    margin-bottom: 0;
}

/* ── Pestañas (Clientes, Operaciones) ─────── */
.nav-tabs {
    border-bottom: 1px solid var(--jf-border);
    gap: 0.25rem;
}

    .nav-tabs .nav-link {
        font-family: var(--jf-font-heading);
        color: var(--jf-muted);
        font-weight: 600;
        border: none;
        border-radius: 0;
        padding: 0.6rem 0.9rem;
        background: transparent;
    }

        .nav-tabs .nav-link:hover {
            color: var(--jf-ink);
        }

        .nav-tabs .nav-link.active {
            color: var(--jf-ink);
            background: transparent;
            box-shadow: inset 0 -2px 0 var(--jf-green);
        }

/* ── Paginación ───────────────────────────── */
.pagination {
    --bs-pagination-color: var(--jf-text);
    --bs-pagination-bg: #fff;
    --bs-pagination-border-color: var(--jf-border);
    --bs-pagination-hover-color: var(--jf-ink);
    --bs-pagination-hover-bg: var(--jf-green-soft);
    --bs-pagination-hover-border-color: var(--jf-border);
    --bs-pagination-focus-color: var(--jf-ink);
    --bs-pagination-focus-box-shadow: 0 0 0 4px rgba(110, 186, 1, .2);
    --bs-pagination-active-color: var(--jf-bosque);
    --bs-pagination-active-bg: var(--jf-green);
    --bs-pagination-active-border-color: var(--jf-green);
    --bs-pagination-disabled-color: #9AA49D;
    --bs-pagination-disabled-bg: var(--jf-surface-tint);
    --bs-pagination-border-radius: 8px;
    gap: 0.3rem;
    margin-top: 1rem;
}

    .pagination .page-link {
        border-radius: 8px !important;
        font-weight: 600;
        min-width: 2.25rem;
        text-align: center;
    }

/* ── Estados (badges): tintes suaves con texto oscuro ── */
.badge {
    font-family: var(--jf-font-heading);
    font-weight: 600;
    border-radius: 999px;
    padding: 0.35em 0.7em;
    letter-spacing: 0.01em;
}

.text-bg-success {
    background-color: var(--jf-green-soft) !important;
    color: var(--jf-green-text) !important;
}

.text-bg-warning {
    background-color: #FFF3D6 !important;
    color: #7A5200 !important;
}

.text-bg-danger {
    background-color: #FDEBE9 !important;
    color: #9B1C14 !important;
}

/* ── Avisos ───────────────────────────────── */
.alert {
    border-radius: 12px;
    border-width: 1px;
}

.alert-success {
    background: var(--jf-green-soft);
    border-color: #CFE6B3;
    color: var(--jf-green-darkest);
}

/* ── Ventanas modales ─────────────────────── */
.modal-content {
    border: none;
    border-radius: 18px;
    box-shadow: 0 24px 60px -12px rgba(15, 46, 29, 0.35);
}

.modal-header,
.modal-footer {
    border-color: var(--jf-border);
}

.modal-title {
    font-family: var(--jf-font-heading);
    font-weight: 700;
    letter-spacing: -0.01em;
}

.modal-backdrop {
    --bs-backdrop-bg: #0F2E1D;
    --bs-backdrop-opacity: 0.35;
}

.dropdown-menu {
    border-color: var(--jf-border);
    border-radius: 12px;
    box-shadow: 0 12px 32px -8px rgba(15, 46, 29, 0.25);
    padding: 0.35rem;
}

.dropdown-item {
    border-radius: 8px;
}

/* ── Foco visible para teclado ────────────── */
a:focus-visible,
button:focus-visible,
.btn:focus-visible,
[tabindex]:focus-visible {
    outline: 2px solid var(--jf-green);
    outline-offset: 2px;
}

@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after {
        transition-duration: 0.01ms !important;
        animation-duration: 0.01ms !important;
    }
}

/* ── Ventana de confirmación compartida (_ConfirmarModal + js/shared/confirmar.js) ── */
.confirmar-dialogo {
    max-width: 400px;
}

.confirmar-cuerpo {
    padding: 1.75rem 1.75rem 0.5rem;
    text-align: center;
}

.confirmar-icono {
    width: 56px;
    height: 56px;
    margin: 0 auto 1rem;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--jf-green-soft);
    color: var(--jf-green-text);
    font-size: 1.75rem;
    box-shadow: 0 0 0 8px rgba(110, 186, 1, 0.08);
}

.confirmar-titulo {
    font-size: 1.2rem;
    font-weight: 800;
    margin: 0 0 0.4rem;
}

.confirmar-texto {
    color: var(--jf-muted);
    margin: 0;
}

.confirmar-detalle {
    margin-top: 1rem;
    padding: 0.6rem 0.8rem;
    border-radius: var(--jf-radius-sm);
    background: var(--jf-surface-tint);
    border: 1px solid var(--jf-border);
    color: var(--jf-ink);
    font-size: 0.9rem;
}

.confirmar-acciones {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0.6rem;
    padding: 1.25rem 1.75rem 1.5rem;
}

    .confirmar-acciones .btn {
        padding-top: 0.6rem;
        padding-bottom: 0.6rem;
    }
