:root{--ink: #f4f6f8;--ink-dim: #9aa4b2;--ground: #0b0f14;--raised: #161c24;--raised-2: #1f2731;--line: #2b3542;--accent: #37d67a;--accent-ink: #04210f;--warn: #ffb020;--danger: #ff5a5a;--tap: 56px;--pad: 16px;color-scheme:dark}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%}body{margin:0;background:var(--ground);color:var(--ink);font:16px/1.4 system-ui,-apple-system,Segoe UI,Roboto,sans-serif;overscroll-behavior:none;-webkit-user-select:none;user-select:none}.app{display:flex;flex-direction:column;min-height:100%;max-width:560px;margin:0 auto;padding:var(--pad);padding-bottom:calc(var(--pad) + env(safe-area-inset-bottom,0px));gap:var(--pad)}.grow{flex:1 1 auto}.topbar{display:flex;align-items:center;gap:12px;min-height:var(--tap)}.topbar h1{flex:1 1 auto;margin:0;font-size:20px;font-weight:650;letter-spacing:-.01em}.back{display:flex;align-items:center;justify-content:center;min-width:var(--tap);min-height:var(--tap);border:1px solid var(--line);border-radius:14px;background:var(--raised);color:var(--ink);font-size:22px}.btn{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;min-height:var(--tap);padding:14px 18px;border:1px solid var(--line);border-radius:16px;background:var(--raised);color:var(--ink);font-size:18px;font-weight:600;font-family:inherit;transition:transform 60ms ease,filter 60ms ease}.btn:active{transform:scale(.98);filter:brightness(1.25)}.btn:disabled{opacity:.45}.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.btn-danger{color:var(--danger);border-color:#47242a}.btn-lg{min-height:72px;font-size:20px}.btn-stack{display:flex;flex-direction:column;gap:12px}.keypad{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.key{min-height:68px;border:1px solid var(--line);border-radius:16px;background:var(--raised);color:var(--ink);font-size:28px;font-weight:600;font-family:inherit;font-variant-numeric:tabular-nums}.key:active{transform:scale(.96);background:var(--raised-2)}.key-wide{grid-column:span 2}.amount-display{padding:20px var(--pad);border:1px solid var(--line);border-radius:18px;background:var(--raised);text-align:right;font-size:44px;font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:-.02em}.amount-display .peso{color:var(--ink-dim);margin-right:6px}.amount-display.zero{color:var(--ink-dim)}.label{font-size:13px;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-dim)}.muted{color:var(--ink-dim)}.center{text-align:center}.cash-due{font-size:15vw;line-height:1.05;font-weight:800;font-variant-numeric:tabular-nums;letter-spacing:-.03em;text-align:center;color:var(--accent)}@media(min-width:480px){.cash-due{font-size:72px}}.line-items{display:flex;flex-direction:column;gap:10px;padding:var(--pad);border:1px solid var(--line);border-radius:16px;background:var(--raised)}.line{display:flex;justify-content:space-between;gap:12px;font-variant-numeric:tabular-nums}.line-total{border-top:1px solid var(--line);padding-top:10px;font-weight:700}.card{padding:var(--pad);border:1px solid var(--line);border-radius:16px;background:var(--raised)}.banner{padding:12px var(--pad);border-radius:14px;font-weight:600}.banner-offline{background:#3a2a08;color:var(--warn);border:1px solid #5a4310}.banner-error{background:#3a1418;color:#ffb4b4;border:1px solid #5a2126}.viewfinder{position:relative;overflow:hidden;aspect-ratio:1 / 1;border:1px solid var(--line);border-radius:20px;background:#000}.viewfinder video{width:100%;height:100%;object-fit:cover}.reticle{position:absolute;inset:14%;border:3px solid rgba(55,214,122,.9);border-radius:18px}.field{width:100%;min-height:var(--tap);padding:14px 16px;border:1px solid var(--line);border-radius:14px;background:var(--raised);color:var(--ink);font-size:20px;font-family:inherit;letter-spacing:.06em;-webkit-user-select:text;user-select:text}.field::placeholder{color:#64707e}.qr-wrap{display:flex;justify-content:center;padding:var(--pad);background:#fff;border-radius:20px}.qr-wrap img,.qr-wrap canvas{width:100%;max-width:260px;height:auto;display:block}.fallback-code{font-size:44px;font-weight:800;letter-spacing:.14em;font-variant-numeric:tabular-nums;text-align:center}.ring-wrap{display:flex;justify-content:center}.ring{transform:rotate(-90deg)}.ring-track{stroke:var(--line)}.ring-value{stroke:var(--accent);transition:stroke-dashoffset 1s linear}.ring-label{font-size:24px;font-weight:700;font-variant-numeric:tabular-nums;fill:var(--ink)}.rows{display:flex;flex-direction:column;gap:10px}.row{display:flex;align-items:center;gap:12px;width:100%;min-height:var(--tap);padding:12px var(--pad);border:1px solid var(--line);border-radius:14px;background:var(--raised);color:var(--ink);font-family:inherit;text-align:left}.row:active{background:var(--raised-2)}.row-main{flex:1 1 auto;min-width:0}.row-amount{font-size:18px;font-weight:700;font-variant-numeric:tabular-nums}.row-sub{font-size:13px;color:var(--ink-dim);font-variant-numeric:tabular-nums}.pill{padding:5px 10px;border-radius:999px;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;white-space:nowrap}.pill-awaiting{background:#2b3542;color:var(--ink-dim)}.pill-pending{background:#143a24;color:var(--accent)}.pill-verified{background:#37d67a;color:var(--accent-ink)}.pill-flagged{background:#4a3608;color:var(--warn)}.pill-voided{background:#2b3542;color:var(--ink-dim)}.pill-rejected{background:#3a1418;color:#ffb4b4}.pill-abandoned{background:#2b3542;color:var(--ink-dim)}.footer{padding-top:8px;font-size:12px;color:#5b6672;text-align:center;font-variant-numeric:tabular-nums}.social-links{display:flex;justify-content:center;gap:8px;margin:0 0 8px;padding:0;list-style:none}.social-link{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border:1px solid var(--line);border-radius:12px;background:var(--raised);color:var(--ink-dim)}.social-link:active{background:var(--raised-2);color:var(--ink)}.social-link svg{display:block;width:20px;height:20px}.social-links-sm .social-link{width:32px;height:32px;border-radius:10px}.social-links-sm .social-link svg{width:17px;height:17px}.spinner{width:22px;height:22px;border:3px solid rgba(255,255,255,.25);border-top-color:var(--ink);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.spinner{animation-duration:2s}.btn,.key,.ring-value{transition:none}}
