/* Contenedor con scroll horizontal para tablas anchas */
.tabla_contenedor{
    width:100%;
    max-width:100%;
    overflow-x:auto;
    -webkit-overflow-scrolling:touch;
    margin-bottom:16px;
    border-radius:12px;
}

.tabla_contenedor > table{
    margin:0;
    min-width:760px;
}

.tabla_contenedor::after{
    content:"";
    display:block;
    height:0;
}

/* Botón menú móvil */
.btn_menu_toggle{
    display:none;
    position:fixed;
    top:max(12px, env(safe-area-inset-top));
    left:max(12px, env(safe-area-inset-left));
    z-index:1002;
    width:44px;
    height:44px;
    border:none;
    border-radius:10px;
    background:linear-gradient(135deg, #14532d 0%, #16a34a 100%);
    color:#f0fdf4;
    font-size:22px;
    line-height:1;
    cursor:pointer;
    box-shadow:0 4px 14px rgba(15, 23, 42, 0.2);
    align-items:center;
    justify-content:center;
}

.btn_menu_toggle:active{
    transform:scale(0.96);
}

.menu_overlay{
    display:none;
    position:fixed;
    inset:0;
    z-index:999;
    background:rgba(15, 23, 42, 0.45);
    backdrop-filter:blur(2px);
}

body.menu_abierto_body{
    overflow:hidden;
}

/* Tablet */
@media (max-width: 1200px){
    .dv_dashboard_header{
        flex-direction:column;
        align-items:stretch;
    }

    .dv_acciones_rapidas{
        width:100%;
    }

    .btn_accion_rapida{
        flex:1 1 auto;
    }

    .stats_grid{
        grid-template-columns:repeat(auto-fit, minmax(160px, 1fr));
    }

    .panel_consumo_header,
    .panel_busqueda_header{
        flex-direction:column;
        align-items:stretch;
    }

    .panel_consumo_filtro{
        flex-direction:column;
        align-items:stretch;
    }
}

/* Tablet / móvil — menú lateral colapsable */
@media (max-width: 900px){
    .btn_menu_toggle{
        display:flex;
    }

    .menu_abierto .menu_overlay{
        display:block;
    }

    .dv_pagina_admin,
    .dv_funcionarios{
        flex-direction:column;
        min-height:100dvh;
    }

    .dv_menu_admin,
    .dv_menu{
        position:fixed;
        top:0;
        left:0;
        width:min(280px, 86vw);
        height:100dvh;
        min-height:100dvh;
        z-index:1000;
        transform:translateX(-105%);
        transition:transform 0.25s ease;
        box-shadow:8px 0 32px rgba(15, 23, 42, 0.25);
    }

    .menu_abierto .dv_menu_admin,
    .menu_abierto .dv_menu{
        transform:translateX(0);
    }

    .dv_menu_nav,
    .dv_menu_nav_func{
        flex-direction:column;
        flex-wrap:nowrap;
        overflow-y:auto;
    }

    .dv_menu_admin_compacto .dv_menu_nav{
        overflow-y:auto !important;
    }

    .dv_menu_admin_compacto .dv_menu_nav .btn_menu_admin,
    .dv_menu_admin_compacto .dv_menu_nav .btn_menu_iconizado{
        flex:0 0 auto !important;
        min-height:36px !important;
        max-height:none !important;
        height:auto !important;
        font-size:13px !important;
        padding:6px 10px !important;
    }

    .dv_menu_admin_compacto .menu_btn_texto{
        font-size:13px;
        text-align:left !important;
    }

    .menu_grupo{
        width:100%;
    }

    .btn_menu_admin,
    .menu_funcionarios{
        width:100%;
        flex:0 0 auto;
        min-height:42px;
    }

    .dv_contenido_admin,
    .contenido_funcionarios{
        min-height:auto;
        width:100%;
        padding:68px 14px 20px;
        padding-top:max(68px, calc(56px + env(safe-area-inset-top)));
    }

    .dv_dashboard,
    .panel_busqueda,
    .panel_consumo,
    .dv_consumo{
        max-width:100%;
    }

    .titulo_dashboard{
        font-size:22px;
    }

    .stat_valor{
        font-size:26px;
    }

    .stats_grid_doble{
        grid-template-columns:1fr;
    }

    .celda_acciones_inspeccion{
        flex-direction:column;
        align-items:stretch;
    }

    .celda_acciones_inspeccion .btn_inspeccion,
    .celda_acciones_inspeccion .btn_rechazar{
        width:100%;
        min-width:0;
    }

    .modal_formulario th,
    .modal_formulario td{
        display:block;
        width:100%;
    }

    .modal_formulario th{
        padding-bottom:4px;
    }

    .modal_acciones,
    .modal_acciones_centro{
        flex-direction:column;
    }

    .modal_acciones .btn_modal_primario,
    .modal_acciones .btn_modal_secundario,
    .modal_acciones_centro .btn_modal_primario,
    .modal_acciones_centro .btn_modal_secundario{
        width:100%;
    }

    #modal,
    .modal_sistema,
    .modal_rectifica,
    #dlg_modal{
        width:min(720px, 96vw);
        max-height:92dvh;
    }

    .modal_cabecera:not(.dialog_alerta_cabecera){
        padding:14px 16px;
    }

    .modal_cabecera:not(.dialog_alerta_cabecera) .modal_titulo{
        font-size:16px;
    }

    .modal_cabecera:not(.dialog_alerta_cabecera) .modal_subtitulo{
        font-size:12px;
    }

    .modal_detalle_consumo,
    #dlg_modal.modal_detalle_consumo{
        width:98vw;
    }

    .historico_resumen{
        flex-direction:column;
        align-items:stretch;
    }

    .historico_resumen_item{
        width:100%;
        min-width:0;
    }
}

