:root {
    --ds-primary: #0b5ed7;
    --ds-primary-dark: #073b74;
    --ds-sidebar: #092238;
    --ds-teal: #0f766e;
    --ds-bg: #f4f7fb;
    --ds-text: #172033;
    --ds-muted: #6b7280;
    --ds-border: #d9e2ef;
}
* { box-sizing: border-box; }
body { margin: 0; color: var(--ds-text); background: var(--ds-bg); font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; letter-spacing: 0; }
a { text-decoration: none; }
.auth-body { min-height: 100vh; display: grid; place-items: center; padding: 24px; background: linear-gradient(135deg, #092238 0%, #0b5ed7 55%, #0f766e 100%); }
.auth-shell { width: min(440px, 100%); }
.login-panel, .error-card { background: #fff; border-radius: 8px; padding: 32px; box-shadow: 0 24px 80px rgba(3, 23, 44, .24); }
.login-brand { display: flex; gap: 14px; align-items: center; margin-bottom: 26px; }
.brand-mark { width: 42px; height: 42px; display: inline-grid; place-items: center; border-radius: 8px; background: var(--ds-primary); color: #fff; font-weight: 800; }
.login-brand h1 { font-size: 1.35rem; margin: 0; }
.login-brand p, .page-heading p { margin: 0; color: var(--ds-muted); }
.stack-form { display: grid; gap: 16px; }
.auth-alt { margin-top: 18px; text-align: center; }
.app-shell { min-height: 100vh; display: grid; grid-template-columns: 84px minmax(0, 1fr); }
.sidebar { background: var(--ds-sidebar); color: #dce8f7; padding: 18px 14px; position: sticky; top: 0; height: 100vh; overflow-y: auto; }
.primary-sidebar { width: 84px; padding: 14px 10px; z-index: 30; overflow: visible; transition: width .18s ease; }
.super-sidebar { background: #07182a; }
.brand { display: flex; align-items: center; gap: 12px; padding: 8px 8px 18px; }
.primary-sidebar .brand { justify-content: center; padding: 4px 0 12px; }
.brand-text { font-weight: 800; font-size: 1.05rem; }
.primary-sidebar .brand-text { display: none; }
.sidebar-expanded .app-shell { grid-template-columns: 176px minmax(0, 1fr); }
.sidebar-expanded .primary-sidebar { width: 176px; }
.sidebar-expanded .primary-sidebar .brand { justify-content: flex-start; padding-left: 8px; }
.sidebar-expanded .primary-sidebar .brand-text, .sidebar-expanded .primary-nav-link span { display: inline; }
.sidebar-toggle { width: 44px; height: 44px; border: 0; border-radius: 8px; background: rgba(255,255,255,.08); color: #fff; margin: 0 auto 10px; display: grid; place-items: center; }
.nav-section { font-size: .72rem; color: #8fb2d2; margin: 18px 10px 8px; font-weight: 700; }
.nav-link { display: flex; gap: 11px; align-items: center; color: #dce8f7; padding: 10px 12px; border-radius: 8px; width: 100%; }
.nav-link:hover, .nav-link.active { color: #fff; background: rgba(255,255,255,.12); }
.nav-button { border: 0; background: transparent; text-align: left; }
.primary-nav { display: grid; gap: 6px; align-content: start; height: calc(100vh - 112px); overflow-y: auto; overflow-x: hidden; scrollbar-width: none; }
.primary-nav::-webkit-scrollbar { display: none; }
.primary-nav-link { min-height: 44px; width: 100%; border: 0; display: flex; align-items: center; justify-content: center; gap: 10px; color: #dce8f7; background: transparent; border-radius: 8px; padding: 10px; text-align: left; }
.primary-nav-link i { font-size: 1.16rem; line-height: 1; }
.primary-nav-link span { display: none; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: .9rem; font-weight: 650; }
.sidebar-expanded .primary-nav-link { justify-content: flex-start; }
.primary-nav-link:hover, .primary-nav-link.active { color: #fff; background: rgba(255,255,255,.14); }
.primary-logout { margin-top: auto; }
.secondary-sidebar { position: fixed; top: 0; left: 84px; width: min(288px, calc(100vw - 96px)); height: 100vh; z-index: 24; pointer-events: none; transition: left .18s ease; }
.sidebar-expanded .secondary-sidebar { left: 176px; }
.secondary-nav-panel { position: absolute; inset: 0 auto 0 0; width: 100%; background: #fff; border-right: 1px solid var(--ds-border); box-shadow: 20px 0 60px rgba(9,34,56,.15); transform: translateX(-12px); opacity: 0; visibility: hidden; transition: transform .18s ease, opacity .18s ease, visibility .18s ease; display: grid; grid-template-rows: auto 1fr; }
.secondary-nav-panel.active { transform: translateX(0); opacity: 1; visibility: visible; pointer-events: auto; }
.secondary-nav-head { min-height: 76px; display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 16px; border-bottom: 1px solid var(--ds-border); }
.secondary-nav-head span { display: block; color: var(--ds-muted); font-size: .76rem; text-transform: uppercase; font-weight: 800; }
.secondary-nav-head strong { display: block; font-size: 1.05rem; }
.secondary-close { width: 36px; height: 36px; border: 1px solid var(--ds-border); border-radius: 8px; background: #fff; color: var(--ds-text); display: grid; place-items: center; }
.secondary-nav-list { padding: 12px; overflow-y: auto; }
.secondary-nav-link { min-height: 44px; display: flex; align-items: center; gap: 10px; color: var(--ds-text); padding: 10px 12px; border-radius: 8px; }
.secondary-nav-link i { color: var(--ds-primary); }
.secondary-nav-link:hover, .secondary-nav-link.active { background: #edf5ff; color: var(--ds-primary); }
.nav-backdrop { position: fixed; inset: 0; z-index: 20; background: rgba(9, 34, 56, .18); opacity: 0; visibility: hidden; pointer-events: none; transition: opacity .18s ease, visibility .18s ease; }
.nav-panel-open .nav-backdrop { opacity: 1; visibility: visible; pointer-events: auto; }
.main-area { min-width: 0; display: grid; grid-template-rows: auto 1fr; }
.topbar { min-height: 74px; background: #fff; border-bottom: 1px solid var(--ds-border); display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 12px 24px; position: sticky; top: 0; z-index: 5; }
.tenant-name { font-weight: 800; }
.breadcrumb-line { display: flex; gap: 8px; color: var(--ds-muted); font-size: .86rem; flex-wrap: wrap; }
.breadcrumb-line span:not(:last-child)::after { content: "/"; margin-left: 8px; color: #a8b3c4; }
.topbar-actions { display: flex; align-items: center; gap: 12px; }
.branch-switch { width: 220px; }
.user-chip { border: 1px solid var(--ds-border); border-radius: 8px; padding: 7px 10px; background: #fff; display: grid; line-height: 1.1; min-width: 150px; }
.user-chip small { color: var(--ds-muted); }
.content { padding: 24px; }
.page-heading { display: flex; justify-content: space-between; align-items: flex-start; gap: 16px; margin-bottom: 18px; }
.page-heading h1 { font-size: 1.55rem; margin: 0 0 4px; }
.section-panel, .stat-card { background: #fff; border: 1px solid var(--ds-border); border-radius: 8px; padding: 18px; }
.stats-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; margin-bottom: 18px; }
.stat-card { display: grid; gap: 5px; }
.stat-card span { color: var(--ds-muted); font-size: .85rem; }
.stat-card strong { font-size: 1.35rem; line-height: 1.2; overflow-wrap: anywhere; }
.stat-card small { color: var(--ds-muted); }
.section-title { display: flex; justify-content: space-between; align-items: center; margin-bottom: 14px; }
.section-title h2 { font-size: 1.05rem; margin: 0; }
.quick-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
.quick-link { display: flex; align-items: center; gap: 10px; border: 1px solid var(--ds-border); border-radius: 8px; padding: 14px; color: var(--ds-text); }
.quick-link:hover { border-color: var(--ds-primary); color: var(--ds-primary); }
.filters-bar { display: grid; grid-template-columns: 1.5fr repeat(3, minmax(140px, .7fr)) auto; gap: 10px; margin-bottom: 16px; }
.audit-filters { grid-template-columns: repeat(6, minmax(120px, 1fr)) auto; }
.form-grid { display: grid; grid-template-columns: repeat(12, 1fr); gap: 16px; }
.form-grid > [class*="col-"] { grid-column: span 12; }
@media (min-width: 768px) {
    .form-grid .col-md-2 { grid-column: span 2; }
    .form-grid .col-md-3 { grid-column: span 3; }
    .form-grid .col-md-4 { grid-column: span 4; }
    .form-grid .col-md-5 { grid-column: span 5; }
    .form-grid .col-md-6 { grid-column: span 6; }
    .form-grid .col-md-8 { grid-column: span 8; }
}
.form-grid .col-12, .form-section-title, .form-actions { grid-column: 1 / -1; }
.form-section-title { font-size: 1.05rem; margin: 10px 0 0; border-top: 1px solid var(--ds-border); padding-top: 16px; }
.form-actions { display: flex; justify-content: flex-end; gap: 10px; margin-top: 6px; }
.table-actions { white-space: nowrap; }
.empty-state { text-align: center; color: var(--ds-muted); padding: 28px !important; }
.check-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: 8px; }
.check-item { border: 1px solid var(--ds-border); border-radius: 8px; padding: 10px; background: #fbfdff; }
.permission-table th, .permission-table td { min-width: 98px; text-align: center; }
.permission-table th:first-child { text-align: left; min-width: 180px; }
.permission-tools { display: flex; justify-content: flex-end; color: var(--ds-muted); margin: 12px 0; }
.action-details { display: inline-block; position: relative; }
.action-details summary { list-style: none; cursor: pointer; }
.action-details summary::-webkit-details-marker { display: none; }
.mini-form { position: absolute; right: 0; top: 38px; z-index: 10; width: 250px; display: grid; gap: 8px; padding: 12px; background: #fff; border: 1px solid var(--ds-border); border-radius: 8px; box-shadow: 0 16px 40px rgba(9,34,56,.14); text-align: left; }
.mini-form.wide { width: 320px; }
pre { white-space: pre-wrap; background: #f7fafc; border: 1px solid var(--ds-border); border-radius: 8px; padding: 10px; max-width: 520px; }
.error-card { text-align: center; }
.error-code { font-size: 3rem; font-weight: 800; color: var(--ds-primary); }
@media (max-width: 980px) {
    .app-shell, .sidebar-expanded .app-shell { grid-template-columns: 76px minmax(0, 1fr); }
    .primary-sidebar, .sidebar-expanded .primary-sidebar { width: 76px; padding: 10px 8px; position: sticky; height: 100vh; }
    .sidebar-expanded .primary-sidebar .brand-text, .sidebar-expanded .primary-nav-link span { display: none; }
    .sidebar-expanded .primary-sidebar .brand { justify-content: center; padding-left: 0; }
    .secondary-sidebar, .sidebar-expanded .secondary-sidebar { left: 0; width: min(320px, 88vw); z-index: 45; transform: translateX(-100%); transition: transform .2s ease; }
    .nav-panel-open .secondary-sidebar { transform: translateX(0); }
    .secondary-nav-panel { box-shadow: 20px 0 60px rgba(9,34,56,.24); }
    .nav-panel-open { overflow: hidden; }
    .topbar, .page-heading, .topbar-actions { align-items: stretch; flex-direction: column; }
    .branch-switch, .user-chip { width: 100%; }
    .stats-grid, .quick-grid { grid-template-columns: 1fr; }
    .filters-bar, .audit-filters { grid-template-columns: 1fr; }
    .content { padding: 16px; }
}
.btn { border-radius: 8px; }
.form-control, .form-select { border-radius: 8px; }
.skeleton { min-height: 18px; border-radius: 6px; background: linear-gradient(90deg, #eef3f8, #f8fbff, #eef3f8); background-size: 200% 100%; animation: shimmer 1.2s infinite; }
@keyframes shimmer { to { background-position-x: -200%; } }

/* Etapa 2: configuracion operativa y catalogo */
.heading-actions { display: flex; gap: 8px; flex-wrap: wrap; justify-content: flex-end; }
.two-column { display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(280px, .65fr); gap: 16px; align-items: start; }
.color-dot { width: 12px; height: 12px; display: inline-block; border-radius: 50%; margin-right: 8px; vertical-align: -1px; border: 1px solid rgba(9,34,56,.16); }
.schedule-table th, .schedule-table td { vertical-align: middle; }
.time-pair { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; min-width: 180px; }
.branch-config-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); gap: 12px; }
.branch-config { border: 1px solid var(--ds-border); border-radius: 8px; padding: 14px; background: #fbfdff; display: grid; gap: 10px; }
.branch-config h3 { font-size: .98rem; margin: 0; }
.area-heading { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 12px; }
.table-visual-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(112px, 1fr)); gap: 10px; }
.table-tile { min-height: 104px; border: 1px solid var(--ds-border); border-radius: 8px; background: #fff; padding: 12px; display: grid; align-content: space-between; gap: 8px; }
.table-tile strong { font-size: 1.05rem; }
.table-tile small { color: var(--ds-muted); }
.table-tile.libre { border-left: 4px solid #198754; }
.table-tile.ocupada, .table-tile.pendiente_pago { border-left: 4px solid #dc3545; }
.table-tile.reservada { border-left: 4px solid #f59f00; }
.table-tile.fuera_servicio { border-left: 4px solid #6c757d; }
.product-filters { grid-template-columns: 1fr 1.3fr repeat(5, minmax(128px, .75fr)) auto; }
.bulk-bar { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; margin-bottom: 12px; padding-bottom: 12px; border-bottom: 1px solid var(--ds-border); }
.bulk-bar .form-select { max-width: 190px; }
.bulk-bar label { display: inline-flex; align-items: center; gap: 5px; color: var(--ds-muted); font-size: .9rem; }
.product-cell { display: flex; align-items: center; gap: 10px; min-width: 260px; }
.product-cell img, .thumb-preview { width: 46px; height: 46px; border-radius: 8px; object-fit: cover; border: 1px solid var(--ds-border); background: #f8fafc; }
.product-preview { width: 120px; height: 120px; object-fit: cover; border-radius: 8px; border: 1px solid var(--ds-border); background: #f8fafc; }
.channel-icon { width: 30px; height: 30px; display: inline-grid; place-items: center; border-radius: 8px; margin-right: 4px; border: 1px solid var(--ds-border); color: var(--ds-muted); background: #fff; }
.channel-icon.on { color: #0f766e; background: #ecfdf5; border-color: #a7f3d0; }
.channel-icon.off { color: #9ca3af; background: #f3f4f6; }
.product-tabs { padding-top: 16px; }
.variant-row, .option-row { display: grid; grid-template-columns: 1fr 1.4fr 1fr .9fr .7fr auto 1fr; gap: 8px; align-items: center; margin-bottom: 8px; }
.option-row { grid-template-columns: 1.4fr 1fr .8fr .65fr auto 1fr; }
.combo-builder { display: grid; gap: 12px; }
.combo-group-box { border: 1px solid var(--ds-border); border-radius: 8px; padding: 14px; background: #fbfdff; display: grid; grid-template-columns: minmax(220px, 1.4fr) .45fr .45fr auto .45fr auto; gap: 8px; align-items: center; }
.combo-options-list { grid-column: 1 / -1; display: grid; gap: 8px; }
.combo-options { display: grid; grid-template-columns: minmax(220px, 1fr) .55fr .55fr auto; gap: 8px; align-items: center; }
.product-detail { display: grid; grid-template-columns: 180px minmax(0, 1fr); gap: 18px; align-items: start; }
.product-detail img { width: 180px; height: 180px; object-fit: cover; border-radius: 8px; border: 1px solid var(--ds-border); background: #f8fafc; }
.summary-box { min-height: 120px; border: 1px dashed var(--ds-border); border-radius: 8px; padding: 14px; color: var(--ds-muted); background: #fbfdff; }
.compact { grid-template-columns: repeat(auto-fit, minmax(112px, 1fr)); }
@media (max-width: 1180px) {
    .product-filters { grid-template-columns: 1fr 1fr; }
    .variant-row, .option-row, .combo-group-box, .combo-options { grid-template-columns: 1fr; }
}
@media (max-width: 820px) {
    .two-column, .product-detail { grid-template-columns: 1fr; }
    .product-detail img { width: 100%; max-width: 240px; }
    .time-pair { grid-template-columns: 1fr; }
}

/* Etapa 3: abastecimiento, inventario, recetas y costos */
.inventory-filters { grid-template-columns: minmax(180px, .8fr) minmax(220px, 1.2fr) repeat(3, minmax(130px, .7fr)) auto; }
.kardex-filters { grid-template-columns: minmax(160px, .85fr) minmax(160px, .85fr) minmax(220px, 1.4fr) minmax(160px, .85fr) 150px 150px auto; }
.inventory-stats .stat-card:nth-child(2) { border-left: 4px solid #f59f00; }
.inventory-stats .stat-card:nth-child(3) { border-left: 4px solid #dc3545; }
.inventory-stats .stat-card:nth-child(4) { border-left: 4px solid #0f766e; }
.inventory-quick { grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); }
.inventory-inline-form { display: grid; grid-template-columns: 1.2fr 1fr .75fr .75fr 1fr auto auto; gap: 8px; align-items: center; margin-top: 14px; padding-top: 14px; border-top: 1px solid var(--ds-border); }
.inventory-two-fields { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.inventory-lines-title { margin-top: 18px; }
.inventory-lines, .recipe-lines { display: grid; gap: 10px; }
.inventory-line { display: grid; grid-template-columns: minmax(220px, 1.5fr) minmax(150px, .9fr) 120px 96px 110px 96px 96px 110px 145px minmax(140px, 1fr) 42px; gap: 8px; align-items: center; padding: 10px; border: 1px solid var(--ds-border); border-radius: 8px; background: #fbfdff; }
.inventory-line .btn, .recipe-line .btn { width: 42px; height: 38px; display: inline-grid; place-items: center; }
.inventory-totals { display: grid; grid-template-columns: repeat(4, minmax(160px, 1fr)); gap: 10px; align-items: end; margin-top: 16px; padding-top: 16px; border-top: 1px solid var(--ds-border); }
.recipe-form { display: grid; gap: 14px; }
.recipes-layout { grid-template-columns: minmax(0, 1fr) minmax(360px, .75fr); }
.recipe-line { display: grid; grid-template-columns: minmax(180px, 1.3fr) 120px 92px 110px 42px; gap: 8px; align-items: center; padding: 10px; border: 1px solid var(--ds-border); border-radius: 8px; background: #fbfdff; }
.inventory-document-form .form-grid { margin-bottom: 10px; }
.inventory-document-form input[type="number"] { text-align: right; }
.table td small { color: var(--ds-muted); }
@media (max-width: 1280px) {
    .inventory-line { grid-template-columns: minmax(220px, 1.3fr) minmax(150px, 1fr) repeat(4, minmax(96px, .7fr)) 42px; }
    .inventory-line input[name="lot_code[]"], .inventory-line input[name="expiration_date[]"], .inventory-line input[name="detail_notes[]"] { grid-column: span 2; }
    .inventory-line input[type="hidden"] { display: none; }
    .kardex-filters { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 980px) {
    .inventory-filters, .kardex-filters, .inventory-inline-form, .inventory-totals, .recipe-line, .recipes-layout { grid-template-columns: 1fr; }
    .inventory-line { grid-template-columns: 1fr; }
    .inventory-line .btn, .recipe-line .btn { width: 100%; }
    .inventory-two-fields { grid-template-columns: 1fr; }
}

/* Etapa 4: POS tactil, mesas operativas, pedidos y precuentas */
.pos-shell { display: grid; grid-template-columns: minmax(240px, .72fr) minmax(420px, 1.55fr) minmax(320px, .88fr); gap: 14px; align-items: start; }
.pos-left, .pos-center, .pos-right { min-width: 0; }
.pos-left, .pos-right { display: grid; gap: 14px; }
.pos-toolbar { display: grid; grid-template-columns: repeat(auto-fit, minmax(112px, 1fr)); gap: 8px; }
.pos-toolbar .btn, .pos-actions .btn, .pos-product-card, .pos-table { min-height: 44px; }
.pos-panel-title { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.pos-panel-title h2, .pos-order-head h2, .pos-total strong { margin: 0; font-size: 1.05rem; }
.pos-table-list { display: grid; gap: 12px; }
.pos-table-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(104px, 1fr)); gap: 8px; }
.pos-table { display: grid; gap: 5px; align-content: center; color: var(--ds-text); border: 1px solid var(--ds-border); border-radius: 8px; padding: 10px; background: #fff; min-height: 86px; }
.pos-table summary { list-style: none; cursor: pointer; display: grid; gap: 4px; }
.pos-table summary::-webkit-details-marker { display: none; }
.pos-table form { display: grid; gap: 8px; margin-top: 8px; }
.pos-table small, .pos-order-head small, .pos-order-item small { color: var(--ds-muted); }
.pos-table.libre { border-left: 4px solid #198754; background: #f6fff9; }
.pos-table.ocupada { border-left: 4px solid #dc3545; background: #fff8f8; }
.pos-table.pendiente_pago { border-left: 4px solid #f59f00; background: #fffbeb; }
.pos-table.reservada { border-left: 4px solid #0b5ed7; background: #f3f7ff; }
.pos-table.fuera_servicio { border-left: 4px solid #6c757d; background: #f8f9fa; }
.pos-categories { display: flex; flex-wrap: wrap; gap: 7px; }
.pos-search { display: grid; grid-template-columns: minmax(0, 1fr) 46px; gap: 8px; margin-bottom: 12px; }
.pos-products { display: grid; grid-template-columns: repeat(auto-fill, minmax(142px, 1fr)); gap: 10px; }
.pos-product-card { border: 1px solid var(--ds-border); border-radius: 8px; background: #fff; padding: 10px; display: grid; grid-template-rows: 96px auto auto auto; grid-auto-rows: auto; gap: 6px; text-align: left; color: var(--ds-text); }
.pos-product-card:hover, .pos-product-card:focus { border-color: var(--ds-primary); box-shadow: 0 10px 26px rgba(11,94,215,.12); outline: 0; }
.pos-product-card img { width: 100%; height: 96px; object-fit: cover; border-radius: 8px; border: 1px solid var(--ds-border); background: #f8fafc; }
.pos-product-card strong { line-height: 1.2; min-height: 2.4em; overflow-wrap: anywhere; }
.pos-product-card span { font-weight: 800; color: #0f766e; }
.pos-product-card small { color: var(--ds-muted); min-height: 1.2em; }
.pos-product-card.is-unavailable { opacity: .72; cursor: not-allowed; background: #f8fafc; border-style: dashed; }
.pos-product-card.is-unavailable:hover { border-color: var(--ds-border); box-shadow: none; }
.pos-product-card .pos-stock-state { color: #b42318; font-size: .78rem; display: flex; align-items: center; gap: 5px; }
.product-inventory-pending .section-title p { margin: 3px 0 0; color: var(--ds-muted); }
[data-direct-inventory-settings][hidden] { display: none !important; }
.pos-right { background: #fff; border: 1px solid var(--ds-border); border-radius: 8px; padding: 14px; position: sticky; top: 90px; }
.pos-order-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 8px; padding-bottom: 12px; border-bottom: 1px solid var(--ds-border); }
.pos-order-items { display: grid; gap: 8px; min-height: 220px; align-content: start; max-height: calc(100vh - 345px); overflow: auto; padding-right: 2px; }
.pos-order-item { display: grid; grid-template-columns: minmax(0, 1fr) auto auto; gap: 8px; align-items: center; border: 1px solid var(--ds-border); border-radius: 8px; padding: 10px; background: #fbfdff; }
.pos-order-item.nuevo { border-left: 4px solid #0b5ed7; }
.pos-order-item strong { overflow-wrap: anywhere; }
.pos-total { display: flex; justify-content: space-between; align-items: baseline; border-top: 1px solid var(--ds-border); padding-top: 12px; }
.pos-total span { color: var(--ds-muted); }
.pos-total strong { font-size: 1.55rem; color: #0f766e; }
.pos-actions { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.pos-actions form { display: grid; gap: 8px; align-content: start; }
.pos-connection { color: var(--ds-muted); font-size: .84rem; text-align: center; }
.pos-option-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 8px; }
.pos-option { border: 1px solid var(--ds-border); border-radius: 8px; padding: 10px; background: #fbfdff; display: flex; gap: 8px; align-items: center; min-height: 44px; }
.pos-detail-grid { grid-template-columns: minmax(0, 1fr) minmax(300px, 380px); }
.action-cell { min-width: 112px; }
.pos-timeline { margin-top: 14px; padding-top: 14px; border-top: 1px solid var(--ds-border); display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.pos-timeline h3 { width: 100%; font-size: .98rem; margin: 0; }
.prebill-print { max-width: 680px; margin: 0 auto; }
.prebill-print h1 { font-size: 1.35rem; }
.empty-state.compact { padding: 8px !important; margin: 0; text-align: left; }
@media print {
    .sidebar, .primary-sidebar, .secondary-sidebar, .nav-backdrop, .topbar, .prebill-print .btn { display: none !important; }
    .app-shell { display: block; }
    .content { padding: 0; }
    .prebill-print { border: 0; }
}
@media (max-width: 1320px) {
    .pos-shell { grid-template-columns: minmax(220px, .72fr) minmax(380px, 1.28fr); }
    .pos-right { grid-column: 1 / -1; position: static; }
    .pos-order-items { max-height: none; }
}
@media (max-width: 860px) {
    .pos-shell, .pos-detail-grid { grid-template-columns: 1fr; }
    .pos-products { grid-template-columns: repeat(auto-fill, minmax(128px, 1fr)); }
    .pos-product-card { grid-template-rows: 86px auto auto auto; }
    .pos-product-card img { height: 86px; }
    .pos-actions, .pos-toolbar { grid-template-columns: 1fr; }
    .mini-form { position: fixed; left: 16px; right: 16px; top: auto; bottom: 16px; width: auto; }
}

/* Etapa 6: delivery y repartidores */
.delivery-kanban { display: grid; grid-template-columns: repeat(7, minmax(220px, 1fr)); gap: 12px; align-items: start; overflow-x: auto; padding-bottom: 8px; }
.delivery-column { background: #eef3f8; border: 1px solid var(--ds-border); border-radius: 8px; padding: 10px; min-height: 220px; }
.delivery-column-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 10px; }
.delivery-column-head span { min-width: 28px; min-height: 28px; display: inline-grid; place-items: center; border-radius: 8px; background: #fff; border: 1px solid var(--ds-border); font-weight: 800; }
.delivery-card, .delivery-mobile-card { display: grid; gap: 8px; background: #fff; border: 1px solid var(--ds-border); border-left: 4px solid var(--ds-primary); border-radius: 8px; padding: 10px; margin-bottom: 10px; }
.delivery-card-head, .delivery-card-foot { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.delivery-card small, .delivery-mobile-card small { color: var(--ds-muted); overflow-wrap: anywhere; }
.delivery-create-form { display: grid; gap: 0; }
.delivery-lines { display: grid; gap: 8px; }
.delivery-line { display: grid; grid-template-columns: minmax(220px, 1.25fr) 120px minmax(160px, .8fr) 42px; gap: 8px; align-items: center; }
.delivery-line .btn { width: 42px; height: 38px; display: inline-grid; place-items: center; }
.delivery-quote { border: 1px dashed var(--ds-border); border-radius: 8px; padding: 12px; background: #fbfdff; color: var(--ds-muted); }
.delivery-mobile-list { display: grid; gap: 12px; }
.delivery-mobile-actions { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.delivery-mobile-actions form, .delivery-mobile-actions .btn { display: grid; }
.rider-route { max-width: 760px; margin-inline: auto; }
.route-print { padding: 24px; color: #111827; font-family: Arial, sans-serif; }
.route-print h1 { margin: 0; font-size: 22px; }
.route-print table { width: 100%; border-collapse: collapse; margin-top: 18px; }
.route-print th, .route-print td { border: 1px solid #111827; padding: 8px; vertical-align: top; font-size: 12px; }
@media print {
    .print-body { background: #fff; }
}
@media (max-width: 1280px) {
    .delivery-kanban { grid-template-columns: repeat(4, minmax(220px, 1fr)); }
}
@media (max-width: 860px) {
    .delivery-kanban, .delivery-line { grid-template-columns: 1fr; }
    .delivery-line .btn { width: 100%; }
}

/* Etapa 5: KDS, despacho y caja */
.operational-body, .operational-shell { min-height: 100vh; background: #101820; color: #eef4f8; }
.kds-screen, .dispatch-screen { min-height: 100vh; padding: 14px; display: grid; grid-template-rows: auto minmax(0, 1fr) auto; gap: 14px; }
.kds-topbar { min-height: 70px; display: flex; align-items: center; justify-content: space-between; gap: 14px; background: #172431; border: 1px solid rgba(255,255,255,.1); border-radius: 8px; padding: 12px 14px; }
.kds-topbar h1 { margin: 0; font-size: clamp(1.2rem, 2vw, 1.75rem); }
.kds-topbar p { margin: 3px 0 0; color: #9fb0bf; }
.kds-top-actions { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; justify-content: flex-end; }
.kds-top-actions .form-select { width: min(280px, 58vw); }
.kds-columns { display: grid; grid-template-columns: repeat(4, minmax(220px, 1fr)); gap: 12px; min-height: 0; }
.kds-column { min-width: 0; background: #1d2a36; border: 1px solid rgba(255,255,255,.1); border-radius: 8px; padding: 10px; display: grid; grid-template-rows: auto minmax(0, 1fr); }
.kds-column h2 { display: flex; justify-content: space-between; align-items: center; margin: 0 0 10px; font-size: .96rem; color: #dce7ee; text-transform: uppercase; letter-spacing: 0; }
.kds-column h2 span { min-width: 30px; height: 30px; border-radius: 999px; display: inline-grid; place-items: center; background: rgba(255,255,255,.12); }
.kds-card-list { display: grid; gap: 10px; align-content: start; overflow: auto; padding-right: 2px; }
.kds-card { color: #15202b; background: #f8fbfd; border: 1px solid rgba(255,255,255,.18); border-left: 5px solid #2f80ed; border-radius: 8px; padding: 10px; display: grid; gap: 9px; box-shadow: 0 16px 34px rgba(0,0,0,.18); }
.kds-card.atencion { border-left-color: #f59f00; }
.kds-card.retrasado, .kds-card.critico, .kds-card.priority-1 { border-left-color: #dc3545; }
.kds-card.priority-1 { box-shadow: 0 0 0 2px rgba(220,53,69,.2), 0 16px 34px rgba(0,0,0,.18); }
.kds-card-head, .dispatch-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 10px; }
.kds-card-head strong, .dispatch-head strong { display: block; font-size: 1.08rem; overflow-wrap: anywhere; }
.kds-card-head span, .dispatch-head small { display: block; color: #667382; font-size: .82rem; }
.kds-card-head time { font-size: 1.15rem; font-weight: 800; color: #0b5ed7; min-width: 62px; text-align: right; font-variant-numeric: tabular-nums; }
.kds-meta { display: flex; flex-wrap: wrap; gap: 6px; }
.kds-meta span, .station-pills span { background: #eef3f8; border: 1px solid #d7e1ea; color: #405164; border-radius: 999px; padding: 3px 8px; font-size: .78rem; }
.kds-items { display: grid; gap: 7px; }
.kds-item { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 8px; align-items: center; background: #fff; border: 1px solid #dce6ee; border-radius: 8px; padding: 8px; }
.kds-item.listo, .kds-item.entregado { background: #ecfdf5; border-color: #b7ebcd; }
.kds-item.anulado { opacity: .65; text-decoration: line-through; }
.kds-item small { display: block; color: #586979; margin-top: 2px; overflow-wrap: anywhere; }
.kds-actions, .dispatch-actions { display: flex; gap: 6px; flex-wrap: wrap; align-items: center; }
.kds-actions form { display: inline-flex; }
.kds-actions .btn, .dispatch-actions .btn { min-height: 38px; }
.kds-card-badges { display: flex; gap: 6px; align-items: center; flex-wrap: wrap; }
.kds-priority-badge, .kds-order-state { display: inline-flex; align-items: center; gap: 5px; border: 1px solid #cfd9e3; border-radius: 999px; padding: 4px 8px; background: #eef3f8; color: #405164; font-size: .76rem; font-weight: 700; }
.kds-priority-badge.priority-2 { background: #fff7df; border-color: #e9bd55; color: #7a4b00; }
.kds-priority-badge.priority-1 { background: #fff0f1; border-color: #e1848c; color: #a01924; }
.kds-priority-button { width: 40px; min-width: 40px; height: 40px; padding: 0; display: inline-grid; place-items: center; border: 1px solid #c9d5df; background: #edf2f6; color: #405164; }
.kds-priority-button.priority-2 { background: #f9c74f; border-color: #d99e18; color: #3f2a00; }
.kds-priority-button.priority-1 { background: #dc3545; border-color: #b62331; color: #fff; }
.kds-priority-button:focus-visible { outline: 3px solid #74b4ff; outline-offset: 2px; }
.kds-final-summary { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px; margin: 0; }
.kds-final-summary div { min-width: 0; padding: 7px; border: 1px solid #dce6ee; border-radius: 6px; background: #f4f8fb; }
.kds-final-summary dt { color: #667382; font-size: .68rem; text-transform: uppercase; }
.kds-final-summary dd { margin: 2px 0 0; font-size: .78rem; font-weight: 700; overflow-wrap: anywhere; }
.kds-modal { color: var(--ds-text); }
.kds-modal .modal-title { margin: 0; font-size: 1.1rem; }
.kds-modal .modal-header small { color: var(--ds-muted); }
.kds-modal .form-label { display: grid; gap: 6px; }
.kds-modal textarea { min-height: 94px; resize: vertical; }
.kds-empty { color: #aebdca; background: rgba(255,255,255,.07); border: 1px dashed rgba(255,255,255,.18); border-radius: 8px; padding: 18px; text-align: center; }
.kds-status { color: #9fb0bf; font-size: .84rem; text-align: right; min-height: 20px; }
.dispatch-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 12px; align-content: start; overflow: auto; }
.dispatch-card { background: #f8fbfd; color: #15202b; border: 1px solid rgba(255,255,255,.14); border-left: 5px solid #f59f00; border-radius: 8px; padding: 12px; display: grid; gap: 10px; box-shadow: 0 16px 34px rgba(0,0,0,.16); }
.dispatch-card.completo { border-left-color: #198754; }
.dispatch-head span { border-radius: 999px; padding: 4px 8px; background: #eef3f8; color: #405164; font-size: .78rem; text-transform: capitalize; }
.station-pills { display: flex; gap: 6px; flex-wrap: wrap; }
.dispatch-items { margin: 0; padding-left: 18px; display: grid; gap: 5px; }
.dispatch-items small { color: #667382; }
.dispatch-check-layout { display: grid; grid-template-columns: minmax(0, 1fr) minmax(280px, 360px); gap: 14px; align-items: start; }
.cash-total { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 4px 12px; align-items: end; padding-bottom: 14px; margin-bottom: 14px; border-bottom: 1px solid var(--ds-border); }
.cash-total span { color: var(--ds-muted); }
.cash-total strong { font-size: clamp(1.2rem, 2.4vw, 1.85rem); color: #0f766e; overflow-wrap: anywhere; }
.cash-charge-layout { grid-template-columns: minmax(360px, 1fr) minmax(300px, 420px); }
.payment-lines { display: grid; gap: 9px; margin-bottom: 12px; }
.payment-line { display: grid; grid-template-columns: minmax(130px, 1fr) 115px 115px minmax(120px, .8fr) minmax(120px, .8fr) 42px; gap: 8px; align-items: center; padding: 10px; border: 1px solid var(--ds-border); border-radius: 8px; background: #fbfdff; }
.payment-line .btn { width: 42px; height: 38px; display: inline-grid; place-items: center; }
.cash-fast-buttons { display: flex; gap: 7px; flex-wrap: wrap; margin-bottom: 12px; }
.cash-change { display: flex; justify-content: space-between; gap: 12px; margin: 10px 0; padding: 10px; background: #eef7f3; border: 1px solid #cce8dc; border-radius: 8px; }
.split-row, .payment-history { border: 1px solid var(--ds-border); border-radius: 8px; padding: 10px; background: #fbfdff; margin-bottom: 8px; }
.split-row { display: grid; gap: 2px; }
.split-row small { color: var(--ds-muted); }
.payment-history summary { cursor: pointer; font-weight: 700; }
.payment-history form { display: grid; gap: 8px; margin-top: 10px; }
.stack-form { display: grid; gap: 8px; }
.cash-denominations, .denomination-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)); gap: 8px; }
.cash-denomination, .denomination-grid label { display: grid; grid-template-columns: 58px minmax(0, 1fr); gap: 8px; align-items: center; padding: 8px; border: 1px solid var(--ds-border); border-radius: 8px; background: #fbfdff; }
.ticket, .thermal-ticket { width: 302px; max-width: 100%; margin: 18px auto; background: #fff; color: #111; font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: 12px; line-height: 1.35; padding: 12px; border: 1px solid #d8d8d8; }
.ticket h1, .ticket h2, .thermal-ticket h1, .thermal-ticket h2 { text-align: center; font-size: 14px; margin: 0 0 6px; }
.ticket-center { text-align: center; }
.ticket-center img { max-width: 96px; max-height: 72px; object-fit: contain; margin-bottom: 6px; }
.ticket-line, .thermal-ticket .line { display: flex; justify-content: space-between; gap: 8px; }
.ticket-line span { overflow-wrap: anywhere; }
.ticket-line.total { font-size: 14px; font-weight: 800; }
.ticket hr, .thermal-ticket hr { border: 0; border-top: 1px dashed #555; margin: 8px 0; }
.print-button, .thermal-print-actions .btn { display: inline-flex; align-items: center; justify-content: center; min-height: 38px; border: 1px solid #111; background: #fff; color: #111; border-radius: 8px; padding: 6px 10px; }
.thermal-print-actions { display: flex; justify-content: center; gap: 8px; margin: 14px 0; }
.print-body { min-height: 100vh; padding: 14px; background: #edf2f6; }
.thermal-preview { width: min(100%, 720px); margin: 0 auto; }
.thermal-actions { display: flex; flex-wrap: wrap; justify-content: center; gap: 8px; margin: 0 auto 12px; }
.thermal-actions a, .thermal-actions button, .thermal-share-form button { min-height: 40px; border: 1px solid #b9c7d5; border-radius: 6px; padding: 8px 12px; background: #fff; color: #172033; font: inherit; cursor: pointer; }
.thermal-actions button:first-child, .thermal-share-form button { border-color: #0b5ed7; background: #0b5ed7; color: #fff; }
.thermal-share-form { display: grid; grid-template-columns: minmax(210px, 1fr) auto; gap: 8px; align-items: end; width: min(100%, 560px); margin: 0 auto 14px; padding: 10px; border: 1px solid #cbd7e4; border-radius: 8px; background: #fff; }
.thermal-share-form label { display: grid; gap: 4px; font-size: .82rem; font-weight: 700; }
.thermal-share-form input { width: 100%; min-height: 40px; border: 1px solid #b9c7d5; border-radius: 6px; padding: 7px 9px; font: inherit; }
.thermal-share-form small { grid-column: 1 / -1; color: #637184; }
.thermal-document { margin: 0 auto; padding: 3mm; background: #fff; color: #111; border: 1px solid #d0d0d0; font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: 10px; line-height: 1.35; }
.thermal-document.thermal-80 { width: 76mm; }
.thermal-document.thermal-58 { width: 54mm; }
.thermal-center { text-align: center; }
.thermal-center h1 { margin: 0 0 4px; font-size: 14px; }
.thermal-center p { margin: 1px 0; }
.thermal-center img { max-width: 28mm; max-height: 18mm; object-fit: contain; filter: grayscale(1); }
.thermal-legal, .thermal-reprint { display: block; margin-top: 6px; font-size: 9px; }
.thermal-reprint { font-size: 12px; }
.thermal-separator { border-top: 1px dashed #111; margin: 7px 0; }
.thermal-meta-list { display: grid; gap: 2px; margin: 0; }
.thermal-meta-list div, .thermal-line { display: flex; justify-content: space-between; gap: 8px; min-width: 0; }
.thermal-meta-list dt { font-weight: 400; }
.thermal-meta-list dd { margin: 0; text-align: right; overflow-wrap: anywhere; }
.thermal-items { display: grid; gap: 7px; }
.thermal-item { break-inside: avoid; }
.thermal-item small { display: block; overflow-wrap: anywhere; }
.thermal-line span { min-width: 0; overflow-wrap: anywhere; }
.thermal-line strong { flex: 0 0 auto; }
.thermal-total { margin-top: 4px; padding-top: 4px; border-top: 1px solid #111; font-size: 12px; }
@media print {
    body { background: #fff !important; }
    .thermal-print-actions, .print-button, .thermal-actions, .thermal-share-form { display: none !important; }
    .ticket, .thermal-ticket { width: 80mm; border: 0; padding: 0; margin: 0; }
    .print-body { padding: 0; }
    .thermal-preview { width: auto; margin: 0; }
    .thermal-document { border: 0; margin: 0; padding: 0; }
}
@media (max-width: 1280px) {
    .kds-columns { grid-template-columns: repeat(2, minmax(260px, 1fr)); }
    .payment-line { grid-template-columns: 1fr 1fr; }
    .payment-line .btn { width: 100%; }
}
@media (max-width: 820px) {
    .kds-screen, .dispatch-screen { padding: 8px; }
    .kds-topbar { align-items: stretch; flex-direction: column; }
    .kds-top-actions { justify-content: stretch; }
    .kds-top-actions .form-select, .kds-top-actions .btn { width: 100%; }
    .kds-columns, .dispatch-check-layout, .cash-charge-layout { grid-template-columns: 1fr; }
    .kds-final-summary { grid-template-columns: 1fr; }
    .kds-modal .modal-dialog { align-items: flex-end; min-height: calc(100% - 12px); margin-bottom: 6px; }
    .dispatch-grid { grid-template-columns: 1fr; }
    .cash-total, .payment-line, .cash-change { grid-template-columns: 1fr; }
    .thermal-share-form { grid-template-columns: 1fr; }
    .thermal-share-form small { grid-column: auto; }
}

.cash-page-heading { max-width: 900px; margin: 0 auto 12px; align-items: center; }
.cash-page-heading h1 { font-size: 1.18rem; }
.cash-alert { max-width: 520px; margin: 0 auto 12px; }
.cash-workspace { display: grid; grid-template-columns: minmax(420px, 520px) minmax(240px, 340px); gap: 14px; align-items: start; justify-content: center; }
.cash-calculator, .cash-side-panel { background: #fff; border: 1px solid var(--ds-border); border-radius: 8px; box-shadow: 0 18px 44px rgba(9,34,56,.09); }
.cash-calculator { width: min(520px, 100%); padding: 14px; }
.cash-side-panel { padding: 12px; }
.cash-calculator-head { display: grid; gap: 10px; padding-bottom: 12px; margin-bottom: 12px; border-bottom: 1px solid var(--ds-border); }
.cash-calculator-head span { display: block; color: var(--ds-muted); font-size: .72rem; font-weight: 800; text-transform: uppercase; }
.cash-calculator-head strong { display: block; font-size: 1.05rem; line-height: 1.15; }
.cash-calculator-head small { color: var(--ds-muted); overflow-wrap: anywhere; }
.cash-calculator-head dl { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 7px; margin: 0; }
.cash-calculator-head dt { color: var(--ds-muted); font-size: .74rem; font-weight: 700; }
.cash-calculator-head dd { margin: 0; font-weight: 800; color: var(--ds-text); overflow-wrap: anywhere; }
.cash-calculator-head [data-cash-balance] { color: #0f766e; }
.cash-secondary { border: 1px solid var(--ds-border); border-radius: 8px; background: #f8fbfd; padding: 8px 10px; }
.cash-secondary summary { cursor: pointer; color: var(--ds-text); font-size: .9rem; font-weight: 750; }
.cash-method-tabs { display: grid; grid-template-columns: repeat(auto-fit, minmax(82px, 1fr)); gap: 6px; margin: 10px 0 12px; }
.cash-method-tabs button { min-height: 38px; border: 1px solid var(--ds-border); border-radius: 8px; background: #f8fbfd; color: var(--ds-text); font-weight: 750; font-size: .86rem; }
.cash-method-tabs button.active { background: #123e63; border-color: #123e63; color: #fff; }
.cash-panel { display: none; }
.cash-panel.active { display: grid; gap: 9px; }
.cash-input-label { color: var(--ds-muted); font-size: .82rem; font-weight: 800; }
.cash-display-input { width: 100%; min-height: 58px; border: 1px solid var(--ds-border); border-radius: 8px; background: #fbfdff; color: #102033; font-size: 2rem; font-weight: 850; text-align: right; padding: 8px 12px; font-variant-numeric: tabular-nums; }
.cash-display-input:focus { outline: 3px solid rgba(11,94,215,.14); border-color: var(--ds-primary); }
.cash-change-row { display: flex; justify-content: space-between; align-items: center; gap: 12px; padding: 9px 10px; border: 1px solid #b9e3d3; border-radius: 8px; background: #ecfdf5; }
.cash-change-row span { color: #416258; font-weight: 750; }
.cash-change-row strong { color: #0f766e; font-size: 1.28rem; font-variant-numeric: tabular-nums; }
.cash-quick-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 7px; }
.cash-quick-grid button, .cash-keypad button { border: 1px solid var(--ds-border); border-radius: 8px; background: #fff; color: var(--ds-text); font-weight: 800; min-height: 44px; }
.cash-quick-grid button:hover, .cash-keypad button:hover { border-color: var(--ds-primary); color: var(--ds-primary); background: #f4f9ff; }
.cash-keypad { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 7px; }
.cash-keypad button { min-height: 48px; font-size: 1.05rem; }
.cash-keypad [data-cash-key="exact"] { grid-column: span 2; background: #eef7f3; border-color: #cce8dc; color: #0f766e; }
.cash-confirm { width: 100%; min-height: 46px; margin-top: 12px; font-weight: 800; }
.cash-result { display: block; min-height: 20px; margin-top: 8px; font-weight: 650; }
.cash-success-actions { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 8px; }
.cash-success-actions .btn { flex: 1 1 150px; }
.payment-lines.compact { display: grid; grid-template-columns: none; gap: 8px; margin-bottom: 8px; }
.payment-line.compact { display: grid; grid-template-columns: minmax(120px, 1fr) 92px 92px 38px; gap: 7px; padding: 8px; }
.payment-line.compact input[name="operation_number[]"], .payment-line.compact input[name="reference[]"] { grid-column: span 2; }
.payment-line.compact .form-control, .payment-line.compact .form-select { min-height: 36px; font-size: .86rem; }
.payment-line.compact .btn { width: 38px; height: 36px; padding: 0; }
.cash-change.compact { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 7px; margin: 8px 0; padding: 8px; font-size: .86rem; }
.cash-change.compact span { display: grid; gap: 1px; }
.payment-history.compact { padding: 8px; font-size: .9rem; }
.payment-history.compact summary { font-size: .9rem; }
.payment-history.compact p { margin: 7px 0 0; }
.cash-confirm-summary { display: grid; gap: 6px; margin: 0; text-align: left; }
.cash-confirm-summary div { display: flex; justify-content: space-between; gap: 12px; border-bottom: 1px solid #edf1f6; padding-bottom: 5px; }
.cash-confirm-summary dt { color: var(--ds-muted); font-weight: 700; }
.cash-confirm-summary dd { margin: 0; font-weight: 800; }
@media (max-width: 1180px) {
    .cash-workspace { grid-template-columns: minmax(420px, 520px); }
    .cash-side-panel { width: min(520px, 100%); justify-self: center; }
}
@media (max-width: 620px) {
    .cash-page-heading { align-items: stretch; }
    .cash-workspace { grid-template-columns: minmax(0, 1fr); }
    .cash-calculator, .cash-side-panel { width: 100%; }
    .cash-calculator-head dl, .cash-change.compact { grid-template-columns: 1fr; }
    .payment-line.compact { grid-template-columns: 1fr 1fr; }
    .payment-line.compact input[name="operation_number[]"], .payment-line.compact input[name="reference[]"], .payment-line.compact .btn { grid-column: 1 / -1; }
    .payment-line.compact .btn { width: 100%; }
}

/* Etapa 7: dashboard ejecutivo, reportes y alertas */
.report-filter-panel { display: grid; gap: 12px; margin-bottom: 16px; }
.report-filters { display: grid; grid-template-columns: repeat(5, minmax(130px, 1fr)) auto; gap: 10px; align-items: end; }
.report-filters label, .report-save-filter { display: grid; gap: 4px; }
.report-filters label span { color: var(--ds-muted); font-size: .84rem; }
.report-filter-actions { display: flex; gap: 7px; flex-wrap: wrap; align-items: center; }
.report-save-filter { grid-template-columns: minmax(180px, 260px) auto; align-items: center; justify-content: end; }
.report-active-filters { display: flex; gap: 8px; flex-wrap: wrap; }
.report-active-filters span { border: 1px solid var(--ds-border); border-radius: 999px; padding: 4px 9px; background: #fbfdff; color: #405164; font-size: .82rem; }
.report-cards, .report-mini-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; margin-bottom: 16px; }
.operational-cards { grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); }
.report-card, .report-mini-card { background: #fff; border: 1px solid var(--ds-border); border-radius: 8px; padding: 14px; display: grid; gap: 5px; min-height: 104px; border-left: 4px solid var(--ds-primary); }
.report-mini-card { min-height: 88px; }
.report-card span, .report-mini-card span { color: var(--ds-muted); font-size: .84rem; }
.report-card strong, .report-mini-card strong { font-size: clamp(1.1rem, 2vw, 1.45rem); line-height: 1.15; overflow-wrap: anywhere; }
.report-card small, .report-mini-card small { color: var(--ds-muted); }
.metric-good { color: #0f766e !important; }
.metric-bad { color: #b42318 !important; }
.metric-neutral { color: var(--ds-muted) !important; }
.is-hidden-metric { border-left-color: #6c757d; background: #f8fafc; }
.report-grid-main { display: grid; gap: 16px; margin-bottom: 16px; }
.report-chart { width: 100%; max-width: 100%; border: 1px solid var(--ds-border); border-radius: 8px; background: #fff; }
.report-table-panel { margin-bottom: 16px; }
.report-table th button { border: 0; background: transparent; color: var(--ds-text); font-weight: 700; padding: 0; display: inline-flex; gap: 5px; align-items: center; }
.report-table td, .report-table th { white-space: nowrap; }
.report-alert-list { display: grid; gap: 10px; }
.report-alert { display: flex; justify-content: space-between; gap: 14px; align-items: center; color: var(--ds-text); border: 1px solid var(--ds-border); border-left: 5px solid #0b5ed7; border-radius: 8px; padding: 12px; background: #fff; }
.report-alert span, .report-alert small { display: block; color: var(--ds-muted); }
.report-alert.atencion { border-left-color: #f59f00; }
.report-alert.critica { border-left-color: #dc3545; }
.report-alert.reviewed { opacity: .72; }
.report-alert-actions { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; justify-content: flex-end; }
.report-alert-actions form { margin: 0; }
@media print {
    .sidebar, .primary-sidebar, .secondary-sidebar, .nav-backdrop, .topbar, .report-filter-panel, .heading-actions, .report-alert-actions, [data-report-print] { display: none !important; }
    .app-shell { display: block; }
    .content { padding: 0; }
    .section-panel, .report-card { break-inside: avoid; box-shadow: none; }
}
@media (max-width: 1180px) {
    .report-filters { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .report-filter-actions { grid-column: 1 / -1; }
    .report-cards, .report-mini-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 760px) {
    .report-filters, .report-save-filter, .report-cards, .report-mini-grid { grid-template-columns: 1fr; }
    .report-filter-actions .btn, .report-save-filter .btn { width: 100%; }
    .report-alert { align-items: stretch; flex-direction: column; }
    .report-alert-actions { justify-content: stretch; }
    .report-alert-actions .btn, .report-alert-actions form { width: 100%; }
}

/* Etapa 8: promociones, cupones, precios y gastos */
.filter-card { border: 1px solid var(--ds-border); border-radius: 8px; }
.metric-card { min-height: 92px; display: grid; gap: 4px; padding: 14px; border: 1px solid var(--ds-border); border-left: 4px solid var(--ds-primary); border-radius: 8px; background: #fff; }
.metric-card span { color: var(--ds-muted); font-size: .84rem; }
.metric-card strong { color: var(--ds-text); font-size: clamp(1.15rem, 2vw, 1.55rem); line-height: 1.15; overflow-wrap: anywhere; }
.check-pill { display: inline-flex; align-items: center; gap: 6px; min-height: 34px; padding: 6px 10px; border: 1px solid var(--ds-border); border-radius: 999px; background: #fbfdff; font-size: .9rem; }
.option-box { display: grid; gap: 6px; max-height: 150px; overflow: auto; padding: 9px; border: 1px solid var(--ds-border); border-radius: 8px; background: #fbfdff; }
.option-box label { display: flex; gap: 7px; align-items: center; margin: 0; }
.stage8-summary { top: 12px; }
.pos-product-card del, .pos-order-item del { color: #8a97a6; font-size: .82em; text-decoration-thickness: 2px; }
.coupon-box { display: grid; gap: 5px; margin: 10px 0; padding: 10px; border: 1px solid var(--ds-border); border-radius: 8px; background: #fbfdff; }
.pos-breakdown { display: grid; gap: 4px; margin: 8px 0; padding: 8px 10px; border: 1px solid var(--ds-border); border-radius: 8px; background: #fff; font-size: .86rem; }
.pos-breakdown span { display: flex; justify-content: space-between; gap: 12px; color: var(--ds-muted); }
.pos-breakdown strong { color: var(--ds-text); }
@media (max-width: 760px) {
    .metric-card { min-height: 78px; }
    .stage8-summary { position: static !important; }
}

/* Auditoria UI responsive: sistema global de formularios y filtros */
:root {
    --ds-control-height: 44px;
    --ds-control-height-sm: 38px;
    --ds-control-padding-x: 13px;
    --ds-form-gap: 18px;
    --ds-form-field-min: 240px;
    --ds-filter-field-min: 220px;
    --ds-line-field-min: 150px;
}

.content, .section-panel, .modal-body, .main-area, .topbar, .table-responsive {
    min-width: 0;
}

.form-label {
    color: #334155;
    font-size: .86rem;
    font-weight: 700;
    margin-bottom: 5px;
}

.form-text, .invalid-feedback, .valid-feedback {
    font-size: .82rem;
}

.form-control,
.form-select,
.form-check-input {
    border-color: #cbd6e2;
}

.form-control,
.form-select {
    width: 100%;
    min-width: 0;
    min-height: var(--ds-control-height);
    border-radius: 8px;
    padding: 9px var(--ds-control-padding-x);
    line-height: 1.35;
    color: var(--ds-text);
    background-color: #fff;
    box-shadow: none;
}

.form-control-sm,
.form-select-sm {
    min-height: var(--ds-control-height-sm);
    padding-top: 7px;
    padding-bottom: 7px;
    font-size: .88rem;
}

.form-select {
    padding-right: 2.35rem;
    background-position: right .85rem center;
    text-overflow: ellipsis;
    white-space: nowrap;
}

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

input[type="number"].form-control {
    min-inline-size: 0;
    padding-right: 1.9rem;
    font-variant-numeric: tabular-nums;
}

input[type="date"].form-control,
input[type="time"].form-control,
input[type="datetime-local"].form-control,
input[type="month"].form-control {
    min-inline-size: 0;
}

.form-control:focus,
.form-select:focus,
.form-check-input:focus {
    border-color: var(--ds-primary);
    box-shadow: 0 0 0 .22rem rgba(11, 94, 215, .14);
}

.form-control:disabled,
.form-control[readonly],
.form-select:disabled {
    color: #64748b;
    background-color: #eef3f8;
    border-color: #d8e1ec;
    opacity: 1;
}

.input-group {
    width: 100%;
    min-width: 0;
}

.input-group > .form-control,
.input-group > .form-select {
    width: 1%;
    min-width: 0;
}

.row > [class*="col-"],
.form-grid > [class*="col-"],
.form-grid > div,
.form-grid > label,
.form-grid > fieldset {
    min-width: 0;
}

.form-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, max(var(--ds-form-field-min), calc((100% - 54px) / 4))), 1fr));
    gap: var(--ds-form-gap);
    align-items: end;
}

.form-grid > [class*="col-"],
.form-grid > div,
.form-grid > label {
    align-content: start;
}

.form-grid .col-12,
.form-grid .col-md-8,
.form-grid .col-md-9,
.form-grid .col-md-12,
.form-section-title,
.form-actions,
.field-full,
.form-preview {
    grid-column: 1 / -1;
}

.form-actions {
    align-items: center;
    flex-wrap: wrap;
}

.form-actions .btn,
.filters-bar .btn,
.report-filter-actions .btn,
.report-save-filter .btn {
    min-height: var(--ds-control-height);
}

.form-preview {
    min-width: 0;
    border: 1px dashed #b8c7d9;
    border-radius: 8px;
    background: #fbfdff;
    color: #405164;
    padding: 12px 14px;
    overflow-wrap: anywhere;
}

.table-bulk-form {
    --ds-form-field-min: 160px;
}

@media (min-width: 1100px) {
    .table-bulk-form {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }

    .table-bulk-form .field-branch {
        grid-column: span 2;
    }
}

@media (min-width: 760px) and (max-width: 1099.98px) {
    .table-bulk-form {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

.filters-bar,
.audit-filters,
.product-filters,
.inventory-filters,
.kardex-filters,
.report-filters {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, max(var(--ds-filter-field-min), calc((100% - 36px) / 4))), 1fr));
    gap: 12px;
    align-items: end;
    margin-bottom: 16px;
}

.filters-bar > *,
.report-filters > *,
.report-save-filter > *,
.bulk-bar > * {
    min-width: 0;
}

.filters-bar .btn,
.report-filters .btn {
    justify-self: start;
    white-space: nowrap;
}

.branch-switch {
    width: min(100%, 280px);
    min-width: 0;
}

.bulk-bar .form-select {
    max-width: none;
    min-width: min(100%, 180px);
}

.compact {
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 150px), 1fr));
}

.variant-row,
.option-row,
.combo-group-box,
.combo-options,
.inventory-inline-form,
.inventory-line,
.recipe-line,
.delivery-line,
.payment-line,
.payment-line.compact {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, max(var(--ds-line-field-min), calc((100% - 30px) / 4))), 1fr));
    gap: 10px;
    align-items: end;
}

.combo-group-box,
.combo-options,
.delivery-line {
    --ds-line-field-min: 180px;
}

.inventory-line {
    --ds-line-field-min: 140px;
}

.payment-line,
.payment-line.compact {
    --ds-line-field-min: 135px;
}

.inventory-line input[name="lot_code[]"],
.inventory-line input[name="expiration_date[]"],
.inventory-line input[name="detail_notes[]"],
.payment-line.compact input[name="operation_number[]"],
.payment-line.compact input[name="reference[]"] {
    grid-column: auto;
}

.variant-row input[type="hidden"],
.option-row input[type="hidden"],
.combo-group-box input[type="hidden"],
.combo-options input[type="hidden"],
.inventory-line input[type="hidden"],
.recipe-line input[type="hidden"],
.delivery-line input[type="hidden"],
.payment-line input[type="hidden"] {
    display: none;
}

.variant-row label,
.option-row label {
    min-height: var(--ds-control-height);
    display: flex;
    align-items: center;
    gap: 7px;
    margin: 0;
    padding: 9px 10px;
    border: 1px solid var(--ds-border);
    border-radius: 8px;
    background: #fbfdff;
}

.inventory-line .btn,
.recipe-line .btn,
.delivery-line .btn,
.payment-line .btn {
    min-height: var(--ds-control-height);
}

@media (min-width: 761px) and (max-width: 980px) {
    .form-grid:not(.table-bulk-form),
    .filters-bar,
    .audit-filters,
    .product-filters,
    .inventory-filters,
    .kardex-filters,
    .report-filters,
    .variant-row,
    .option-row,
    .combo-group-box,
    .combo-options,
    .inventory-inline-form,
    .inventory-line,
    .recipe-line,
    .delivery-line,
    .payment-line,
    .payment-line.compact {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 760px) {
    .form-grid,
    .filters-bar,
    .audit-filters,
    .product-filters,
    .inventory-filters,
    .kardex-filters,
    .report-filters,
    .variant-row,
    .option-row,
    .combo-group-box,
    .combo-options,
    .inventory-inline-form,
    .inventory-line,
    .recipe-line,
    .delivery-line,
    .payment-line,
    .payment-line.compact {
        grid-template-columns: 1fr;
    }

    .form-actions {
        align-items: stretch;
        flex-direction: column-reverse;
    }

    .form-actions .btn,
    .filters-bar .btn,
    .report-filter-actions .btn,
    .report-save-filter .btn,
    .inventory-line .btn,
    .recipe-line .btn,
    .delivery-line .btn,
    .payment-line .btn {
        width: 100%;
    }

    .inventory-line input[name="lot_code[]"],
    .inventory-line input[name="expiration_date[]"],
    .inventory-line input[name="detail_notes[]"],
    .payment-line.compact input[name="operation_number[]"],
    .payment-line.compact input[name="reference[]"] {
        grid-column: 1 / -1;
    }
}

.modal-dialog {
    width: calc(100% - 24px);
    max-width: min(var(--bs-modal-width, 600px), calc(100vw - 24px));
    margin-right: auto;
    margin-left: auto;
}

.modal-sm { --bs-modal-width: 440px; }
.modal-lg { --bs-modal-width: 800px; }
.modal-xl { --bs-modal-width: 960px; }

.modal-content {
    max-height: calc(100vh - 24px);
    overflow: hidden;
    border-radius: 8px;
}

.modal-body {
    overflow: auto;
}

.modal-header,
.modal-footer {
    flex-shrink: 0;
}

.modal-footer {
    gap: 8px;
    flex-wrap: wrap;
}

.modal-footer .btn {
    min-height: var(--ds-control-height);
}

@supports (-webkit-touch-callout: none) {
    .form-select {
        line-height: 1.4;
    }

    input[type="number"].form-control,
    input[type="date"].form-control,
    input[type="time"].form-control {
        min-height: var(--ds-control-height);
    }
}

/* Compras e inventario: captura por bloques, sin tabla editable horizontal. */
.inventory-document-form {
    min-width: 0;
    overflow: hidden;
}

.inventory-form-section + .inventory-form-section {
    margin-top: 24px;
    padding-top: 22px;
    border-top: 1px solid var(--ds-border);
}

.inventory-document-form .section-title {
    gap: 16px;
    align-items: flex-end;
}

.inventory-document-form .section-title h2 {
    margin: 0;
    font-size: 1.12rem;
}

.inventory-document-form .section-title p {
    margin: 4px 0 0;
    color: var(--ds-muted);
    font-size: .88rem;
}

.inventory-header-grid {
    grid-template-columns: repeat(4, minmax(0, 1fr));
}

.inventory-header-grid > *,
.inventory-line-grid > *,
.purchase-summary-grid > * {
    min-width: 0;
}

.inventory-header-grid .inventory-field-wide {
    grid-column: span 2;
}

.inventory-header-grid .inventory-field-full {
    grid-column: 1 / -1;
}

.inventory-copy-date {
    align-self: center;
    display: flex;
    gap: 9px;
    min-height: var(--ds-control-height);
    margin: 0;
    padding-top: 9px;
}

.inventory-copy-date .form-check-input {
    flex: 0 0 auto;
    margin: 2px 0 0;
}

.inventory-lines {
    gap: 14px;
}

.inventory-document-form .inventory-line {
    display: block;
    min-width: 0;
    padding: 16px;
    border: 1px solid #cbd8e8;
    border-radius: 8px;
    background: #fff;
}

.inventory-line-heading {
    display: flex;
    gap: 12px;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 14px;
}

.inventory-line-heading strong {
    color: var(--ds-text);
    font-size: .95rem;
}

.inventory-line-heading .btn {
    width: var(--ds-control-height);
    min-width: var(--ds-control-height);
    height: var(--ds-control-height);
}

.inventory-line-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 14px;
    align-items: start;
}

.inventory-line-grid + .inventory-line-grid {
    margin-top: 14px;
    padding-top: 14px;
    border-top: 1px solid #e4ebf3;
}

.inventory-line-primary {
    grid-template-columns: minmax(0, 1.5fr) minmax(0, 1.5fr) minmax(0, .8fr) minmax(0, .9fr);
}

.inventory-line-optional {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) minmax(0, 2fr);
}

.inventory-line-notes {
    grid-column: auto;
}

.inventory-line .form-label,
.purchase-summary .form-label {
    margin: 0;
}

.inventory-line .form-help,
.purchase-summary .form-help,
.inventory-header-grid .form-help {
    display: block;
    min-height: 2.45em;
    margin-top: 6px;
    line-height: 1.25;
}

.form-control.is-calculated {
    color: #32445a;
    background: #eef3f8;
    border-color: #d6e0eb;
    cursor: default;
}

.form-control.is-calculated[type="number"] {
    appearance: textfield;
    -moz-appearance: textfield;
}

.form-control.is-calculated[type="number"]::-webkit-inner-spin-button,
.form-control.is-calculated[type="number"]::-webkit-outer-spin-button {
    margin: 0;
    -webkit-appearance: none;
}

.inventory-manual-extra[hidden],
.inventory-header-grid > [hidden] {
    display: none;
}

.inventory-line-summary {
    margin-top: 14px;
    padding: 10px 12px;
    border-left: 3px solid #0f766e;
    background: #eef8f5;
    color: #1e4d44;
    font-size: .9rem;
    overflow-wrap: anywhere;
}

.purchase-summary-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 14px;
    align-items: start;
}

.purchase-total .form-control {
    color: #0b5ed7;
    font-size: 1.05rem;
    font-weight: 700;
}

.inventory-form-actions {
    gap: 10px;
    flex-wrap: wrap;
    margin-top: 24px;
    padding-top: 18px;
    border-top: 1px solid var(--ds-border);
}

@media (min-width: 760px) and (max-width: 1099.98px) {
    .inventory-header-grid,
    .inventory-line-grid,
    .inventory-line-primary,
    .inventory-line-optional,
    .purchase-summary-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .inventory-line-notes,
    .inventory-header-grid .inventory-field-full {
        grid-column: 1 / -1;
    }
}

@media (max-width: 759.98px) {
    .inventory-document-form {
        padding-right: 14px;
        padding-left: 14px;
    }

    .inventory-document-form .section-title,
    .inventory-line-heading {
        align-items: stretch;
        flex-direction: column;
    }

    .inventory-document-form .section-title .btn,
    .inventory-line-heading .btn {
        width: 100%;
    }

    .inventory-header-grid,
    .inventory-line-grid,
    .inventory-line-primary,
    .inventory-line-optional,
    .purchase-summary-grid {
        grid-template-columns: minmax(0, 1fr);
    }

    .inventory-header-grid .inventory-field-wide,
    .inventory-header-grid .inventory-field-full,
    .inventory-line-notes {
        grid-column: auto;
    }

    .inventory-line .form-help,
    .purchase-summary .form-help,
    .inventory-header-grid .form-help {
        min-height: 0;
    }
}
