:root{--bg:#f2f5f3;--surface:#fff;--surface-2:#eaf0ed;--ink:#16221f;--ink-soft:#57665f;--ink-faint:#8c9a94;--primary:#0f5c4e;--primary-dark:#0a3f35;--primary-soft:#dceae5;--accent:#d9a441;--accent-soft:#f6e6c4;--danger:#b8433a;--danger-soft:#f4dedb;--line:#dbe3df;--radius:16px;--radius-sm:10px;--font-display:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--font-mono:ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Courier New", monospace;--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px)}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--ink);font-family:var(--font-display);-webkit-font-smoothing:antialiased;overscroll-behavior-y:none}#app{background:var(--bg);max-width:560px;min-height:100vh;padding-bottom:calc(96px + var(--safe-bottom));margin:0 auto;position:relative}a{color:inherit;text-decoration:none}button{font-family:inherit}::selection{background:var(--accent-soft)}[data-nav]{cursor:pointer}.boot{min-height:100vh;color:var(--ink-soft);justify-content:center;align-items:center;font-size:14px;display:flex}.appbar{z-index:20;background:var(--primary);color:#fff;padding:calc(14px + var(--safe-top)) 16px 14px;align-items:center;gap:10px;display:flex;position:sticky;top:0;box-shadow:0 2px 10px #0a3f352e}.appbar .back{color:#fff;cursor:pointer;background:#ffffff24;border:none;border-radius:50%;flex:none;justify-content:center;align-items:center;width:34px;height:34px;font-size:18px;display:flex}.appbar .back:active{background:#ffffff47}.appbar-titles{flex:1;min-width:0}.appbar-title{letter-spacing:.2px;white-space:nowrap;text-overflow:ellipsis;font-size:18px;font-weight:700;overflow:hidden}.appbar-sub{color:#ffffffb8;white-space:nowrap;text-overflow:ellipsis;margin-top:1px;font-size:12.5px;overflow:hidden}.appbar .iconbtn{color:#fff;cursor:pointer;background:#ffffff24;border:none;border-radius:50%;flex:none;justify-content:center;align-items:center;width:34px;height:34px;font-size:16px;display:flex}.appbar .iconbtn:active{background:#ffffff47}.brand-badge{background:#ffffff29;border-radius:10px;flex:none;justify-content:center;align-items:center;width:34px;height:34px;display:flex}.brand-badge svg{width:19px;height:19px}.content{padding:16px}.section-title{text-transform:uppercase;letter-spacing:.6px;color:var(--ink-faint);margin:22px 2px 10px;font-size:12.5px;font-weight:700}.section-title:first-child{margin-top:2px}.tabs{background:var(--surface-2);border-radius:12px;gap:4px;margin-bottom:16px;padding:4px;display:flex}.tab{text-align:center;color:var(--ink-soft);cursor:pointer;background:0 0;border:none;border-radius:9px;flex:1;padding:9px 4px;font-size:13.5px;font-weight:600}.tab.active{background:var(--surface);color:var(--primary-dark);box-shadow:0 1px 3px #0a3f351f}.tab:disabled{opacity:.45;cursor:not-allowed}.ticket{background:var(--surface);border-radius:var(--radius);border:1px solid var(--line);margin-bottom:12px;display:flex;overflow:hidden;box-shadow:0 1px 2px #16221f0a}.ticket-main{flex:1;min-width:0;padding:14px}.ticket-name{color:var(--ink);white-space:nowrap;text-overflow:ellipsis;font-size:15.5px;font-weight:700;overflow:hidden}.ticket-meta{color:var(--ink-soft);margin-top:3px;font-size:12.5px}.ticket-meta span+span:before{content:"·";color:var(--ink-faint);margin:0 5px}.ticket-stub{text-align:center;border-left:2px dashed var(--line);background:var(--surface-2);flex-direction:column;flex:none;justify-content:center;align-items:center;gap:1px;width:96px;padding:8px 6px;display:flex;position:relative}.ticket-stub:before,.ticket-stub:after{content:"";background:var(--bg);border-radius:50%;width:14px;height:14px;position:absolute;left:-8px}.ticket-stub:before{top:-8px}.ticket-stub:after{bottom:-8px}.ticket-stub .num{font-family:var(--font-mono);color:var(--primary-dark);font-size:16px;font-weight:700}.ticket-stub .lbl{text-transform:uppercase;letter-spacing:.4px;color:var(--ink-faint);font-size:9.5px}.ticket-stub.amount .num{color:var(--accent);font-size:13.5px}.ticket.badge-depot .ticket-stub{background:var(--primary-soft)}.ticket.badge-retrait .ticket-stub{background:var(--accent-soft)}.ticket-type-badge{text-transform:uppercase;letter-spacing:.4px;border-radius:20px;margin-bottom:4px;padding:2px 7px;font-size:10.5px;font-weight:700;display:inline-block}.badge-depot .ticket-type-badge{background:var(--primary-soft);color:var(--primary-dark)}.badge-retrait .ticket-type-badge{background:var(--accent-soft);color:#8a5f16}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);margin-bottom:12px;padding:14px}.row-line{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:10px;padding:10px 0;display:flex}.row-line:last-child{border-bottom:none}.row-title{font-size:14.5px;font-weight:600}.row-sub{color:var(--ink-soft);margin-top:2px;font-size:12px}.row-val{font-family:var(--font-mono);color:var(--primary-dark);white-space:nowrap;font-size:14.5px;font-weight:700}.empty{text-align:center;color:var(--ink-soft);padding:44px 20px}.empty .glyph{margin-bottom:10px;font-size:34px}.empty h3{color:var(--ink);margin:0 0 6px;font-size:16px}.empty p{margin:0;font-size:13.5px;line-height:1.5}.btn{cursor:pointer;border:none;border-radius:12px;justify-content:center;align-items:center;gap:6px;width:100%;padding:12px 16px;font-size:14.5px;font-weight:700;display:inline-flex}.btn:disabled{opacity:.6;cursor:wait}.btn-primary{background:var(--primary);color:#fff}.btn-primary:active{background:var(--primary-dark)}.btn-accent{background:var(--accent);color:#3a2907}.btn-ghost{background:var(--surface-2);color:var(--ink)}.btn-danger{background:var(--danger-soft);color:var(--danger)}.btn-outline{color:var(--primary);border:1.5px solid var(--primary-soft);background:0 0}.btn-sm{border-radius:9px;width:auto;padding:8px 12px;font-size:13px}.btn-row{gap:10px;margin-top:6px;display:flex}.btn-row .btn{flex:1}.field{margin-bottom:14px}.field label{color:var(--ink-soft);margin-bottom:6px;font-size:12.5px;font-weight:700;display:block}.field input[type=text],.field input[type=number],.field input[type=tel],.field input[type=password],.field input[type=datetime-local],.field textarea,.field select{border:1.5px solid var(--line);background:var(--surface);width:100%;color:var(--ink);border-radius:11px;padding:12px 13px;font-family:inherit;font-size:15px}.field input:focus,.field textarea:focus,.field select:focus{border-color:var(--primary);outline:none}.field input:disabled{background:var(--surface-2);color:var(--ink-faint)}.hint{color:var(--ink-faint);margin-top:5px;font-size:11.5px}.field textarea{resize:vertical;min-height:60px}.check{align-items:center;gap:8px;margin-bottom:12px;font-size:13.5px;display:flex}.cat-row{background:var(--surface);border:1px solid var(--line);border-radius:12px;margin-bottom:10px;padding:12px}.cat-row-head{justify-content:space-between;align-items:baseline;margin-bottom:8px;display:flex}.cat-row-head .name{font-size:14.5px;font-weight:700}.cat-row-head .price{font-family:var(--font-mono);color:var(--ink-soft);font-size:12.5px}.cat-inputs{gap:8px;display:flex}.cat-inputs .field{flex:1;margin-bottom:0}.cat-avail{color:var(--ink-faint);margin-top:4px;font-size:11px}.cat-computed{color:var(--primary-dark);font-size:12px;font-weight:700;font-family:var(--font-mono);margin-top:8px}.fab{z-index:15;padding:14px 16px calc(14px + var(--safe-bottom));background:linear-gradient(to top, var(--bg) 55%, #f2f5f300);pointer-events:none;justify-content:center;display:flex;position:fixed;bottom:0;left:0;right:0}.fab .inner{pointer-events:auto;width:100%;max-width:560px}.fab button{box-shadow:0 8px 20px #0f5c4e47}#toast{left:50%;bottom:calc(90px + var(--safe-bottom));background:var(--ink);color:#fff;z-index:50;opacity:0;pointer-events:none;text-align:center;border-radius:30px;max-width:88%;padding:11px 18px;font-size:13.5px;font-weight:600;transition:opacity .25s,transform .25s;position:fixed;transform:translate(-50%)translateY(20px)}#toast.show{opacity:1;transform:translate(-50%)translateY(0)}.receipt{background:var(--surface);border-radius:var(--radius);border:1.5px dashed var(--line);font-family:var(--font-mono);padding:20px 18px;position:relative}.receipt-head{text-align:center;margin-bottom:14px}.receipt-head .app-name{font-family:var(--font-display);letter-spacing:.5px;color:var(--primary-dark);text-transform:uppercase;font-size:13px;font-weight:800}.receipt-head .r-type{margin-top:6px;font-size:20px;font-weight:800}.receipt-head .r-date{color:var(--ink-soft);margin-top:2px;font-size:12px}.receipt hr{border:none;border-top:1.5px dashed var(--line);margin:12px 0}.receipt .kv{justify-content:space-between;gap:10px;margin:4px 0;font-size:13px;display:flex}.receipt .kv .k{color:var(--ink-soft)}.receipt table{border-collapse:collapse;width:100%;margin-top:6px;font-size:12.5px}.receipt th{text-align:left;text-transform:uppercase;color:var(--ink-faint);border-bottom:1px solid var(--line);padding:4px 2px;font-size:10.5px}.receipt td{border-bottom:1px dotted var(--line);padding:6px 2px}.receipt td.num,.receipt th.num{text-align:right}.receipt .total-row{color:var(--primary-dark);justify-content:space-between;gap:10px;margin-top:10px;font-size:16px;font-weight:800;display:flex}.receipt .note-block{color:var(--ink-soft);font-size:12px;font-family:var(--font-display);margin-top:10px}.receipt .gift-tag{background:var(--accent-soft);color:#8a5f16;border-radius:6px;margin-left:5px;padding:1px 5px;font-size:9.5px}.receipt .phone-row{justify-content:space-between;margin:4px 0;font-size:13px;display:flex}.pill{background:var(--primary-soft);color:var(--primary-dark);border-radius:20px;padding:3px 9px;font-size:11px;font-weight:700;display:inline-block}.pill.warn{background:var(--danger-soft);color:var(--danger)}.banner{background:var(--accent-soft);color:#7a530f;border-radius:12px;margin-bottom:14px;padding:12px 14px;font-size:13px;line-height:1.5}.divider-space{height:8px}.footer-note{text-align:center;color:var(--ink-faint);padding:20px 0 4px;font-size:11.5px}.bar-track{background:var(--surface-2);border-radius:6px;height:8px;overflow:hidden}.bar-fill{border-radius:6px;height:100%}.lock-wrap{text-align:center;flex-direction:column;justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.lock-icon{background:var(--primary);border-radius:18px;justify-content:center;align-items:center;width:64px;height:64px;margin-bottom:18px;display:flex;box-shadow:0 8px 20px #0f5c4e40}.lock-icon svg{width:32px;height:32px}.lock-title{margin-bottom:6px;font-size:19px;font-weight:800}.lock-sub{color:var(--ink-soft);max-width:280px;margin-bottom:22px;font-size:13.5px;line-height:1.5}.lock-wrap .field{text-align:left;width:100%;max-width:280px}.lock-wrap .btn{max-width:280px}.lock-wrap .btn-sm{width:auto;max-width:none}.btn-whatsapp{color:#04310f;background:#25d366}.alert-danger{background:var(--danger-soft);color:var(--danger);border-radius:12px;justify-content:space-between;align-items:center;gap:10px;margin-top:10px;padding:12px 14px;font-size:14px;font-weight:800;display:flex}.receipt .alert-danger{font-family:var(--font-mono);margin-top:12px}.ticket.has-due .ticket-stub{background:var(--danger-soft)}.ticket.has-due .ticket-stub .num{color:var(--danger)}.due-tag{color:var(--danger);font-weight:700}#print-area{display:none}@media print{body *{visibility:hidden}#print-area{display:block}#print-area,#print-area *{visibility:visible}#print-area{width:100%;padding:20px;position:absolute;top:0;left:0}.receipt{border-style:solid}}.admin-wrap{max-width:760px;min-height:100vh;margin:0 auto;padding-bottom:40px}.admin-wrap a.ticket,.admin-wrap a.row-line{color:inherit}.admin-wrap a.tab{display:block}.admin-wrap a.btn{text-decoration:none}.stat-grid{grid-template-columns:repeat(2,1fr);gap:10px;margin-bottom:12px;display:grid}@media (min-width:600px){.stat-grid{grid-template-columns:repeat(4,1fr)}}.stat{text-align:center;margin:0;padding:14px 8px}.stat-val{font-family:var(--font-mono);color:var(--primary-dark);font-size:24px;font-weight:800}.stat-lbl{color:var(--ink-soft);text-transform:uppercase;letter-spacing:.4px;margin-top:2px;font-size:12px;font-weight:700}.scanner{z-index:60;background:#0a1412eb;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.scanner-box{width:100%;max-width:420px}.scanner-video{aspect-ratio:1;object-fit:cover;border:3px solid var(--accent);background:#000;border-radius:16px;width:100%}
