/* Shared touch layout. Desktop rules remain in the existing views. */
.catalog-table-container { max-width: 100%; overflow-x: auto; }
.catalog-page { min-width: 0; }
.mobile-cart-shortcut { display: none; }
.mobile-cart-shortcut[hidden] { display: none; }
.records-table-wrap { max-width: 100%; min-width: 0; }
.user-actions { display: flex; justify-content: flex-end; align-items: center; gap: .5rem; }
.records-pagination .pagination { flex-wrap: wrap; }

@media (max-width: 991.98px) {
    .pos-page { padding-bottom: calc(90px + env(safe-area-inset-bottom)); }
    .pos-header { flex-wrap: wrap; gap: .75rem; }
    .pos-header > .d-flex { flex-wrap: wrap; }
    .pos-status .row { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .75rem 0; }
    .pos-status .row > div { width: auto; min-width: 0; overflow-wrap: anywhere; }
    .pos-search .row { row-gap: .75rem; }
    .pos-search-field { position: relative; }
    .pos-page #resultados-busqueda { left: .75rem; right: .75rem; width: auto !important; max-height: 45dvh; }
    .pos-page .pos-product-list { height: auto !important; max-height: 45dvh; min-height: 180px; }
    .pos-page #tabs-productos { flex-wrap: nowrap; overflow-x: auto; margin: 0; }
    .pos-page #tabs-productos .nav-link { white-space: nowrap; min-height: 48px; padding: .75rem; }
    .pos-page .producto-item { width: 50%; padding-left: .375rem; padding-right: .375rem; margin-bottom: .75rem !important; }
    .pos-page .producto-card .card-body { padding: .75rem !important; }
    .pos-page .producto-card .card-body > .d-flex { flex-wrap: wrap; gap: .5rem; }
    .pos-page .producto-card h5 { font-size: 1.05rem; }
    .pos-page .producto-card h6 { overflow-wrap: anywhere; }
    .pos-page .pos-checkout { margin-top: 1rem; scroll-margin-top: 1rem; }
    .pos-page #items-carrito { max-height: 45dvh !important; }
    .pos-page #items-carrito .flex-grow-1 { min-width: 0; overflow-wrap: anywhere; padding-right: .5rem; }
    .pos-page #items-carrito .btn-group .btn { min-width: 44px; min-height: 44px; padding: .5rem; font-size: 1rem; }
    .pos-page #quick-cash-buttons { display: grid !important; grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .pos-page #quick-cash-buttons .btn { margin: 0 !important; }
    .mobile-cart-shortcut {
        position: fixed; z-index: 1030; inset: auto .75rem max(.75rem, env(safe-area-inset-bottom));
        display: flex; align-items: center; justify-content: space-between; gap: .75rem;
        padding: .875rem 1rem; min-height: 60px; border-radius: .875rem;
        background: #0d6efd; color: #fff; box-shadow: 0 4px 20px #0003; text-decoration: none;
    }
    .mobile-cart-shortcut:hover, .mobile-cart-shortcut:focus { color: #fff; background: #0b5ed7; }
    .mobile-cart-shortcut small { display: block; }
}

@media (max-width: 767.98px) {
    html { scroll-padding-bottom: 6rem; }
    body { min-width: 0; }
    #app, main, .container, .container-fluid, .row > * { min-width: 0; }
    main.py-4 { padding-top: 1rem !important; }
    .navbar > .container-fluid { flex-wrap: wrap; gap: .5rem; }
    .navbar-brand { flex: 1; min-width: 0; margin-right: 0; flex-direction: column; align-items: flex-start !important; gap: .25rem; font-size: 1rem; }
    .navbar-brand-title { white-space: normal; }
    .navbar-brand .badge { max-width: 100%; margin-left: 0 !important; font-size: .75rem !important; white-space: normal; overflow-wrap: anywhere; }
    .navbar-toggler { flex-shrink: 0; min-width: 44px; min-height: 44px; }
    .navbar-collapse { flex-basis: 100%; }
    .navbar .nav-link, .navbar .dropdown-item { padding-top: .75rem; padding-bottom: .75rem; white-space: normal; }
    .navbar-nav .dropdown-menu { min-width: 0; }
    input.form-control, select.form-select, textarea.form-control { font-size: 16px; min-height: 44px; }
    .btn { min-height: 44px; display: inline-flex; align-items: center; justify-content: center; gap: .25rem; }
    .input-group { min-width: 0; }
    .input-group > .form-control, .input-group > .form-select { min-width: 0; }
    .modal-dialog { margin: .5rem; }
    .modal-content { max-height: calc(100dvh - 1rem); }
    .modal-content > form { min-height: 0; display: flex; flex-direction: column; overflow: hidden; }
    .modal-body { overflow-y: auto; overscroll-behavior: contain; }
    .modal-header, .modal-footer { flex-shrink: 0; }
    .modal-title { overflow-wrap: anywhere; }
    .modal-footer .btn { flex: 1; }
    .modal .input-group:has(#new-codigo-barras) { display: grid; grid-template-columns: 1fr 1fr; gap: .5rem; }
    .modal .input-group #new-codigo-barras { grid-column: 1 / -1; width: 100%; border-radius: .375rem; }
    .modal .input-group:has(#new-codigo-barras) > .btn { border-radius: .375rem !important; margin: 0; }
    .catalog-page { margin-top: 0 !important; }
    .catalog-page h3 { font-size: 1.4rem; margin-bottom: 1rem !important; }
    .catalog-actions { display: grid !important; grid-template-columns: 1fr 1fr; }
    .catalog-actions .btn { font-size: .875rem; }
    .catalog-search-tools { display: flex; flex-wrap: wrap; align-items: end; gap: .5rem; margin-bottom: 1rem; }
    .catalog-search-input { flex: 1 1 180px; min-width: 0; }
    .catalog-search-input .dataTables_filter { text-align: left; }
    .catalog-search-input .dataTables_filter label { display: block; margin: 0; font-size: .875rem; }
    .catalog-search-input .dataTables_filter input { display: block; width: 100%; margin: .25rem 0 0; }
    .catalog-search-tools > .small { display: none; }
    .catalog-mobile-sort { display: flex !important; align-items: center; gap: .5rem; margin-bottom: .75rem; }
    .catalog-mobile-sort label { flex-shrink: 0; }
    .catalog-page .dataTables_wrapper > .row { row-gap: .75rem; }
    .catalog-page .dataTables_length, .catalog-page .dt-buttons { text-align: left !important; }
    .catalog-page .dt-buttons { display: flex; flex-wrap: wrap; gap: .375rem; }
    .catalog-page .dt-buttons .btn { flex: 1; margin: 0; }
    .catalog-page .dataTables_info { white-space: normal; text-align: center; font-size: .875rem; }
    .catalog-page .dataTables_paginate .pagination { justify-content: center !important; flex-wrap: wrap; gap: .25rem; }
    .catalog-page .page-link { min-width: 40px; min-height: 44px; display: grid; place-items: center; border-radius: .375rem !important; }
    .catalog-table-container { overflow: visible; }
    #tablaStock, #tablaStock tbody { display: block; width: 100% !important; min-width: 0 !important; }
    #tablaStock { border: 0; margin: 0 !important; }
    #tablaStock thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
    #tablaStock tbody tr { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); margin-bottom: .875rem; border: 1px solid #dee2e6; border-radius: .75rem; overflow: hidden; background: #fff; box-shadow: 0 2px 6px #00000008; }
    #tablaStock tbody td { display: block; min-width: 0; width: auto !important; border: 0; padding: .5rem .75rem; text-align: left !important; white-space: normal !important; overflow-wrap: anywhere; box-shadow: none; }
    #tablaStock td[data-label]::before { content: attr(data-label); display: block; margin-bottom: .125rem; font-size: .75rem; font-weight: 400; color: #6c757d; }
    #tablaStock td:nth-child(1) { grid-column: 1 / -1; font-size: 1.05rem; font-weight: 600; padding-bottom: 0; }
    #tablaStock td:nth-child(1)::before, #tablaStock td:nth-child(2)::before { display: none; }
    #tablaStock td:nth-child(2) { grid-column: 1 / -1; padding-top: .25rem; color: #6c757d; font-size: .875rem; }
    #tablaStock td:nth-child(3) { grid-column: 1 / -1; border-bottom: 1px solid #eee; }
    #tablaStock td:nth-child(7) { font-weight: 700; color: #0d6efd; }
    #tablaStock td:nth-child(9) { display: flex; align-items: center; justify-content: flex-end; }
    #tablaStock td:nth-child(9)::before { display: none; }
    #tablaStock td:nth-child(9) .btn { width: 100%; }
    #tablaStock .dataTables_empty { grid-column: 1 / -1; padding: 1.5rem; }
    .dark-mode #tablaStock tbody tr { background: #1e2126; border-color: #444; }
    .dark-mode #tablaStock td[data-label]::before { color: #b0b0b0; }
    .dark-mode #tablaStock td:nth-child(3) { border-color: #444; }
    .pos-header h3 { font-size: 1.4rem; }
    .pos-header > .d-flex { width: 100%; }
    .pos-header > .d-flex > .btn { flex: 1; font-size: .8rem; }
    .pos-page #tabs-productos { font-size: .8rem; }
    .pos-page #buscar-producto { min-width: 0; }
    .pos-page .pos-product-list { padding: .75rem; }
    .pos-status { font-size: .8rem; }
    .cash-page > .row > .col-12 > .d-flex { flex-wrap: wrap; gap: .75rem; }
    .cash-page h2 { font-size: 1.4rem; }
    .cash-page table { table-layout: fixed; width: 100%; }
    .cash-page td, .cash-page th { overflow-wrap: anywhere; }
    .records-page-header { flex-wrap: wrap; gap: .75rem; }
    .records-page-header h2 { font-size: 1.4rem; }
    .records-page-header > .btn { width: 100%; }
    .cash-history-page > .row > .col-12 > .card > .card-body { padding: .75rem; }
    .records-table-tools { display: flex; flex-direction: column; gap: .75rem; margin-bottom: .75rem; }
    .records-table-tools .dt-buttons { display: flex; flex-wrap: wrap; gap: .375rem; }
    .records-table-tools .dt-buttons > .btn { flex: 1; margin: 0; }
    .cash-history-page .records-table-tools .dataTables_filter { text-align: left; }
    .cash-history-page .records-table-tools .dataTables_filter label { display: block; }
    .cash-history-page .records-table-tools .dataTables_filter input { display: block; width: 100%; margin: .25rem 0 0; font-size: 16px; min-height: 44px; }
    .records-table-wrap { overflow: visible; }
    .mobile-record-table, .mobile-record-table tbody { display: block; width: 100% !important; min-width: 0 !important; }
    .mobile-record-table { margin: 0 !important; border: 0; }
    .mobile-record-table thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
    .mobile-record-table tbody tr { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); margin-bottom: .875rem; border: 1px solid #dee2e6; border-radius: .75rem; overflow: hidden; background: #fff; }
    .mobile-record-table tbody td { display: block; min-width: 0; width: auto !important; border: 0; padding: .625rem .75rem !important; text-align: left !important; white-space: normal !important; overflow-wrap: anywhere; box-shadow: none; }
    .mobile-record-table td[data-label]::before { content: attr(data-label); display: block; margin-bottom: .25rem; font-size: .75rem; font-weight: 400; color: #6c757d; }
    .mobile-record-table .badge { max-width: 100%; white-space: normal; text-align: left; overflow-wrap: anywhere; }
    .mobile-record-table td.dataTables_empty { grid-column: 1 / -1; padding: 1.5rem !important; }
    .cash-history-table td:nth-child(1) { font-size: 1.05rem; }
    .cash-history-table td:nth-child(3), .cash-history-table td:nth-child(8), .cash-history-table td:nth-child(9) { grid-column: 1 / -1; }
    .cash-history-table td:nth-child(3) { border-bottom: 1px solid #eee; }
    .cash-history-table td:nth-child(9)::before { display: none; }
    .cash-history-table td:nth-child(9) > .btn { width: 100%; }
    .cash-history-page .history-summary { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .cash-history-page .history-summary > div { width: 100%; min-width: 0; }
    .history-summary h5 { font-size: clamp(.8rem, 3.5vw, 1rem); overflow-wrap: anywhere; }
    .history-summary .border { padding: .75rem !important; }
    .records-pagination .page-link { min-width: 44px; min-height: 44px; display: grid; place-items: center; }
    .records-pagination nav > div { flex-wrap: wrap; gap: .5rem; }
    .users-page .container { min-width: 0; }
    .usuarios-hero.users-page { padding: 1.25rem 0; margin-bottom: 1rem; }
    .users-page .btn-nuevo { width: 100%; }
    .users-page .card-body.p-4, .users-page .card-header.p-4 { padding: 1rem !important; }
    .users-page .card-body > .d-flex { align-items: flex-start !important; }
    .users-page .card-body > .d-flex > div:last-child { min-width: 0; overflow-wrap: anywhere; }
    .users-page .card-header h5 { font-size: 1.05rem; }
    .users-table { padding: .75rem; }
    .users-table tbody tr { grid-template-columns: minmax(0, 1fr); }
    .users-table td:nth-child(1)::before, .users-table td:last-child::before { display: none; }
    .users-table td:nth-child(1) .d-flex > .fw-semibold { min-width: 0; overflow-wrap: anywhere; }
    .users-table .user-actions { justify-content: stretch; }
    .users-table .user-actions > .btn, .users-table .user-actions > form { flex: 1; }
    .users-table .user-actions > form .btn { width: 100%; }
    .dark-mode .mobile-record-table tbody tr { background: #1e2126; border-color: #444; }
    .dark-mode .mobile-record-table td[data-label]::before { color: #b0b0b0; }
    .dark-mode .cash-history-table td:nth-child(3) { border-color: #444; }
    .dark-mode .badge-rol { color: #8ec5ff; }
    footer .container { overflow-wrap: anywhere; }
}

@media print {
    .catalog-search-tools, .catalog-mobile-sort, .mobile-cart-shortcut { display: none !important; }
}
