:root{--bg:#0b0f14;--panel:#131922;--border:#243040;--text:#e6edf3;--text-dim:#8b98a8;--cyan:#2dd4bf;--green:#22c55e;--red:#ef4444;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;-webkit-font-smoothing:antialiased;font-family:system-ui,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}html,body{margin:0}body{background:var(--bg);color:var(--text);min-height:100svh}#root{min-height:100svh}.flash{border:1px solid var(--border);border-radius:10px;margin:4px 0;padding:14px 16px;font-weight:600}.flash-ok{border-color:var(--green);color:var(--green);background:#22c55e1f}.flash-err{border-color:var(--red);color:#fff;background:#ef444433;font-size:1.05rem;animation:.35s flash-shake}@keyframes flash-shake{0%,to{transform:translate(0)}20%{transform:translate(-7px)}40%{transform:translate(7px)}60%{transform:translate(-5px)}80%{transform:translate(5px)}}.app{max-width:560px;margin:0 auto;padding:0 0 40px}.topbar{z-index:10;background:var(--bg);border-bottom:1px solid var(--border);padding:14px 16px 10px;position:sticky;top:0}.topbar h1{margin:0 0 10px;font-size:18px}.topbar nav{gap:6px;display:flex}.topbar nav button{border:1px solid var(--border);background:var(--panel);color:var(--text-dim);cursor:pointer;white-space:nowrap;border-radius:10px;flex:1;min-width:0;padding:10px 4px;font-size:13px;font-weight:600}.topbar nav button.on{background:var(--cyan);color:#04231f;border-color:var(--cyan)}.view{flex-direction:column;gap:14px;padding:16px;display:flex}.usb{gap:8px;display:flex}input,textarea{font:inherit;background:var(--panel);color:var(--text);border:1px solid var(--border);border-radius:10px;width:100%;padding:13px}input:focus,textarea:focus{border-color:var(--cyan);outline:none}.usb input{flex:1;min-width:0;font-size:18px}button{font:inherit;cursor:pointer;background:var(--cyan);color:#04231f;border:none;border-radius:10px;padding:13px 16px;font-weight:600}.cam-btn{width:100%}.cam-btn.stop{background:var(--red);color:#fff}.reader{display:none}.reader.on{border:1px solid var(--border);border-radius:10px;display:block;overflow:hidden}.card{background:var(--panel);border:1px solid var(--border);text-align:center;border-radius:14px;padding:22px 18px}.card.ok{border-color:var(--green)}.card.miss{border-color:var(--red)}.card .name{margin-bottom:14px;font-size:20px;font-weight:700}.prices{gap:12px;display:flex}.prices>div{background:var(--bg);border-radius:10px;flex-direction:column;flex:1;gap:4px;padding:14px;display:flex}.prices span{color:var(--text-dim);text-transform:uppercase;letter-spacing:.08em;font-size:12px}.prices b{font-size:24px}.prices .pvp b{color:var(--green);font-size:32px}.code{color:var(--text-dim);margin-top:12px;font-family:ui-monospace,Consolas,monospace;font-size:13px}.quickadd,.addform{text-align:left;flex-direction:column;gap:10px;display:flex}.quickadd .row,.addform .row{gap:10px;display:flex}.loose h2{color:var(--text-dim);margin:6px 0;font-size:14px}.loose .grid{grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:10px;display:grid}.loose .grid button{background:var(--panel);color:var(--text);border:1px solid var(--border);flex-direction:column;align-items:flex-start;gap:4px;padding:14px;display:flex}.loose .grid button b{color:var(--green);font-size:18px}.import{border:1px solid var(--border);background:var(--panel);border-radius:10px;padding:12px 14px}.import summary{cursor:pointer;font-weight:600}.import textarea{margin:10px 0;font-family:ui-monospace,Consolas,monospace;font-size:13px}.muted{color:var(--text-dim);font-size:13px}.list{flex-direction:column;gap:8px;display:flex}.list-head{color:var(--text-dim);margin-top:6px;font-size:13px}.row-item{background:var(--panel);border:1px solid var(--border);border-radius:10px;align-items:center;gap:10px;padding:12px 14px;display:flex}.row-item .info{flex-direction:column;flex:1;min-width:0;display:flex}.row-item .sub{color:var(--text-dim);font-size:12px}.del{color:var(--text-dim);border:1px solid var(--border);background:0 0}.del:hover{color:var(--text);border-color:var(--cyan)}.row-item .del{color:var(--red);padding:8px 12px}.peligro{border:1px solid var(--red);color:var(--red);background:0 0}.peligro:hover{background:#ef44441f}.topbar .cloud{color:var(--text-dim);vertical-align:middle;font-size:12px;font-weight:500}.cloud{vertical-align:middle;border:1px solid var(--border);color:var(--text-dim);cursor:pointer;white-space:nowrap;background:0 0;border-radius:999px;padding:3px 10px;font-size:.72em}.cloud:hover{border-color:var(--cyan);color:var(--text)}.cloud-off{color:#f0b429;border-color:#6b5314}.modal-fondo{z-index:100;background:#0009;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.modal{background:var(--panel);border:1px solid var(--border);border-radius:16px;width:100%;max-width:420px;padding:24px 22px;position:relative}.modal h2{margin:0 0 12px;font-size:1.15rem}.modal-cerrar{color:var(--text-dim);cursor:pointer;background:0 0;border:0;padding:4px 8px;font-size:1.1rem;position:absolute;top:12px;right:12px}.modal form{flex-direction:column;gap:10px;margin:14px 0 6px;display:flex}.modal input{font:inherit;border:1px solid var(--border);background:var(--bg);color:var(--text);border-radius:10px;padding:12px 14px}.modal input:focus{outline:2px solid var(--cyan);outline-offset:1px}.modal button[type=submit]{font:inherit;background:var(--cyan);color:#04211d;cursor:pointer;border:0;border-radius:10px;padding:12px;font-weight:600}.modal button[type=submit]:disabled{opacity:.6;cursor:default}.cuenta-email{margin:0 0 6px;font-weight:600}.cuenta-estado{color:var(--text);margin:0 0 10px;font-size:.92rem;line-height:1.5}.cuenta-nota{color:var(--text-dim);margin:10px 0 0;font-size:.82rem;line-height:1.5}.cuenta-error{color:var(--red);margin:8px 0 0;font-size:.85rem}.btn-sec{font:inherit;border:1px solid var(--border);color:var(--text-dim);cursor:pointer;background:0 0;border-radius:10px;margin-top:14px;padding:10px 16px}.btn-sec:hover{color:var(--text);border-color:var(--cyan)}.demo-banner{color:#1a1206;letter-spacing:.02em;text-align:center;background:#f59e0b;padding:7px 12px;font-size:12px;font-weight:700}.cuenta-fallos{border:1px solid var(--red);background:#ef44441f;border-radius:10px;margin:10px 0 0;padding:10px 12px;font-size:.85rem;line-height:1.5}.topbar nav{flex-wrap:wrap}.topbar nav button{flex:28%}.totalbar{z-index:5;border:1px solid var(--border);background:var(--panel);border-radius:14px;flex-direction:column;gap:8px;margin:0 -4px;padding:12px;display:flex;position:sticky;bottom:0;box-shadow:0 -8px 24px #00000073}.totalbar-cifras{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.totalbar-cifras span{color:var(--text-dim);font-weight:600}.totalbar-cifras b{color:var(--cyan);font-size:40px;font-weight:800;line-height:1}.margen-ojo{border:1px solid var(--border);color:var(--text-dim);background:0 0;align-self:flex-start;padding:5px 10px;font-size:12px}.cobro-total{background:var(--panel);border:1px solid var(--border);border-radius:14px;flex-direction:column;align-items:center;gap:2px;padding:18px;display:flex}.cobro-total span{color:var(--text-dim);font-weight:600}.cobro-total b{color:var(--cyan);font-size:46px;font-weight:800;line-height:1.1}.cobro-rapido{grid-template-columns:repeat(auto-fit,minmax(92px,1fr));gap:8px;display:grid}.cobro-cambio{color:var(--green);font-size:44px;font-weight:800;line-height:1.1}.cobrado{background:var(--panel);border:1px solid var(--green);text-align:center;border-radius:14px;padding:22px 18px}.cobrado-tit{color:var(--green);font-size:24px;font-weight:800}.cobrado-cambio{flex-direction:column;gap:2px;margin:14px 0;display:flex}.cobrado-cambio span{color:var(--text-dim);font-weight:600}.cobrado-cambio b{color:var(--cyan);font-size:46px;font-weight:800;line-height:1.1}.rangos{gap:6px;display:flex}.rangos button{background:var(--panel);border:1px solid var(--border);color:var(--text-dim);flex:1;padding:10px 4px;font-size:13px}.rangos button.on{background:var(--cyan);border-color:var(--cyan);color:#04231f}.periodo{justify-content:space-between;align-items:center;gap:8px;display:flex}.periodo b{text-align:center;text-transform:capitalize;flex:1}.periodo button{padding:8px 14px}.kpis{grid-template-columns:repeat(auto-fit,minmax(104px,1fr));gap:8px;display:grid}.kpi{background:var(--panel);border:1px solid var(--border);border-radius:12px;flex-direction:column;gap:2px;padding:12px;display:flex}.kpi span{color:var(--text-dim);font-size:12px;font-weight:600}.kpi b{font-size:21px;font-weight:800;line-height:1.15}.kpi-verde{border-color:var(--green)}.kpi-verde b{color:var(--green)}.benef{flex-direction:column;flex:none;align-items:flex-end;gap:2px;display:flex}.benef b{color:var(--green);font-size:17px}.bloqueo{align-items:center;max-width:340px;margin:0 auto}.bloqueo-cabeza{text-align:center;flex-direction:column;align-items:center;gap:4px;display:flex}.bloqueo-candado{font-size:44px}.bloqueo-puntos{gap:14px;margin:4px 0;display:flex}.bloqueo-puntos span{border:2px solid var(--border);background:0 0;border-radius:50%;width:16px;height:16px}.bloqueo-puntos span.lleno{background:var(--cyan);border-color:var(--cyan)}.bloqueo-teclado{grid-template-columns:repeat(3,1fr);gap:10px;width:100%;display:grid}.bloqueo-teclado button{padding:16px 0;font-size:24px}.topbar nav .cerrar-ya{flex:none;padding:10px 12px}.cuenta-bloque{border-top:1px solid var(--border);margin-top:18px;padding-top:14px}.cuenta-bloque h3{margin:0 0 6px;font-size:15px}.cuenta-bloque .btn-sec{margin-top:0}.cuenta-bloque input{flex:1}.modo-coste{gap:6px;display:flex}.modo-coste button{border:1px solid var(--border);color:var(--text-dim);background:0 0;flex:1;padding:9px 4px;font-size:13px}.modo-coste button.on{background:var(--cyan);border-color:var(--cyan);color:#04231f}.chip{border:1px solid var(--border);color:var(--text-dim);background:0 0;flex:none;padding:6px 10px;font-size:12px}.chip.on{background:var(--cyan);border-color:var(--cyan);color:#04231f}.papel-cabecera{border-bottom:1px solid var(--border);flex-direction:column;gap:2px;margin-bottom:8px;padding:10px 0;display:flex}.papel-cabecera b{font-size:18px}.papel-total{border-top:1px solid var(--border);justify-content:space-between;align-items:baseline;margin-top:8px;padding:10px 0;font-size:18px;display:flex}.solo-imprimir{display:none}.etiquetas-hoja{flex-wrap:wrap;gap:8px;margin-top:10px;display:flex}.etiqueta-hueco{width:var(--ancho-rollo,62mm);box-sizing:border-box;background:#fff}.etiqueta.con-corte{border-right:1px dashed #999}.etiqueta{color:#000;border:1px dashed var(--border);box-sizing:border-box;background:#fff;border-radius:4px;flex-direction:column;justify-content:center;align-items:center;gap:1mm;padding:2mm;display:flex;overflow:hidden}.etiqueta-nombre{text-align:center;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;font-size:3.2mm;font-weight:600;line-height:1.15;display:-webkit-box;overflow:hidden}.etiqueta-precio{white-space:nowrap;max-width:100%;font-size:min(7mm,16cqw);font-weight:800;line-height:1}.etiqueta{container-type:inline-size}.etiqueta-codigo svg{display:block}.etiqueta-pie{color:#666;font-size:2.6mm}@media print{.topbar,.demo-banner,.no-imprimir,.totalbar{display:none!important}.solo-imprimir{display:inline}body,.app,.view,.papel,.row-item,.list{color:#000!important;box-shadow:none!important;background:#fff!important;border-color:#bbb!important}.sub,.muted{color:#444!important}.row-item{break-inside:avoid}@page{margin:14mm}}.precio-editable{border:0;border-bottom:1px dashed var(--text-dim);color:var(--text-dim);font:inherit;background:0 0;border-radius:0;padding:0 1px;font-size:12px}.precio-editable:hover{color:var(--cyan);border-color:var(--cyan)}.ofertas{border:1px solid var(--green);background:#22c55e1a;border-radius:10px;flex-direction:column;gap:4px;padding:10px 12px;font-size:13px;display:flex}.tachado{opacity:.6;margin-left:6px;text-decoration:line-through}@media print{html.imprimiendo-etiquetas body *{visibility:hidden}html.imprimiendo-etiquetas .etiquetas-hoja,html.imprimiendo-etiquetas .etiquetas-hoja *{visibility:visible}html.imprimiendo-etiquetas .etiquetas-hoja .no-imprimir{display:none!important}html.imprimiendo-etiquetas .etiquetas-hoja{gap:0;margin:0;display:block;position:absolute;top:0;left:0}html.imprimiendo-etiquetas .etiqueta-hueco{break-after:page;page-break-after:always}html.imprimiendo-etiquetas .etiqueta-hueco:last-child{break-after:auto;page-break-after:auto}html.imprimiendo-etiquetas .etiqueta{break-after:page;page-break-after:always;border:0;border-radius:0}html.imprimiendo-etiquetas .etiqueta.con-corte{border-right:1px dashed #999}}.cli{background:var(--bg);min-height:100svh;color:var(--text);flex-direction:column;gap:clamp(12px,2vh,28px);padding:clamp(16px,3vw,40px);display:flex}.cli-espera{color:var(--text-dim);justify-content:center;align-items:center}.cli-logo{font-size:clamp(60px,12vw,140px)}.cli-espera p{margin:0;font-size:clamp(22px,3.5vw,44px);font-weight:600}.cli-ultimo{background:var(--panel);border:2px solid var(--cyan);border-radius:18px;flex-direction:column;gap:6px;padding:clamp(14px,2.5vw,32px);display:flex}.cli-ultimo-nombre{font-size:clamp(24px,4.4vw,60px);font-weight:700;line-height:1.15}.cli-ultimo-precio{color:var(--cyan);font-size:clamp(34px,6.5vw,88px);font-weight:800;line-height:1}.cli-x{color:var(--text-dim);font-weight:600}.cli-lista{flex-direction:column;flex:1;gap:clamp(4px,.8vh,10px);display:flex;overflow-y:auto}.cli-linea{border-bottom:1px solid var(--border);justify-content:space-between;gap:16px;padding:clamp(4px,.8vh,10px) 4px;font-size:clamp(17px,2.4vw,32px);display:flex}.cli-nombre{overflow-wrap:anywhere;min-width:0}.cli-importe{white-space:nowrap;font-weight:700}.cli-total{border-top:3px solid var(--cyan);justify-content:space-between;align-items:baseline;gap:16px;margin-top:auto;padding-top:clamp(10px,1.6vh,22px);display:flex}.cli-total span{letter-spacing:.04em;color:var(--text-dim);font-size:clamp(20px,3vw,42px);font-weight:700}.cli-total b{color:var(--cyan);font-size:clamp(40px,8vw,110px);font-weight:800;line-height:1}.cli-cobrado{text-align:center;justify-content:center;align-items:center}.cli-gracias{color:var(--green);font-size:clamp(40px,8vw,110px);font-weight:800}.cli-pagado,.cli-cambio{flex-direction:column;gap:4px;display:flex}.cli-pagado span,.cli-cambio span{color:var(--text-dim);font-size:clamp(16px,2.4vw,32px);font-weight:600}.cli-pagado b{font-size:clamp(30px,5vw,68px);font-weight:800}.cli-cambio b{color:var(--cyan);font-size:clamp(38px,7vw,96px);font-weight:800}
