:root{--brand: #E21F27;--brand-dark: #B5141B;--accent: #029046;--accent-dark: #026E36;--ink: #1a1a1a;--ink-2: #555;--ink-3: #8a8a8a;--bg: #f4f4f5;--card: #ffffff;--line: #e4e4e7;--warn: #c77700;--warn-bg: #fff4e0;--danger: #c1121f;--danger-bg: #fde8ea;--ok-bg: #e6f5ec;--radius: 14px;--shadow: 0 1px 2px rgba(0,0,0,.06), 0 4px 14px rgba(0,0,0,.05);--tap: 52px}*{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-size:16px;line-height:1.4;color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}a{color:var(--brand)}h1,h2,h3{margin:0 0 .5rem;line-height:1.2}h1{font-size:1.35rem}h2{font-size:1.15rem}h3{font-size:1rem}.muted{color:var(--ink-3);font-size:.9rem}.hidden{display:none!important}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.topbar{position:sticky;top:0;z-index:20;background:var(--brand);color:#fff;display:flex;align-items:center;gap:12px;padding:10px 16px;padding-top:calc(10px + env(safe-area-inset-top));box-shadow:0 2px 8px #0003}.topbar .logo{height:26px;background:#fff;padding:3px 6px;border-radius:6px}.topbar .title{font-weight:700;flex:1;font-size:1rem}.topbar .title small{display:block;font-weight:400;opacity:.85;font-size:.78rem}.topbar button{background:#ffffff26;color:#fff;border:0;border-radius:8px;padding:8px 12px;font-weight:600}.page{max-width:960px;margin:0 auto;padding:16px;padding-bottom:calc(80px + env(safe-area-inset-bottom))}.page.wide{max-width:1200px}.nav{position:fixed;bottom:0;left:0;right:0;z-index:20;background:var(--card);border-top:1px solid var(--line);display:flex;padding-bottom:env(safe-area-inset-bottom)}.nav a{flex:1;text-align:center;text-decoration:none;color:var(--ink-3);font-size:.72rem;padding:8px 4px 6px;display:flex;flex-direction:column;gap:2px;align-items:center;font-weight:600}.nav a .ic{font-size:1.35rem;line-height:1}.nav a.active{color:var(--brand)}@media(min-width:900px){.nav{inset:56px 0 auto;flex-direction:row;justify-content:center;gap:4px;border-top:0;border-bottom:1px solid var(--line)}.nav a{flex:0 0 auto;flex-direction:row;gap:8px;padding:12px 18px;font-size:.9rem}.page{padding-top:70px;padding-bottom:32px}}.card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px;margin-bottom:14px}.card.tight{padding:12px 14px}.grid{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}.grid.two{grid-template-columns:1fr 1fr}.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.row.between{justify-content:space-between}.spacer{flex:1}label.f{display:block;margin-bottom:12px}label.f>span{display:block;font-size:.85rem;font-weight:600;color:var(--ink-2);margin-bottom:4px}.input,select.input,textarea.input{width:100%;min-height:48px;padding:10px 12px;border:1.5px solid var(--line);border-radius:10px;background:#fff;outline:none}.input:focus{border-color:var(--brand);box-shadow:0 0 0 3px #e21f271f}.input.big{font-size:1.8rem;font-weight:700;text-align:center;min-height:64px;letter-spacing:.02em}.check{display:flex;gap:10px;align-items:center;margin:10px 0}.check input{width:22px;height:22px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:var(--tap);padding:10px 18px;border-radius:12px;border:0;background:var(--brand);color:#fff;font-weight:700;font-size:1rem;width:100%;transition:transform .05s,filter .15s}.btn:active{transform:scale(.98)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.green{background:var(--accent)}.btn.ghost{background:#fff;color:var(--ink);border:1.5px solid var(--line)}.btn.danger{background:var(--danger)}.btn.sm{min-height:38px;padding:6px 12px;font-size:.88rem;width:auto;border-radius:9px}.btn.auto{width:auto}.btn-row{display:flex;gap:10px;margin-top:12px}.btn-row .btn{flex:1}.alert{padding:12px 14px;border-radius:10px;margin-bottom:10px;font-weight:500;display:flex;gap:10px;align-items:flex-start;line-height:1.4}.alert.err{background:var(--danger-bg);color:var(--danger)}.alert.ok{background:var(--ok-bg);color:var(--accent-dark)}.alert.warn{background:var(--warn-bg);color:var(--warn)}.badge{display:inline-block;padding:2px 9px;border-radius:999px;font-size:.75rem;font-weight:700;background:var(--line);color:var(--ink-2)}.badge.ok{background:var(--ok-bg);color:var(--accent-dark)}.badge.warn{background:var(--warn-bg);color:var(--warn)}.badge.err{background:var(--danger-bg);color:var(--danger)}.badge.brand{background:var(--brand);color:#fff}.login{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px;background:linear-gradient(160deg,var(--brand) 0%,var(--brand-dark) 60%,#7a0d12 100%)}.login .card{width:100%;max-width:380px;text-align:center;padding:28px 22px}.login .logo{height:48px;margin-bottom:8px}.login h1{color:var(--brand)}.login form{text-align:left;margin-top:18px}.steps{display:flex;gap:6px;margin-bottom:14px}.steps span{flex:1;height:5px;border-radius:3px;background:var(--line)}.steps span.done{background:var(--accent)}.steps span.cur{background:var(--brand)}#reader{width:100%;border-radius:12px;overflow:hidden;background:#000;min-height:260px}#reader video{border-radius:12px}#reader img[alt="Info icon"]{display:none}.scan-hint{text-align:center;margin:10px 0 0;color:var(--ink-2)}.ticket-box{font-size:1.3rem;font-weight:800;text-align:center;padding:14px;border:2px dashed var(--accent);border-radius:12px;background:var(--ok-bg);word-break:break-all}.choices{display:grid;grid-template-columns:1fr 1fr;gap:10px}.choice{border:2px solid var(--line);border-radius:12px;background:#fff;padding:14px 10px;text-align:center;min-height:84px;display:flex;flex-direction:column;justify-content:center;gap:4px}.choice b{font-size:1rem}.choice small{color:var(--ink-3)}.choice.low small{color:var(--warn);font-weight:700}.choice.sel{border-color:var(--brand);background:#fff5f5}.choice:disabled{opacity:.4}.summary{display:grid;grid-template-columns:auto 1fr;gap:6px 14px;font-size:1.05rem}.summary dt{color:var(--ink-3)}.summary dd{margin:0;font-weight:700}.success{text-align:center;padding:30px 16px}.success .big{font-size:5rem;line-height:1;color:var(--accent)}.success h2{color:var(--accent-dark);font-size:1.5rem;margin-top:8px}.success .drink{font-size:1.6rem;font-weight:800;margin:12px 0}.failure .big,.failure h2{color:var(--danger)}.list{display:flex;flex-direction:column}.item{display:flex;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--line)}.item:last-child{border-bottom:0}.item .main{flex:1;min-width:0}.item .main b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.item .main small{color:var(--ink-3)}.item.cancelled{opacity:.55;text-decoration:line-through}.tbl-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}table{border-collapse:collapse;width:100%;font-size:.9rem}th,td{text-align:left;padding:9px 8px;border-bottom:1px solid var(--line);white-space:nowrap}th{font-size:.75rem;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-3)}td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}tr.cancelled td{color:var(--ink-3);text-decoration:line-through}.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px;margin-bottom:14px}.kpi{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:14px 16px;display:flex;flex-direction:column;gap:4px}.kpi .l{color:var(--ink-3);font-size:.74rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em}.kpi .v{font-size:2rem;font-weight:800;line-height:1.05;font-variant-numeric:tabular-nums}.kpi .s{font-size:.82rem;line-height:1.35}.kpi.hero{grid-column:span 2;background:linear-gradient(135deg,#fff,#f7fbf8);border:1.5px solid var(--accent)}.kpi.hero .v{font-size:3rem;color:var(--accent-dark)}.kpi.alert{border-color:var(--danger);background:linear-gradient(135deg,#fff,#fff6f7)}.kpi.alert .v{color:var(--danger)}@media(max-width:420px){.kpi.hero{grid-column:span 1}.kpi.hero .v{font-size:2.4rem}}.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:14px;align-items:start}.cards .card{margin:0}@media(min-width:760px){.cards{grid-template-columns:repeat(2,1fr)}.cards .span2{grid-column:span 2}}.card-h{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:10px}.card-h h3{margin:0}.center{text-align:center}.gauge{height:8px;background:var(--line);border-radius:4px;overflow:hidden;margin:6px 0 4px}.gauge i{display:block;height:100%;background:var(--accent);border-radius:4px;transition:width .3s}.gauge i.low{background:var(--warn)}.gauge i.out{background:var(--danger)}.stockline+.stockline{margin-top:14px;padding-top:12px;border-top:1px solid var(--line)}.chart-wrap{display:flex;gap:8px}.chart-scale{width:26px;flex:0 0 26px;text-align:right;display:flex;flex-direction:column;justify-content:space-between;font-size:.7rem;color:var(--ink-3);font-variant-numeric:tabular-nums;padding-bottom:1px}.chart{flex:1;display:flex;align-items:flex-end;gap:2px;border-bottom:1.5px solid var(--line)}.chart .bar{flex:1;position:relative;height:100%;display:flex;align-items:flex-end;min-width:4px}.chart .bar i{display:block;width:100%;background:var(--accent);border-radius:4px 4px 0 0;min-height:2px;opacity:.85;transition:opacity .15s}.chart .bar.peak i{opacity:1}.chart .bar:hover i{opacity:1;filter:brightness(.82)}.chart .bar .tip{display:none;position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%);background:var(--ink);color:#fff;font-size:.74rem;padding:5px 8px;border-radius:6px;white-space:nowrap;z-index:3;pointer-events:none;box-shadow:0 2px 8px #00000040}.chart .bar:hover .tip{display:block}.chart-x{display:flex;gap:2px;font-size:.68rem;color:var(--ink-3);margin:4px 0 0 34px}.chart-x span{flex:1;text-align:center;overflow:hidden}.rank{display:flex;flex-direction:column;gap:8px}.rank div{display:flex;align-items:center;gap:10px;font-size:.92rem}.rank .rank-l{flex:0 0 38%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rank .rank-b{flex:1;height:10px;background:var(--line);border-radius:4px;overflow:hidden}.rank .rank-b i{display:block;height:100%;background:var(--accent);border-radius:4px}.rank b{min-width:30px;text-align:right;font-variant-numeric:tabular-nums}.modal-bg{position:fixed;inset:0;background:#00000073;z-index:50;display:flex;align-items:flex-end;justify-content:center}.modal{background:var(--card);width:100%;max-width:480px;border-radius:18px 18px 0 0;padding:20px 18px calc(20px + env(safe-area-inset-bottom));max-height:92vh;overflow:auto}@media(min-width:600px){.modal-bg{align-items:center}.modal{border-radius:18px}}.toast{position:fixed;left:50%;bottom:calc(76px + env(safe-area-inset-bottom));transform:translate(-50%) translateY(20px);background:var(--ink);color:#fff;padding:10px 16px;border-radius:10px;opacity:0;pointer-events:none;transition:.2s;z-index:60;max-width:90vw;text-align:center}.toast.show{opacity:1;transform:translate(-50%)}.toast.err{background:var(--danger)}.toast.ok{background:var(--accent)}.filters{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}.filters .input{width:auto;min-width:130px;flex:1}.photo-zone{border:2px dashed var(--brand);border-radius:14px;background:#fff5f5;min-height:170px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;cursor:pointer;margin-bottom:10px;color:var(--brand);font-weight:700;overflow:hidden}.photo-zone .ic{font-size:3rem;line-height:1}.photo-zone.has{border-style:solid;border-color:var(--accent);background:#000;padding:0}.photo-zone img{max-width:100%;max-height:320px;object-fit:contain;display:block}.thumb{max-width:160px;max-height:120px;border-radius:8px;border:1px solid var(--line);display:block;margin:0 auto}.photo-full{width:100%;max-height:75vh;object-fit:contain;border-radius:10px;background:#000}.readout{border:2px solid var(--accent);border-radius:12px;background:var(--ok-bg);padding:12px 14px;margin:12px 0 8px}.readout div{display:flex;justify-content:space-between;align-items:baseline;gap:12px;padding:4px 0}.readout div+div{border-top:1px solid rgba(2,144,70,.18)}.readout span{color:var(--ink-2);font-size:.85rem;font-weight:600}.readout b{font-size:1.15rem;font-variant-numeric:tabular-nums}.readout.ko{border-color:var(--warn);background:var(--warn-bg)}.ocr-raw{background:#1a1a1a;color:#e8e8e8;padding:12px;border-radius:8px;font-size:.72rem;line-height:1.45;overflow-x:auto;white-space:pre-wrap;word-break:break-word;max-height:320px}details summary{cursor:pointer;padding:6px 0}
