:root{--b:#1A365D;--o:#F59E0B;--g:#F3F4F6;--ok:#15803d;--ko:#b91c1c}
*{box-sizing:border-box}
html,body{margin:0;background:var(--g);font-family:"Open Sans",system-ui,Segoe UI,Arial,sans-serif;color:#1f2937;-webkit-tap-highlight-color:transparent}
h1,h2,h3,.tab,button,.big{font-family:Montserrat,"Open Sans",system-ui,Arial,sans-serif}
#app{max-width:720px;margin:0 auto;min-height:100vh;padding-bottom:76px}
header{background:var(--b);color:#fff;padding:12px 16px;display:flex;align-items:center;gap:10px;position:sticky;top:0;z-index:5}
header h1{font-size:14px;margin:0;color:var(--o);flex:1;letter-spacing:.04em}
header small{display:block;color:#cbd5e1;font-weight:400;font-size:11px;letter-spacing:0}
.pill{font-size:11px;padding:3px 9px;border-radius:20px;background:#ffffff22;color:#fff;white-space:nowrap}
.pill.off{background:var(--o);color:var(--b);font-weight:700}
.pill.pend{background:#fff;color:var(--b);font-weight:700}
main{padding:14px}
nav{position:fixed;left:0;right:0;bottom:0;background:#fff;border-top:2px solid var(--o);display:flex;justify-content:center;z-index:6;padding-bottom:env(safe-area-inset-bottom)}
nav .in{display:flex;max-width:720px;width:100%}
.tab{flex:1;padding:11px 4px;border:0;background:none;font-size:11px;font-weight:700;color:#64748b;letter-spacing:.03em}
.tab.on{color:var(--b);box-shadow:inset 0 3px 0 var(--b)}
.card{background:#fff;border-radius:14px;padding:14px;margin-bottom:12px;box-shadow:0 1px 3px #0001}
.card h2{margin:0 0 10px;font-size:15px;color:var(--b)}
label{display:block;font-size:12px;font-weight:700;color:var(--b);margin:10px 0 4px}
input,select{width:100%;padding:12px;border:1.5px solid #cbd5e1;border-radius:10px;font:inherit;background:#fff}
input:focus,select:focus{outline:none;border-color:var(--b)}
button{font-weight:800;border:0;border-radius:12px;padding:13px 16px;font-size:14px;cursor:pointer;background:var(--b);color:#fff}
button.o{background:var(--o);color:var(--b)}
button.ghost{background:#fff;color:var(--b);border:1.5px solid var(--b)}
button.sm{padding:7px 11px;font-size:12px;border-radius:8px}
button.red{background:var(--ko)}
button:disabled{opacity:.45}
.row{display:flex;gap:8px;align-items:center}.row>*{flex:1}
.stack{display:flex;flex-direction:column;gap:8px}
.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.kpi{background:#fff;border-radius:12px;padding:10px;text-align:center;box-shadow:0 1px 3px #0001}
.kpi b{display:block;font:800 22px Montserrat,sans-serif;color:var(--b)}.kpi span{font-size:11px;color:#64748b}
table{width:100%;border-collapse:collapse;font-size:13px}
th{font-size:11px;text-align:left;color:#64748b;text-transform:uppercase;letter-spacing:.04em;padding:6px 4px;border-bottom:2px solid var(--g)}
td{padding:8px 4px;border-bottom:1px solid var(--g);vertical-align:middle}
.tag{display:inline-block;padding:2px 8px;border-radius:6px;font:800 11px Montserrat,sans-serif}
.tag.STD{background:var(--g);color:var(--b);border:1px solid #cbd5e1}.tag.VIP{background:var(--o);color:var(--b)}.tag.VVIP{background:var(--b);color:var(--o)}
.muted{color:#64748b;font-size:12px}
.login{max-width:380px;margin:0 auto;padding:36px 18px}.login h1{color:var(--b);font-size:24px;margin:0}.login p{color:#64748b;margin:4px 0 20px}
.hero{background:var(--b);color:#fff;text-align:center;padding:30px 18px 26px;border-radius:0 0 22px 22px;margin-bottom:6px}.hero h1{color:var(--o);margin:0;font-size:22px;letter-spacing:.05em}.hero p{margin:4px 0 0;color:#cbd5e1;font-size:13px}
#toast{position:fixed;left:12px;right:12px;bottom:84px;z-index:20;display:flex;flex-direction:column;gap:6px;pointer-events:none;max-width:696px;margin:0 auto}
#toast div{background:var(--b);color:#fff;padding:11px 14px;border-radius:10px;font-size:13px;box-shadow:0 4px 14px #0004;border-left:5px solid var(--o)}
#toast div.err{border-left-color:#ef4444}
/* scanner */
.cam{position:relative;background:#000;border-radius:14px;overflow:hidden;aspect-ratio:4/3}
.cam video{width:100%;height:100%;object-fit:cover}
.cam:after{content:"";position:absolute;inset:18% 22%;border:3px solid var(--o);border-radius:14px;box-shadow:0 0 0 999px #0005}
.res{border-radius:16px;padding:18px;text-align:center;color:#fff;margin:10px 0}
.res.ok{background:var(--ok)}.res.inside{background:var(--o);color:var(--b)}.res.bad{background:var(--ko)}.res.warn{background:var(--o);color:var(--b)}
.res .big{font-size:30px;font-weight:800;letter-spacing:.03em;line-height:1.1}
.res .seat{font:800 56px Montserrat,sans-serif;background:#fff;color:var(--b);border-radius:14px;padding:6px 10px;margin:12px 0 4px;letter-spacing:.04em}
.res .who{font-size:18px;font-weight:700;margin-top:8px}
.res.ok .actions button.o,.res.inside .actions button.main{font-size:17px;padding:16px}
.actions{display:flex;flex-direction:column;gap:8px;margin-top:14px}
.empty{text-align:center;color:#94a3b8;padding:20px;font-size:13px}
