:root{--bg:#0f172a;--panel:#1e293b;--panel2:#273449;--text:#e5e7eb;--muted:#94a3b8;--primary:#3b82f6;--primary-d:#2563eb;--success:#22c55e;--danger:#ef4444;--warn:#f59e0b;--border:#334155;--radius:12px;--tile:#334155}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
[hidden]{display:none!important}
html,body{height:100%}
body{margin:0;font:15px/1.4 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;background:var(--bg);color:var(--text);overscroll-behavior:none;user-select:none}
button{font:inherit;color:inherit}
input,select,textarea{font:inherit}
.app{display:flex;flex-direction:column;height:100dvh}
.topbar{display:flex;align-items:center;gap:12px;padding:8px 12px;background:#0b1220;border-bottom:1px solid var(--border);flex-wrap:wrap}
.brand{font-weight:700;display:flex;align-items:center;gap:8px}
.tabs{display:flex;gap:4px;flex:1;justify-content:center}
.tabs button{background:transparent;border:0;padding:8px 14px;border-radius:8px;cursor:pointer;color:var(--muted)}
.tabs button.active{background:var(--primary);color:#fff}
.status{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.pill{font-size:12px;padding:3px 9px;border-radius:999px;background:var(--panel2);color:var(--muted)}
.pill.ok{background:#14532d;color:#bbf7d0}.pill.warn{background:#78350f;color:#fde68a}.pill.bad{background:#7f1d1d;color:#fecaca}.pill.info{background:#1e3a8a;color:#bfdbfe}
.icon-btn{background:var(--panel2);border:0;border-radius:8px;padding:6px 10px;cursor:pointer}
.banner{padding:8px 14px;font-size:14px;background:#78350f;color:#fde68a;text-align:center}
.banner.bad{background:#7f1d1d;color:#fecaca}.banner.info{background:#1e3a8a;color:#bfdbfe}
.screen{flex:1;min-height:0;overflow:auto;padding:12px}
.center{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100%;text-align:center;gap:14px}
.card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:16px}
.card h2{margin:0 0 10px;font-size:18px}
.muted{color:var(--muted)}.small{font-size:12px}.mono{font-family:ui-monospace,Consolas,Menlo,monospace}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;background:var(--primary);color:#fff;border:0;border-radius:10px;padding:12px 18px;font-size:16px;cursor:pointer;min-height:48px}
.btn:hover{background:var(--primary-d)}.btn:disabled{opacity:.5;cursor:default}
.btn-secondary{background:var(--panel2);color:var(--text)}.btn-secondary:hover{background:#334155}
.btn-danger{background:var(--danger)}.btn-danger:hover{background:#b91c1c}.btn-success{background:var(--success);color:#052e16}.btn-success:hover{background:#16a34a}
.btn-warn{background:var(--warn);color:#1f1300}
.btn-sm{padding:8px 12px;font-size:14px;min-height:38px}.btn-block{width:100%}.btn-xl{font-size:20px;min-height:60px}
.row{display:flex;gap:10px;align-items:center}.row.between{justify-content:space-between}.wrap{flex-wrap:wrap}.grow{flex:1}
input[type=text],input[type=number],input[type=password],input[type=email],input[type=search],select,textarea{width:100%;padding:11px 12px;border:1px solid var(--border);border-radius:10px;background:#0b1220;color:var(--text)}
input:focus,select:focus{outline:2px solid var(--primary)}
label{display:block;font-size:13px;color:var(--muted);margin-bottom:4px}
.field{margin-bottom:12px}
.check{display:flex;align-items:center;gap:8px;color:var(--text);font-size:15px;margin:8px 0}.check input{width:auto}

/* keypad */
.keypad{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;max-width:340px;margin:0 auto}
.keypad button{font-size:26px;padding:16px 0;border-radius:14px;border:0;background:var(--panel2);cursor:pointer;min-height:64px}
.keypad button:active{background:var(--primary)}
.pin-dots{display:flex;gap:12px;justify-content:center;margin:12px 0;min-height:20px}
.pin-dots span{width:16px;height:16px;border-radius:50%;background:var(--panel2);border:2px solid var(--border)}
.pin-dots span.on{background:var(--primary);border-color:var(--primary)}
.users{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px;max-width:760px;width:100%}
.users button{padding:22px 10px;border-radius:14px;border:0;background:var(--panel);cursor:pointer;font-size:17px;font-weight:600}
.users button.active{outline:3px solid var(--primary)}
.code-input{font-size:32px;letter-spacing:8px;text-align:center;font-family:ui-monospace,Consolas,monospace}

/* sale layout */
.sale{display:grid;grid-template-columns:1fr 380px;gap:12px;height:100%;min-height:0}
.catalog{display:flex;flex-direction:column;min-height:0;gap:10px}
.cats{display:flex;gap:6px;overflow-x:auto;padding-bottom:4px;flex-shrink:0}
.cats button{white-space:nowrap;background:var(--panel2);border:0;border-radius:999px;padding:8px 14px;cursor:pointer;color:var(--muted)}
.cats button.active{background:var(--primary);color:#fff}
.search{flex-shrink:0}
.tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:8px;overflow:auto;align-content:start;flex:1;min-height:0}
.tile{background:var(--tile);border:0;border-radius:12px;padding:12px 10px;text-align:left;cursor:pointer;min-height:84px;display:flex;flex-direction:column;justify-content:space-between;color:#fff}
.tile:active{transform:scale(.98)}
.tile .name{font-weight:600;line-height:1.2;word-break:break-word}.tile .price{font-size:13px;opacity:.9}
.tile.manual{background:#4c1d95}
.cart{display:flex;flex-direction:column;min-height:0;background:var(--panel);border-radius:var(--radius);border:1px solid var(--border)}
.cart-items{flex:1;overflow:auto;min-height:0;padding:8px}
.ci{display:grid;grid-template-columns:1fr auto;gap:4px 10px;padding:8px;border-bottom:1px solid var(--border);cursor:pointer;border-radius:8px}
.ci.active{background:var(--panel2)}
.ci .n{font-weight:600}.ci .d{font-size:12px;color:var(--muted)}.ci .t{font-weight:700;text-align:right;white-space:nowrap}
.cart-total{padding:12px;border-top:1px solid var(--border)}
.total-line{display:flex;justify-content:space-between;font-size:14px;color:var(--muted)}
.total-big{display:flex;justify-content:space-between;font-size:26px;font-weight:800;margin:6px 0}
.cart-actions{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;padding:0 12px 12px}
.cart-actions .btn{padding:8px 6px;font-size:13px;min-height:44px}
.pay-btn{margin:0 12px 12px}
.empty{color:var(--muted);text-align:center;padding:30px 10px}

/* modal */
.modal-bg{position:fixed;inset:0;background:rgba(0,0,0,.6);display:flex;align-items:center;justify-content:center;padding:14px;z-index:50}
.modal{background:var(--panel);border:1px solid var(--border);border-radius:16px;width:min(560px,100%);max-height:95dvh;overflow:auto;padding:18px}
.modal h2{margin:0 0 12px;font-size:20px}
.modal.wide{width:min(820px,100%)}
.amount-display{font-size:34px;font-weight:800;text-align:right;padding:8px 14px;background:#0b1220;border-radius:10px;font-variant-numeric:tabular-nums}
.methods{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:8px;margin:12px 0}
.methods button{padding:14px 10px;border-radius:12px;border:2px solid var(--border);background:var(--panel2);cursor:pointer;font-weight:600}
.methods button.active{border-color:var(--primary);background:#1e3a8a}
.quick{display:flex;gap:8px;flex-wrap:wrap}.quick button{flex:1}
.paylist{margin:10px 0}.paylist .row{justify-content:space-between;padding:6px 0;border-bottom:1px solid var(--border)}
.toast-root{position:fixed;left:50%;bottom:18px;transform:translateX(-50%);display:flex;flex-direction:column;gap:8px;z-index:60;pointer-events:none}
.toast{background:#111827;border:1px solid var(--border);padding:10px 16px;border-radius:10px;box-shadow:0 8px 24px rgba(0,0,0,.4);animation:fade .25s}
.toast.ok{border-color:var(--success)}.toast.bad{border-color:var(--danger)}.toast.warn{border-color:var(--warn)}
@keyframes fade{from{opacity:0;transform:translateY(8px)}to{opacity:1}}

/* lists */
.list{display:flex;flex-direction:column;gap:8px}
.li{display:grid;grid-template-columns:1fr auto;gap:2px 12px;padding:10px 12px;background:var(--panel);border:1px solid var(--border);border-radius:10px;cursor:pointer}
.li .t{font-weight:700;text-align:right}.li .s{font-size:12px;color:var(--muted)}
.badge{display:inline-block;padding:1px 8px;border-radius:999px;font-size:11px;font-weight:600;background:var(--panel2);color:var(--muted)}
.badge.ok{background:#14532d;color:#bbf7d0}.badge.warn{background:#78350f;color:#fde68a}.badge.bad{background:#7f1d1d;color:#fecaca}.badge.info{background:#1e3a8a;color:#bfdbfe}
.kv{display:grid;grid-template-columns:1fr auto;gap:6px 14px;padding:4px 0}.kv div:nth-child(even){text-align:right;font-variant-numeric:tabular-nums}
.receipt-preview{font-family:ui-monospace,Consolas,Menlo,monospace;font-size:12px;white-space:pre;background:#fff;color:#000;padding:12px;border-radius:8px;overflow:auto;max-width:100%}
.grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:12px}
.qr{image-rendering:pixelated;background:#fff;padding:8px;border-radius:8px}
.hidden{display:none!important}
@media (max-width:900px){.sale{grid-template-columns:1fr;grid-template-rows:1fr auto}.cart{max-height:45dvh}.tabs button{padding:8px 10px}}
@media print{body{background:#fff;color:#000}.app>*:not(#modal-root){display:none}#modal-root .modal-bg{position:static;background:none;padding:0}#modal-root .modal{border:0;padding:0;max-height:none;width:auto}.no-print{display:none!important}.print-receipt{font-family:ui-monospace,Consolas,monospace;font-size:11pt;white-space:pre;width:72mm}}

/* sale layout with calculator */
.sale{grid-template-columns:minmax(280px,340px) minmax(0,1fr) 380px}
.sale.no-calc{grid-template-columns:minmax(0,1fr) 380px}
.sale.no-catalog{grid-template-columns:minmax(0,1fr) 420px}
.sale.no-catalog .calc{max-width:560px;width:100%;margin:0 auto}
.calc{display:flex;flex-direction:column;gap:10px;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:12px;min-height:0;overflow:auto}
.calc .amount-display{font-size:40px;min-height:66px;display:flex;align-items:center;justify-content:flex-end;overflow:hidden}
.calc .amount-display.empty{color:var(--muted)}
.calc .keypad{max-width:none;gap:8px;margin:0}
.calc .keypad button{min-height:58px;font-size:24px}
.vat-buttons{display:grid;grid-template-columns:repeat(auto-fit,minmax(88px,1fr));gap:8px}
.vat-buttons button{background:#4c1d95;border:0;border-radius:12px;padding:10px 6px;min-height:66px;cursor:pointer;color:#fff;font-weight:700;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:16px}
.vat-buttons button small{font-weight:400;font-size:11px;opacity:.85}
.vat-buttons button:disabled{opacity:.4;cursor:default}
.vat-buttons button:not(:disabled):active{background:#6d28d9}
@media (max-width:1150px){
  .sale.has-both{grid-template-columns:minmax(0,1fr) 340px;grid-template-rows:auto minmax(0,1fr)}
  .sale.has-both .calc{grid-column:1;grid-row:1}
  .sale.has-both .catalog{grid-column:1;grid-row:2;min-height:220px}
  .sale.has-both .cart{grid-column:2;grid-row:1/3}
  .sale.has-both .calc .keypad button{min-height:48px;font-size:20px}
  .sale.has-both .vat-buttons button{min-height:54px}
}
@media (max-width:900px){
  .sale,.sale.no-calc,.sale.no-catalog,.sale.has-both{grid-template-columns:1fr;grid-template-rows:none;height:auto}
  .sale.has-both .calc,.sale.has-both .catalog,.sale.has-both .cart{grid-column:auto;grid-row:auto}
  .cart{max-height:45dvh}
  .catalog{min-height:260px}
}
