.product-visual{display:inline-grid;place-items:center;width:46px;height:46px;flex:0 0 46px;position:relative;overflow:hidden;border-radius:12px;background:var(--surface,#f2f5f3);vertical-align:middle}.product-visual svg{width:40px;height:40px}.product-visual img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.sale-search-results{max-height:230px;overflow:auto;overscroll-behavior:contain}.sale-search-result{display:flex;align-items:center;gap:10px;width:100%;text-align:left;padding:8px;border:0;background:transparent;color:inherit;cursor:pointer;border-radius:10px;min-height:56px}.sale-search-result:hover,.sale-search-result:focus-visible{background:var(--surface-hover,#e9efed)}.sale-search-result:disabled{opacity:.5;cursor:default}.sale-search-result>span:nth-child(2){flex:1}.sale-search-result small{display:block;margin-top:4px}.sale-cart,.sale-cart-search,.sale-cart-total{grid-column:1/-1}.sale-cart-line{display:flex;gap:10px;align-items:flex-start;border-bottom:1px solid var(--border,#dde5e0);padding:12px 0}.sale-cart-line>div{flex:1;min-width:0}.sale-cart-line details{margin:6px 0;font-size:.85rem}.sale-cart-line summary{cursor:pointer}.sale-quantity{display:flex;gap:8px;align-items:center;margin-top:8px}.sale-quantity button{min-width:40px;min-height:44px;border:1px solid var(--border,#dde5e0);border-radius:9px;background:transparent;color:inherit}.sale-cart-total{position:sticky;bottom:0;background:var(--surface,#fff);z-index:2;padding:12px;display:flex;justify-content:space-between;font-size:1.15rem;border-radius:12px}.sale-cart-search .input-with-action{display:flex;gap:8px}.sale-cart-search input{min-width:0;width:100%;font-size:16px}.visual-editor-preview svg{width:90px;height:90px}.inventory-head>.product-visual{margin-right:8px}@media(max-width:600px){.sale-cart-line{gap:8px}.sales-entry-wrap{min-width:0}.sale-cart-total{bottom:env(safe-area-inset-bottom,0px)}}
.visual-editor-preview{display:grid;place-items:center;min-height:128px}.visual-editor-preview>.product-visual{width:128px;height:128px}.visual-editor-preview>.product-visual svg{width:100px;height:100px}.visual-editor-preview>img{display:block;width:128px;height:128px;object-fit:contain;border-radius:12px}.visual-editor-preview .product-visual img{object-fit:contain}
.product-visual{display:inline-grid;place-items:center;width:46px;height:46px;flex:0 0 46px;position:relative;overflow:hidden;border-radius:12px;background:var(--surface,#f2f5f3);vertical-align:middle}.product-visual svg{width:40px;height:40px}.product-visual img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.sale-search-results{max-height:230px;overflow:auto;overscroll-behavior:contain}.sale-search-result{display:flex;align-items:center;gap:10px;width:100%;text-align:left;padding:8px;border:0;background:transparent;color:inherit;cursor:pointer;border-radius:10px;min-height:56px}.sale-search-result:hover,.sale-search-result:focus-visible{background:var(--surface-hover,#e9efed)}.sale-search-result:disabled{opacity:.5;cursor:default}.sale-search-result>span:nth-child(2){flex:1}.sale-search-result small{display:block;margin-top:4px}.sale-cart,.sale-cart-search,.sale-cart-total{grid-column:1/-1}.sale-cart-line{display:flex;gap:10px;align-items:flex-start;border-bottom:1px solid var(--border,#dde5e0);padding:12px 0}.sale-cart-line>div{flex:1;min-width:0}.sale-cart-line details{margin:6px 0;font-size:.85rem}.sale-cart-line summary{cursor:pointer}.sale-quantity{display:flex;gap:8px;align-items:center;margin-top:8px}.sale-quantity button{min-width:40px;min-height:44px;border:1px solid var(--border,#dde5e0);border-radius:9px;background:transparent;color:inherit}.sale-cart-total{position:sticky;bottom:0;background:var(--surface,#fff);z-index:2;padding:12px;display:flex;justify-content:space-between;font-size:1.15rem;border-radius:12px}.sale-cart-search .input-with-action{display:flex;gap:8px}.sale-cart-search input{min-width:0;width:100%;font-size:16px}.visual-editor-preview svg{width:90px;height:90px}.inventory-head>.product-visual{margin-right:8px}@media(max-width:600px){.sale-cart-line{gap:8px}.sales-entry-wrap{min-width:0}.sale-cart-total{bottom:env(safe-area-inset-bottom,0px)}}
.visual-editor-preview{display:grid;place-items:center;min-height:128px}.visual-editor-preview>.product-visual{width:128px;height:128px}.visual-editor-preview>.product-visual svg{width:100px;height:100px}.visual-editor-preview>img{display:block;width:128px;height:128px;object-fit:contain;border-radius:12px}.visual-editor-preview .product-visual img{object-fit:contain}
/* Barra de total y «Registrar venta» siempre a mano en el celular, por encima de la barra de navegación inferior y de
   la zona segura; nunca tapa artículos (el formulario deja su altura de margen al final). */
.sale-cart-total{align-items:center;gap:12px;box-shadow:0 -1px 0 var(--border),0 -12px 24px -18px rgba(0,0,0,.6)}
.sale-cart-total>span{color:var(--text-secondary);font-size:.9rem}
.sale-cart-total strong{margin-right:auto;font-variant-numeric:tabular-nums}
.sale-cart-total .sale-submit{flex:0 0 auto;min-height:44px}
.sales-entry .form-actions:empty{display:none}
@media (max-width:860px){.sale-cart-total{bottom:calc(var(--tabbar-h) + env(safe-area-inset-bottom,0px))}
 .sales-entry form{padding-bottom:8px}
 .sales-entry.is-searching .sale-search-results,.sales-entry form.is-searching .sale-search-results{overscroll-behavior:contain}}
.sale-cart-total>span,.sale-cart-total strong{white-space:nowrap}
.sale-cart-total .sale-submit{max-width:62%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* Agotado: dicho con palabras, el color solo refuerza. */
.sale-result-out{color:var(--stock-out);font-weight:var(--weight-semibold)}
.sale-search-result:disabled{opacity:.72;cursor:not-allowed}

/* Barra del total adaptable (fase 2). Solo se fija abajo mientras hay productos en el carrito y el final del formulario
   (cliente y canal) todavía no está a la vista; desde que aparece, la barra vuelve a su lugar al final del formulario y
   nada queda debajo de ella (sales-cart.js marca data-total-docked). Tampoco se fija en pantallas bajas ni mientras se
   escribe con el teclado del celular. Un campo que recibe el foco se desplaza por encima de la barra. */
.sales-entry .sale-cart-total{position:static}
.sales-entry:has([data-cart-lines] .sale-cart-line) form:not([data-total-docked]) .sale-cart-total{position:sticky}
.sales-entry form{--total-bar-h:76px}
.sales-entry :is(input,select,textarea,button,summary){scroll-margin-bottom:calc(var(--total-bar-h) + 16px)}
@media (max-width:860px){.sales-entry :is(input,select,textarea,button,summary){scroll-margin-bottom:calc(var(--total-bar-h) + var(--tabbar-h) + env(safe-area-inset-bottom,0px) + 16px)}}
@media (max-height:600px){.sales-entry:has([data-cart-lines] .sale-cart-line) form .sale-cart-total{position:static}}
@media (pointer:coarse){.sales-entry:has(:is(input:not([type=radio]):not([type=checkbox]),select,textarea):focus) form .sale-cart-total{position:static}}
