:root{--bg:#0c0a14;--bg2:#14111f;--card:#1b1730;--card2:#241d3d;--line:#322a4d;--text:#f2eefb;--muted:#a79fc4;--accent:#b892ff;--accent2:#7c5cff;--gold:#f4c96b;--green:#3ddc97;--red:#ff6b81;--amber:#ffb648;--radius:18px}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}body,html{margin:0;padding:0}body{background:radial-gradient(1200px 600px at 50% -10%,#241d3d 0,var(--bg) 55%);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;min-height:100vh;-webkit-font-smoothing:antialiased}.wrap{max-width:480px;margin:0 auto;padding:28px 20px 60px}.brand{text-align:center;margin-bottom:22px}.brand .kicker{letter-spacing:.28em;text-transform:uppercase;font-size:11px;color:var(--accent);font-weight:700}.brand h1{font-size:30px;margin:6px 0 4px;font-weight:800;letter-spacing:-.01em}.brand .sub{color:var(--muted);font-size:13px;line-height:1.5}.card{background:linear-gradient(180deg,var(--card2),var(--card));border:1px solid var(--line);border-radius:var(--radius);padding:22px;box-shadow:0 20px 50px -30px rgba(0,0,0,.9)}label{display:block;font-size:13px;color:var(--muted);margin:14px 0 6px;font-weight:600}label:first-of-type{margin-top:0}input{width:100%;padding:14px 16px;border-radius:12px;border:1px solid var(--line);background:#0f0c1a;color:var(--text);font-size:16px;outline:none;transition:border-color .15s,box-shadow .15s}input:focus{border-color:var(--accent2);box-shadow:0 0 0 3px rgba(124,92,255,.22)}button.primary{width:100%;margin-top:20px;padding:15px;border:0;border-radius:12px;background:linear-gradient(135deg,var(--accent),var(--accent2));color:#fff;font-size:16px;font-weight:700;cursor:pointer;transition:transform .08s,filter .15s}button.primary:active{transform:scale(.985)}button.primary:disabled{filter:grayscale(.4) brightness(.7);cursor:default}button.ghost{background:transparent;border:1px solid var(--line);color:var(--muted);padding:11px 14px;border-radius:10px;font-size:14px;font-weight:600;cursor:pointer}.error{margin-top:14px;background:rgba(255,107,129,.12);border:1px solid rgba(255,107,129,.4);color:#ffc2cb;padding:12px 14px;border-radius:12px;font-size:14px;line-height:1.5}.ticket{background:linear-gradient(180deg,#fbf7ff,#efe8fb);color:#241d3d;border-radius:var(--radius);overflow:hidden;margin-bottom:18px;box-shadow:0 24px 50px -28px rgba(0,0,0,.8);position:relative}.ticket .top{padding:18px 20px 14px}.ticket .name{font-weight:800;font-size:18px}.ticket .film{color:#6a5b93;font-size:12px;text-transform:uppercase;letter-spacing:.16em;font-weight:700}.seatrow{display:flex;gap:12px;padding:4px 20px 16px}.seatbox{flex:1 1;background:#fff;border:1px solid #e4daf7;border-radius:12px;padding:12px;text-align:center}.seatbox .k{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:#8b7cb0;font-weight:700}.seatbox .v{font-size:30px;font-weight:800;line-height:1.1;margin-top:2px}.perf{padding:0 20px 14px;font-size:12px;color:#6a5b93;line-height:1.5}.tear{border-top:2px dashed #cbbdec;position:relative}.tear:after,.tear:before{content:"";position:absolute;top:-11px;width:22px;height:22px;border-radius:50%;background:var(--bg)}.tear:before{left:-11px}.tear:after{right:-11px}.barcode{padding:16px 12px 18px;text-align:center;background:#fff}.barcode svg{max-width:100%}.barcode .hint{font-size:11px;color:#8b7cb0;margin-top:4px}.barcode .usedhint{color:#1f9d63;font-weight:700}.ticket.used{opacity:.72}.ticket.used .barcode{filter:grayscale(1)}.usedtag{display:inline-block;margin-top:8px;background:#d9f5e6;color:#147a4b;font-size:12px;font-weight:800;padding:3px 10px;border-radius:999px;letter-spacing:.02em}.footnote{text-align:center;color:var(--muted);font-size:12px;margin-top:22px;line-height:1.6}.footnote a{color:var(--accent)}#reader{border-radius:14px;overflow:hidden;border:1px solid var(--line);background:#000;margin-bottom:12px}#reader video{border-radius:14px;width:100%!important;height:auto!important;display:block}.scanhint{text-align:center;color:var(--muted);font-size:13px;margin-bottom:10px}.result{border-radius:var(--radius);padding:20px;text-align:center;margin-bottom:16px;border:1px solid}.result .big{font-size:24px;font-weight:800;margin-bottom:4px}.result .who{font-size:21px;font-weight:800;line-height:1.15}.result .seatline{display:block;width:auto;height:auto;font-size:19px;margin-top:6px;font-weight:800}.result .meta{font-size:13px;margin-top:8px;opacity:.85}.result.ok{background:rgba(61,220,151,.12);border-color:rgba(61,220,151,.5);color:#c9f7e4}.result.dup{background:rgba(255,182,72,.14);border-color:rgba(255,182,72,.55);color:#ffe0ad}.result.bad{background:rgba(255,107,129,.14);border-color:rgba(255,107,129,.55);color:#ffc9d1}.result.neutral{background:var(--card);border-color:var(--line);color:var(--muted)}.lastcheck{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:14px;padding:12px 14px;background:var(--card);border:1px solid var(--line);border-radius:12px}.lc-label{font-size:11px;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);font-weight:700}.lc-name{font-size:15px;font-weight:700;margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.row{display:flex;gap:10px;align-items:center}.row input{flex:1 1}.stat{display:flex;gap:10px;margin:16px 0}.stat .box{flex:1 1;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px;text-align:center}.stat .box .n{font-size:26px;font-weight:800}.stat .box .l{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.1em}.list{margin-top:10px}.guest{padding:12px 2px;border-bottom:1px solid var(--line)}.guest-top{display:flex;align-items:center;flex-wrap:wrap;gap:8px}.guest-name{font-weight:700;font-size:15px}.guest-sub{color:var(--muted);font-size:12px;margin-top:3px}.guest-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.guest-actions button{margin:0;flex:1 1 auto;min-width:90px}.list .item{display:flex;justify-content:space-between;align-items:center;padding:11px 4px;border-bottom:1px solid var(--line);font-size:14px}.list .item .s{color:var(--muted);font-size:12px}.list .item.undo-btn{cursor:pointer}.sectitle{font-size:13px;color:var(--muted);text-transform:uppercase;letter-spacing:.12em;font-weight:700;margin:22px 0 10px}.spinner{display:inline-block;width:16px;height:16px;border:2px solid rgba(255,255,255,.35);border-top-color:#fff;border-radius:50%;animation:spin .7s linear infinite;vertical-align:-3px;margin-right:8px}@keyframes spin{to{transform:rotate(1turn)}}.linkline{text-align:center;margin-top:18px}.linkline a{color:var(--muted);font-size:13px;text-decoration:none}.tabs{display:flex;gap:6px;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:5px;margin-bottom:18px}.tab{flex:1 1;padding:10px 6px;border:0;border-radius:8px;background:transparent;color:var(--muted);font-size:14px;font-weight:700;cursor:pointer}.tab.on{background:linear-gradient(135deg,var(--accent),var(--accent2));color:#fff}.row2{display:flex;gap:12px}.row2>div{flex:1 1}.okbox{background:rgba(61,220,151,.12);border:1px solid rgba(61,220,151,.45);color:#c9f7e4;padding:12px 14px;border-radius:12px;font-size:13px;line-height:1.5;word-break:break-word}button.sm{width:auto;margin-top:0;padding:10px 14px;font-size:14px}button.xs{width:auto;margin:0;padding:7px 10px;font-size:12px;border-radius:8px}button.danger{border-color:rgba(255,107,129,.5);color:#ffb3bf}.legend{display:flex;flex-wrap:wrap;gap:12px;justify-content:center;margin-bottom:14px;font-size:12px;color:var(--muted)}.legend span{display:inline-flex;align-items:center;gap:5px}.dot{width:12px;height:12px;border-radius:3px;display:inline-block}.dot.in{background:var(--green)}.dot.sold{background:var(--accent2)}.dot.free{background:#2a2440;border:1px solid var(--line)}.dot.void{background:var(--red)}.hallscroll{overflow-x:auto;padding-bottom:10px;-webkit-overflow-scrolling:touch}.screen{text-align:center;color:var(--muted);font-size:11px;letter-spacing:.3em;background:linear-gradient(180deg,var(--card2),transparent);border-top:2px solid var(--accent2);border-radius:50% 50% 0 0/16px 16px 0 0;padding:6px 0 4px;margin:0 auto 12px;min-width:260px;max-width:100%}.hall{display:inline-block;min-width:100%}.hallnote{text-align:center;color:var(--muted);font-size:11px;margin-top:10px;line-height:1.5}.hallrow{display:flex;align-items:center;gap:6px;margin-bottom:5px}.rlabel{width:20px;flex:none;text-align:center;font-size:11px;color:var(--muted);font-weight:700}.seats{display:flex;gap:4px}.seat{width:22px;height:22px;flex:none;border-radius:5px;border:1px solid transparent;font-size:9px;color:rgba(255,255,255,.55);cursor:pointer;padding:0;display:flex;align-items:center;justify-content:center}.seat.blank{background:transparent;border:0;cursor:default;pointer-events:none}.seat.free{background:#211c36;border-color:var(--line);color:#5b5378}.seat.sold{background:var(--accent2);color:#fff}.seat.in{background:var(--green);color:#06301f}.seat.void{background:var(--red);color:#3d0510}.seat.sel{outline:2px solid #fff;outline-offset:1px}.sheet{position:fixed;inset:0;background:rgba(0,0,0,.55);display:flex;align-items:flex-end;justify-content:center;z-index:50}.sheetcard{background:linear-gradient(180deg,var(--card2),var(--card));border:1px solid var(--line);border-bottom:0;border-radius:20px 20px 0 0;padding:22px 20px 26px;width:100%;max-width:480px}.sheettitle{font-size:13px;color:var(--muted);text-transform:uppercase;letter-spacing:.1em;font-weight:700}.sheetname{font-size:22px;font-weight:800;margin:6px 0 4px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}.sheetmuted{color:var(--muted);font-size:14px}.sheetcontacts{color:var(--muted);font-size:13px;margin-top:6px;word-break:break-word}.sheetactions{display:flex;flex-wrap:wrap;gap:10px;margin-top:16px}.sheetclose{width:100%;margin-top:16px;background:transparent;border:1px solid var(--line);color:var(--muted);padding:12px;border-radius:10px;font-size:14px;font-weight:600;cursor:pointer}.chip{font-size:10px;font-weight:700;padding:2px 7px;border-radius:999px;text-transform:uppercase;letter-spacing:.04em}.chip.in{background:rgba(61,220,151,.18);color:var(--green)}.chip.sold{background:rgba(124,92,255,.2);color:#c3b0ff}.chip.void{background:rgba(255,107,129,.18);color:var(--red)}.badge,.chip.add{background:rgba(244,201,107,.18);color:var(--gold)}.badge{font-size:11px;font-weight:700;padding:2px 8px;border-radius:999px}.itemactions{display:flex;gap:6px;flex:none;flex-wrap:wrap;justify-content:flex-end}