:root{font-family:Inter,system-ui,Segoe UI,Arial,sans-serif;color:#182230;background:#f3f6f9;--primary:#155eef;--nav:#101828;--border:#e4e7ec}*{box-sizing:border-box}body{margin:0}body>aside{position:fixed;inset:0 auto 0 0;width:245px;background:var(--nav);color:#fff;padding:22px 14px;z-index:20}.brand{display:flex;gap:10px;align-items:center;padding:2px 8px 22px}.brand>span{display:grid;place-items:center;background:#fff;color:#101828;width:44px;height:44px;border-radius:12px;font-weight:900}.brand b,.brand small{display:block}.brand small{color:#98a2b3;margin-top:3px}nav a{display:block;color:#d0d5dd;text-decoration:none;padding:11px 12px;border-radius:9px;margin:3px 0}nav a:hover{background:#1d2939;color:#fff}main{margin-left:245px;padding:24px;max-width:none;min-width:0}.public,.install{margin:0 auto;max-width:560px;padding-top:8vh}.topbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}.topbar h1{margin:0}.topbar p{margin:4px 0 0;color:#667085}.role,.badge{background:#eef4ff;color:#3538cd;padding:5px 9px;border-radius:999px;font-size:12px;font-weight:700}.card{background:#fff;border:1px solid var(--border);border-radius:15px;padding:20px;margin-bottom:18px;box-shadow:0 2px 8px #1018280a}.card h2{margin-top:0}.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:18px}.metric{background:#fff;border:1px solid var(--border);border-radius:15px;padding:22px}.metric b{font-size:28px;display:block;margin-top:5px}.metric .smallmetric{font-size:20px}.metric span,.metric small,.muted{color:#667085}.grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}label{display:grid;gap:6px;font-weight:600}input,select{width:100%;padding:11px;border:1px solid #d0d5dd;border-radius:9px;font:inherit;background:#fff}input:focus,select:focus{outline:3px solid #84adff55;border-color:#84adff}button,.btn{display:inline-block;background:var(--primary);color:#fff;border:0;border-radius:9px;padding:11px 16px;font-weight:700;text-decoration:none;cursor:pointer;margin-top:14px}.secondary{background:#344054}.danger{background:#d92d20}.flash{padding:12px 14px;border-radius:9px;margin:12px 0}.flash.ok{background:#ecfdf3;color:#027a48}.flash.err{background:#fef3f2;color:#b42318}.tablewrap{overflow:auto}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:11px;border-bottom:1px solid #eaecf0;white-space:nowrap}th{background:#f9fafb}.warn{background:#fffaeb}.debt{color:#b42318;font-weight:800}.tablebtn{display:inline-block;padding:7px 10px;border-radius:7px;background:#eef4ff;color:#3538cd;text-decoration:none;font-weight:700;font-size:13px}.actions{margin-bottom:16px}.menubtn{display:none;position:fixed;right:14px;bottom:14px;z-index:50;border-radius:999px;width:52px;height:52px;padding:0;font-size:22px}.poslayout{display:grid;grid-template-columns:minmax(0,1fr) 390px;gap:18px}.poslayout>aside.cartpanel{position:static;width:auto;background:transparent;color:inherit;padding:0}.sticky{position:sticky;top:18px}.searchline{display:flex;gap:12px;align-items:center}.searchline input{flex:1}.searchline span{color:#667085;white-space:nowrap}.productgrid{display:grid;grid-template-columns:repeat(3,minmax(150px,1fr));gap:10px;margin-top:14px}.productcard{text-align:left;background:#fff;color:#182230;border:1px solid #e4e7ec;padding:14px;margin:0;min-height:120px;display:flex;flex-direction:column;align-items:flex-start}.productcard:hover{border-color:#84adff;box-shadow:0 4px 14px #155eef15}.productcard small{color:#667085;margin:6px 0}.productcard strong{margin-top:auto;color:#155eef;font-size:18px}.cartrow{display:grid;grid-template-columns:minmax(0,1fr) 72px 86px 32px;gap:8px;align-items:center;padding:11px 0;border-bottom:1px solid #eaecf0}.cartrow small{display:block;color:#667085;margin-top:3px}.cartrow .qty{padding:8px}.remove{margin:0;padding:5px;background:#fef3f2;color:#b42318;font-size:18px}.carttotal{display:flex;justify-content:space-between;align-items:center;font-size:18px;padding:18px 0 4px}.carttotal b{font-size:30px}.paybtn{width:100%;padding:14px;font-size:17px}.empty{text-align:center;color:#98a2b3;padding:30px 10px}
@media(max-width:1050px){.poslayout{grid-template-columns:1fr}.sticky{position:static}.productgrid{grid-template-columns:repeat(2,minmax(140px,1fr))}}
@media(max-width:800px){body>aside{transform:translateX(-105%);transition:.2s}.menuopen aside{transform:translateX(0)}.menubtn{display:block}main{margin:0;padding:15px}.cards,.grid{grid-template-columns:1fr}.productgrid{grid-template-columns:repeat(2,minmax(0,1fr))}.productcard{min-height:110px;padding:11px}.cartrow{grid-template-columns:minmax(0,1fr) 62px 75px 28px}.searchline{align-items:stretch;flex-direction:column}.searchline span{display:none}}
@media(max-width:480px){.productgrid{grid-template-columns:1fr 1fr}.productcard small{font-size:11px}.productcard strong{font-size:16px}.topbar{padding-right:48px}.topbar h1{font-size:24px}}

/* POS táctil inspirado en la organización visual de Shopify POS, sin copiar su marca. */
.pos-page{background:#f6f6f7;color:#202223}
.pos-page>aside{width:82px;background:#202223;padding:14px 9px;box-shadow:1px 0 0 #0003}
.pos-page>aside .brand{padding:2px 0 18px;justify-content:center}
.pos-page>aside .brand>span{width:48px;height:48px;border-radius:12px;background:#95bf47;color:#173630;font-size:13px}
.pos-page>aside .brand>div{display:none}
.pos-page>aside nav{display:flex;flex-direction:column;gap:6px}
.pos-page>aside nav a{font-size:0;text-align:center;padding:12px 5px;margin:0;border-radius:12px;color:#d2d5d8}
.pos-page>aside nav a::first-letter{font-size:21px}
.pos-page>aside nav a:hover{background:#303338}
.pos-page main{margin-left:82px;padding:0;max-width:none;min-width:0}
.pos-page .topbar{height:64px;margin:0;padding:0 18px;background:#fff;border-bottom:1px solid #e1e3e5}
.pos-page .topbar h1{font-size:18px;font-weight:700}
.pos-page .topbar p{font-size:12px;margin-top:2px}
.pos-page .role{background:#f1f8f5;color:#006e52;border:1px solid #c9e8dc}
.shop-pos-shell{min-height:calc(100vh - 64px);display:grid;grid-template-columns:minmax(0,1fr) minmax(320px,430px);background:#f6f6f7}
.shop-pos-workspace{padding:16px 18px 28px;overflow:auto}
.shop-pos-controls{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,.9fr);gap:12px;align-items:stretch}
.shop-pos-search{min-height:52px;background:#fff;border:1px solid #c9cccf;border-radius:10px;display:flex;align-items:center;gap:10px;padding:0 12px;box-shadow:0 1px 0 #0000000d}
.shop-pos-search>span{font-size:26px;color:#5c5f62;line-height:1}
.shop-pos-search input{border:0;padding:0;min-height:40px;font-size:16px;background:transparent}
.shop-pos-search input:focus{outline:0}
.shop-pos-search kbd{background:#f1f2f3;border:1px solid #d2d5d8;border-radius:6px;padding:4px 7px;font:12px system-ui;color:#6d7175}
.shop-pos-selects{display:grid;grid-template-columns:145px minmax(220px,1fr);gap:10px}
.shop-pos-selects label{display:flex;flex-direction:column;gap:2px;background:#fff;border:1px solid #c9cccf;border-radius:10px;padding:6px 10px;box-shadow:0 1px 0 #0000000d}
.shop-pos-selects label>span{font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:#6d7175;font-weight:800}
.shop-pos-selects select{border:0;padding:2px 0;font-weight:650;background:#fff;border-radius:0}
.shop-pos-selects select:focus{outline:0}
.shop-pos-credit{min-height:28px;margin:10px 2px 6px;padding:6px 10px;border-radius:8px;background:#eef7f5;color:#005e46;font-size:13px;font-weight:600}
.shop-pos-sectionhead{display:flex;justify-content:space-between;align-items:end;margin:14px 2px 10px}
.shop-pos-sectionhead h2{margin:0;font-size:20px}.shop-pos-sectionhead p{margin:3px 0 0;color:#6d7175;font-size:13px}.shop-pos-sectionhead>span{color:#6d7175;font-size:13px}
.shop-pos-grid{display:grid;grid-template-columns:repeat(4,minmax(145px,1fr));gap:10px}
.shop-product-tile{position:relative;margin:0;background:#fff;color:#202223;border:1px solid #e1e3e5;border-radius:10px;min-height:176px;padding:0;overflow:hidden;text-align:left;box-shadow:0 1px 2px #0000000a;display:flex;flex-direction:column}
.shop-product-tile:hover{border-color:#8c9196;box-shadow:0 2px 8px #00000014;transform:translateY(-1px)}
.shop-product-tile:active{transform:scale(.985)}
.shop-product-thumb{height:78px;width:100%;display:grid;place-items:center;background:linear-gradient(145deg,#eef6f3,#f4f6f8);color:#006e52;font-size:29px;font-weight:800;border-bottom:1px solid #eceeef}
.shop-product-copy{padding:10px 11px 11px;display:flex;flex-direction:column;gap:4px;width:100%;flex:1}
.shop-product-copy b{font-size:14px;line-height:1.25}.shop-product-copy small{color:#6d7175;font-size:11px}.shop-product-copy strong{margin-top:auto;font-size:16px;color:#202223}
.shop-product-tile em{position:absolute;top:7px;right:7px;background:#fff5ea;color:#8a6116;border:1px solid #f5d6aa;border-radius:999px;padding:4px 7px;font-size:10px;font-style:normal;font-weight:800}
.shop-cart{position:static!important;inset:auto!important;width:auto!important;background:#fff!important;color:#202223!important;padding:0!important;border-left:1px solid #dfe3e8;display:flex;flex-direction:column;min-height:0}
.shop-cart-head{min-height:72px;padding:13px 16px;border-bottom:1px solid #e1e3e5;display:flex;align-items:center;justify-content:space-between}
.shop-cart-head h2{margin:1px 0 0;font-size:20px}.eyebrow{font-size:10px;font-weight:800;letter-spacing:.08em;color:#8c9196}.shop-clear{margin:0;background:transparent;color:#d82c0d;border:0;padding:8px;font-size:13px}.shop-clear:hover{background:#fff4f4}
.shop-cart-items{flex:1;overflow:auto;padding:2px 16px}.shop-empty{height:100%;min-height:250px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;color:#6d7175;gap:7px}.shop-empty>span{font-size:38px;filter:grayscale(1)}.shop-empty>b{color:#202223}.shop-empty small{font-size:13px}
.shop-cart-row{grid-template-columns:minmax(0,1fr) 108px 76px 28px!important;gap:8px!important;padding:14px 0!important}.cart-product{display:flex;align-items:center;gap:9px;min-width:0}.cart-product>div{min-width:0}.cart-product b{display:block;white-space:normal;overflow-wrap:anywhere}.mini-thumb{width:38px;height:38px;flex:0 0 38px;border-radius:8px;display:grid;place-items:center;background:#eef6f3;color:#006e52;font-weight:800}.qtybox{display:grid;grid-template-columns:28px 48px 28px;border:1px solid #c9cccf;border-radius:8px;overflow:hidden}.qtybox button{margin:0;padding:0;background:#f6f6f7;color:#202223;border-radius:0;font-size:17px}.qtybox input{border:0;border-left:1px solid #e1e3e5;border-right:1px solid #e1e3e5;border-radius:0;padding:6px 2px;text-align:center;font-size:13px;appearance:textfield}.qtybox input::-webkit-outer-spin-button,.qtybox input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.shop-cart-row .line{text-align:right;font-size:13px}.shop-cart-row .remove{background:transparent;color:#8c9196;border-radius:6px}.shop-cart-row .remove:hover{background:#fbeae5;color:#d82c0d}
.shop-cart-footer{padding:14px 16px 16px;border-top:1px solid #e1e3e5;background:#fff;box-shadow:0 -6px 20px #00000008}.shop-summary,.shop-total{display:flex;justify-content:space-between;align-items:center;padding:4px 1px}.shop-summary{font-size:13px}.shop-summary b{font-weight:650}.mutedline{color:#8c9196}.shop-total{margin-top:6px;padding-top:10px;border-top:1px solid #e1e3e5;font-size:17px}.shop-total b{font-size:25px}.shop-checkout{width:100%;margin:12px 0 0;border-radius:10px;padding:14px 16px;background:#008060;display:flex;justify-content:space-between;align-items:center;font-size:16px;box-shadow:0 1px 0 #006e52}.shop-checkout:hover{background:#006e52}.shop-checkout strong{font-size:17px}
@media(max-width:1250px){.shop-pos-grid{grid-template-columns:repeat(3,minmax(140px,1fr))}.shop-pos-shell{grid-template-columns:minmax(0,1fr) 385px}.shop-pos-controls{grid-template-columns:1fr}.shop-pos-selects{grid-template-columns:150px 1fr}}
@media(max-width:900px){.pos-page>aside{transform:translateX(-105%);width:245px}.pos-page>aside .brand{justify-content:flex-start;padding:2px 8px 22px}.pos-page>aside .brand>div{display:block}.pos-page>aside nav a{font-size:14px;text-align:left;padding:11px 12px}.pos-page>aside nav a::first-letter{font-size:inherit}.pos-page main{margin-left:0;height:auto;overflow:visible}.pos-page .topbar{height:58px;padding-right:70px}.shop-pos-shell{height:auto;min-height:calc(100vh - 58px);grid-template-columns:1fr}.shop-pos-workspace{overflow:visible;padding:12px}.shop-cart{border-left:0;border-top:1px solid #dfe3e8;min-height:420px}.shop-pos-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:620px){.shop-pos-selects{grid-template-columns:1fr 1fr}.shop-pos-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.shop-product-tile{min-height:158px}.shop-product-thumb{height:65px}.shop-cart-row{grid-template-columns:minmax(0,1fr) 92px!important;grid-template-areas:'p price' 'qty remove'}.cart-product{grid-area:p}.qtybox{grid-area:qty}.shop-cart-row .line{grid-area:price}.shop-cart-row .remove{grid-area:remove;justify-self:end}.shop-pos-credit{font-size:12px}.shop-pos-sectionhead p{display:block}}

.category-tabs{display:flex;gap:8px;overflow:auto;padding:4px 0 14px}.category-tabs button{white-space:nowrap;border:1px solid #d7dbe0;background:#fff;color:#202223;border-radius:999px;padding:9px 14px}.category-tabs button.active{background:#202223;color:#fff}.shop-product-image{width:72px;height:72px;object-fit:cover;border-radius:12px;background:#f2f3f5}.discount-panel{display:grid;grid-template-columns:1.4fr .8fr;gap:8px;padding:12px 16px;border-top:1px solid #e5e7eb}.discount-panel select,.discount-panel input{width:100%;margin:0}.cart-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:10px}.secondary{background:#fff!important;color:#202223!important;border:1px solid #c9cccf!important}.modal{position:fixed;inset:0;background:#0008;display:none;align-items:center;justify-content:center;z-index:200;padding:20px}.modal.show{display:flex}.modalcard{position:relative;width:min(440px,100%);max-height:90vh;overflow:auto;background:#fff;border-radius:18px;padding:26px;box-shadow:0 24px 70px #0005}.modalcard.wide{width:min(720px,100%)}.modalx{position:absolute;right:14px;top:14px;border:0;background:#f1f2f3;color:#202223;width:38px;height:38px;border-radius:50%;font-size:24px}.modal-total{font-size:42px;font-weight:800;margin:20px 0}.num-pad{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:12px 0}.change{display:flex;justify-content:space-between;padding:14px 0;font-size:18px}.suspended-list>div{display:flex;align-items:center;gap:10px;padding:12px 0;border-bottom:1px solid #eee}.suspended-list>div>div{flex:1;display:flex;flex-direction:column}.suspended-list form{margin:0}.danger{background:#b42318!important}.inlineform{display:flex;gap:10px;align-items:end}.inlineform input{margin:0}.prodlistimg{width:50px;height:50px;object-fit:cover;border-radius:8px}.kpi{display:flex;justify-content:space-between;align-items:center;background:#f6f6f7;padding:16px;border-radius:12px;margin:16px 0}.kpi strong{font-size:24px}.receipt-body{background:#f3f4f6;padding:20px}.receipt80{width:80mm;max-width:100%;margin:auto;background:#fff;padding:8mm 5mm;color:#111;font-family:Arial,sans-serif}.receipt80 header{text-align:center}.receipt80 h2{margin:0}.receipt80 p{font-size:12px;line-height:1.4}.receipt-line,.receipt-tot{display:flex;justify-content:space-between;gap:8px;font-size:12px;margin:7px 0}.receipt-line span{flex:1}.receipt-line small{display:block;color:#555}.receipt-tot.grand{font-size:18px;font-weight:800}.receipt-note{text-align:center}.receipt80 footer{text-align:center;margin-top:20px;font-size:12px}.receipt-actions{display:flex;justify-content:center;gap:10px;margin:18px}@media print{body.receipt-body{padding:0;background:#fff}.receipt-actions{display:none}.receipt80{width:80mm;padding:4mm;margin:0}@page{size:80mm auto;margin:0}}
.credit-terms{display:grid;grid-template-columns:repeat(2,minmax(0,220px));gap:10px;padding:10px 16px;border-bottom:1px solid #e5e7eb;background:#fff}.credit-terms label{font-size:12px;font-weight:700}.credit-terms input{margin-top:4px}
@media(max-width:700px){.credit-terms{grid-template-columns:1fr 1fr}}

/* Ventas escolares por recreo */
.school-break-grid{display:grid;grid-template-columns:repeat(4,minmax(190px,1fr));gap:14px;margin:18px 0}.school-break-card{border:1px solid #e4e7ec;border-radius:16px;padding:16px;background:#fff;box-shadow:0 1px 2px rgba(16,24,40,.04)}.school-break-title{display:flex;gap:10px;align-items:center;margin-bottom:12px}.school-break-title>span{font-size:24px}.school-break-title b,.school-break-title small{display:block}.school-break-title small{color:#667085;margin-top:2px}.school-break-card input{font-size:18px;font-weight:700}.school-break-card input[name^="notes"]{font-size:14px;font-weight:400}.saved-tag{display:inline-block;margin-top:8px;padding:5px 8px;border-radius:999px;background:#ecfdf3;color:#027a48;font-weight:700}.school-total-bar{position:sticky;bottom:12px;display:flex;align-items:center;gap:16px;justify-content:flex-end;padding:14px 16px;background:#101828;color:#fff;border-radius:16px;box-shadow:0 10px 30px rgba(16,24,40,.22);z-index:3}.school-total-bar span{margin-right:auto}.school-total-bar b{font-size:24px}.school-total-bar button{margin:0;background:#fff;color:#101828}@media(max-width:1100px){.school-break-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:640px){.school-break-grid{grid-template-columns:1fr}.school-total-bar{flex-wrap:wrap}.school-total-bar span{width:100%;margin:0}.school-total-bar button{width:100%}}

.barcode-help{margin:8px 0 14px;padding:10px 12px;border:1px dashed #c9cccf;border-radius:10px;background:#fafafa;color:#4a4a4a;font-size:13px}.checkline{display:flex;align-items:center;gap:10px;margin:14px 0}.checkline input{width:auto;margin:0}.receipt80{box-sizing:border-box}.receipt80 hr{border:0;border-top:1px dashed #111}.receipt80 *{print-color-adjust:exact;-webkit-print-color-adjust:exact}
@media print{html,body{width:80mm!important;min-width:80mm!important}.receipt80{box-shadow:none!important;max-width:none!important}}

.credentials{border:2px solid var(--accent,#1f6feb)}
.credential-value{font-size:1.35rem;font-weight:800;letter-spacing:.04em;padding:.7rem;border:1px dashed #94a3b8;border-radius:10px;margin-top:.25rem;word-break:break-all}
.muted{opacity:.75}

/* V13 - acciones superiores y formularios separados */
.topbar-right{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}.top-action{display:inline-flex;align-items:center;min-height:40px;padding:8px 12px;border-radius:9px;background:var(--primary);color:#fff;text-decoration:none;font-size:13px;font-weight:800;white-space:nowrap}.top-action.secondary{background:#344054}.top-action.danger{background:#b42318}.form-page{max-width:920px}.form-page .form-actions{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-top:18px}.form-page .form-actions .btn,.form-page .form-actions button{margin-top:0}.camera-scan-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;margin:0;min-height:44px;padding:10px 13px;background:#344054;color:#fff;border:0;border-radius:9px;font-weight:800;cursor:pointer}.barcode-field-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:end}.camera-modal{display:none;position:fixed;inset:0;background:#101828cc;z-index:500;padding:18px;overflow:auto}.camera-modal.show{display:grid;place-items:center}.camera-card{width:min(560px,100%);background:#fff;border-radius:16px;padding:16px}.camera-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.camera-head b,.camera-head small{display:block}.camera-head small{color:#667085;margin-top:3px}.camera-close{margin:0;background:#f2f4f7;color:#344054;width:42px;height:42px;padding:0;font-size:26px}.camera-view{position:relative;background:#101828;border-radius:12px;overflow:hidden;aspect-ratio:4/3}.camera-view video{width:100%;height:100%;object-fit:cover;display:block}.camera-target{position:absolute;left:12%;right:12%;top:35%;height:30%;border:3px solid #fff;border-radius:12px;box-shadow:0 0 0 999px #0003}.camera-status{padding:12px 4px 2px;color:#475467;font-weight:700}.camera-cancel{width:100%;margin-top:10px}.shop-camera-btn{margin:0!important;white-space:nowrap;align-self:stretch}.shop-pos-search.has-camera{display:grid;grid-template-columns:auto minmax(0,1fr) auto auto;align-items:center}
@media(max-width:760px){.topbar{align-items:flex-start;gap:10px;flex-wrap:wrap}.topbar-right{width:100%;justify-content:flex-start}.top-action{flex:1 1 auto;justify-content:center}.barcode-field-row{grid-template-columns:1fr}.shop-pos-search.has-camera{grid-template-columns:auto minmax(0,1fr) auto}.shop-pos-search.has-camera kbd{display:inline-block}.shop-camera-btn{padding:8px 10px}.camera-modal{padding:8px}.camera-card{padding:12px}}


/* ==========================================================
   V18 - RESPONSIVE REAL MULTIDISPOSITIVO
   Corrige causas de overflow sin ocultar contenido.
   ========================================================== */
html{width:100%;max-width:100%;-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{width:100%;max-width:100%;min-width:0;min-height:100%;overflow-wrap:anywhere}
body>aside{overflow-y:auto;overscroll-behavior-y:contain;max-width:calc(100% - 48px)}
body>main:not(.public):not(.install){width:calc(100% - 245px);max-width:none;min-width:0;padding:clamp(14px,2vw,28px)}
main,.card,.metric,.grid,.cards,.topbar,.topbar>*,.topbar-right,.form-page,.actions,form,fieldset,label,.tablewrap,.shop-pos-shell,.shop-pos-workspace,.shop-pos-controls,.shop-pos-selects,.shop-pos-search,.shop-cart,.shop-cart-items,.shop-cart-footer,.school-break-card{min-width:0}
.card{width:100%;max-width:100%;padding:clamp(14px,1.6vw,20px)}
img,video,iframe,svg,canvas{max-width:100%;height:auto}
input,select,textarea,button,.btn{max-width:100%;min-width:0}
textarea{width:100%;min-height:96px;padding:11px;border:1px solid #d0d5dd;border-radius:9px;font:inherit;resize:vertical;background:#fff}
input,select,textarea{overflow-wrap:anywhere}
button,.btn,.tablebtn,.top-action{overflow-wrap:anywhere;word-break:normal;text-align:center}
a,p,span,b,strong,small,h1,h2,h3,h4,td,th,label{overflow-wrap:anywhere}
h1{font-size:clamp(1.45rem,2.2vw,2rem)}
h2{font-size:clamp(1.18rem,1.7vw,1.5rem)}

/* Layout general */
.cards{grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(10px,1.3vw,16px)}
.grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(10px,1.2vw,14px)}
.grid>*{min-width:0}
.metric{min-width:0;padding:clamp(14px,1.6vw,22px)}
.metric b{font-size:clamp(1.25rem,2vw,1.75rem);overflow-wrap:anywhere}
.public,.install{width:min(100% - 24px,560px);max-width:560px;margin-inline:auto;padding-top:clamp(18px,7vw,64px)}
.login{width:100%;max-width:100%}
.form-page{width:min(100%,920px)}
.actions{display:flex;align-items:flex-end;gap:10px;flex-wrap:wrap;margin-bottom:16px}
.actions form{display:flex;align-items:flex-end;gap:10px;flex-wrap:wrap;margin:0;min-width:0}
.actions>.btn,.actions>button,.actions form>.btn,.actions form>button{margin-top:0}
.inlineform{display:flex;gap:10px;align-items:end;flex-wrap:wrap}
.inlineform>*{min-width:0}
.inlineform input,.inlineform select{flex:1 1 220px}
.inlineform button,.inlineform .btn{flex:0 1 auto;margin-top:0}
.form-page .form-actions{display:flex;gap:10px;flex-wrap:wrap;align-items:center}

/* Cabecera y acciones */
.topbar{min-height:58px;gap:12px;flex-wrap:wrap}
.topbar>div:first-child{flex:1 1 220px;min-width:0}
.topbar-right{flex:0 1 auto;max-width:100%}
.top-action{white-space:normal;line-height:1.2}
.role,.badge{max-width:100%;white-space:normal}

/* Tablas: el desplazamiento horizontal queda confinado al contenedor */
.tablewrap{width:100%;max-width:100%;overflow-x:auto;overflow-y:visible;-webkit-overflow-scrolling:touch;overscroll-behavior-inline:contain}
.tablewrap table{width:max-content;min-width:100%;max-width:none}
.tablewrap th,.tablewrap td{max-width:min(36rem,75vw);vertical-align:top}
.tablewrap td{white-space:normal}
.tablewrap th{white-space:nowrap}
.tablewrap form{max-width:min(30rem,80vw)}
.tablewrap button,.tablewrap .btn{margin-top:6px}
.admin-edit-form{width:min(280px,75vw);min-width:0;max-width:100%}

/* Sidebar: solo el aside raíz es menú. Los aside de módulos permanecen en flujo. */
.sidebar-backdrop{display:none}
.menubtn{margin:0;align-items:center;justify-content:center;touch-action:manipulation}
.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
body>aside nav a{overflow-wrap:anywhere}

/* POS */
.pos-page main{width:calc(100% - 82px);min-width:0;min-height:100vh}
.shop-pos-shell{width:100%;min-width:0;min-height:calc(100vh - 64px);height:auto;grid-template-columns:minmax(0,1fr) minmax(320px,430px)}
@supports (min-height:100dvh){.pos-page main{min-height:100dvh}.shop-pos-shell{min-height:calc(100dvh - 64px)}}
.shop-pos-workspace{min-width:0;overflow:visible}
.shop-pos-controls{grid-template-columns:minmax(0,1fr) minmax(0,.9fr)}
.shop-pos-selects{grid-template-columns:minmax(125px,.7fr) minmax(0,1.3fr)}
.shop-pos-search{height:auto;min-height:52px}
.shop-pos-search input{height:auto;min-width:0}
.shop-pos-grid{grid-template-columns:repeat(4,minmax(0,1fr))}
.shop-product-tile,.shop-product-copy{min-width:0}
.shop-product-copy b,.shop-product-copy small{white-space:normal;overflow-wrap:anywhere}
.shop-product-image{max-width:100%;height:72px;object-fit:cover}
.shop-cart{transform:none!important;min-width:0}
.shop-cart-row{min-width:0}
.cart-product{min-width:0}
.cart-product b{white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:anywhere}
.category-tabs{max-width:100%;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;overscroll-behavior-inline:contain}
.shop-pos-sectionhead{gap:10px;flex-wrap:wrap}
.shop-pos-sectionhead>*{min-width:0}

/* Modales y cámara */
.modal,.camera-modal{max-width:100%;overflow-y:auto;-webkit-overflow-scrolling:touch}
.modal{padding:clamp(8px,2vw,20px);align-items:center}
.modalcard{width:min(440px,100%);max-width:100%;max-height:calc(100vh - 24px);overflow-y:auto;overflow-x:hidden;padding:clamp(18px,4vw,26px)}
.modalcard.wide{width:min(720px,100%)}
@supports (max-height:100dvh){.modalcard{max-height:calc(100dvh - 24px)}}
.modal-total{font-size:clamp(2rem,9vw,2.625rem);overflow-wrap:anywhere}
.suspended-list>div{flex-wrap:wrap;align-items:flex-start}
.suspended-list>div>div{min-width:min(180px,100%)}
.camera-card{max-width:100%;max-height:calc(100vh - 20px);overflow-y:auto}
@supports (max-height:100dvh){.camera-card{max-height:calc(100dvh - 20px)}}
.camera-view video{max-width:none;height:100%}

/* Módulos específicos */
.school-break-grid{grid-template-columns:repeat(4,minmax(0,1fr))}
.school-total-bar{max-width:100%}
.barcode-field-row{grid-template-columns:minmax(0,1fr) auto}
.receipt80{max-width:100%}
.receipt-actions{flex-wrap:wrap}
.credentials,.credential-value{max-width:100%}
.credential-value{overflow-wrap:anywhere;word-break:break-word}

/* Desktop/notebook 992 - 1199 */
@media (max-width:1199px){
 .cards{grid-template-columns:repeat(3,minmax(0,1fr))}
 .shop-pos-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
 .shop-pos-shell{grid-template-columns:minmax(0,1fr) minmax(320px,385px)}
 .shop-pos-controls{grid-template-columns:1fr}
 .school-break-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
}

/* Tablet y menor: sidebar off-canvas, contenido ocupa todo el ancho */
@media (max-width:991px){
 body>aside{transform:translateX(-105%);transition:transform .2s ease;width:min(300px,85vw);max-width:85vw;box-shadow:8px 0 28px #10182833}
 body.menuopen>aside{transform:translateX(0)}
 .sidebar-backdrop{position:fixed;inset:0;background:#10182866;z-index:19;border:0;padding:0;margin:0}
 body.menuopen>.sidebar-backdrop{display:block}
 .menubtn{display:flex;position:fixed;top:12px;right:12px;bottom:auto;width:48px;height:48px;z-index:50}
 body>main:not(.public):not(.install),.pos-page main{margin-left:0;width:100%;max-width:100%;padding:clamp(12px,2vw,20px)}
 .topbar{padding-right:58px}
 .cards{grid-template-columns:repeat(2,minmax(0,1fr))}
 .grid{grid-template-columns:repeat(2,minmax(0,1fr))}
 .shop-pos-shell{grid-template-columns:1fr;min-height:0}
 .shop-pos-workspace{padding:12px}
 .shop-cart{border-left:0!important;border-top:1px solid #dfe3e8;min-height:0}
 .shop-cart-items{max-height:none;overflow:visible}
 .shop-pos-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
 .school-break-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
 .sticky{position:static}
}

/* Tablet vertical / móvil grande */
@media (max-width:767px){
 input,select,textarea{font-size:16px}
 .topbar{align-items:flex-start}
 .topbar-right{width:100%;justify-content:flex-start}
 .top-action{flex:1 1 calc(50% - 8px);justify-content:center;min-width:0}
 .role{flex:0 1 auto}
 .cards,.grid{grid-template-columns:1fr}
 .form-page{max-width:100%}
 .barcode-field-row{grid-template-columns:1fr}
 .camera-scan-btn{width:100%}
 .shop-pos-selects{grid-template-columns:1fr 1fr}
 .shop-pos-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
 .shop-pos-sectionhead{align-items:flex-start}
 .shop-cart-row{grid-template-columns:minmax(0,1fr) minmax(84px,100px)!important;grid-template-areas:'p price' 'qty remove'}
 .cart-product{grid-area:p}.qtybox{grid-area:qty}.shop-cart-row .line{grid-area:price}.shop-cart-row .remove{grid-area:remove;justify-self:end}
 .discount-panel{grid-template-columns:1fr 1fr}
 .school-break-grid{grid-template-columns:1fr}
 .school-total-bar{flex-wrap:wrap}
 .school-total-bar span{width:100%;margin-right:0}
 .school-total-bar button{width:100%}
 .inlineform{align-items:stretch}
 .inlineform input,.inlineform select,.inlineform button,.inlineform .btn{flex:1 1 100%;width:100%}
 .receipt-actions{margin-inline:0}
}

/* Smartphone */
@media (max-width:575px){
 body>main:not(.public):not(.install),.pos-page main{padding:12px}
 .card{border-radius:12px;padding:14px}
 .topbar{padding-right:56px;margin-bottom:14px}
 .topbar>div:first-child{flex-basis:100%}
 .topbar-right{display:grid;grid-template-columns:1fr;width:100%}
 .top-action,.topbar-right .role{width:100%;justify-content:center}
 .cards{grid-template-columns:1fr}
 .actions,.actions form{align-items:stretch}
 .actions>.btn,.actions>button,.actions form>.btn,.actions form>button{flex:1 1 100%;width:100%}
 .shop-pos-selects{grid-template-columns:1fr}
 .shop-pos-search.has-camera{grid-template-columns:auto minmax(0,1fr);grid-template-areas:'icon search' 'key camera'}
 .shop-pos-search.has-camera>span{grid-area:icon}.shop-pos-search.has-camera>input{grid-area:search}.shop-pos-search.has-camera>kbd{grid-area:key;justify-self:start}.shop-pos-search.has-camera>.shop-camera-btn{grid-area:camera;width:100%}
 .category-tabs{margin-right:0}
 .shop-product-tile{min-height:148px}
 .shop-product-copy{padding:9px}
 .shop-cart-head,.shop-cart-items,.shop-cart-footer{padding-left:12px;padding-right:12px}
 .shop-summary,.shop-total,.change{gap:10px;flex-wrap:wrap}
 .num-pad,.discount-panel,.cart-actions{grid-template-columns:1fr 1fr}
 .modalcard{border-radius:14px;padding:18px 14px}
 .modalx{right:8px;top:8px}
 .camera-modal{padding:6px}
 .camera-card{padding:10px;border-radius:12px}
 .camera-head{padding-right:0}
 .tablewrap{border-radius:12px}
}

/* Móvil pequeño: 320px incluidos */
@media (max-width:374px){
 body>main:not(.public):not(.install),.pos-page main{padding:10px}
 .card{padding:12px}
 .shop-pos-workspace{padding:8px}
 .shop-pos-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}
 .shop-product-tile{min-height:140px}
 .shop-product-thumb{height:58px}
 .shop-product-copy b{font-size:12px}.shop-product-copy small{font-size:10px}.shop-product-copy strong{font-size:14px}
 .num-pad{grid-template-columns:1fr 1fr}
 .qtybox{grid-template-columns:26px 44px 26px}
 .shop-cart-row{grid-template-columns:minmax(0,1fr) 80px!important}
}

.responsive-section-head{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}.responsive-section-head>*{min-width:0}.compact-heading{margin-bottom:4px}.new-category-panel{margin:14px 0;padding:14px}.new-category-panel[hidden]{display:none}.grid-full{grid-column:1/-1}.spaced-cards{margin-top:16px}@media(max-width:767px){.grid-full{grid-column:auto}.responsive-section-head{align-items:flex-start}.responsive-section-head>button{width:100%;margin-top:0}}

.date-filter{min-width:0;max-width:100%;width:min(100%,280px)}@media(max-width:575px){.date-filter{width:100%}.credit-terms{grid-template-columns:1fr}}
/* El POS usa un sidebar compacto de 82px en escritorio; esta regla debe prevalecer sobre el layout general. */
body.pos-page>main{margin-left:82px;width:calc(100% - 82px);max-width:none}
@media(max-width:991px){body.pos-page>main{margin-left:0;width:100%}}
body.pos-page>main:not(.public):not(.install){margin-left:82px;width:calc(100% - 82px);max-width:none;padding:0}
@media(max-width:991px){body.pos-page>main:not(.public):not(.install){margin-left:0;width:100%;padding:clamp(10px,2vw,15px)}}
@media (min-width:992px) and (max-width:1199px){
 .shop-cart-row{grid-template-columns:minmax(0,1fr) 96px!important;grid-template-areas:'p price' 'qty remove'}
 .shop-cart-row .cart-product{grid-area:p}.shop-cart-row .qtybox{grid-area:qty}.shop-cart-row .line{grid-area:price}.shop-cart-row .remove{grid-area:remove;justify-self:end}
}


/* V19 - flujo de compras, cobro móvil/tablet y decisión de impresión */
.purchase-entry-line{padding:14px;margin-bottom:10px;box-shadow:none}
.purchase-entry-grid{grid-template-columns:minmax(0,2fr) minmax(120px,.7fr) minmax(140px,.8fr) auto;align-items:end}
.purchase-remove-cell{display:flex;align-items:end}
.purchase-remove{margin:0;min-height:44px}
.provisional-statement-form{display:grid;grid-template-columns:minmax(180px,280px) auto;gap:12px;align-items:end;max-width:620px}
.provisional-statement-form button{margin:0;min-height:44px}
.mobile-cash-dock{display:none}
.receipt-decision{position:fixed;inset:0;z-index:1000;background:#101828b8;padding:16px;display:grid;place-items:center}
.receipt-decision-card{width:min(460px,100%);max-height:calc(100dvh - 32px);overflow:auto;background:#fff;border-radius:18px;padding:clamp(20px,5vw,32px);box-shadow:0 24px 70px #10182840;text-align:center}
.receipt-decision-card h1{font-size:clamp(1.35rem,5vw,1.8rem);margin:10px 0 8px}.receipt-decision-card p{color:#475467}.receipt-decision-card small{display:block;color:#667085;margin-top:12px}
.receipt-ok{display:grid;place-items:center;width:58px;height:58px;margin:auto;border-radius:50%;background:#ecfdf3;color:#027a48;font-size:30px;font-weight:900}
.receipt-decision-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:18px}.receipt-decision-actions button{margin:0;min-height:48px}
@media(max-width:991px){
 body.pos-page>main:not(.public):not(.install){padding-bottom:92px}
 .mobile-cash-dock{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;position:fixed;left:12px;right:12px;bottom:max(10px,env(safe-area-inset-bottom));z-index:45;padding:8px;background:#101828;border-radius:14px;box-shadow:0 12px 34px #10182855}
 .mobile-cash-dock button{margin:0;min-height:52px;border-radius:10px}
 .mobile-cash-summary{display:flex;align-items:center;justify-content:space-between;gap:10px;background:#fff;color:#101828;text-align:left;padding:8px 12px}.mobile-cash-summary span{font-size:12px;color:#667085}.mobile-cash-summary strong{font-size:20px;white-space:nowrap}
 .mobile-cash-charge{background:#155eef;min-width:110px}
 .shop-cart{scroll-margin-top:12px}
 .purchase-entry-grid{grid-template-columns:1fr 1fr}.purchase-entry-grid>label:first-child{grid-column:1/-1}.purchase-remove-cell{align-items:stretch}.purchase-remove{width:100%}
}
@media(max-width:575px){
 .mobile-cash-dock{left:8px;right:8px;bottom:max(8px,env(safe-area-inset-bottom));grid-template-columns:minmax(0,1fr) 96px}
 .mobile-cash-summary{padding:7px 9px}.mobile-cash-summary strong{font-size:17px}.mobile-cash-charge{min-width:0;padding-inline:10px}
 .purchase-entry-grid,.provisional-statement-form{grid-template-columns:1fr}.purchase-entry-grid>label:first-child{grid-column:auto}.provisional-statement-form button{width:100%}
 .receipt-decision-actions{grid-template-columns:1fr}
}
@media print{.receipt-decision{display:none!important}}

/* V20 - acciones rápidas de contacto en Clientes */
.customer-actions{display:flex;align-items:center;gap:6px;flex-wrap:wrap;min-width:max-content}
.contact-icon{display:inline-grid;place-items:center;width:36px;height:36px;min-width:36px;border-radius:10px;text-decoration:none;font-size:19px;font-weight:800;line-height:1;transition:transform .15s ease,box-shadow .15s ease}
.contact-icon:hover,.contact-icon:focus-visible{transform:translateY(-1px);box-shadow:0 4px 12px #10182824;outline:2px solid currentColor;outline-offset:2px}
.contact-call{background:#eff8ff;color:#175cd3;border:1px solid #b2ddff}
.contact-whatsapp{background:#ecfdf3;color:#067647;border:1px solid #abefc6}
@media(max-width:575px){.customer-actions{min-width:0}.contact-icon{width:40px;height:40px;min-width:40px}}

/* ==========================================================
   V22 - SIDEBAR RESPONSIVE CON NAVEGACION SCROLLABLE
   Mantiene visibles y accesibles todos los módulos incluso
   en pantallas/ventanas de poca altura.
   ========================================================== */
body>aside#appSidebar{
 display:flex;
 flex-direction:column;
 height:100vh;
 max-height:100vh;
 overflow:hidden;
 padding-bottom:max(14px,env(safe-area-inset-bottom));
}
@supports (height:100dvh){
 body>aside#appSidebar{height:100dvh;max-height:100dvh}
}
body>aside#appSidebar .brand{
 flex:0 0 auto;
 min-width:0;
}
body>aside#appSidebar nav{
 flex:1 1 auto;
 min-height:0;
 width:100%;
 overflow-x:hidden;
 overflow-y:auto;
 -webkit-overflow-scrolling:touch;
 overscroll-behavior-y:contain;
 scrollbar-gutter:stable;
 padding:0 3px max(12px,env(safe-area-inset-bottom)) 0;
}
body>aside#appSidebar nav a{
 width:100%;
 max-width:100%;
 min-width:0;
}
body>aside#appSidebar nav::-webkit-scrollbar{width:8px}
body>aside#appSidebar nav::-webkit-scrollbar-track{background:#101828}
body>aside#appSidebar nav::-webkit-scrollbar-thumb{background:#475467;border-radius:999px;border:2px solid #101828}
body>aside#appSidebar nav{scrollbar-width:thin;scrollbar-color:#667085 #101828}

/* El menú compacto del POS también debe desplazarse verticalmente. */
body.pos-page>aside#appSidebar nav{
 padding-right:0;
}

/* Alturas reducidas de notebook/tablet: compactar sin ocultar opciones. */
@media (max-height:760px) and (min-width:992px){
 body>aside#appSidebar{padding-top:12px;padding-left:10px;padding-right:10px}
 body>aside#appSidebar .brand{padding-bottom:10px}
 body>aside#appSidebar nav a{padding-top:8px;padding-bottom:8px;margin:2px 0}
 body.pos-page>aside#appSidebar nav a{padding-top:9px;padding-bottom:9px}
}
@media (max-height:620px){
 body>aside#appSidebar{padding-top:8px;padding-bottom:max(8px,env(safe-area-inset-bottom))}
 body>aside#appSidebar .brand{padding-bottom:8px}
 body>aside#appSidebar .brand>span{width:38px;height:38px}
 body>aside#appSidebar nav a{padding-top:7px;padding-bottom:7px;margin:1px 0}
}

/* En tablet/móvil el panel off-canvas conserva exactamente la altura visible. */
@media (max-width:991px){
 body>aside#appSidebar{
  top:0;
  bottom:auto;
  height:100vh;
  max-height:100vh;
  padding-bottom:max(14px,env(safe-area-inset-bottom));
 }
 @supports (height:100dvh){
  body>aside#appSidebar{height:100dvh;max-height:100dvh}
 }
 body>aside#appSidebar nav{padding-bottom:max(24px,env(safe-area-inset-bottom))}
}


/* ==========================================================
   V23 - cámara de escaneo compacta
   Botón únicamente con icono en POS y registro de productos.
   ========================================================== */
.camera-icon-btn{
 width:38px;min-width:38px;max-width:38px;height:38px;min-height:38px;padding:0!important;
 flex:0 0 38px;align-self:center;border-radius:9px;line-height:1;
}
.camera-icon-btn svg{width:19px;height:19px;display:block;fill:currentColor;pointer-events:none}
.barcode-field-row{grid-template-columns:minmax(0,1fr) 38px;align-items:end}
.shop-pos-search.has-camera{grid-template-columns:auto minmax(0,1fr) auto 38px}
.shop-camera-btn{width:38px!important;min-width:38px;max-width:38px;align-self:center!important;white-space:normal}
@media(max-width:767px){
 .barcode-field-row{grid-template-columns:minmax(0,1fr) 38px}
 .camera-scan-btn.camera-icon-btn{width:38px;min-width:38px;max-width:38px}
}
@media(max-width:575px){
 .shop-pos-search.has-camera{grid-template-columns:auto minmax(0,1fr) 38px;grid-template-areas:'icon search camera'}
 .shop-pos-search.has-camera>span{grid-area:icon}
 .shop-pos-search.has-camera>input{grid-area:search}
 .shop-pos-search.has-camera>kbd{display:none}
 .shop-pos-search.has-camera>.shop-camera-btn{grid-area:camera;width:38px!important}
}


/* ==========================================================
   V25 - NAVEGACION EMPRESARIAL: HAMBURGUESA EN TODA PANTALLA
   El sidebar nunca reserva ancho: siempre funciona como panel
   off-canvas, tanto en escritorio como notebook/tablet/movil.
   ========================================================== */
body>aside#appSidebar{
 width:min(310px,88vw)!important;
 max-width:88vw;
 transform:translateX(-105%)!important;
 transition:transform .22s ease,box-shadow .22s ease;
 box-shadow:none;
 z-index:70;
}
body.menuopen>aside#appSidebar{
 transform:translateX(0)!important;
 box-shadow:18px 0 45px #10182842;
}
body>.sidebar-backdrop{
 display:block;
 visibility:hidden;
 opacity:0;
 pointer-events:none;
 position:fixed;
 inset:0;
 z-index:69;
 background:#10182870;
 transition:opacity .2s ease,visibility .2s ease;
}
body.menuopen>.sidebar-backdrop{visibility:visible;opacity:1;pointer-events:auto}
.menubtn{
 display:flex!important;
 position:fixed!important;
 top:max(12px,env(safe-area-inset-top))!important;
 left:max(12px,env(safe-area-inset-left))!important;
 right:auto!important;
 bottom:auto!important;
 width:46px!important;height:46px!important;
 z-index:80!important;
 margin:0!important;
 box-shadow:0 5px 18px #1018282b;
}
body>main:not(.public):not(.install),body.pos-page>main,body.pos-page>main:not(.public):not(.install){
 margin-left:0!important;
 width:100%!important;
 max-width:none!important;
}
body:not(.pos-page)>main:not(.public):not(.install){padding-left:clamp(14px,2vw,24px)}
body:not(.pos-page) .topbar{padding-left:58px}
body.pos-page .topbar{padding-left:72px!important;padding-right:18px!important}
body.pos-page>aside#appSidebar .brand{justify-content:flex-start!important;padding:2px 8px 14px!important}
body.pos-page>aside#appSidebar .brand>div{display:block!important}
body.pos-page>aside#appSidebar nav a{font-size:14px!important;text-align:left!important;padding:10px 12px!important}
@media(max-width:575px){
 body:not(.pos-page) .topbar{padding-left:56px}
 body.pos-page .topbar{padding-left:66px!important;padding-right:10px!important}
 .menubtn{width:44px!important;height:44px!important;top:max(8px,env(safe-area-inset-top))!important;left:max(8px,env(safe-area-inset-left))!important}
}
@media(prefers-reduced-motion:reduce){body>aside#appSidebar,body>.sidebar-backdrop{transition:none}}

/* ==========================================================
   V26 - HAMBURGUESA UNIVERSAL ROBUSTA + ANTICACHE
   Reglas finales deliberadamente específicas para neutralizar
   estilos heredados de escritorio, POS y breakpoints anteriores.
   ========================================================== */
html.sidebar-lock,html.sidebar-lock body{overflow:hidden!important}
body>aside#appSidebar{
 position:fixed!important;
 top:0!important;right:auto!important;bottom:0!important;left:0!important;
 width:min(320px,90vw)!important;max-width:90vw!important;
 height:100vh!important;max-height:100vh!important;
 display:flex!important;flex-direction:column!important;
 padding:0!important;margin:0!important;
 background:var(--nav)!important;color:#fff!important;
 transform:translate3d(-105%,0,0)!important;
 visibility:hidden!important;pointer-events:none!important;
 transition:transform .22s ease,visibility .22s ease,box-shadow .22s ease!important;
 box-shadow:none!important;z-index:1000!important;overflow:hidden!important;
}
@supports(height:100dvh){body>aside#appSidebar{height:100dvh!important;max-height:100dvh!important}}
body.sidebar-open>aside#appSidebar,body.menuopen>aside#appSidebar{
 transform:translate3d(0,0,0)!important;visibility:visible!important;pointer-events:auto!important;
 box-shadow:18px 0 45px #10182842!important;
}
body>aside#appSidebar .sidebar-head{display:flex!important;align-items:center!important;gap:8px!important;flex:0 0 auto!important;padding:14px 12px 8px!important}
body>aside#appSidebar .brand{flex:1 1 auto!important;min-width:0!important;margin:0!important;padding:0!important;justify-content:flex-start!important}
body>aside#appSidebar .brand>div{display:block!important;min-width:0!important}
body>aside#appSidebar .brand b,body>aside#appSidebar .brand small{overflow:hidden!important;text-overflow:ellipsis!important;white-space:nowrap!important}
body>aside#appSidebar .sidebar-close{display:grid!important;place-items:center!important;flex:0 0 40px!important;width:40px!important;height:40px!important;padding:0!important;margin:0!important;border-radius:10px!important;background:#1d2939!important;color:#fff!important;font-size:27px!important;line-height:1!important}
body>aside#appSidebar nav{display:block!important;flex:1 1 auto!important;min-height:0!important;overflow-y:auto!important;overflow-x:hidden!important;-webkit-overflow-scrolling:touch!important;overscroll-behavior:contain!important;padding:4px 12px max(22px,env(safe-area-inset-bottom))!important}
body>aside#appSidebar nav a{display:block!important;font-size:14px!important;text-align:left!important;padding:10px 12px!important;margin:2px 0!important;white-space:normal!important;overflow-wrap:anywhere!important}
body>aside#appSidebar nav a::first-letter{font-size:inherit!important}
body>.sidebar-backdrop#sidebarBackdrop{
 display:block!important;position:fixed!important;inset:0!important;margin:0!important;padding:0!important;
 border:0!important;border-radius:0!important;background:#10182873!important;
 opacity:0!important;visibility:hidden!important;pointer-events:none!important;
 transition:opacity .2s ease,visibility .2s ease!important;z-index:999!important;
}
body.sidebar-open>.sidebar-backdrop#sidebarBackdrop,body.menuopen>.sidebar-backdrop#sidebarBackdrop{opacity:1!important;visibility:visible!important;pointer-events:auto!important}
body>.menubtn#menuToggle{
 display:grid!important;place-items:center!important;position:fixed!important;
 top:max(10px,env(safe-area-inset-top))!important;left:max(10px,env(safe-area-inset-left))!important;right:auto!important;bottom:auto!important;
 width:46px!important;height:46px!important;padding:0!important;margin:0!important;
 border:0!important;border-radius:12px!important;background:var(--primary)!important;color:#fff!important;
 font-size:24px!important;line-height:1!important;box-shadow:0 5px 18px #1018282b!important;z-index:1010!important;
}
body>.menubtn#menuToggle .menu-icon{display:block!important;line-height:1!important}
body>main:not(.public):not(.install),body.pos-page>main{margin-left:0!important;width:100%!important;max-width:none!important;min-width:0!important}
body:not(.pos-page)>main:not(.public):not(.install)>.topbar{padding-left:58px!important}
body.pos-page>main>.topbar{padding-left:68px!important}
@media(max-width:575px){body>.menubtn#menuToggle{width:42px!important;height:42px!important;top:max(8px,env(safe-area-inset-top))!important;left:max(8px,env(safe-area-inset-left))!important}body:not(.pos-page)>main:not(.public):not(.install)>.topbar{padding-left:52px!important}body.pos-page>main>.topbar{padding-left:58px!important}}
@media(prefers-reduced-motion:reduce){body>aside#appSidebar,body>.sidebar-backdrop#sidebarBackdrop{transition:none!important}}

/* ==========================================================
   V28 - INICIO DE SESION EMPRESARIAL POR TIPO DE ACCESO
   ========================================================== */
body.login-page{background:linear-gradient(145deg,#f8fafc 0%,#eef4ff 58%,#f5f8ff 100%);min-height:100vh}
body.login-page main.public{width:min(100% - 24px,720px);max-width:720px;padding-top:clamp(24px,7vh,72px);padding-bottom:32px}
.login-shell{width:100%;margin-inline:auto}
.login-welcome{display:flex;align-items:center;justify-content:center;gap:16px;margin:0 auto 20px;text-align:left}
.login-brand-mark{display:grid;place-items:center;flex:0 0 62px;width:62px;height:62px;border-radius:18px;background:#155eef;color:#fff;font-size:18px;font-weight:900;letter-spacing:.04em;box-shadow:0 12px 28px #155eef2b}
.login-welcome h1{margin:2px 0 5px;font-size:clamp(1.65rem,4vw,2.25rem);line-height:1.1;color:#101828}
.login-welcome p{margin:0;color:#667085}
.login-welcome .login-eyebrow{font-size:13px;font-weight:900;text-transform:uppercase;letter-spacing:.1em;color:#155eef}
body.login-page .login{max-width:640px;margin-inline:auto;padding:clamp(18px,3vw,28px);border-radius:20px;box-shadow:0 18px 50px #10182814}
.login-form{display:grid;gap:20px}
.access-selector{min-width:0;margin:0;padding:0;border:0}
.access-selector legend{width:100%;padding:0 0 10px;font-size:14px;font-weight:800;color:#344054}
.access-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.access-card{display:block;min-width:0;cursor:pointer}
.access-card>input{position:absolute;opacity:0;pointer-events:none;width:1px;height:1px}
.access-card-content{display:flex;min-height:148px;align-items:center;justify-content:center;flex-direction:column;gap:8px;padding:18px 12px;border:2px solid #e4e7ec;border-radius:16px;background:#fff;text-align:center;transition:border-color .16s ease,box-shadow .16s ease,transform .16s ease,background .16s ease}
.access-card:hover .access-card-content{border-color:#b2ccff;transform:translateY(-1px);box-shadow:0 8px 22px #155eef12}
.access-card>input:focus-visible+.access-card-content{outline:3px solid #84adff66;outline-offset:2px}
.access-card>input:checked+.access-card-content{border-color:#155eef;background:#f5f8ff;box-shadow:0 0 0 3px #155eef16}
.access-icon{display:grid;place-items:center;width:54px;height:54px;border-radius:16px;background:#eef4ff;color:#155eef}
.access-icon svg{width:28px;height:28px;fill:currentColor}
.access-card strong{font-size:14px;letter-spacing:.045em;color:#101828}
.access-card small{font-size:12px;color:#667085;font-weight:600}
.login-fields{display:grid;gap:14px}
.login-fields input{min-height:48px;background:#fff}
.login-submit{width:100%;min-height:50px;margin-top:0;font-size:15px;border-radius:11px;box-shadow:0 5px 14px #155eef25}
@media(max-width:560px){
 body.login-page main.public{width:min(100% - 18px,720px);padding-top:20px}
 .login-welcome{justify-content:flex-start;gap:12px;margin-bottom:16px}
 .login-brand-mark{flex-basis:52px;width:52px;height:52px;border-radius:15px;font-size:15px}
 .access-options{grid-template-columns:1fr 1fr;gap:8px}
 .access-card-content{min-height:128px;padding:14px 8px}
 .access-icon{width:46px;height:46px;border-radius:14px}
 .access-icon svg{width:24px;height:24px}
 .access-card strong{font-size:12px;letter-spacing:.025em}
 .access-card small{font-size:11px}
}
@media(max-width:360px){
 .access-options{grid-template-columns:1fr}
 .access-card-content{min-height:112px}
}

/* V31 - Comentario de venta */
.shop-sale-comment{display:grid;gap:5px;padding:10px 0}.shop-sale-comment>span{font-size:12px;font-weight:800;color:#344054}.shop-sale-comment textarea{width:100%;min-height:64px;resize:vertical;border:1px solid #d0d5dd;border-radius:10px;padding:9px 10px;font:inherit;background:#fff}.shop-sale-comment small{font-size:11px;color:#667085;line-height:1.35}

/* V31 - Administración empresarial de maestros */
.inline-action{display:inline-flex;margin:0}.status-badge{display:inline-flex;align-items:center;padding:4px 8px;border-radius:999px;font-size:12px;font-weight:800;white-space:nowrap}.status-active{background:#ecfdf3;color:#067647;border:1px solid #abefc6}.status-inactive{background:#f2f4f7;color:#475467;border:1px solid #d0d5dd}.tablebtn.danger,button.tablebtn.danger{background:#fff1f3!important;color:#c01048!important;border:1px solid #fecdd6!important}.customer-actions form button{font:inherit;cursor:pointer}

/* V32: Cerrar sesión fijo en cabecera superior derecha */
.topbar-right{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}
.top-logout{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:38px;padding:8px 12px;border:1px solid #fecdca;border-radius:10px;background:#fef3f2;color:#b42318;font-weight:700;text-decoration:none;white-space:nowrap}
.top-logout:hover,.top-logout:focus-visible{background:#fee4e2;color:#912018;outline:2px solid #fda29b;outline-offset:2px}
@media(max-width:575px){.topbar-right{gap:6px}.top-logout{width:40px;min-width:40px;height:40px;padding:0}.top-logout-text{display:none}.topbar-right .role{display:none}}

/* V34 - Cuenta de cliente: PDF y WhatsApp */
.statement-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.statement-actions>button{margin:0}.statement-share-help{margin:9px 0 0;font-size:12px;color:#667085;line-height:1.45}.whatsapp-share{background:#ecfdf3!important;color:#067647!important;border:1px solid #abefc6!important}.whatsapp-share:hover,.whatsapp-share:focus-visible{background:#dcfae6!important;color:#05603a!important}.statement-row-actions{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.statement-row-actions button{font:inherit;cursor:pointer}.statement-history{margin-top:14px}@media(max-width:575px){.statement-actions{display:grid;grid-template-columns:1fr}.statement-actions>button{width:100%}.statement-row-actions{min-width:150px}}


/* V35: campana de nuevas notificaciones de pago */
.notification-bell{position:relative;display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border:1px solid #d0d5dd;border-radius:10px;background:#fff;text-decoration:none;line-height:1;flex:0 0 auto}.notification-bell:hover,.notification-bell:focus-visible{background:#f8fafc;outline:2px solid #98a2b3;outline-offset:2px}.notification-bell.has-new{border-color:#fecdca;background:#fff7ed}.bell-icon{font-size:19px}.notification-badge{position:absolute;right:-6px;top:-7px;display:flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 5px;border-radius:999px;background:#d92d20;color:#fff;font-size:11px;font-weight:800;border:2px solid #fff;box-sizing:border-box}

/* V37 multi-sucursal */
.branch-switch{display:inline-flex;align-items:center;gap:6px;padding:4px 7px;border:1px solid #d0d5dd;border-radius:10px;background:#fff;margin:0}.branch-switch select{border:0;background:transparent;min-width:135px;padding:4px;font-weight:700}.branch-badge{display:inline-flex;align-items:center;min-height:38px;padding:7px 10px;border:1px solid #d0d5dd;border-radius:10px;background:#fff;font-weight:700;white-space:nowrap}@media(max-width:700px){.branch-switch select{min-width:95px;max-width:125px}.branch-badge{max-width:140px;overflow:hidden;text-overflow:ellipsis}}


/* V39 - selección obligatoria de sucursal en inicio de sesión */
.login-branch-field{display:grid;gap:6px;padding:14px;border:1px solid #d0d5dd;border-radius:14px;background:#f9fafb}.login-branch-field label{display:grid;gap:7px;font-weight:800;color:#344054}.login-branch-field select{width:100%;min-height:48px;border:1px solid #d0d5dd;border-radius:10px;background:#fff;padding:9px 38px 9px 11px;font:inherit;color:#101828}.login-branch-field select:focus{outline:3px solid #84adff55;border-color:#84adff}.login-branch-field small{font-size:12px;line-height:1.4;color:#667085}@media(max-width:560px){.login-branch-field{padding:12px}.login-branch-field select{min-height:50px}}


/* V41 - Resumen de cierre de caja */
.cash-summary-sheet{max-width:1080px;margin:0 auto 32px;display:grid;gap:16px}.cash-summary-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;padding:22px;border:1px solid #e4e7ec;border-radius:18px;background:#fff}.cash-summary-head h1{margin:3px 0 4px;font-size:30px;color:#101828}.cash-summary-head p{margin:0;color:#667085}.cash-summary-meta{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.cash-summary-meta>div{display:grid;gap:3px;padding:14px;border:1px solid #e4e7ec;border-radius:14px;background:#fff}.cash-summary-meta small{color:#667085;font-weight:700}.cash-summary-meta b{color:#101828}.cash-summary-meta span{font-size:12px;color:#667085}.cash-summary-section{padding:18px;border:1px solid #e4e7ec;border-radius:16px;background:#fff}.cash-summary-section h2{margin:0 0 14px;font-size:17px}.cash-summary-cards{grid-template-columns:repeat(3,minmax(0,1fr))}.cash-summary-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.cash-summary-section table{width:100%}.cash-difference.is-ok{border-color:#abefc6;background:#ecfdf3}.cash-difference.is-alert{border-color:#fecdca;background:#fff1f3}.cash-summary-foot{text-align:center;color:#667085;font-size:12px;margin:2px 0 0}.cash-summary-print{white-space:nowrap}
@media(max-width:800px){.cash-summary-meta{grid-template-columns:repeat(2,minmax(0,1fr))}.cash-summary-cards{grid-template-columns:repeat(2,minmax(0,1fr))}.cash-summary-grid{grid-template-columns:1fr}}
@media(max-width:520px){.cash-summary-head{display:grid}.cash-summary-print{width:100%}.cash-summary-meta,.cash-summary-cards{grid-template-columns:1fr}}
@media print{body.cash-summary-page>aside,body.cash-summary-page>.menubtn,body.cash-summary-page>.sidebar-backdrop,body.cash-summary-page .topbar,body.cash-summary-page .cash-summary-print{display:none!important}body.cash-summary-page>main{margin:0!important;padding:0!important;width:100%!important}.cash-summary-sheet{max-width:none;margin:0;gap:8px}.cash-summary-head,.cash-summary-section,.cash-summary-meta>div{box-shadow:none!important;break-inside:avoid}.cash-summary-head{padding:12px}.cash-summary-head h1{font-size:24px}.cash-summary-section{padding:12px}.cash-summary-meta{gap:6px}.cash-summary-cards{grid-template-columns:repeat(3,1fr)!important}}


/* V42 - POS móvil: cabecera, sucursal y estado de caja sin superposición */
.pos-cash-status{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:14px 18px 0;padding:12px 14px;border:1px solid #fecdca;border-radius:12px;background:#fef3f2;color:#912018;position:relative;z-index:1}
.pos-cash-status-copy{display:flex;align-items:center;gap:10px;min-width:0}.pos-cash-status-copy>div{display:grid;gap:2px;min-width:0}.pos-cash-status-copy strong{font-size:14px}.pos-cash-status-copy small{font-size:12px;line-height:1.35;color:#b42318}.pos-cash-status-icon{display:grid;place-items:center;flex:0 0 36px;width:36px;height:36px;border-radius:10px;background:#fee4e2;font-size:18px}.pos-open-cash{flex:0 0 auto;margin:0!important;min-height:40px;display:inline-flex;align-items:center;justify-content:center;white-space:nowrap}

@media(max-width:767px){
 body.pos-page>main>.topbar{height:auto!important;min-height:0!important;display:grid!important;grid-template-columns:1fr!important;align-items:stretch!important;gap:10px!important;padding-top:10px!important;padding-bottom:10px!important;margin:0!important}
 body.pos-page>main>.topbar>div:first-child{width:100%!important;min-width:0!important}
 body.pos-page>main>.topbar>div:first-child h1{font-size:18px!important;line-height:1.2!important;margin:0!important;white-space:normal!important}
 body.pos-page>main>.topbar>div:first-child p{margin:3px 0 0!important;font-size:11px!important}
 body.pos-page>main>.topbar .topbar-right{display:flex!important;align-items:center!important;justify-content:flex-start!important;gap:7px!important;flex-wrap:wrap!important;width:100%!important}
 body.pos-page>main>.topbar .branch-switch{order:1;flex:1 1 210px!important;min-width:0!important;max-width:none!important;min-height:42px!important;padding:4px 8px!important}
 body.pos-page>main>.topbar .branch-switch select{flex:1 1 auto!important;width:100%!important;min-width:0!important;max-width:none!important}
 body.pos-page>main>.topbar .branch-badge{order:1;flex:1 1 210px!important;max-width:none!important;min-width:0!important;min-height:42px!important;white-space:normal!important;line-height:1.2!important}
 body.pos-page>main>.topbar .notification-bell{order:2;flex:0 0 42px!important;width:42px!important;height:42px!important}
 body.pos-page>main>.topbar .role{order:3;flex:0 0 auto!important;width:auto!important;margin:0!important}
 body.pos-page>main>.topbar .top-logout{order:4;flex:0 0 42px!important;width:42px!important;height:42px!important;min-width:42px!important;margin:0!important}
 .pos-cash-status{margin:10px 12px 0}
 .shop-pos-shell{min-height:0!important}
}

@media(max-width:575px){
 body.pos-page>main:not(.public):not(.install){padding-top:0!important}
 body.pos-page>main>.topbar{padding-left:58px!important;padding-right:8px!important;gap:8px!important}
 body.pos-page>main>.topbar .topbar-right{display:grid!important;grid-template-columns:minmax(0,1fr) 42px 42px!important;gap:7px!important}
 body.pos-page>main>.topbar .branch-switch,body.pos-page>main>.topbar .branch-badge{grid-column:1!important;grid-row:1!important;width:100%!important;min-width:0!important;max-width:none!important;margin:0!important}
 body.pos-page>main>.topbar .notification-bell{grid-column:2!important;grid-row:1!important;margin:0!important}
 body.pos-page>main>.topbar .top-logout{grid-column:3!important;grid-row:1!important;margin:0!important}
 body.pos-page>main>.topbar .role{display:none!important}
 .pos-cash-status{display:grid;grid-template-columns:1fr;gap:10px;margin:10px 8px 0;padding:11px 12px}
 .pos-cash-status-copy{align-items:flex-start}.pos-cash-status-icon{flex-basis:34px;width:34px;height:34px}
 .pos-open-cash{width:100%!important;min-height:46px!important}
 .shop-pos-workspace{padding-top:10px!important}
}

@media(max-width:374px){
 body.pos-page>main>.topbar{padding-left:56px!important;padding-right:6px!important}
 body.pos-page>main>.topbar .topbar-right{grid-template-columns:minmax(0,1fr) 40px 40px!important;gap:5px!important}
 body.pos-page>main>.topbar .branch-switch{padding:3px 6px!important}.branch-switch select{font-size:14px!important}
 .pos-cash-status{margin-left:6px;margin-right:6px}
}

/* V43 - contactos móviles en ficha de cliente y edición de sucursales */
.field-group{display:grid;gap:6px}.field-group>label{font-weight:600}
.phone-contact-field{display:grid;gap:8px}.phone-contact-field>input{width:100%;margin:0}.phone-contact-actions{display:flex;gap:8px;flex-wrap:wrap}.phone-contact-actions .btn{margin:0;min-height:40px;padding:8px 12px;font-size:13px}.contact-help{display:block;line-height:1.35}.inlineform input[name="code"]{flex:0 1 135px;text-transform:uppercase;font-weight:800}
@media(max-width:575px){.phone-contact-actions{display:grid;grid-template-columns:1fr 1fr}.phone-contact-actions .btn{width:100%;min-height:44px;padding:9px 8px}.inlineform input[name="code"]{flex:1 1 100%}}

/* V44: reporte detallado de cierre de caja */
.cash-report-detail table{min-width:760px}.cash-report-items{display:block;max-width:420px;white-space:normal;line-height:1.35}.cash-report-note{display:block;margin-top:4px;color:#667085;white-space:normal}.cash-report-total td{border-top:2px solid #d0d5dd;background:#f9fafb}.cash-report-detail td:last-child,.cash-report-detail th:last-child{white-space:nowrap;text-align:right}
@media(max-width:700px){.cash-report-detail{padding:14px}.cash-report-detail.tablewrap{overflow-x:auto}.cash-report-detail table{min-width:720px}}
@media print{.cash-report-detail{overflow:visible!important}.cash-report-detail table{min-width:0!important;font-size:10px}.cash-report-detail th,.cash-report-detail td{padding:5px!important}.cash-report-items{max-width:300px}.cash-summary-sheet{font-size:11px}.cash-summary-section{break-inside:auto}.cash-summary-section h2{break-after:avoid}.cash-report-detail table{break-inside:auto}.cash-report-detail tr{break-inside:avoid}}

/* V46: enlace público de registro */
.copy-link-row{display:flex;gap:10px;align-items:stretch}.copy-link-row input{flex:1;min-width:0}.copy-link-row .btn{white-space:nowrap}
@media(max-width:575px){.copy-link-row{flex-direction:column}.copy-link-row .btn{width:100%}}

/* V49: fecha histórica exclusiva para Crédito cliente */
.credit-date-field{display:none;flex-direction:column;gap:6px}.credit-date-field input{min-height:42px}.shop-pos-selects .credit-date-field{min-width:155px}
@media(max-width:767px){.shop-pos-selects .credit-date-field{width:100%;min-width:0}.credit-date-field input{width:100%}}


/* V51 - Dashboard: accesos rápidos sobre indicadores y navegación horizontal móvil/tablet */
.dashboard-quick-card{padding:16px 18px;margin-bottom:16px}
.dashboard-quick-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}
.dashboard-quick-head h2{margin:0;font-size:18px}
.dashboard-quick-actions{display:flex;align-items:stretch;gap:10px;flex-wrap:wrap}
.dashboard-quick-actions .btn{margin:0;min-height:44px;display:inline-flex;align-items:center;justify-content:center;text-align:center}
.dashboard-quick-primary{min-width:150px}
.dashboard-metrics{margin-top:0}
@media(max-width:991px){
 .dashboard-quick-card{padding:14px 12px;overflow:hidden}
 .dashboard-quick-head{margin-bottom:9px}
 .dashboard-quick-head .muted{font-size:12px;white-space:nowrap}
 .dashboard-quick-actions{display:flex;flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;gap:8px;padding:1px 1px 7px;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch;overscroll-behavior-inline:contain}
 .dashboard-quick-actions .btn{flex:0 0 auto;min-width:138px;min-height:44px;padding:10px 13px;white-space:nowrap;scroll-snap-align:start}
 .dashboard-quick-actions::-webkit-scrollbar{height:5px}
}
@media(max-width:575px){
 .dashboard-quick-card{margin-bottom:12px}
 .dashboard-quick-head{align-items:flex-start}
 .dashboard-quick-head h2{font-size:17px}
 .dashboard-quick-head .muted{display:none}
 .dashboard-quick-actions .btn{min-width:128px;min-height:42px;padding:9px 11px;font-size:13px}
}
@media(max-width:374px){
 .dashboard-quick-actions .btn{min-width:118px;padding:9px 10px}
}


/* V52 - filtros de cierres PDF */
.closure-filters{display:grid;grid-template-columns:minmax(170px,1fr) minmax(160px,.7fr) minmax(220px,1.25fr) auto;gap:12px;align-items:end}
.closure-filters .form-actions{margin:0;display:flex;gap:8px;white-space:nowrap}
.status-badge{display:inline-flex;align-items:center;justify-content:center;padding:5px 9px;border-radius:999px;font-size:.82rem;font-weight:700;white-space:nowrap}
.status-paid{background:#e9f8ef;color:#17643a;border:1px solid #bce8ca}
.status-pending{background:#fff2e8;color:#9a4514;border:1px solid #ffd0ae}
@media(max-width:900px){.closure-filters{grid-template-columns:1fr 1fr}.closure-filters .form-actions{grid-column:1/-1}}
@media(max-width:575px){.closure-filters{grid-template-columns:1fr}.closure-filters .form-actions{grid-column:auto}.closure-filters .form-actions>*{flex:1}.closure-status-cards{grid-template-columns:repeat(2,minmax(0,1fr))}}


/* V54 - Acciones superiores en Cuenta del cliente */
.customer-account-top-actions{margin-bottom:16px}
.customer-account-actions-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:12px}
.customer-account-actions-row{display:flex;align-items:flex-end;gap:10px;flex-wrap:wrap}
.customer-account-statement-form{display:flex;align-items:flex-end;gap:10px;flex-wrap:wrap;flex:1 1 auto;margin:0}
.customer-account-cutoff{margin:0;min-width:170px}
.customer-account-cutoff input{margin-top:6px}
.customer-account-action{min-height:44px;display:inline-flex;align-items:center;justify-content:center;white-space:nowrap}
.customer-account-secondary-actions{margin-top:12px}
@media (max-width: 991px){
 .customer-account-actions-row{flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;padding-bottom:6px;-webkit-overflow-scrolling:touch;scrollbar-width:thin}
 .customer-account-statement-form{display:contents}
 .customer-account-action{flex:0 0 auto}
 .customer-account-cutoff{flex:0 0 165px}
}
@media (max-width: 575px){
 .customer-account-top-actions{padding:14px}
 .customer-account-actions-head p{font-size:13px}
 .customer-account-actions-row{gap:8px}
 .customer-account-action{min-height:46px;padding-left:14px;padding-right:14px}
 .customer-account-cutoff{flex-basis:158px}
}


/* V55 - Compartir cierres PDF */
.closure-share-help{margin-top:14px}
.closure-row-actions{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.closure-email-form{display:inline-flex;margin:0}
.closure-contact-detail{display:block;margin-top:4px;color:var(--muted,#64748b);font-size:12px;white-space:nowrap}
.closure-row-actions .tablebtn[disabled]{opacity:.45;cursor:not-allowed}
@media (max-width:767px){
 .closure-row-actions{flex-wrap:nowrap;min-width:max-content}
 .closure-contact-detail{white-space:normal;min-width:160px}
}

/* V58 - Cerrar sesión visible en teléfono/tablet + comprobantes de pago */
@media (max-width: 991px){
  .top-logout{width:auto!important;min-width:max-content!important;height:40px!important;padding:0 11px!important;gap:6px!important;flex:0 0 auto!important}
  .top-logout-text{display:inline!important;font-size:13px!important;line-height:1!important}
  body.pos-page>main>.topbar .top-logout{width:auto!important;min-width:max-content!important;height:42px!important;flex:0 0 auto!important;padding:0 10px!important}
}
@media (max-width: 575px){
  .top-logout{width:auto!important;min-width:max-content!important;padding:0 9px!important}
  .top-logout-text{display:inline!important;font-size:12px!important}
  body.pos-page>main>.topbar .topbar-right{grid-template-columns:minmax(0,1fr) 42px auto!important}
  body.pos-page>main>.topbar .top-logout{grid-column:3!important;width:auto!important;min-width:max-content!important;padding:0 8px!important}
}


/* V60 - Asistente fácil Google Sheets */
.google-setup-hero{margin-bottom:16px}
.google-setup-steps{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}
.google-setup-steps span{display:inline-flex;align-items:center;min-height:38px;padding:8px 12px;border:1px solid var(--border,#d9dee7);border-radius:999px;font-weight:700}
.google-setup-steps span.done{background:#f1f5f9}
.google-setup-instructions{margin:16px 0}
.google-setup-instructions ol{padding-left:22px}
.google-setup-instructions li{margin:8px 0}
@media(max-width:575px){
 .google-setup-steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}
 .google-setup-steps span{justify-content:center;text-align:center;padding:8px 6px;font-size:12px}
}


/* ==========================================================
   V63 - MENU HAMBURGUESA: UNA SOLA X DE CIERRE
   El botón flotante permanece como hamburguesa y se oculta
   mientras el panel está abierto. La única X visible es la
   del encabezado interno del sidebar.
   ========================================================== */
body.sidebar-open>.menubtn#menuToggle,
body.menuopen>.menubtn#menuToggle{
 opacity:0!important;
 visibility:hidden!important;
 pointer-events:none!important;
}
body>.menubtn#menuToggle{
 transition:opacity .12s ease,visibility .12s ease,background .12s ease!important;
}
body>aside#appSidebar .sidebar-close{
 display:grid!important;
 visibility:visible!important;
 opacity:1!important;
 pointer-events:auto!important;
}


/* ==========================================================
   V64 - ACCIONES SUPERIORES MOVIL EN DOS COLUMNAS / DOS FILAS
   Se aplica a módulos normales. Punto de Venta (pos-page)
   queda expresamente fuera de esta modificación.
   ========================================================== */
.topbar-actions{
 display:flex;
 align-items:center;
 gap:8px;
 flex-wrap:wrap;
 min-width:0;
}
@media (max-width:767px){
 body:not(.pos-page) .topbar-right{
  display:flex!important;
  width:100%!important;
  max-width:100%!important;
  align-items:center!important;
  justify-content:flex-start!important;
  gap:8px!important;
  flex-wrap:wrap!important;
 }
 body:not(.pos-page) .topbar-actions{
  display:grid!important;
  grid-template-columns:repeat(2,minmax(0,1fr))!important;
  gap:8px!important;
  width:100%!important;
  min-width:0!important;
  order:-1!important;
 }
 body:not(.pos-page) .topbar-actions .top-action{
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  width:100%!important;
  min-width:0!important;
  min-height:44px!important;
  margin:0!important;
  padding:9px 10px!important;
  white-space:normal!important;
  line-height:1.15!important;
 }
 body:not(.pos-page) .topbar-actions .top-action:only-child{
  grid-column:1 / -1!important;
 }
 body:not(.pos-page) .topbar-actions .top-action:last-child:nth-child(odd){
  grid-column:1 / -1!important;
 }
}
@media (max-width:374px){
 body:not(.pos-page) .topbar-actions{gap:6px!important}
 body:not(.pos-page) .topbar-actions .top-action{
  min-height:42px!important;
  padding:8px 7px!important;
  font-size:12px!important;
 }
}

/* V70 - cierre de sesión por POST manteniendo la distribución original */
#logoutForm{display:none!important}button.top-logout{margin:0!important;font:inherit;cursor:pointer}

/* V71 - logo de empresa */
.company-brand-logo{width:42px;height:42px;object-fit:contain;border-radius:9px;background:#fff;padding:3px;flex:0 0 42px}
.company-logo-setting{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin:0 0 18px;padding:14px;border:1px solid var(--border,#d9dee7);border-radius:12px;background:#f8fafc}
.company-logo-setting>label{margin:0;flex:1 1 280px}
.company-logo-preview{width:112px;height:82px;display:flex;align-items:center;justify-content:center;border:1px solid var(--border,#d9dee7);border-radius:10px;background:#fff;padding:8px}
.company-logo-preview img{max-width:100%;max-height:100%;object-fit:contain}
@media(max-width:575px){.company-logo-setting{align-items:stretch}.company-logo-preview{width:100%;height:100px}.company-brand-logo{width:38px;height:38px;flex-basis:38px}}

/* V72 - logo institucional en acceso */
.login-brand-logo{padding:6px;background:#fff}
.login-brand-logo img{width:100%;height:100%;object-fit:contain;display:block}

/* V74 - imágenes de productos compactas */
.shop-product-tile{align-items:stretch}
.shop-product-image{width:64px!important;height:64px!important;max-width:64px!important;object-fit:cover;border-radius:10px;margin:8px auto 0;display:block}
@media(max-width:575px){.shop-product-image{width:54px!important;height:54px!important;max-width:54px!important;margin-top:7px}.shop-product-tile{min-height:132px}}
@media(max-width:374px){.shop-product-image{width:48px!important;height:48px!important;max-width:48px!important}}

/* V75 - filtro de categorías/búsqueda POS
   La tarjeta usa display:flex; por eso se fuerza hidden a display:none. */
.shop-pos-grid .shop-product-tile[hidden]{display:none!important}

/* V77 - filtros Productos e inventario */
.product-filter-card{margin-bottom:16px}
.product-filter-grid{display:grid;grid-template-columns:2fr repeat(3,minmax(150px,1fr));gap:12px;align-items:end;margin-top:14px}
.product-filter-grid label{margin:0}
.product-filter-grid input,.product-filter-grid select{width:100%;margin:0}
.product-filter-summary{margin-top:12px;font-size:13px;color:#667085}
.product-filter-summary strong{color:#202223;font-size:15px}
.product-filter-row[hidden],#productFilterEmpty[hidden]{display:none!important}
.empty-filter-result{text-align:center;padding:24px;color:#667085;font-weight:600}
@media(max-width:991px){.product-filter-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:575px){.product-filter-grid{grid-template-columns:1fr}.product-filter-card .responsive-section-head>button{width:100%}}

/* V83 - flujo superior del Punto de Venta */
.pos-page .shop-pos-controls{display:flex;flex-direction:column;gap:12px}
.pos-page .shop-pos-search-below-selects{width:100%;max-width:none}
.pos-page .shop-pos-search-below-selects input{width:100%}

/* V84 - indicadores de teclas rápidas */
#appSidebar nav a kbd{margin-left:auto;font-size:11px;line-height:1;padding:4px 6px;border:1px solid currentColor;border-radius:5px;opacity:.72;background:transparent}


/* V90 - Categorías POS legibles en móvil
   Una sola fila horizontal desplazable, sin cortar ni comprimir nombres. */
@media(max-width:767px){
 .pos-page .category-tabs{
  display:flex!important;
  flex-flow:row nowrap!important;
  width:100%!important;
  max-width:100%!important;
  gap:8px!important;
  overflow-x:auto!important;
  overflow-y:hidden!important;
  padding:5px 2px 12px!important;
  margin:0!important;
  scrollbar-width:thin;
  -webkit-overflow-scrolling:touch;
  overscroll-behavior-x:contain;
  scroll-snap-type:x proximity;
 }
 .pos-page .category-tabs button{
  flex:0 0 auto!important;
  width:auto!important;
  min-width:max-content!important;
  max-width:none!important;
  min-height:42px!important;
  padding:9px 14px!important;
  margin:0!important;
  white-space:nowrap!important;
  overflow:visible!important;
  text-overflow:clip!important;
  line-height:1.2!important;
  font-size:13px!important;
  scroll-snap-align:start;
 }
}
@media(max-width:374px){
 .pos-page .category-tabs{gap:6px!important}
 .pos-page .category-tabs button{
  min-height:40px!important;
  padding:8px 12px!important;
  font-size:12px!important;
 }
}

/* V96 - Reportes consolidados en Cierres PDF */
.closure-report-actions{display:flex;gap:9px;flex-wrap:wrap;margin-top:14px;padding-top:14px;border-top:1px solid var(--border,#e5e7eb)}
.closure-report-actions .btn{min-height:42px;display:inline-flex;align-items:center;justify-content:center}
@media(max-width:575px){
 .closure-report-actions{display:grid;grid-template-columns:1fr}
 .closure-report-actions .btn{width:100%;white-space:normal;text-align:center}
}

/* V97 - Paginación segura de Cierres PDF */
.closure-results-count{margin:12px 2px 8px}
.closure-pagination{display:flex;align-items:center;justify-content:center;gap:12px;flex-wrap:wrap}
.closure-pagination .disabled{pointer-events:none;opacity:.45}
@media(max-width:575px){.closure-pagination{display:grid;grid-template-columns:1fr auto 1fr}.closure-pagination .btn{width:100%;min-width:0}.closure-pagination span{text-align:center;font-size:13px}}

/* V108 - Filtro de clientes */
.customer-filter-grid{display:grid;grid-template-columns:minmax(260px,2fr) minmax(180px,1fr) auto;gap:12px;align-items:end;margin-top:14px}.customer-filter-grid label{margin:0}.customer-filter-grid input,.customer-filter-grid select{width:100%;margin:0}.customer-filter-actions{display:flex;align-items:end}.customer-filter-actions button{margin:0;min-width:110px}@media(max-width:767px){.customer-filter-grid{grid-template-columns:1fr}.customer-filter-actions button{width:100%}}
