/* =========================================================================
   TeziuShop CRM — Sistema de diseño
   =========================================================================
   Paleta:
     #1D1E1F   fondo primario (oscuro)
     #292a2a   fondo de paneles
     #4e453e   bordes
     #bda38c   acento (beige)
     #4c3928   texto sobre acento
     #9a8f86   texto secundario
     #5a5a5a   texto terciario / placeholder
   ========================================================================= */

:root {
    --bg-primary: #1D1E1F;
    --bg-panel: #292a2a;
    --border: #4e453e;
    --accent: #bda38c;
    --accent-hover: #a89178;
    --accent-text: #4c3928;
    --text-muted: #9a8f86;
    --text-faint: #5a5a5a;

    --status-ok: #4ade80;
    --status-warn: #fbbf24;
    --status-bad: #f87171;
    --status-info: #60a5fa;
}

* {
    box-sizing: border-box;
}

body {
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Inter", sans-serif;
    -webkit-font-smoothing: antialiased;
}


/* =========================================================
   SIDEBAR — items de navegación
========================================================= */
.nav-item {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 8px 10px;
    border-radius: 6px;
    color: #fff;
    font-size: 13px;
    text-decoration: none;
    border: 1px solid transparent;
    transition: background-color 0.15s, border-color 0.15s;
}

.nav-item i {
    font-size: 16px;
    color: var(--text-muted);
}

.nav-item:hover {
    background-color: var(--bg-panel);
    border-color: var(--border);
}

.nav-item.active {
    background-color: var(--accent);
    color: var(--accent-text);
    font-weight: 500;
}

.nav-item.active i {
    color: var(--accent-text);
}


/* =========================================================
   BADGES del sidebar (contadores)
========================================================= */
.badge-stock,
.badge-pedidos {
    background-color: var(--status-bad);
    color: #fff;
    font-size: 9px;
    font-weight: 700;
    padding: 1px 6px;
    border-radius: 10px;
    min-width: 18px;
    text-align: center;
    line-height: 1.4;
}

.badge-pedidos {
    background-color: var(--status-info);
}


/* =========================================================
   PANELES, FORMS, INPUTS — patrón consistente
========================================================= */
.panel {
    background-color: var(--bg-panel);
    border: 1px solid var(--border);
    border-radius: 8px;
    padding: 16px;
}

.panel-titulo {
    color: #fff;
    font-size: 14px;
    font-weight: 500;
    margin: 0 0 12px 0;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
}

.panel-titulo .badge-modo {
    background-color: var(--bg-primary);
    border: 1px solid var(--border);
    border-radius: 4px;
    padding: 2px 8px;
    color: var(--accent);
    font-size: 10px;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}


.form-group {
    margin-bottom: 12px;
}

.form-label {
    display: block;
    font-size: 11px;
    color: var(--text-muted);
    margin-bottom: 4px;
}

.form-label .req {
    color: var(--status-bad);
    margin-left: 2px;
}

.form-input,
.form-select,
.form-textarea {
    width: 100%;
    background-color: var(--bg-primary);
    border: 1px solid var(--border);
    border-radius: 6px;
    padding: 7px 10px;
    color: #fff;
    font-size: 12.5px;
    font-family: inherit;
    transition: border-color 0.15s;
}

.form-input:focus,
.form-select:focus,
.form-textarea:focus {
    outline: none;
    border-color: var(--accent);
}

.form-input:disabled,
.form-select:disabled,
.form-textarea:disabled {
    opacity: 0.6;
    cursor: not-allowed;
}

.form-input[readonly] {
    background-color: rgba(0, 0, 0, 0.2);
    color: var(--text-muted);
}

.form-textarea {
    min-height: 70px;
    resize: vertical;
}

.form-help {
    font-size: 10px;
    color: var(--text-faint);
    margin-top: 3px;
}


/* =========================================================
   BOTONES
========================================================= */
.btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 5px;
    padding: 7px 12px;
    border-radius: 6px;
    font-size: 12px;
    font-weight: 500;
    border: 1px solid transparent;
    cursor: pointer;
    transition: background-color 0.15s, border-color 0.15s, opacity 0.15s;
    text-decoration: none;
    white-space: nowrap;
}

.btn:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

.btn i {
    font-size: 14px;
}

.btn-primary {
    background-color: var(--accent);
    color: var(--accent-text);
}

.btn-primary:hover:not(:disabled) {
    background-color: var(--accent-hover);
}

.btn-secondary {
    background-color: var(--bg-primary);
    border-color: var(--border);
    color: #fff;
}

.btn-secondary:hover:not(:disabled) {
    background-color: rgba(255, 255, 255, 0.05);
}

.btn-danger {
    background-color: rgba(248, 113, 113, 0.1);
    border-color: rgba(248, 113, 113, 0.4);
    color: var(--status-bad);
}

.btn-danger:hover:not(:disabled) {
    background-color: rgba(248, 113, 113, 0.2);
}

.btn-sm {
    padding: 4px 8px;
    font-size: 11px;
}

.btn-icon {
    width: 28px;
    height: 28px;
    padding: 0;
    border-radius: 4px;
}


/* =========================================================
   ACCIONES DE FILA EN TABLAS — siempre los 3 mismos botones
   ver (azul) / editar (ámbar) / eliminar (rojo)
========================================================= */
.tabla-acciones {
    display: flex;
    gap: 4px;
    justify-content: center;
}

