:root{--bg:#0d111c;--bar:#070a12;--card:#151b2b;--card2:#111727;--line:#232b40;--line2:#1c2336;--tx:#f2f5ff;--mu:#8a93ad;--ac:#7c8cff;--ac2:rgba(124,140,255,.16);--ok:#39d98a;--warn:#f5c84b;--bad:#ff5c7a;--r:14px;--f:"Space Grotesk",system-ui,-apple-system,"Segoe UI",sans-serif}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--tx);font:400 17px/1.4 var(--f);-webkit-font-smoothing:antialiased}
button,input,select,textarea{font:inherit;color:inherit}
[hidden]{display:none!important}
a{color:var(--ac)}
.top{position:sticky;top:0;z-index:20;background:var(--bar);border-bottom:1px solid var(--line2);padding:calc(10px + env(safe-area-inset-top)) 16px 0}
.top-row{display:flex;align-items:center;gap:12px;max-width:1280px;margin:0 auto}
.logo{height:24px;display:block}
.who{margin-left:auto;text-align:right;font-size:14px;color:var(--mu);line-height:1.2}
.who b{display:block;color:var(--tx);font-size:15px;font-weight:600}
.btn-sm{min-height:44px;padding:6px 14px;border:1px solid var(--line);border-radius:var(--r);background:var(--card);cursor:pointer;font-weight:600;font-size:15px}
.nav{display:flex;gap:6px;overflow-x:auto;max-width:1280px;margin:10px auto 0;padding-bottom:10px;scrollbar-width:none}
.nav::-webkit-scrollbar{display:none}
.nav button{flex:none;min-height:52px;padding:8px 18px;border:1px solid transparent;border-radius:var(--r);background:none;color:var(--mu);font-weight:600;font-size:16px;cursor:pointer;position:relative}
.nav button.on{background:var(--card);border-color:var(--line);color:var(--tx)}
.nav .badge{position:absolute;top:4px;right:4px;min-width:20px;height:20px;border-radius:10px;background:var(--bad);color:#fff;font-size:12px;line-height:20px;padding:0 5px}
.banner-prueba{background:repeating-linear-gradient(135deg,#3a2f0a,#3a2f0a 12px,#33290a 12px,#33290a 24px);color:var(--warn);text-align:center;font-size:14px;font-weight:600;padding:6px 10px;border-bottom:1px solid #5a4a12}
main{max-width:1280px;margin:0 auto;padding:18px 16px 60px;display:grid;gap:16px}
.card{background:var(--card);border:1px solid var(--line2);border-radius:var(--r);padding:18px;display:grid;gap:14px;min-width:0}
.card h2{margin:0;font-size:20px;font-weight:600}
.card h3{margin:0;font-size:17px;font-weight:600;color:var(--mu)}
.mu{color:var(--mu)} .small{font-size:14px}
.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.grow{flex:1;min-width:0}
.grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px}
.grid3{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px}
label{display:grid;gap:6px;font-weight:600;font-size:15px;color:var(--mu)}
input,select,textarea{width:100%;min-height:52px;padding:10px 14px;border:1px solid var(--line);border-radius:var(--r);background:var(--bg);font-size:17px}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--ac);box-shadow:0 0 0 3px var(--ac2)}
textarea{min-height:90px}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:56px;padding:10px 20px;border:1px solid var(--line);border-radius:var(--r);background:var(--card2);font-weight:600;font-size:17px;cursor:pointer;text-align:center}
.btn:hover{border-color:#34405e}
.btn.pri{background:var(--ac);border-color:var(--ac);color:#0b0f1d}
.btn.ok{background:var(--ok);border-color:var(--ok);color:#06210f}
.btn.bad{background:transparent;border-color:var(--bad);color:var(--bad)}
.btn.big{min-height:72px;font-size:22px;width:100%}
.btn:disabled{opacity:.45;cursor:not-allowed}
.btn.block{width:100%}
.chip{min-height:48px;padding:8px 16px;border:1px solid var(--line);border-radius:999px;background:var(--bg);cursor:pointer;font-weight:500}
.chip.on{background:var(--ac2);border-color:var(--ac);color:var(--tx)}
.pay{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.pay button{min-height:64px;border:1px solid var(--line);border-radius:var(--r);background:var(--bg);font-weight:600;cursor:pointer;font-size:16px}
.pay button.on{background:var(--ac2);border-color:var(--ac)}
.pos{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:16px;align-items:start}
@media(max-width:900px){.pos{grid-template-columns:1fr}.pay{grid-template-columns:repeat(2,1fr)}}
.scan{font-size:22px;min-height:68px;border-width:2px}
.tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:10px}
.tile{min-height:84px;padding:10px 12px;border:1px solid var(--line);border-radius:var(--r);background:var(--card2);text-align:left;cursor:pointer;display:grid;gap:2px;align-content:center}
.tile b{font-weight:600;font-size:16px;line-height:1.2}
.tile span{color:var(--mu);font-size:14px}
.tile.prod{border-left:4px solid var(--ok)} .tile.serv{border-left:4px solid var(--ac)}
.line{display:grid;gap:8px;padding:12px;border:1px solid var(--line2);border-radius:var(--r);background:var(--card2)}
.line-h{display:flex;gap:10px;align-items:center}
.line-h b{flex:1;min-width:0;font-weight:600}
.qty{display:flex;align-items:center;gap:6px}
.qty button{width:44px;height:44px;border:1px solid var(--line);border-radius:10px;background:var(--bg);cursor:pointer;font-size:20px}
.x{width:44px;height:44px;border:1px solid var(--line);border-radius:10px;background:none;color:var(--bad);cursor:pointer;font-size:20px;flex:none}
.split{display:flex;flex-wrap:wrap;gap:4px 14px;font-size:13px;color:var(--mu)}
.split b{color:var(--tx);font-weight:600}
.total{display:flex;justify-content:space-between;align-items:baseline;font-size:20px}
.total strong{font-size:36px;font-weight:700;letter-spacing:-.02em}
table{width:100%;border-collapse:collapse;font-size:15px}
th,td{padding:10px 8px;border-bottom:1px solid var(--line2);text-align:left;vertical-align:top}
th{color:var(--mu);font-weight:500;font-size:13px;white-space:nowrap}
td.n,th.n{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
tr.click{cursor:pointer} tr.click:hover td{background:var(--card2)}
tr.sum td{font-weight:700;border-bottom:0;font-size:16px}
.tbl{overflow-x:auto}
.tag{display:inline-block;padding:2px 10px;border-radius:999px;font-size:12px;font-weight:600;border:1px solid var(--line);white-space:nowrap}
.tag.bad{color:var(--bad);border-color:var(--bad)} .tag.warn{color:var(--warn);border-color:var(--warn)} .tag.ok{color:var(--ok);border-color:#1f6b45} .tag.test{color:var(--warn);border-color:#5a4a12;background:#2a2208}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:10px}
.kpi{background:var(--card2);border:1px solid var(--line2);border-radius:var(--r);padding:14px;display:grid;gap:2px}
.kpi span{color:var(--mu);font-size:14px} .kpi b{font-size:26px;font-weight:700;letter-spacing:-.01em}
.kpi.ac{border-left:4px solid var(--ac)} .kpi.ok{border-left:4px solid var(--ok)} .kpi.warn{border-left:4px solid var(--warn)}
.alert{padding:12px 14px;border-radius:var(--r);border:1px solid;display:flex;gap:10px;align-items:center}
.alert.bad{border-color:var(--bad);background:rgba(255,92,122,.08)} .alert.warn{border-color:var(--warn);background:rgba(245,200,75,.08)}
.day{display:grid;gap:6px}
.day h3{display:flex;justify-content:space-between;color:var(--tx);font-size:16px;padding-bottom:6px;border-bottom:1px solid var(--line)}
.sub{display:flex;gap:6px;flex-wrap:wrap}
.login{min-height:100vh;display:grid;place-items:center;padding:24px}
.login .card{width:100%;max-width:420px;padding:28px}
.login .logo{height:40px;margin:6px auto 4px}
.modal{position:fixed;inset:0;z-index:50;background:rgba(3,5,10,.72);display:grid;place-items:center;padding:16px;overflow:auto}
.modal-box{width:100%;max-width:640px;max-height:92vh;overflow:auto;background:var(--card);border:1px solid var(--line);border-radius:18px;padding:22px;display:grid;gap:14px}
.modal-box h2{margin:0;font-size:22px}
.toast{position:fixed;left:16px;right:16px;bottom:24px;z-index:60;max-width:520px;margin:0 auto;padding:16px 18px;border-radius:var(--r);background:var(--card);border:1px solid var(--ok);font-weight:500;text-align:center;opacity:0;transform:translateY(10px);transition:.25s;pointer-events:none}
.toast.show{opacity:1;transform:none} .toast.bad{border-color:var(--bad)}
.spin{width:44px;height:44px;border-radius:50%;border:5px solid var(--line);border-top-color:var(--ac);animation:sp .8s linear infinite;margin:20px auto}
@keyframes sp{to{transform:rotate(360deg)}}
.empty{color:var(--mu);text-align:center;padding:24px}
.anulada td{color:var(--mu);text-decoration:line-through}
.anulada td.keep{text-decoration:none}
@media print{.top,.nav,.noprint,.toast,.banner-prueba{display:none!important}body,.card,.modal-box{background:#fff!important;color:#000!important}.modal{position:static;background:none}*{color:#000!important}}
