:root{--rojo:#D92323;--rojo-osc:#B71C1C;--azul:#12326B;--azul-claro:#1B4A9B;--verde:#25D366;--verde-osc:#128C4A;--amarillo:#FFC107;--fondo:#FFF8F0;--card:#ffffff;--borde:#E8DDD3;--texto:#222222;--muted:#4B5563;--radius:14px;--shadow:0 2px 10px rgba(18,50,107,.1);--fs-1:.75rem;--fs-2:.85rem;--fs-3:1rem;--fs-4:1.15rem;--fs-5:1.5rem;--fs-6:1.7rem;--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:24px;--z-nav:40;--z-sticky:35;--z-modal:60;--z-toast:90;--z-banner:96}*{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--fondo);color:var(--texto);font-variant-numeric:tabular-nums}body{overflow-x:clip}button{font:inherit;cursor:pointer}input,select,textarea{font:inherit;padding:10px 12px;border:1.5px solid var(--borde);border-radius:10px;background:#fff;width:100%}input:focus,select:focus,textarea:focus{outline:3px solid var(--azul-claro);outline-offset:1px;border-color:var(--azul)}button:focus-visible,a:focus-visible{outline:none;box-shadow:0 0 0 2px #fff,0 0 0 5px var(--azul-claro)}label{font-weight:600;font-size:.9rem;display:block;margin-bottom:6px}a{color:var(--azul-claro)}.topbar{position:sticky;top:0;z-index:var(--z-nav);background:var(--azul);color:#fff;padding:10px var(--sp-4);display:flex;align-items:center;gap:12px;box-shadow:var(--shadow)}.topbar .logo{font-weight:900;font-size:var(--fs-4);letter-spacing:.3px}.topbar-icon{width:40px;height:40px;border-radius:10px;background:#fff;flex:none;box-shadow:0 1px 4px #00000040}.login-logo{display:block;width:min(250px,72vw);height:auto;margin:2px auto 12px}.topbar .logo span{color:var(--amarillo)}.topbar .sub{font-size:.72rem;opacity:.9;line-height:1.2}.topbar .spacer{flex:1}.topbar .userbox{text-align:right;font-size:.82rem;line-height:1.25}@media (max-width:560px){.topbar{padding:8px 12px;gap:6px}.topbar .sub{display:none}.topbar>div{min-width:0}.topbar-icon{width:34px;height:34px}.topbar .logo{font-size:.95rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.topbar .btn{flex:none;padding-left:10px;padding-right:10px}.topbar .userbox{font-size:.72rem;min-width:0}.topbar .userbox>div{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.topbar .userbox>div:first-child{display:flex;align-items:center;gap:6px;justify-content:flex-end}.topbar .userbox>div:first-child strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.topbar .userbox .badge-rol{flex:none}.h-tasa-fecha{display:none}.barra-catalogo{top:56px}.con-banner .barra-catalogo{top:98px}}@media (max-width:420px){.h-zona{display:none}}@media (max-width:400px){.topbar .userbox{font-size:.7rem}.topbar .userbox .badge-rol{display:none}}.badge-rol{background:var(--rojo);color:#fff;border-radius:999px;padding:2px 10px;font-size:.72rem;font-weight:700;text-transform:uppercase}.btn{background:var(--rojo);color:#fff;border:none;border-radius:10px;padding:10px var(--sp-4);font-weight:700}.btn:hover{background:var(--rojo-osc)}.btn.azul{background:var(--azul)}.btn.azul:hover{background:var(--azul-claro)}.btn.verde{background:var(--azul)}.btn.verde:hover{background:var(--azul-claro)}.btn.wa{background:var(--verde);color:#063}.btn.secundario{background:#fff;color:var(--azul);border:1.5px solid var(--azul)}.btn.peligro{background:#fff;color:var(--rojo);border:1.5px solid var(--rojo)}.btn.peligro:hover{background:#fee2e2}.btn-volver{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;min-height:56px;padding:14px 18px;margin-bottom:10px;background:var(--rojo);color:#fff;border:none;border-radius:14px;font-size:1.08rem;font-weight:800;letter-spacing:.2px;box-shadow:0 4px 14px #b91c1c59;cursor:pointer}.btn-volver:active{background:var(--rojo-osc)}.btn-volver-flecha{font-size:1.55rem;line-height:1;font-weight:900}.barra-catalogo{position:sticky;top:60px;z-index:var(--z-sticky);background:var(--fondo);padding:10px 0 4px;margin-bottom:12px;box-shadow:0 12px 14px -14px #12326b73}.con-banner .barra-catalogo{top:102px}.barra-catalogo .search-row{margin-bottom:8px}.barra-catalogo .chips{margin-bottom:4px}.barra-titulo{margin:2px 0 8px}.btn.chico{padding:6px 10px;font-size:var(--fs-2);border-radius:8px}.btn:disabled{opacity:.55;cursor:not-allowed}.container{max-width:1100px;margin:0 auto;padding:var(--sp-4) var(--sp-4) 96px}@media (min-width:768px){.container{padding-bottom:32px}}.nav-tabs{display:flex;gap:var(--sp-2);flex-wrap:wrap;margin:14px 0}.nav-tabs button{background:#fff;border:1.5px solid var(--borde);border-radius:999px;padding:8px 16px;font-weight:700;color:var(--azul)}.nav-tabs button.activo{background:var(--azul);color:#fff;border-color:var(--azul)}@media (max-width:767px){.nav-tabs.movil-oculta{display:none}}.bottom-nav{position:fixed;bottom:0;left:0;right:0;z-index:var(--z-nav);background:#fff;border-top:2px solid var(--borde);display:flex}.bottom-nav button{flex:1;background:none;border:none;padding:10px 2px calc(12px + env(safe-area-inset-bottom,0px));font-size:.78rem;font-weight:700;color:var(--muted);display:flex;flex-direction:column;align-items:center;gap:2px}.bottom-nav button .ico{font-size:1.3rem}.bottom-nav button.activo{color:var(--rojo)}.bottom-nav .cart-count{background:var(--rojo);color:#fff;border-radius:999px;font-size:.68rem;padding:1px 7px}@media (min-width:768px){.bottom-nav{display:none}}.ico-svg{width:1.15em;height:1.15em;vertical-align:-.22em;flex:none}button .ico-svg,a .ico-svg{margin-right:6px}.bottom-nav button .ico-svg,.grupo-titulo .ico-svg{margin-right:0}.card{background:var(--card);border:1px solid var(--borde);border-radius:var(--radius);padding:var(--sp-4);box-shadow:var(--shadow);margin-bottom:14px}.grid{display:grid;gap:14px}.grid.kpis{grid-template-columns:repeat(2,1fr)}@media (min-width:768px){.grid.kpis{grid-template-columns:repeat(4,1fr)}.grid.dos{grid-template-columns:1fr 1fr}}.kpi .num{font-size:var(--fs-6);font-weight:900;color:var(--azul)}.kpi .lbl{color:var(--muted);font-size:var(--fs-2);font-weight:600}table{width:100%;border-collapse:collapse;font-size:.9rem}th,td{padding:var(--sp-2);text-align:left;border-bottom:1px solid var(--borde);vertical-align:top}th{color:var(--azul);font-size:.8rem;text-transform:uppercase}tbody tr:nth-child(2n){background:#fffdf8}tbody tr:hover{background:#fdf0dc}th.num,td.num{text-align:right}.table-wrap{overflow-x:auto}@media (max-width:767px){.grid>*{min-width:0}}@media (max-width:560px){.kpi .num{font-size:1.3rem;line-height:1.15;overflow-wrap:anywhere}.saldo-cifra,.cifra{overflow-wrap:anywhere}}.search-row{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}.search-row input{flex:1;min-width:180px}.chips{display:flex;gap:8px;overflow-x:auto;padding-bottom:8px;margin-bottom:8px}.chip{white-space:nowrap;background:#fff;border:1.5px solid var(--borde);border-radius:999px;padding:10px 16px;font-weight:600;font-size:var(--fs-2);min-height:44px;display:inline-flex;align-items:center}.chip.activo{background:var(--rojo);color:#fff;border-color:var(--rojo)}.lineas-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin-bottom:14px}@media (min-width:768px){.lineas-grid{grid-template-columns:repeat(3,1fr)}}@media (min-width:1024px){.lineas-grid{grid-template-columns:repeat(4,1fr)}}.productos-grid{display:block}@media (min-width:768px){.productos-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:0 14px;align-items:start}.productos-grid .ancho{grid-column:1/-1}}@media (min-width:1024px){.productos-grid{grid-template-columns:repeat(3,1fr)}}.linea-card{background:var(--card);border:1.5px solid var(--borde);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px 14px;text-align:left;display:flex;flex-direction:column;justify-content:center;gap:3px;min-height:84px;width:100%}.linea-card:hover{border-color:var(--rojo)}.linea-card:active{transform:scale(.98)}.linea-nombre{font-weight:800;color:var(--azul);font-size:var(--fs-3);line-height:1.25}.linea-count{color:var(--muted);font-size:.85rem;font-weight:600}.producto{display:flex;gap:12px;align-items:flex-start}.producto .info{flex:1;min-width:0}.producto .nombre{font-weight:700;line-height:1.3}.producto .meta{color:var(--muted);font-size:.82rem}.precio{font-weight:900;color:var(--rojo);font-size:1.05rem;white-space:nowrap}.add-box{display:flex;gap:6px;margin-top:8px;flex-wrap:wrap;align-items:stretch}.add-box select{width:auto;flex:1;min-width:110px}.stepper{display:inline-flex;align-items:stretch;gap:4px}.stepper input{width:58px;text-align:center}.step-btn{min-width:44px;min-height:44px;border:1.5px solid var(--azul);background:#fff;color:var(--azul);border-radius:10px;font-size:1.25rem;font-weight:900;line-height:1;padding:0 10px}.step-btn:active{background:var(--azul);color:#fff}.precio-base{font-size:.72rem;font-weight:600;color:var(--muted);white-space:nowrap;text-align:right}.cliente-picker{position:relative;flex:1;min-width:200px}.cliente-lista{position:absolute;left:0;right:0;top:calc(100% + 4px);z-index:30;background:#fff;border:1.5px solid var(--borde);border-radius:12px;box-shadow:var(--shadow);max-height:264px;overflow:auto}.cliente-opcion{display:flex;flex-direction:column;align-items:flex-start;gap:1px;width:100%;text-align:left;background:none;border:none;border-bottom:1px solid var(--borde);padding:10px 12px;min-height:44px}.cliente-opcion:last-child{border-bottom:none}.cliente-opcion:active,.cliente-opcion:hover{background:var(--fondo)}.add-box .btn{min-height:44px}@media (max-width:767px){.btn.chico{min-height:44px;padding:10px 14px}}.estado{border-radius:999px;padding:2px 10px;font-size:var(--fs-1);font-weight:800;text-transform:uppercase;white-space:nowrap}.estado.nuevo{background:#fef3c7;color:#92400e}.estado.confirmado{background:#dbeafe;color:#1e40af}.estado.facturado{background:#d1fae5;color:#065f46}.estado.entregado{background:#e0e7ff;color:#3730a3}.estado.anulado,.estado.pausado{background:#fee2e2;color:#991b1b}.grid.import-kpis{grid-template-columns:repeat(2,1fr);margin-top:10px}@media (min-width:768px){.grid.import-kpis{grid-template-columns:repeat(4,1fr)}}.kpi.peligro{border-color:var(--rojo);background:#fff1f1}.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px;background:var(--azul)}.login-card{background:#fff;border-radius:20px;border-bottom:10px solid var(--rojo);padding:28px;max-width:400px;width:100%;box-shadow:0 10px 40px #00000040}.login-card p{color:var(--muted);margin:0 0 18px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}.error{background:#fee2e2;color:#991b1b;border-radius:10px;padding:10px 12px;margin-bottom:12px;font-weight:600}.ok{background:#d1fae5;color:#065f46;border-radius:10px;padding:10px 12px;margin-bottom:12px;font-weight:600}.form-grid{display:grid;gap:12px}.form-grid.dos{grid-template-columns:1fr}@media (min-width:640px){.form-grid.dos{grid-template-columns:1fr 1fr}}.modal-bg{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;z-index:var(--z-modal);display:flex;align-items:flex-end;justify-content:center}@media (min-width:768px){.modal-bg{align-items:center}}.modal{background:#fff;width:100%;max-width:560px;max-height:92vh;overflow:auto;border-radius:18px 18px 0 0;padding:20px}@media (min-width:768px){.modal{border-radius:18px}}.modal-detalle{max-width:920px;height:100%;max-height:100%;border-radius:0}@media (min-width:768px){.modal-detalle{height:auto;max-height:94vh;border-radius:18px}}.barra-accion{position:sticky;bottom:0;z-index:5;margin:16px -20px -20px;padding:var(--sp-3) 20px calc(var(--sp-3) + env(safe-area-inset-bottom,0px));background:#fff;border-top:1.5px solid var(--borde);box-shadow:0 -6px 16px #12326b1a;display:flex;gap:10px;align-items:center}.barra-accion .btn-principal{flex:1;min-width:0;min-height:52px;font-size:1.05rem}.barra-texto{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:800;color:var(--azul)}.grupo-acciones{margin-top:14px}.grupo-titulo{display:flex;align-items:center;gap:6px;font-size:var(--fs-1);font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:var(--azul);margin:0 0 8px}.antiguedad{display:inline-block;background:#fef3c7;color:#92400e;border-radius:999px;padding:1px 8px;font-size:.72rem;font-weight:700;white-space:nowrap}.antiguedad.alerta{background:#fee2e2;color:#991b1b}.historial{list-style:none;margin:0;padding:0 0 0 12px;border-left:2px solid var(--borde)}.historial li{padding:5px 0 5px 8px}.historial-fecha{display:block;font-size:.78rem;color:var(--muted);font-weight:600}.historial-detalle{font-size:.9rem}.anulacion-box{background:#fff1f1;border:1.5px solid var(--rojo);border-radius:12px;padding:14px;margin-top:14px}.anulacion-box textarea{width:100%}.factura-chip{background:#12326b;color:#fff;border-radius:999px;padding:2px 10px;font-size:.75rem;font-weight:800;white-space:nowrap}.accion-box{background:#eff6ff;border:1.5px solid #1B4A9B;border-radius:12px;padding:14px;margin-top:14px}.accion-box input{width:100%}.pagos-lista{list-style:none;margin:10px 0 0;padding:0}.pagos-lista li{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;padding:8px 0;border-top:1px solid var(--borde)}.pagos-lista li>div{min-width:0}.nota-entrega{display:none}.nota-entrega h2{margin:0 0 2px}.nota-entrega h3{letter-spacing:.06em;margin:14px 0 8px}.nota-entrega table{width:100%}.nota-firmas{margin-top:52px;display:grid;gap:30px}.carrito-item{display:flex;gap:10px;align-items:center;border-bottom:1px solid var(--borde);padding:10px 0}.carrito-item>.flex1{min-width:0}@media (max-width:480px){.carrito-item{flex-wrap:wrap}.container{padding-left:12px;padding-right:12px}.producto{flex-wrap:wrap}.precio{white-space:normal}}.muted{color:var(--muted)}.small{font-size:var(--fs-2)}.right{text-align:right}.mt{margin-top:14px}.flex{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.entre{justify-content:space-between}.entre>*{min-width:0}.al-inicio{align-items:flex-start}.w100{width:100%}.flex1{flex:1}.m0{margin:0}.mt0{margin-top:0}.mb0{margin-bottom:0}.mb6{margin-bottom:6px}.mb8{margin-bottom:8px}.mb10{margin-bottom:10px}.mt4{margin-top:4px}.mt8{margin-top:8px}.mt10{margin-top:10px}.mt12{margin-top:12px}.p8{padding:8px}.p12{padding:12px}.ancho-auto{width:auto}.span-todo{grid-column:1/-1}.sin-sombra{box-shadow:none}.card-destacada{border-color:var(--amarillo);border-width:2px}.cifra{font-size:1.25rem;font-weight:800}.saldo-cifra{font-size:var(--fs-5);font-weight:800;margin-top:var(--sp-2)}.saldo-cifra .small{font-weight:600}.h-tabla{margin:4px 4px 8px}.error-vista{padding:var(--sp-5)}.error-vista pre{white-space:pre-wrap;font-size:12px;color:#b00}.cargando-app{padding:40px;text-align:center}.total-box{background:#fff3cd;border:1.5px dashed var(--amarillo);border-radius:12px;padding:14px}.print-only{display:none}@page{size:A4;margin:12mm}@page termica{size:80mm auto;margin:4mm}@media print{body{background:#fff}.topbar,.bottom-nav,.nav-tabs,.barra-accion,.no-print{display:none!important}.print-only{display:block}tbody tr:nth-child(2n),tbody tr:hover{background:none}.container{padding:0;max-width:none}.card{box-shadow:none;border:none}.modal-bg{position:static;background:none;display:block}.modal{max-height:none;overflow:visible;max-width:none;width:100%;border-radius:0;padding:0;box-shadow:none}.modal-detalle{height:auto}.table-wrap{overflow:visible}body.print-termica .modal{page:termica;max-width:80mm;width:80mm;margin:0 auto}body.print-termica .modal table{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px}body.print-termica .modal th,body.print-termica .modal td{padding:3px 4px}body.print-termica .total-box{border:none;background:none;padding:6px 0}body.print-nota .modal-bg{display:none!important}body.print-nota *{visibility:hidden}body.print-nota .nota-entrega{display:block;position:absolute;top:0;left:0;right:0;visibility:visible}body.print-nota .nota-entrega *{visibility:visible}.membrete{display:flex;gap:5mm;align-items:center}.membrete-logo{height:14mm;width:auto}.membrete-datos h2{margin:0}.membrete-datos p{margin:1mm 0 0}.membrete-franja{border-top:2.2mm solid var(--azul);border-bottom:1mm solid var(--rojo);margin:3mm 0 5mm;-webkit-print-color-adjust:exact;print-color-adjust:exact}.recibo-pie{margin-top:8mm;border-top:.4mm solid var(--borde);padding-top:2.5mm;font-size:.85rem;color:#444;text-align:center}body.print-termica .membrete-logo,body.print-termica .membrete-franja,body.print-termica .recibo-pie{display:none}}.sku{font-weight:800;color:#12326b;white-space:nowrap;letter-spacing:.01em}.toasts{position:fixed;left:50%;transform:translate(-50%);bottom:84px;z-index:var(--z-toast);display:flex;flex-direction:column;gap:8px;align-items:center;width:max-content;max-width:92vw;pointer-events:none}@media (min-width:768px){.toasts{bottom:24px}}.toast{background:var(--azul);color:#fff;padding:12px 18px;border-radius:999px;font-weight:700;font-size:.92rem;box-shadow:0 6px 24px #0000004d;text-align:center;animation:toast-in .18s ease-out}@keyframes toast-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.aviso{background:#fef3c7;color:#92400e;border-radius:10px;padding:10px 12px;margin-bottom:12px;font-weight:600}.badge-nuevos{background:#fef3c7;color:#92400e;border-radius:999px;padding:3px 12px;font-size:.8rem;font-weight:800;vertical-align:middle;white-space:nowrap}.banner-offline{position:fixed;top:0;left:0;right:0;z-index:var(--z-banner);background:#7c2d12;color:#fff;text-align:center;font-weight:700;font-size:.9rem;padding:10px 14px;box-shadow:0 2px 10px #00000040}.con-banner{padding-top:42px}.con-banner .topbar{top:42px}.ayuda{background:#dbeafe;color:#1e40af;border:1.5px solid #BFDBFE;border-radius:12px;padding:12px 14px;margin-bottom:12px;display:flex;gap:10px;align-items:center;font-weight:600;font-size:.92rem}.ayuda .btn{flex-shrink:0}.vacio{text-align:center;padding:28px 16px}.vacio-ico{display:inline-flex;align-items:center;justify-content:center;width:60px;height:60px;border-radius:50%;background:#fff3cd;color:var(--azul);font-size:1.75rem;margin-bottom:10px}.vacio-titulo{font-weight:800;color:var(--texto);margin:0 0 4px}.vacio-texto{color:var(--muted);margin:0 auto 12px;max-width:420px}.skl{background:#f3e8d2;border-radius:10px;animation:skl-pulso 1.3s ease-in-out infinite}.skl-tarjeta{height:104px}.skl-fila{height:44px;margin:8px 4px}@keyframes skl-pulso{0%,to{opacity:1}50%{opacity:.45}}@media (prefers-reduced-motion:reduce){.skl{animation:none}}