.btn-fila {
    width: 26px;
    height: 26px;
    border-radius: 4px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background-color: var(--bg-primary);
    border: 1px solid var(--border);
    cursor: pointer;
    transition: opacity 0.15s, background-color 0.15s;
}

.btn-fila i {
    font-size: 13px;
}

.btn-fila:hover {
    opacity: 0.8;
}

.btn-fila.ver i {
    color: var(--status-info);
}

.btn-fila.editar i {
    color: var(--status-warn);
}

.btn-fila.elim i {
    color: var(--status-bad);
}


/* =========================================================
   IMAGEN: preview circular para form
========================================================= */
.imagen-preview {
    width: 100px;
    height: 100px;
    border: 1px dashed var(--border);
    border-radius: 8px;
    background-color: var(--bg-primary);
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
    position: relative;
}

.imagen-preview img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.imagen-preview .placeholder {
    color: var(--text-faint);
    font-size: 24px;
}

.imagen-preview .btn-quitar {
    position: absolute;
    top: 4px;
    right: 4px;
    width: 22px;
    height: 22px;
    border-radius: 50%;
    background-color: rgba(0, 0, 0, 0.7);
    color: #fff;
    border: 1px solid var(--border);
    cursor: pointer;
    font-size: 12px;
    display: flex;
    align-items: center;
    justify-content: center;
}


/* =========================================================
   THUMBNAIL en celda de tabla
========================================================= */
.thumb-tabla {
    width: 40px;
    height: 40px;
    border-radius: 4px;
    background-color: var(--bg-primary);
    border: 1px solid var(--border);
    overflow: hidden;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.thumb-tabla img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.thumb-tabla .placeholder {
    color: var(--text-faint);
    font-size: 16px;
}


/* =========================================================
   PILLS de estado (CRITICO, BAJO, OK, AGOTADO, etc.)
========================================================= */
.pill {
    display: inline-block;
    padding: 2px 8px;
    border-radius: 10px;
    font-size: 10px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.4px;
}

.pill-ok {
    background: rgba(74, 222, 128, 0.15);
    color: var(--status-ok);
}

.pill-warn {
    background: rgba(251, 191, 36, 0.15);
    color: var(--status-warn);
}

.pill-bad {
    background: rgba(248, 113, 113, 0.15);
    color: var(--status-bad);
}

.pill-info {
    background: rgba(96, 165, 250, 0.15);
    color: var(--status-info);
}

.pill-muted {
    background: rgba(154, 143, 134, 0.15);
    color: var(--text-muted);
}


/* =========================================================
   ESTADO VACÍO (empty state)
========================================================= */
.empty-state {
    text-align: center;
    padding: 40px 20px;
    color: var(--text-muted);
}

.empty-state i {
    font-size: 36px;
    color: var(--text-faint);
    margin-bottom: 8px;
}

.empty-state h3 {
    color: #fff;
    font-size: 14px;
    font-weight: 500;
    margin: 6px 0;
}

.empty-state p {
    font-size: 12px;
    margin: 0;
    max-width: 320px;
    margin: 0 auto;
}


/* =========================================================
   DATATABLES — sobreescribir estilos para tema oscuro
========================================================= */
table.dataTable {
    color: #fff !important;
    background-color: transparent !important;
}

table.dataTable thead th {
    color: var(--text-muted) !important;
    border-bottom: 1px solid var(--border) !important;
    font-size: 11px !important;
    font-weight: 500 !important;
    padding: 10px 8px !important;
    background-color: transparent !important;
}

table.dataTable tbody tr {
    background-color: transparent !important;
}

table.dataTable tbody tr:hover {
    background-color: rgba(255, 255, 255, 0.03) !important;
}

table.dataTable tbody td {
    border-bottom: 1px solid rgba(78, 69, 62, 0.3) !important;
    font-size: 12.5px !important;
    padding: 8px !important;
    vertical-align: middle !important;
}

.dt-container .dt-search input,
.dt-container .dt-length select {
    background-color: var(--bg-primary) !important;
    border: 1px solid var(--border) !important;
    border-radius: 4px !important;
    color: #fff !important;
    padding: 4px 8px !important;
    font-size: 12px !important;
}

.dt-container .dt-info,
.dt-container .dt-search label,
.dt-container .dt-length label {
    color: var(--text-muted) !important;
    font-size: 12px !important;
}

.dt-container .dt-paging .dt-paging-button {
    background: var(--bg-primary) !important;
    border: 1px solid var(--border) !important;
    color: #fff !important;
    border-radius: 4px !important;
    margin: 0 2px !important;
    padding: 4px 10px !important;
    font-size: 12px !important;
}

.dt-container .dt-paging .dt-paging-button.current {
    background: var(--accent) !important;
    color: var(--accent-text) !important;
    border-color: var(--accent) !important;
}

.dt-container .dt-paging .dt-paging-button:hover:not(.current):not(.disabled) {
    background: rgba(255, 255, 255, 0.05) !important;
}

.dt-buttons .dt-button {
    background: var(--bg-primary) !important;
    border: 1px solid var(--border) !important;
    color: #fff !important;
    font-size: 11px !important;
    padding: 4px 10px !important;
    margin-right: 4px !important;
    border-radius: 4px !important;
}

.dt-buttons .dt-button:hover {
    background: rgba(255, 255, 255, 0.05) !important;
}


/* =========================================================
   MODAL DE BORRADO MASIVO
========================================================= */
.lista-checkbox {
    max-height: 380px;
    overflow-y: auto;
    padding: 4px;
}

.lista-checkbox label {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 6px 8px;
    border-radius: 4px;
    cursor: pointer;
    font-size: 12px;
}

.lista-checkbox label:hover {
    background-color: rgba(255, 255, 255, 0.04);
}

.lista-checkbox input[type=checkbox] {
    accent-color: var(--accent);
}


/* =========================================================
   SCROLLBAR DARK
========================================================= */
::-webkit-scrollbar {
    width: 8px;
    height: 8px;
}

::-webkit-scrollbar-track {
    background: var(--bg-primary);
}

::-webkit-scrollbar-thumb {
    background: var(--border);
    border-radius: 4px;
}

::-webkit-scrollbar-thumb:hover {
    background: var(--text-faint);
}


/* =========================================================
   ANIMACIÓN spinner
========================================================= */
@keyframes spin {
    to {
        transform: rotate(360deg);
    }
}

.animate-spin {
    animation: spin 1s linear infinite;
}


/* =========================================================
   GRID DE TARJETAS (dashboard, productos en grid)
========================================================= */
.tarjeta-kpi {
    background-color: var(--bg-panel);
    border: 1px solid var(--border);
    border-radius: 8px;
    padding: 16px;
}

.tarjeta-kpi .label {
    font-size: 11px;
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-bottom: 6px;
}

.tarjeta-kpi .valor {
    font-size: 22px;
    font-weight: 600;
    color: #fff;
}

.tarjeta-kpi .delta {
    font-size: 11px;
    color: var(--text-muted);
    margin-top: 4px;
}

/* =========================================================================
   RESPONSIVE SMARTPHONE — TeziuShop CRM
   Agregar al final de resources/css/styles.css
   ========================================================================= */


/* =========================================================
   BASE MOBILE
========================================================= */

html,
body {
    max-width: 100%;
    overflow-x: hidden;
}

body {
    min-width: 320px;
}

button,
input,
select,
textarea {
    touch-action: manipulation;
}


/* =========================================================
   TABLETS Y PANTALLAS MEDIANAS
========================================================= */

@media (max-width: 1024px) {

    #contenidoModulo {
        padding: 14px !important;
    }

    .panel {
        padding: 14px;
    }

    .tarjeta-kpi {
        padding: 14px;
    }

    .tarjeta-kpi .valor {
        font-size: 20px;
    }

    table.dataTable tbody td {
        font-size: 12px !important;
        padding: 7px !important;
    }

    table.dataTable thead th {
        font-size: 10.5px !important;
        padding: 8px 7px !important;
    }
}