/* Móvil pequeño */
@media (max-width: 640px){
    .dv_contenido_admin,
    .contenido_funcionarios{
        padding-left:12px;
        padding-right:12px;
    }

    .stats_grid{
        grid-template-columns:1fr 1fr;
        gap:10px;
    }

    .stat-card{
        padding:14px;
    }

    .stat_valor{
        font-size:22px;
    }

    .titulo_dashboard,
    .panel_busqueda_titulo,
    .panel_consumo_titulo,
    .panel_solicitud_titulo{
        font-size:20px;
    }

    .tbl_estados th,
    .tbl_estados td,
    .tbl_historico th,
    .tbl_historico td{
        padding:8px 6px;
        font-size:11px;
    }

    .btn_permiso,
    .btn_rechazar,
    .btn_eliminar,
    .btn_rectificar,
    .btn_ausencias{
        min-height:36px;
        font-size:10px;
        padding:6px 8px;
    }

    .tabla_contenedor > table{
        min-width:680px;
    }

    .dialog_alerta_acciones{
        flex-direction:column;
    }

    .dialog_alerta_acciones .btn_modal_primario,
    .dialog_alerta_acciones .btn_modal_secundario{
        width:100%;
    }
}

@media (max-width: 480px){
    .stats_grid{
        grid-template-columns:1fr;
    }

    .solicitud_resumen_chips{
        grid-template-columns:1fr;
    }

    .contenido_funcionarios{
        padding:64px 10px 16px;
    }

    .panel_solicitud_header,
    .solicitud_formulario,
    .solicitud_acciones{
        padding-left:16px;
        padding-right:16px;
    }

    .pagina_login{
        padding:16px;
        justify-content:flex-start;
        padding-top:max(24px, env(safe-area-inset-top));
    }

    .pie_pagina{
        margin-top:20px;
    }

    .btn_glosa,
    .btn_email{
        width:100%;
        min-height:36px;
    }

    .lst_tipo,
    .lst_detalles{
        max-width:100%;
    }
}

/* PC ancho — asegurar uso del espacio */
@media (min-width: 901px){
    .btn_menu_toggle,
    .menu_overlay{
        display:none !important;
    }

    .dv_contenido_admin,
    .contenido_funcionarios{
        padding:24px 28px;
    }
}

@media (min-width: 1400px){
    .dv_dashboard{
        max-width:1240px;
    }

    .panel_busqueda,
    .panel_consumo{
        max-width:1100px;
    }
}
