/* Estilos personalizados de MadFarm */
.navbar-brand {
    font-size: 1.5rem;
}

/* (El layout de app fija — body flex sin scroll — vive en includes/header.php) */
body {
    display: flex;
    flex-direction: column;
    min-height: 100vh;
}

main {
    flex-grow: 1;
}

/* =====================================================================
   PALETA DE COLORES MadFarm (elegida por el usuario)
   Azul    #29699B  → primario (botones, enlaces, selección)
   Verde   #36B876  → éxito / producción (guardar, checks, badges)
   Naranja #C26E24  → acento (activo en menús, candados, avisos)
   ===================================================================== */
:root {
    --mf-azul:        #29699B;
    --mf-azul-hover:  #235a86;
    --mf-azul-oscuro: #1E4E74;
    --mf-verde:       #36B876;
    --mf-verde-hover: #2da367;
    --mf-verde-texto: #2E9C64;
    --mf-naranja:       #C26E24;
    --mf-naranja-hover: #a95e1e;
}

/* ---- Botones ---- */
.btn-primary {
    --bs-btn-bg: var(--mf-azul);
    --bs-btn-border-color: var(--mf-azul);
    --bs-btn-hover-bg: var(--mf-azul-hover);
    --bs-btn-hover-border-color: var(--mf-azul-hover);
    --bs-btn-active-bg: var(--mf-azul-oscuro);
    --bs-btn-active-border-color: var(--mf-azul-oscuro);
    --bs-btn-disabled-bg: var(--mf-azul);
    --bs-btn-disabled-border-color: var(--mf-azul);
}
.btn-outline-primary {
    --bs-btn-color: var(--mf-azul);
    --bs-btn-border-color: var(--mf-azul);
    --bs-btn-hover-bg: var(--mf-azul);
    --bs-btn-hover-border-color: var(--mf-azul);
    --bs-btn-active-bg: var(--mf-azul);
    --bs-btn-active-border-color: var(--mf-azul);
}
.btn-success {
    --bs-btn-bg: var(--mf-verde);
    --bs-btn-border-color: var(--mf-verde);
    --bs-btn-hover-bg: var(--mf-verde-hover);
    --bs-btn-hover-border-color: var(--mf-verde-hover);
    --bs-btn-active-bg: #27905a;
    --bs-btn-active-border-color: #27905a;
    --bs-btn-disabled-bg: var(--mf-verde);
    --bs-btn-disabled-border-color: var(--mf-verde);
}
.btn-outline-success {
    --bs-btn-color: var(--mf-verde-texto);
    --bs-btn-border-color: var(--mf-verde);
    --bs-btn-hover-bg: var(--mf-verde);
    --bs-btn-hover-border-color: var(--mf-verde);
    --bs-btn-active-bg: var(--mf-verde);
    --bs-btn-active-border-color: var(--mf-verde);
}
.btn-warning {
    --bs-btn-bg: var(--mf-naranja);
    --bs-btn-border-color: var(--mf-naranja);
    --bs-btn-color: #fff;
    --bs-btn-hover-bg: var(--mf-naranja-hover);
    --bs-btn-hover-border-color: var(--mf-naranja-hover);
    --bs-btn-hover-color: #fff;
    --bs-btn-active-bg: #93521a;
    --bs-btn-active-border-color: #93521a;
    --bs-btn-active-color: #fff;
}
.btn-dark {
    --bs-btn-bg: var(--mf-azul-oscuro);
    --bs-btn-border-color: var(--mf-azul-oscuro);
    --bs-btn-hover-bg: #17405e;
    --bs-btn-hover-border-color: #17405e;
    --bs-btn-active-bg: #123350;
    --bs-btn-active-border-color: #123350;
}