/* =========================================================
   SMARTPHONE GENERAL
========================================================= */

@media (max-width: 768px) {

    /* Layout principal */
    body>.flex.min-h-screen {
        display: block !important;
        min-height: 100vh;
    }

    /* Sidebar convertido a barra superior */
    #sidebar {
        width: 100% !important;
        height: auto !important;
        max-height: none !important;
        position: sticky;
        top: 0;
        z-index: 50;
        border-right: none !important;
        border-bottom: 1px solid var(--border);
        background-color: var(--bg-primary);
    }

    #sidebar>.p-4 {
        padding: 10px 12px !important;
    }

    #sidebar>.p-4 .h-8 {
        width: 28px !important;
        height: 28px !important;
    }

    #sidebarNav {
        display: flex !important;
        flex-wrap: nowrap !important;
        gap: 6px !important;
        padding: 8px 10px !important;
        overflow-x: auto !important;
        overflow-y: hidden !important;
        white-space: nowrap !important;
        -webkit-overflow-scrolling: touch;
        scroll-snap-type: x proximity;
    }

    #sidebarNav::-webkit-scrollbar {
        height: 4px;
    }

    #sidebarNav>div {
        display: none !important;
    }

    .nav-item {
        flex: 0 0 auto;
        scroll-snap-align: start;
        padding: 8px 10px;
        font-size: 12px;
        border-radius: 999px;
        background-color: var(--bg-panel);
        border-color: var(--border);
    }

    .nav-item i {
        font-size: 15px;
    }

    .nav-item span:not(.badge-stock):not(.badge-pedidos) {
        display: inline-block;
    }

    .badge-stock,
    .badge-pedidos {
        margin-left: 4px !important;
        font-size: 9px;
        padding: 1px 5px;
    }

    #sidebar>.p-3.border-t {
        display: none !important;
    }

    /* Área principal */
    body>.flex.min-h-screen>.flex-1 {
        width: 100% !important;
        min-width: 0 !important;
    }

    header.h-14 {
        height: auto !important;
        min-height: 50px;
        padding: 10px 12px !important;
        position: sticky;
        top: 91px;
        z-index: 40;
    }

    #topbarTitulo {
        font-size: 13px !important;
    }

    header a[href="logout.php"] {
        padding: 7px 10px !important;
    }

    #contenidoModulo {
        padding: 12px !important;
        overflow-x: hidden !important;
    }

    /* Paneles */
    .panel {
        padding: 12px;
        border-radius: 10px;
    }

    .panel-titulo {
        font-size: 13px;
        align-items: flex-start;
    }

    .panel-titulo .badge-modo {
        font-size: 9px;
        padding: 2px 7px;
    }

    /* Formularios */
    .form-group {
        margin-bottom: 11px;
    }

    .form-label {
        font-size: 11px;
    }

    .form-input,
    .form-select,
    .form-textarea {
        min-height: 40px;
        font-size: 14px;
        padding: 9px 10px;
        border-radius: 8px;
    }

    .form-textarea {
        min-height: 90px;
    }

    .form-help {
        font-size: 10px;
        line-height: 1.35;
    }

    input[type="date"].form-input,
    input[type="number"].form-input {
        font-size: 14px;
    }

    /* Botones */
    .btn {
        min-height: 38px;
        padding: 9px 12px;
        font-size: 12px;
        border-radius: 8px;
    }

    .btn-sm {
        min-height: 34px;
        padding: 7px 10px;
        font-size: 11px;
    }

    .btn-icon,
    .btn-fila {
        min-width: 34px;
        width: 34px;
        height: 34px;
        border-radius: 8px;
    }

    .btn-fila i {
        font-size: 15px;
    }

    .tabla-acciones {
        gap: 6px;
        justify-content: flex-start;
    }

    /* Botones de encabezado de tablas */
    .panel>.flex.items-center.justify-between {
        align-items: stretch !important;
    }

    .panel>.flex.items-center.justify-between>div {
        width: 100%;
        justify-content: flex-start;
        flex-wrap: wrap;
    }

    .panel>.flex.items-center.justify-between .btn {
        flex: 1 1 auto;
    }

    /* Imágenes */
    .imagen-preview {
        width: 86px;
        height: 86px;
        flex: 0 0 86px;
    }

    .thumb-tabla {
        width: 34px;
        height: 34px;
    }

    /* KPIs inicio / stock */
    .tarjeta-kpi {
        padding: 12px;
        border-radius: 10px;
    }

    .tarjeta-kpi .label {
        font-size: 10px;
        line-height: 1.25;
    }

    .tarjeta-kpi .valor {
        font-size: 18px;
        line-height: 1.2;
        word-break: break-word;
    }

    .tarjeta-kpi .delta {
        font-size: 10px;
    }

    /* Estados vacíos */
    .empty-state {
        padding: 26px 14px;
    }

    .empty-state i {
        font-size: 30px;
    }

    .empty-state h3 {
        font-size: 13px;
    }

    .empty-state p {
        font-size: 11px;
    }
}


