:root{--bg: #0b1221;--bg-2: #0e1a30;--surface: #131c2e;--surface-2: #1b2740;--border: #26324c;--border-soft: #1e2942;--primary: #3b82f6;--primary-700: #2563eb;--primary-soft: rgba(59, 130, 246, .16);--text: #e6ecf5;--muted: #8c9cb8;--success: #22c55e;--success-soft: rgba(34, 197, 94, .16);--warning: #f59e0b;--danger: #ef4444;--danger-soft: rgba(239, 68, 68, .16);--violet: #a855f7;--radius: 14px;--radius-sm: 10px;--shadow: 0 10px 30px rgba(0, 0, 0, .35);--font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--font);background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;overflow:hidden}button{font-family:inherit;cursor:pointer}input{font-family:inherit}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--border);border-radius:999px}::-webkit-scrollbar-track{background:transparent}.app-bg{height:100%;background:radial-gradient(1100px 540px at 12% -8%,rgba(59,130,246,.16),transparent 60%),radial-gradient(900px 520px at 110% 120%,rgba(168,85,247,.12),transparent 55%),linear-gradient(160deg,#0a1020,#0e1a30 55%,#0b1221)}.muted{color:var(--muted)}.row{display:flex;align-items:center}.col{display:flex;flex-direction:column}.gap-8{gap:8px}.gap-12{gap:12px}.gap-16{gap:16px}.spacer{flex:1}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid transparent;border-radius:var(--radius);padding:0 18px;height:52px;font-size:15px;font-weight:700;color:#fff;background:var(--primary);transition:filter .15s,transform .05s,opacity .15s;-webkit-user-select:none;user-select:none;white-space:nowrap}.btn:hover{filter:brightness(1.06)}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.success{background:var(--success)}.btn.danger{background:var(--danger)}.btn.ghost{background:transparent;border-color:var(--border);color:var(--text)}.btn.lg{height:60px;font-size:17px}.btn.block{width:100%}.field{display:flex;flex-direction:column;gap:6px}.field>label{font-size:13px;font-weight:600;color:var(--muted);margin-left:2px}.input-wrap{display:flex;align-items:center;gap:10px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:0 14px;min-height:52px;transition:border-color .15s,box-shadow .15s}.input-wrap.active{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}.input-wrap>svg{flex:none;color:var(--muted)}.input-wrap>input{flex:1;background:transparent;border:none;outline:none;color:var(--text);font-size:16px;height:50px;min-width:0}.input-wrap>input::placeholder{color:var(--muted)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.switch{position:relative;width:52px;height:30px;flex:none}.switch input{opacity:0;width:0;height:0}.switch .track{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--border);border-radius:999px;transition:background .15s}.switch .thumb{position:absolute;top:3px;left:3px;width:24px;height:24px;border-radius:999px;background:#fff;transition:transform .18s}.switch input:checked+.track{background:var(--primary)}.switch input:checked+.track+.thumb{transform:translate(22px)}.banner{display:flex;align-items:center;gap:10px;border-radius:var(--radius);padding:12px 14px;font-size:14px;font-weight:600;border:1px solid}.banner.danger{background:var(--danger-soft);border-color:#ef444459;color:#fecaca}.banner.success{background:var(--success-soft);border-color:#22c55e59;color:#bbf7d0}.banner.info{background:var(--primary-soft);border-color:#3b82f659;color:#bfdbfe}.login-screen{height:100%;display:grid;place-items:center;padding:24px;overflow:auto}.login-card{width:100%;max-width:420px;padding:30px}.brand{display:flex;flex-direction:column;align-items:center;margin-bottom:22px}.brand .logo{width:74px;height:74px;border-radius:20px;display:grid;place-items:center;background:linear-gradient(160deg,var(--primary),var(--primary-700));box-shadow:0 10px 26px #3b82f673;margin-bottom:14px;color:#fff}.brand h1{margin:0;font-size:26px;letter-spacing:2px;font-weight:900;text-align:center}.brand-logo{width:88px;height:88px;border-radius:22px;object-fit:contain;margin-bottom:14px;background:var(--surface-2);border:1px solid var(--border);padding:8px;box-shadow:0 10px 26px #0006}.topbar-logo{width:38px;height:38px;border-radius:10px;object-fit:contain;background:var(--surface-2);border:1px solid var(--border);padding:3px}.brand .tag{color:var(--muted);font-size:13px;letter-spacing:1px;margin-top:2px}.login-fields{display:flex;flex-direction:column;gap:14px}.toggle-row{display:flex;align-items:center;gap:12px;justify-content:space-between;margin:18px 0;padding:12px;border:1px solid var(--border-soft);border-radius:var(--radius);background:var(--bg-2)}.toggle-row .meta{display:flex;align-items:center;gap:10px}.toggle-row .meta .ttl{font-size:14px;font-weight:600}.toggle-row .meta .hint{font-size:12px;color:var(--muted)}.pos{height:100%;display:flex;flex-direction:column}.topbar{display:flex;align-items:center;gap:14px;padding:12px 18px;border-bottom:1px solid var(--border);background:#131c2eb3;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.topbar .logo{width:40px;height:40px;border-radius:11px;display:grid;place-items:center;color:#fff;background:linear-gradient(160deg,var(--primary),var(--primary-700))}.topbar .who{line-height:1.15}.topbar .who .name{font-weight:800;font-size:15px}.topbar .who .role{color:var(--muted);font-size:12px}.icon-btn{width:46px;height:46px;border-radius:12px;display:grid;place-items:center;background:var(--surface);border:1px solid var(--border);color:var(--text)}.icon-btn.on{background:var(--primary);border-color:var(--primary);color:#fff}.conn{position:relative;display:inline-flex;align-items:center;gap:7px;height:46px;padding:0 14px;border-radius:12px;font-size:13px;font-weight:700;background:var(--surface);border:1px solid var(--border);color:var(--text)}.conn.on{border-color:#22c55e66;color:#bbf7d0}.conn.off{border-color:#f59e0b73;color:#fcd9a3;background:#f59e0b1a}.conn .conn-label{letter-spacing:.3px}.conn .conn-badge{min-width:20px;height:20px;padding:0 6px;border-radius:999px;background:var(--warning);color:#20160a;font-size:11px;font-weight:900;display:grid;place-items:center}@media (max-width: 720px){.conn .conn-label{display:none}}@keyframes spin{to{transform:rotate(360deg)}}.spin{animation:spin 1s linear infinite}.pos-body{flex:1;display:grid;grid-template-columns:1fr 400px;min-height:0}.catalog{display:flex;flex-direction:column;min-height:0;padding:16px;gap:14px}.search-bar{display:flex;gap:10px}.search-bar .input-wrap{flex:1}.grid{flex:1;overflow:auto;display:grid;gap:12px;padding-right:4px;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));align-content:start}.prod{text-align:left;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:14px;min-height:116px;color:var(--text);display:flex;flex-direction:column;justify-content:space-between;gap:10px;transition:transform .06s,border-color .15s,background .15s}.prod:hover{border-color:var(--primary)}.prod:active{transform:translateY(1px)}.prod .pname{font-weight:700;font-size:15px;line-height:1.25}.prod .pcode{color:var(--muted);font-size:12px;margin-top:2px}.prod .pfoot{display:flex;align-items:center;justify-content:space-between}.prod .pprice{font-weight:800;font-size:15px}.iva-badge{font-size:10px;font-weight:800;padding:3px 7px;border-radius:999px;background:var(--surface-2);color:var(--muted);border:1px solid var(--border)}.empty{flex:1;display:grid;place-content:center;justify-items:center;gap:10px;color:var(--muted);text-align:center;padding:30px}.cart{border-left:1px solid var(--border);background:var(--bg-2);display:flex;flex-direction:column;min-height:0}.cart h2{margin:0;padding:16px 18px;font-size:18px;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:10px}.cart-lines{flex:1;overflow:auto;padding:10px 14px;display:flex;flex-direction:column;gap:8px}.cart-line{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);padding:10px 12px}.cart-line .cl-top{display:flex;justify-content:space-between;gap:8px}.cart-line .cl-name{font-weight:700;font-size:14px}.cart-line .cl-sub{color:var(--muted);font-size:12px;margin-top:2px}.cart-line .cl-bottom{display:flex;align-items:center;justify-content:space-between;margin-top:10px}.stepper{display:flex;align-items:center;gap:8px}.stepper button{width:36px;height:36px;border-radius:10px;background:var(--surface-2);border:1px solid var(--border);color:var(--text);display:grid;place-items:center;font-size:18px}.stepper .qty{min-width:34px;text-align:center;font-weight:800;font-size:16px}.cl-total{font-weight:800}.trash{background:transparent;border:none;color:var(--muted);display:grid;place-items:center;padding:4px}.trash:hover{color:var(--danger)}.cart-foot{border-top:1px solid var(--border);padding:14px 18px;display:flex;flex-direction:column;gap:10px}.totals .t-row{display:flex;justify-content:space-between;font-size:14px;color:var(--muted);padding:3px 0}.totals .t-row.grand{color:var(--text);font-size:22px;font-weight:900;padding-top:8px}.nif-row{display:flex;gap:8px;align-items:flex-end}.nif-row .field{flex:1}.kbd-overlay{position:fixed;left:0;right:0;bottom:0;z-index:60;pointer-events:none}.kbd{pointer-events:auto;background:var(--surface-2);border-top:1px solid var(--border);padding:8px 8px 12px;box-shadow:0 -12px 30px #0006}.kbd-bar{display:flex;align-items:center;justify-content:space-between;padding:2px 6px 6px}.kbd-bar .lbl{color:var(--muted);font-size:12px;font-weight:700}.kbd-bar .acts{display:flex;gap:14px;align-items:center}.kbd-bar .acts button{background:transparent;border:none;color:var(--muted);font-size:13px;font-weight:700;display:grid;place-items:center}.kbd-row{display:flex;gap:6px;margin-top:6px}.key{flex:1;height:52px;border-radius:9px;background:var(--surface);color:var(--text);border:1px solid var(--border);font-size:18px;font-weight:600;display:grid;place-items:center;transition:background .08s,transform .04s}.key:hover{background:var(--surface-2)}.key:active{transform:translateY(1px);background:var(--primary-soft)}.key.action{background:var(--bg)}.key.accent{background:var(--primary);border-color:var(--primary);color:#fff}.key.wide-15{flex:1.5}.key.wide-16{flex:1.6}.key.wide-4{flex:4}.q-item{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);padding:12px 14px;display:flex;flex-direction:column;gap:8px}.q-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.q-ref{font-weight:800;font-size:14px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.q-meta{color:var(--muted);font-size:12px;margin-top:2px}.q-status{font-size:11px;font-weight:800;padding:4px 9px;border-radius:999px;white-space:nowrap}.q-status.pending{background:var(--primary-soft);color:#bfdbfe;border:1px solid rgba(59,130,246,.35)}.q-status.syncing{background:var(--success-soft);color:#bbf7d0;border:1px solid rgba(34,197,94,.35)}.q-status.error{background:var(--danger-soft);color:#fecaca;border:1px solid rgba(239,68,68,.35)}.q-body{display:flex;align-items:center;justify-content:space-between}.q-error{font-size:12px;color:#fecaca;background:var(--danger-soft);border:1px solid rgba(239,68,68,.3);border-radius:8px;padding:8px 10px;word-break:break-word}.q-actions{display:flex;gap:8px}.modal-bg{position:fixed;top:0;right:0;bottom:0;left:0;background:#040810a8;display:grid;place-items:center;z-index:70;padding:20px}.receipt{width:100%;max-width:420px;max-height:90vh;overflow:auto;padding:0}.receipt .r-head{background:var(--success-soft);border-bottom:1px solid rgba(34,197,94,.3);padding:22px;text-align:center;border-radius:var(--radius) var(--radius) 0 0}.receipt .r-head .check{width:56px;height:56px;border-radius:999px;background:var(--success);color:#06210f;display:grid;place-items:center;margin:0 auto 10px}.receipt .r-head .num{font-size:22px;font-weight:900;letter-spacing:1px}.receipt .r-head .sub{color:var(--muted);font-size:13px;margin-top:2px}.receipt .r-body{padding:18px 22px}.receipt .kv{display:flex;justify-content:space-between;gap:10px;padding:6px 0;font-size:14px}.receipt .kv .k{color:var(--muted)}.receipt .kv .v{font-weight:700;text-align:right}.receipt .grand{font-size:20px;font-weight:900}.receipt .legend{margin-top:14px;padding:12px;border:1px dashed var(--border);border-radius:var(--radius-sm);color:var(--muted);font-size:12px;line-height:1.5;text-align:center;white-space:pre-wrap;word-break:break-word}.receipt .r-foot{padding:0 22px 22px}.hash{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}.r-company{display:flex;align-items:center;gap:12px;padding:16px 22px 0}.r-company img{width:46px;height:46px;border-radius:10px;object-fit:contain;background:var(--surface-2);border:1px solid var(--border);padding:3px}.r-company .c-name{font-size:16px;font-weight:800;line-height:1.2}.r-company .c-meta{color:var(--muted);font-size:12px;margin-top:2px}.footer-credit{text-align:center;color:var(--muted);font-size:12px;margin:18px 0 0}.footer-credit.compact{margin:0;font-size:11px;opacity:.85}.topbar-credit{color:var(--muted);font-size:11px;opacity:.8;white-space:nowrap}.receipt-credit{text-align:center;color:var(--muted);font-size:11px;padding:4px 22px 0}.pos-footer{border-top:1px solid var(--border);background:#131c2e99;padding:6px 12px;text-align:center}.pos-footer .footer-credit{margin:0;font-size:11px}.pay-methods{display:grid;grid-template-columns:repeat(auto-fit,minmax(90px,1fr));gap:8px}.pay-method{height:48px;border-radius:11px;background:var(--surface);border:1px solid var(--border);color:var(--text);font-weight:700;font-size:14px}.pay-method.on{background:var(--primary);border-color:var(--primary);color:#fff}.quick-cash{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.quick-cash .qc{padding:8px 12px;border-radius:9px;background:var(--surface-2);border:1px solid var(--border);color:var(--text);font-weight:700;font-size:13px}.quick-cash .qc:hover{border-color:var(--primary)}.change-box{display:flex;align-items:center;justify-content:space-between;margin-top:12px;padding:12px 14px;border-radius:12px;border:1px solid var(--success);background:var(--surface);font-size:16px}.change-box strong{font-size:22px;font-weight:900}.cl-promo{font-size:11px;color:var(--success);font-weight:700;margin-top:4px}