/* ---- Fondos y badges ---- */
.bg-primary { background-color: var(--mf-azul) !important; }
.bg-success { background-color: var(--mf-verde) !important; }
.bg-warning { background-color: var(--mf-naranja) !important; }
.bg-info    { background-color: #4B89B8 !important; }
.text-bg-success { background-color: var(--mf-verde) !important; color: #fff !important; }
.text-bg-warning { background-color: var(--mf-naranja) !important; color: #fff !important; }

/* La navbar y el pie (usan .bg-dark) van en el azul oscuro de la marca */
nav.navbar.bg-dark, footer.bg-dark { background-color: var(--mf-azul-oscuro) !important; }

/* Menú principal con letras BLANCAS, como el logo */
.navbar-dark .navbar-nav .nav-link { color: #fff; }
.navbar-dark .navbar-nav .nav-link:hover,
.navbar-dark .navbar-nav .nav-link:focus { color: #fff; }

/* ---- Textos y enlaces ---- */
.text-primary { color: var(--mf-azul) !important; }
.text-success { color: var(--mf-verde-texto) !important; }
.text-warning { color: var(--mf-naranja) !important; }
a { color: var(--mf-azul); }
a:hover { color: var(--mf-azul-oscuro); }

/* ---- Componentes ---- */
.list-group-item.active {
    background-color: var(--mf-azul);
    border-color: var(--mf-azul);
}
.list-group-item-success {
    background-color: #ddf2e7;
    color: #1c5e3e;
}
.table-dark {
    --bs-table-bg: var(--mf-azul-oscuro);
    --bs-table-border-color: #2a608a;
}
.border-success { border-color: var(--mf-verde) !important; }
.alert-success {
    --bs-alert-bg: #ddf2e7;
    --bs-alert-border-color: #b8e5cf;
    --bs-alert-color: #1c5e3e;
}
.alert-warning {
    --bs-alert-bg: #f7e5d4;
    --bs-alert-border-color: #ecc9a6;
    --bs-alert-color: #7d4715;
}

/* Notificaciones push (toast): centradas horizontalmente, en la parte SUPERIOR */
.zona-toasts {
    position: fixed;
    top: 80px;
    left: 50%;
    transform: translateX(-50%);
    z-index: 2000;
    width: max-content;
    max-width: 90vw;
    display: flex;
    flex-direction: column;
    align-items: center;
}

/* Segmento con scroll interno reutilizable (tablas que no deben agrandar la página) */
.seg-scroll-md {
    max-height: 60vh;
    overflow-y: auto;
}
.seg-scroll-md thead th {
    position: sticky;
    top: 0;
    z-index: 2;
}
/* El pie (totales) SIEMPRE visible aunque se scrollee la tabla */
.seg-scroll-md tfoot td {
    position: sticky;
    bottom: 0;
    z-index: 2;
    background-color: #f8f9fa;
    box-shadow: 0 -1px 0 #dee2e6;
}
/* Pie de totales OSCURO (mismo azul del encabezado, p. ej. TOTAL FINCA en Cálculos) */
.seg-scroll-md tfoot.table-dark td {
    background-color: var(--mf-azul-oscuro);
    box-shadow: 0 -1px 0 #2a608a;
}
/* Utilidad legible sobre el fondo azul oscuro del total */
.seg-scroll-md tfoot.table-dark .text-success { color: #7fe0ab !important; }
.seg-scroll-md tfoot.table-dark .text-danger  { color: #ff9e9e !important; }

/* Tabla que crece con los datos pero scrollea SOLO dentro de sí misma: llena el
   alto disponible del viewport (descontando navbar, submenú, títulos y tarjetas)
   para que la página no tenga que scrollear. Encabezado y pie quedan pegados. */
.tabla-scroll {
    max-height: calc(100vh - 400px);
    min-height: 140px;
    overflow-y: auto;
}
.tabla-scroll thead th {
    position: sticky;
    top: 0;
    z-index: 2;
}
.tabla-scroll tfoot td {
    position: sticky;
    bottom: 0;
    z-index: 2;
    background-color: #f8f9fa;
}

/* ============ CALENDARIO DE MADFARM (assets/js/calendario.js) ============
   El mismo calendario en todo el sistema: el de los campos de fecha de los
   módulos y el del rango del dashboard. Se abre colgando de su botón, nunca
   como ventana aparte. */
.calendario-rango { min-width: 262px; }
.calendario-rango table { width: 100%; border-collapse: separate; border-spacing: 1px; }
.calendario-rango th { font-size: .68rem; font-weight: 600; color: #6c757d; text-align: center; padding: 2px 0; }
.calendario-rango td { padding: 0; }

.cal-dia-btn {
    display: block; width: 100%; border: 0; background: transparent; border-radius: .25rem;
    font-size: .78rem; line-height: 1.7; text-align: center; color: #212529; cursor: pointer;
}
.cal-dia-btn:hover:not(:disabled) { background: #e7eff6; }
.cal-dia-btn.otro-mes { color: #b6bcc2; }
.cal-dia-btn.en-rango { background: #D8E7DC; }
/* En los calendarios DE CAMPO (cal-campo-caja, ver calendario.js) lo elegido
   es UN día: va lleno con el azul de la casa, bien visible — el tinte suave
   de arriba queda para la banda de semana del dashboard, que son 7 días. */
.cal-campo-caja .cal-dia-btn.en-rango { background: var(--mf-azul, #29699B); color: #fff; font-weight: 600; }
.cal-campo-caja .cal-dia-btn.en-rango:hover:not(:disabled) { background: var(--mf-azul-oscuro, #1E4E74); }
.cal-dia-btn.hoy { outline: 2px solid var(--mf-naranja, #C26E24); outline-offset: -2px; font-weight: 700; }
/* Días que el campo no admite (fuera de su min/max) */
.cal-dia-btn.fuera-de-rango { color: #d3d7db; cursor: not-allowed; }

/* Ícono al costado de cada fila: trae la semana entera (solo donde se pide) */
.cal-semana-btn {
    border: 0; background: transparent; color: var(--mf-azul, #29699B);
    border-radius: .25rem; padding: 0 4px; cursor: pointer; font-size: .78rem;
}
.cal-semana-btn:hover { background: var(--mf-azul, #29699B); color: #fff; }

/* Botón que reemplaza a un campo de fecha en los formularios */
.cal-campo-btn { min-width: 8.5rem; }

/* ===== Encabezados que ordenan la tabla (assets/js/orden-tabla.js) =====
   La flecha aparece al ordenar; el puntito tenue avisa que se puede tocar
   sin gritar en cada encabezado. */
.th-ordenable { cursor: pointer; position: relative; user-select: none; padding-right: 1.1rem !important; }
.th-ordenable::after {
    content: "0dc"; font-family: "Font Awesome 6 Free"; font-weight: 900;
    position: absolute; right: .35rem; top: 50%; transform: translateY(-50%);
    opacity: .25; font-size: .8em;
}
.th-ordenable:hover::after { opacity: .6; }
.th-ordenable.orden-asc::after  { content: "0de"; opacity: 1; }
.th-ordenable.orden-desc::after { content: "0dd"; opacity: 1; }
.th-ordenable:focus-visible { outline: 2px solid #fff; outline-offset: -2px; }