/* =========================================================
   TABLAS / DATATABLES EN SMARTPHONE
========================================================= */

@media (max-width: 768px) {

    .overflow-x-auto,
    #cpTablaWrapper {
        overflow-x: auto !important;
        overflow-y: hidden !important;
        -webkit-overflow-scrolling: touch;
        border-radius: 8px;
    }

    .overflow-x-auto::after,
    #cpTablaWrapper::after {
        content: "Desliza horizontalmente para ver más columnas";
        display: block;
        padding: 7px 4px 0;
        color: var(--text-faint);
        font-size: 10px;
        text-align: center;
    }

    table.dataTable,
    table.w-full {
        min-width: 720px;
    }

    #prodTabla {
        min-width: 820px;
    }

    #stockTabla {
        min-width: 860px;
    }

    #pedTabla {
        min-width: 820px;
    }

    #cpTabla,
    #catTabla,
    #provTabla {
        min-width: 760px;
    }

    table.dataTable thead th {
        font-size: 10px !important;
        padding: 8px 6px !important;
        white-space: nowrap !important;
    }

    table.dataTable tbody td {
        font-size: 11.5px !important;
        padding: 7px 6px !important;
        white-space: nowrap !important;
    }

    table.dataTable tbody td:nth-child(2),
    table.dataTable tbody td:nth-child(3),
    table.dataTable tbody td:nth-child(4) {
        max-width: 180px;
        overflow: hidden;
        text-overflow: ellipsis;
    }

    .dt-container {
        width: 100%;
        overflow: visible;
    }

    .dt-container .dt-layout-row {
        display: flex !important;
        flex-direction: column !important;
        gap: 8px !important;
        margin: 0 0 10px 0 !important;
    }

    .dt-container .dt-layout-cell {
        width: 100% !important;
        text-align: left !important;
    }

    .dt-container .dt-search {
        width: 100%;
    }

    .dt-container .dt-search label {
        display: flex;
        flex-direction: column;
        gap: 4px;
        width: 100%;
    }

    .dt-container .dt-search input {
        width: 100% !important;
        min-height: 38px;
        margin-left: 0 !important;
        font-size: 14px !important;
        border-radius: 8px !important;
    }

    .dt-container .dt-length label {
        display: flex;
        align-items: center;
        gap: 6px;
        flex-wrap: wrap;
    }

    .dt-container .dt-length select {
        min-height: 36px;
        font-size: 13px !important;
        border-radius: 8px !important;
    }

    .dt-buttons {
        display: flex;
        flex-wrap: wrap;
        gap: 6px;
        margin-bottom: 8px;
    }

    .dt-buttons .dt-button {
        min-height: 34px;
        flex: 1 1 auto;
        margin: 0 !important;
        border-radius: 8px !important;
    }

    .dt-container .dt-info {
        font-size: 11px !important;
        text-align: center;
    }

    .dt-container .dt-paging {
        display: flex;
        justify-content: center;
        flex-wrap: wrap;
        gap: 4px;
    }

    .dt-container .dt-paging .dt-paging-button {
        min-width: 34px;
        min-height: 34px;
        padding: 6px 8px !important;
        margin: 0 !important;
        font-size: 11px !important;
        border-radius: 8px !important;
    }
}


/* =========================================================
   CATEGORÍAS, CATEGORÍAS PRINCIPALES Y PROVEEDORES
========================================================= */

@media (max-width: 768px) {

    /* Formularios laterales pasan arriba y ocupan todo */
    .grid.grid-cols-1.lg\:grid-cols-\[320px_1fr\] {
        display: grid !important;
        grid-template-columns: 1fr !important;
        gap: 12px !important;
    }

    /* Bloque imagen + botón */
    .form-group .flex.gap-3.items-start {
        align-items: center !important;
    }

    .form-group .flex.gap-3.items-start .flex-1 {
        min-width: 0;
    }
}


/* =========================================================
   PRODUCTOS — FORMULARIO, VARIANTES E IMÁGENES
========================================================= */

@media (max-width: 768px) {

    #prodForm {
        gap: 12px !important;
    }

    #prodForm .grid.grid-cols-1.md\:grid-cols-3 {
        display: grid !important;
        grid-template-columns: 1fr !important;
        gap: 10px !important;
    }

    #prodForm .grid.grid-cols-2 {
        display: grid !important;
        grid-template-columns: 1fr !important;
        gap: 8px !important;
    }

    #prodFormPanel .border-t {
        padding-top: 12px;
    }

    #prodFormPanel h4 {
        font-size: 11px;
    }

    #prodFormPanel .flex.items-center.justify-between.mb-2 {
        align-items: stretch !important;
        flex-direction: column !important;
        gap: 8px;
    }

    #prodBtnAgregarVariante,
    #prodBtnAgregarImagen {
        width: 100%;
    }

    #prodVariantes {
        display: flex;
        flex-direction: column;
        gap: 10px;
    }

    .variante-fila {
        display: grid !important;
        grid-template-columns: 1fr 1fr !important;
        gap: 9px !important;
        padding: 10px !important;
        border: 1px solid rgba(78, 69, 62, 0.55);
        border-radius: 10px !important;
    }

    .variante-fila>[class*="col-span"] {
        grid-column: auto !important;
    }

    .variante-fila>.col-span-3,
    .variante-fila>.col-span-2 {
        grid-column: span 1 !important;
    }

    .variante-fila>.col-span-1.flex {
        grid-column: 1 / -1 !important;
    }

    .variante-fila [data-accion="quitar-variante"] {
        width: 100% !important;
        min-height: 36px;
    }

    #prodImagenes {
        display: grid !important;
        grid-template-columns: repeat(3, minmax(0, 1fr));
        gap: 8px !important;
    }

    #prodImagenes>* {
        max-width: 100%;
    }

    #prodFormPanel>.flex.gap-2.pt-2,
    #prodForm .flex.gap-2.pt-2 {
        flex-direction: column;
    }

    #prodBtnGuardar,
    #prodBtnCerrar {
        width: 100%;
    }
}


/* =========================================================
   STOCK — FORMULARIO DE MOVIMIENTOS E HISTORIAL
========================================================= */

@media (max-width: 768px) {

    #stockResumen {
        grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
        gap: 10px !important;
    }

    #stockForm .grid,
    #stockMovimientoForm .grid {
        grid-template-columns: 1fr !important;
    }

    #stockHistorial,
    #stockHistorialGeneral {
        max-height: 360px;
        overflow-y: auto;
        -webkit-overflow-scrolling: touch;
    }
}


/* =========================================================
   PEDIDOS — LISTADO, EDITOR Y LÍNEAS DEL PEDIDO
========================================================= */

@media (max-width: 768px) {

    #pedListado>.flex.items-center.justify-between {
        align-items: stretch !important;
        flex-direction: column !important;
    }

    #pedListado>.flex.items-center.justify-between>div {
        width: 100%;
        display: flex;
        gap: 8px;
    }

    #pedBtnNuevo,
    #pedBtnExcel {
        flex: 1 1 auto;
    }

    #pedEditor>.flex.items-center.justify-between {
        flex-direction: column !important;
        align-items: stretch !important;
        gap: 8px;
    }

    #pedEditorTitulo {
        order: -1;
        text-align: center;
    }

    #pedBtnVolver {
        width: 100%;
    }

    #pedEditor .grid.grid-cols-1.lg\:grid-cols-\[1fr_360px\] {
        display: grid !important;
        grid-template-columns: 1fr !important;
        gap: 12px !important;
    }

    #pedBusquedaPanel {
        position: relative;
        z-index: 20;
    }

    #pedBuscarResultados {
        max-height: 260px !important;
        font-size: 12px;
    }

    #pedLineas {
        overflow-x: hidden;
    }

    .linea-pedido {
        display: grid !important;
        grid-template-columns: 1fr 1fr !important;
        gap: 9px !important;
        padding: 10px !important;
        border: 1px solid rgba(78, 69, 62, 0.55);
        border-radius: 10px !important;
    }

    .linea-pedido>[class*="col-span"] {
        grid-column: auto !important;
    }

    .linea-pedido>.col-span-5 {
        grid-column: 1 / -1 !important;
    }

    .linea-pedido>.col-span-2,
    .linea-pedido>.col-span-3 {
        grid-column: span 1 !important;
    }

    .linea-pedido>.col-span-1.text-right {
        grid-column: 1 / 2 !important;
        text-align: left !important;
        font-size: 13px !important;
        font-weight: 600;
        color: var(--accent) !important;
    }

    .linea-pedido>.col-span-1.flex {
        grid-column: 2 / 3 !important;
        justify-content: flex-end !important;
    }

    .linea-pedido [data-accion="quitar-linea"] {
        width: 100% !important;
    }

    #pedEditor .grid.grid-cols-1.md\:grid-cols-2 {
        grid-template-columns: 1fr !important;
    }

    #pedEditor .md\:col-span-2 {
        grid-column: auto !important;
    }

    #pedEstatusBotones {
        display: grid !important;
        grid-template-columns: 1fr;
        gap: 8px !important;
    }

    #pedEstatusBotones .btn,
    #pedBtnGuardar,
    #pedBtnCancelar {
        width: 100%;
    }

    #pedEditor .space-y-2.text-xs .flex.justify-between.items-center {
        align-items: center;
    }

    #pedEditor .space-y-2.text-xs input {
        width: 120px !important;
    }
}


/* =========================================================
   MODALES / SWEETALERT EN SMARTPHONE
========================================================= */

@media (max-width: 768px) {

    .swal2-popup {
        width: calc(100% - 24px) !important;
        max-width: 420px !important;
        padding: 16px !important;
        border-radius: 12px !important;
    }

    .swal2-title {
        font-size: 18px !important;
    }

    .swal2-html-container {
        font-size: 13px !important;
    }

    .swal2-actions {
        width: 100%;
        gap: 8px;
    }

    .swal2-confirm,
    .swal2-cancel,
    .swal2-deny {
        flex: 1 1 auto;
        min-height: 38px;
        font-size: 12px !important;
        border-radius: 8px !important;
    }

    .lista-checkbox {
        max-height: 300px;
    }

    .lista-checkbox label {
        font-size: 12px;
        padding: 9px 8px;
    }
}


/* =========================================================
   SMARTPHONE PEQUEÑO
========================================================= */

@media (max-width: 480px) {

    #sidebarNav {
        padding-left: 8px !important;
        padding-right: 8px !important;
    }

    .nav-item {
        font-size: 11px;
        padding: 7px 9px;
    }

    .nav-item i {
        font-size: 14px;
    }

    header.h-14 {
        top: 88px;
        padding: 9px 10px !important;
    }

    #contenidoModulo {
        padding: 10px !important;
    }

    .panel {
        padding: 10px;
    }

    .panel-titulo {
        font-size: 12.5px;
    }

    .form-input,
    .form-select,
    .form-textarea {
        font-size: 13.5px;
        min-height: 39px;
    }

    .btn {
        width: 100%;
    }

    .btn-sm {
        width: auto;
    }

    .tarjeta-kpi {
        padding: 10px;
    }

    .tarjeta-kpi .valor {
        font-size: 16px;
    }

    #kpisInicio,
    #stockResumen {
        grid-template-columns: 1fr 1fr !important;
        gap: 8px !important;
    }

    .imagen-preview {
        width: 78px;
        height: 78px;
        flex-basis: 78px;
    }

    #prodImagenes {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .variante-fila,
    .linea-pedido {
        grid-template-columns: 1fr !important;
    }

    .variante-fila>[class*="col-span"],
    .linea-pedido>[class*="col-span"] {
        grid-column: 1 / -1 !important;
    }

    .linea-pedido>.col-span-1.text-right {
        text-align: left !important;
    }

    .linea-pedido>.col-span-1.flex {
        justify-content: stretch !important;
    }

    .linea-pedido [data-accion="quitar-linea"] {
        width: 100% !important;
    }

    table.dataTable,
    table.w-full {
        min-width: 700px;
    }

    #prodTabla,
    #stockTabla,
    #pedTabla {
        min-width: 780px;
    }

    .dt-container .dt-paging .dt-paging-button {
        min-width: 32px;
        min-height: 32px;
        font-size: 10px !important;
    }
}


/* =========================================================
   EXTRA PEQUEÑO
========================================================= */

@media (max-width: 360px) {

    #sidebarNav {
        gap: 5px !important;
    }

    .nav-item {
        font-size: 10.5px;
        padding: 7px 8px;
    }

    .nav-item i {
        display: none;
    }

    #kpisInicio,
    #stockResumen {
        grid-template-columns: 1fr !important;
    }

    .panel {
        padding: 9px;
    }

    .form-input,
    .form-select,
    .form-textarea {
        font-size: 13px;
    }

    .tarjeta-kpi .valor {
        font-size: 18px;
    }
}

/* =========================================================================
   FIX MOBILE — CATEGORÍAS PRINCIPALES Y CATEGORÍAS
   Agregar al final del CSS
   ========================================================================= */

@media (max-width: 768px) {

    /* Evita que cualquier contenido interno empuje el ancho de la pantalla */
    #contenidoModulo,
    #contenidoModulo *,
    #cpFormPanel,
    #catFormPanel,
    #cpListado,
    #catListado,
    #cpTablaWrapper,
    #catTablaWrapper {
        max-width: 100% !important;
        box-sizing: border-box !important;
    }

    /* Layout principal de Categorías principales y Categorías */
    #contenidoModulo .grid.grid-cols-1.lg\:grid-cols-\[320px_1fr\],
    #contenidoModulo .grid.grid-cols-1.lg\:grid-cols-\[340px_1fr\],
    #contenidoModulo .grid.grid-cols-1.lg\:grid-cols-\[360px_1fr\] {
        display: grid !important;
        grid-template-columns: minmax(0, 1fr) !important;
        width: 100% !important;
        gap: 12px !important;
        overflow-x: hidden !important;
    }

    /* Paneles de formulario y listado */
    #cpFormPanel,
    #catFormPanel,
    #cpListado,
    #catListado {
        width: 100% !important;
        min-width: 0 !important;
        overflow-x: hidden !important;
    }

    /* Formularios */
    #cpForm,
    #catForm {
        width: 100% !important;
        min-width: 0 !important;
        overflow-x: hidden !important;
    }

    #cpForm .form-group,
    #catForm .form-group {
        width: 100% !important;
        min-width: 0 !important;
    }

    #cpForm .form-input,
    #cpForm .form-select,
    #cpForm .form-textarea,
    #catForm .form-input,
    #catForm .form-select,
    #catForm .form-textarea {
        width: 100% !important;
        max-width: 100% !important;
        min-width: 0 !important;
    }

    /* Select de categoría principal en pantalla Categorías */
    #catIdCategoriaPrincipal,
    #catCategoriaPrincipal,
    #categoriaPrincipal,
    select[name="idCatPrincipal"],
    select[name="id_categoria_principal"] {
        width: 100% !important;
        max-width: 100% !important;
        min-width: 0 !important;
    }

    /* Bloque de imagen del formulario */
    #cpForm .flex.gap-3.items-start,
    #catForm .flex.gap-3.items-start {
        display: grid !important;
        grid-template-columns: 86px minmax(0, 1fr) !important;
        gap: 10px !important;
        width: 100% !important;
        align-items: start !important;
    }

    #cpForm .flex.gap-3.items-start .flex-1,
    #catForm .flex.gap-3.items-start .flex-1 {
        min-width: 0 !important;
        width: 100% !important;
    }

    #cpForm .imagen-preview,
    #catForm .imagen-preview {
        width: 86px !important;
        height: 86px !important;
        min-width: 86px !important;
        max-width: 86px !important;
    }

    /* Botones del formulario */
    #cpForm .flex.gap-2,
    #catForm .flex.gap-2 {
        display: flex !important;
        flex-direction: column !important;
        width: 100% !important;
        gap: 8px !important;
    }

    #cpForm .btn,
    #catForm .btn {
        width: 100% !important;
        justify-content: center !important;
    }

    /* Encabezado del listado */
    #cpListado .flex.items-center.justify-between,
    #catListado .flex.items-center.justify-between {
        display: flex !important;
        flex-direction: column !important;
        align-items: stretch !important;
        gap: 10px !important;
        width: 100% !important;
    }

    #cpListado .flex.items-center.justify-between>div,
    #catListado .flex.items-center.justify-between>div {
        width: 100% !important;
        display: flex !important;
        flex-wrap: wrap !important;
        gap: 8px !important;
    }

    #cpListado .flex.items-center.justify-between .btn,
    #catListado .flex.items-center.justify-between .btn {
        flex: 1 1 auto !important;
        min-width: 120px !important;
    }

    /* Wrapper de tabla */
    #cpTablaWrapper,
    #catTablaWrapper,
    #cpListado .overflow-x-auto,
    #catListado .overflow-x-auto {
        width: 100% !important;
        max-width: 100% !important;
        overflow-x: auto !important;
        overflow-y: hidden !important;
        -webkit-overflow-scrolling: touch !important;
    }

    /* Tablas específicas */
    #cpTabla,
    #catTabla {
        width: 100% !important;
        min-width: 720px !important;
        table-layout: auto !important;
    }

    #cpTabla th,
    #cpTabla td,
    #catTabla th,
    #catTabla td {
        white-space: nowrap !important;
    }

    /* Evita que DataTables empuje la pantalla */
    #cpListado .dt-container,
    #catListado .dt-container {
        width: 100% !important;
        max-width: 100% !important;
        overflow-x: hidden !important;
    }

    #cpListado .dt-layout-row,
    #catListado .dt-layout-row {
        width: 100% !important;
        max-width: 100% !important;
    }

    #cpListado .dt-layout-cell,
    #catListado .dt-layout-cell {
        width: 100% !important;
        max-width: 100% !important;
        min-width: 0 !important;
    }

    #cpListado .dt-search,
    #catListado .dt-search {
        width: 100% !important;
    }

    #cpListado .dt-search label,
    #catListado .dt-search label {
        width: 100% !important;
        display: flex !important;
        flex-direction: column !important;
        gap: 4px !important;
    }

    #cpListado .dt-search input,
    #catListado .dt-search input {
        width: 100% !important;
        max-width: 100% !important;
        margin-left: 0 !important;
    }

    #cpListado .dt-length,
    #catListado .dt-length {
        width: 100% !important;
    }

    #cpListado .dt-length label,
    #catListado .dt-length label {
        width: 100% !important;
        display: flex !important;
        flex-wrap: wrap !important;
        gap: 6px !important;
        align-items: center !important;
    }

    #cpListado .dt-paging,
    #catListado .dt-paging {
        width: 100% !important;
        justify-content: center !important;
        flex-wrap: wrap !important;
    }
}


/* =========================================================
   FIX EXTRA PARA SMARTPHONE PEQUEÑO
========================================================= */

@media (max-width: 480px) {

    #cpForm .flex.gap-3.items-start,
    #catForm .flex.gap-3.items-start {
        grid-template-columns: 78px minmax(0, 1fr) !important;
    }

    #cpForm .imagen-preview,
    #catForm .imagen-preview {
        width: 78px !important;
        height: 78px !important;
        min-width: 78px !important;
        max-width: 78px !important;
    }

    #cpTabla,
    #catTabla {
        min-width: 680px !important;
    }

    #cpListado .flex.items-center.justify-between .btn,
    #catListado .flex.items-center.justify-between .btn {
        min-width: 100% !important;
    }
}

/* =========================================================
   SELECT2 - PRODUCTOS
========================================================= */

.select2-container {
    width: 100% !important;
    font-size: 12.5px;
}

.select2-container--default .select2-selection--single {
    background-color: var(--bg-primary) !important;
    border: 1px solid var(--border) !important;
    border-radius: 6px !important;
    height: 34px !important;
    display: flex !important;
    align-items: center !important;
}

.select2-container--default .select2-selection--single .select2-selection__rendered {
    color: #ffffff !important;
    line-height: 32px !important;
    padding-left: 10px !important;
    padding-right: 28px !important;
}

.select2-container--default .select2-selection--single .select2-selection__placeholder {
    color: var(--text-muted) !important;
}

.select2-container--default .select2-selection--single .select2-selection__arrow {
    height: 32px !important;
    right: 6px !important;
}

.select2-dropdown {
    background: #292a2a !important;
    background-color: #292a2a !important;
    border: 1px solid #4e453e !important;
    color: #ffffff !important;

    opacity: 1 !important;
    backdrop-filter: none !important;
    -webkit-backdrop-filter: none !important;

    box-shadow: 0 10px 25px rgba(0, 0, 0, 0.45) !important;

    z-index: 999999 !important;
}

.select2-results {
    background-color: #292a2a !important;
}

.select2-results__options {
    background-color: #292a2a !important;
}

.select2-container--open .select2-dropdown {
    background-color: #292a2a !important;
}

.select2-search--dropdown .select2-search__field {
    background-color: var(--bg-primary) !important;
    border: 1px solid var(--border) !important;
    color: #ffffff !important;
    outline: none !important;
    font-size: 12.5px !important;
}

.select2-results__option {
    font-size: 12.5px !important;
    color: #ffffff !important;
}

.select2-container--default .select2-results__option--highlighted.select2-results__option--selectable {
    background-color: var(--accent) !important;
    color: #4c3928 !important;
}

.select2-container--default .select2-results__option--selected {
    background-color: #4e453e !important;
    color: #ffffff !important;
}

.select2-container--default.select2-container--disabled .select2-selection--single {
    opacity: 0.6 !important;
    cursor: not-allowed !important;
}

/* =========================================================
   AJUSTES - MODAL
========================================================= */

.ajustes-modal {
    position: fixed;
    inset: 0;
    z-index: 99999;
}

.ajustes-modal.hidden {
    display: none;
}

.ajustes-backdrop {
    position: absolute;
    inset: 0;
    background: rgba(0, 0, 0, 0.72);
    backdrop-filter: blur(3px);
}

.ajustes-contenido {
    position: relative;
    z-index: 1;
    width: min(1180px, calc(100vw - 24px));
    max-height: calc(100vh - 24px);
    overflow: auto;
    margin: 12px auto;
    background: #1D1E1F;
    border: 1px solid #4e453e;
    border-radius: 14px;
    padding: 16px;
    box-shadow: 0 24px 70px rgba(0, 0, 0, 0.65);
}

.ajustes-header {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 12px;
    padding-bottom: 14px;
    margin-bottom: 14px;
    border-bottom: 1px solid #4e453e;
}

.ajustes-header h2 {
    font-size: 16px;
    font-weight: 600;
    color: #ffffff;
}

.ajustes-header p {
    font-size: 12px;
    color: #9a8f86;
}

.ajustes-cerrar {
    width: 32px;
    height: 32px;
    border-radius: 8px;
    background: #292a2a;
    border: 1px solid #4e453e;
    color: #ffffff;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.ajustes-cerrar:hover {
    background: #3a3b3b;
}

@media (max-width: 768px) {
    .ajustes-contenido {
        width: calc(100vw - 12px);
        max-height: calc(100vh - 12px);
        margin: 6px auto;
        padding: 12px;
    }

    #ajUserTabla {
        min-width: 760px;
    }
}

/* =========================================================
   SWEETALERT SOBRE MODALES
========================================================= */

.swal2-container {
    z-index: 1000000 !important;
}