:root,[data-theme=light]{--font:-apple-system, BlinkMacSystemFont, "SF Pro Text", "Inter", "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--mono:ui-monospace, "SF Mono", Menlo, Consolas, monospace;--bg:#f5f5f7;--surface:#fff;--surface-2:#f9f9fb;--surface-3:#f0f0f3;--text:#1d1d1f;--text-2:#5f5f66;--text-3:#8e8e93;--border:#e4e4e9;--border-strong:#d1d1d6;--accent:#1f3a5f;--accent-hover:#182f4d;--accent-fg:#fff;--accent-soft:#e9eef5;--success:#1f8a3a;--warn:#b35c00;--danger:#c4001a;--danger-soft:#fdecee;--overlay:#14141861;--shadow-sm:0 1px 2px #0000000d;--shadow:0 1px 3px #0000000f, 0 8px 24px #0000000f;--shadow-lg:0 12px 48px #00000029;--radius:12px;--radius-sm:8px;--seat-empty:#fff;--seat-empty-stroke:#b9bec7;--seat-occ:#1f3a5f;--seat-occ-stroke:#1f3a5f;--seat-reserve:#fff4e0;--seat-reserve-stroke:#b26b00;--seat-reserve-occ:#b26b00;--seat-pelayan:#f1eefa;--seat-pelayan-stroke:#5e4a9e;--seat-pelayan-occ:#5e4a9e;--seat-disabled:#ececf0;--seat-label:#5f5f66;--seat-label-occ:#fff;--map-bg:#fff;--map-struct-fill:#f2f2f5;--map-struct-stroke:#c7c7cc;--map-text:#3a3a3c;--map-full:#c4001a12;--map-full-stroke:#c4001a73;--highlight:#e08a00;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}[data-theme=dark]{--bg:#0a0a0b;--surface:#151517;--surface-2:#1b1b1e;--surface-3:#232327;--text:#f5f5f7;--text-2:#a8a8ae;--text-3:#76767c;--border:#2a2a2e;--border-strong:#3a3a3f;--accent:#9ab8de;--accent-hover:#b2cae8;--accent-fg:#0a0a0b;--accent-soft:#1d2735;--success:#3fbf5f;--warn:#f0a040;--danger:#ff5c6c;--danger-soft:#3a1418;--overlay:#0009;--shadow:0 1px 3px #0006, 0 8px 24px #00000059;--shadow-lg:0 12px 48px #0009;--seat-empty:#1d1d20;--seat-empty-stroke:#4a4a50;--seat-occ:#7fa6d6;--seat-occ-stroke:#7fa6d6;--seat-reserve:#2b2213;--seat-reserve-stroke:#e0a040;--seat-reserve-occ:#e0a040;--seat-pelayan:#221d33;--seat-pelayan-stroke:#a493e0;--seat-pelayan-occ:#a493e0;--seat-disabled:#26262a;--seat-label:#a8a8ae;--seat-label-occ:#0a0a0b;--map-bg:#111113;--map-struct-fill:#1d1d21;--map-struct-stroke:#3a3a3f;--map-text:#c7c7cc;--map-full:#ff5c6c1a;--map-full-stroke:#ff5c6c80;--highlight:#f0a040;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%}body{font-family:var(--font);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-tap-highlight-color:transparent;font-variant-numeric:tabular-nums;margin:0;font-size:14px;line-height:1.45}button,input,select,textarea{font:inherit;color:inherit}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3,h4{letter-spacing:-.01em;margin:0;font-weight:600}h1{font-size:24px}h2{font-size:18px}h3{font-size:15px}p{margin:0}hr{border:0;border-top:1px solid var(--border);margin:16px 0}code,.mono{font-family:var(--mono);font-size:12.5px}.brand{letter-spacing:.14em;color:var(--accent);font-size:18px;font-weight:700}.muted{color:var(--text-2)}.tagline{letter-spacing:.02em;color:var(--text-2);font-family:Iowan Old Style,Palatino Linotype,Palatino,Georgia,serif;font-size:15px;font-style:italic}.about{text-align:center;flex-direction:column;align-items:center;gap:6px;padding:8px 0 4px;display:flex}.about-sub{color:var(--text);font-weight:500}.about .tagline{margin:6px 0 10px;font-size:17px}.about-meta{color:var(--text-3);border-top:1px solid var(--border);flex-direction:column;gap:2px;width:100%;padding-top:12px;font-size:12px;display:flex}.subtle{color:var(--text-3)}.small{font-size:12.5px}.tiny{font-size:11.5px}.strong{font-weight:600}.num{font-variant-numeric:tabular-nums}.right{text-align:right}.center{text-align:center}.nowrap{white-space:nowrap}.ellipsis{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.danger-text{color:var(--danger)}.warn-text{color:var(--warn)}.success-text{color:var(--success)}.row{align-items:center;gap:8px;display:flex}.row.wrap{flex-wrap:wrap}.row.between{justify-content:space-between}.row.end{justify-content:flex-end}.row.top{align-items:flex-start}.stack{flex-direction:column;gap:12px;display:flex}.stack.sm{gap:6px}.stack.lg{gap:20px}.grow{flex:1;min-width:0}.grid{gap:16px;display:grid}.grid.cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid.cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid.cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}@media (width<=1100px){.grid.cols-4{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=760px){.grid.cols-2,.grid.cols-3,.grid.cols-4{grid-template-columns:minmax(0,1fr)}}.btn{background:var(--surface-3);height:36px;color:var(--text);cursor:pointer;white-space:nowrap;-webkit-user-select:none;user-select:none;border:1px solid #0000;border-radius:10px;justify-content:center;align-items:center;gap:6px;padding:0 14px;font-weight:500;transition:background .15s,border-color .15s,opacity .15s;display:inline-flex}.btn:hover{background:var(--border)}.btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--accent);color:var(--accent-fg)}.btn-primary:hover{background:var(--accent-hover)}.btn-secondary{background:var(--surface);border-color:var(--border-strong)}.btn-secondary:hover{background:var(--surface-2)}.btn-ghost{background:0 0}.btn-ghost:hover{background:var(--surface-3)}.btn-danger{background:var(--danger);color:#fff}.btn-danger:hover{opacity:.9;background:var(--danger)}.btn-danger-ghost{color:var(--danger);background:0 0}.btn-danger-ghost:hover{background:var(--danger-soft)}.btn-sm{border-radius:8px;height:30px;padding:0 10px;font-size:13px}.btn-lg{border-radius:12px;height:48px;padding:0 20px;font-size:16px}.btn-icon{width:36px;padding:0}.btn-icon.btn-sm{width:30px}.btn-block{width:100%}.btn.active{background:var(--accent-soft);color:var(--accent)}.field{flex-direction:column;gap:6px;display:flex}.field>label,.label{color:var(--text-2);font-size:12.5px;font-weight:500}.input,.select,.textarea{border:1px solid var(--border-strong);background:var(--surface);width:100%;height:38px;color:var(--text);border-radius:10px;outline:none;padding:0 12px;transition:border-color .15s,box-shadow .15s}.input.sm,.select.sm{border-radius:8px;height:32px;padding:0 10px;font-size:13px}.textarea{resize:vertical;height:auto;min-height:90px;padding:10px 12px;line-height:1.5}.input:focus,.select:focus,.textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.input[type=color]{width:44px;padding:3px}.hint{color:var(--text-3);font-size:12px}.error-box{background:var(--danger-soft);color:var(--danger);border-radius:10px;padding:10px 12px;font-size:13px}.check{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:8px;display:inline-flex}.check input{width:16px;height:16px;accent-color:var(--accent)}.switch{cursor:pointer;flex-shrink:0;width:42px;height:24px;display:inline-flex;position:relative}.switch input{opacity:0;width:0;height:0}.switch span{background:var(--border-strong);border-radius:24px;transition:background .2s;position:absolute;inset:0}.switch span:after{content:"";width:20px;height:20px;box-shadow:var(--shadow-sm);background:#fff;border-radius:50%;transition:transform .2s;position:absolute;top:2px;left:2px}.switch input:checked+span{background:var(--accent)}.switch input:checked+span:after{transform:translate(18px)}.seg{background:var(--surface-3);border-radius:10px;gap:2px;padding:3px;display:inline-flex}.seg button{cursor:pointer;height:30px;color:var(--text-2);white-space:nowrap;background:0 0;border:0;border-radius:8px;padding:0 14px;font-weight:500}.seg button.on{background:var(--surface);color:var(--text);box-shadow:var(--shadow-sm)}.seg.lg button{height:38px;padding:0 18px;font-size:15px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:20px}.card.flush{padding:0;overflow:hidden}.card-head{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:12px;padding:16px 20px;display:flex}.card-body{padding:20px}.kpi .kpi-label{color:var(--text-2);font-size:12.5px}.kpi .kpi-value{letter-spacing:-.02em;margin-top:4px;font-size:28px;font-weight:600}.kpi .kpi-sub{color:var(--text-3);margin-top:2px;font-size:12.5px}.table-wrap{overflow-x:auto}.table{border-collapse:collapse;width:100%}.table th{text-align:left;color:var(--text-2);border-bottom:1px solid var(--border);background:var(--surface-2);white-space:nowrap;padding:10px 16px;font-size:12px;font-weight:500}.table td{border-bottom:1px solid var(--border);vertical-align:middle;padding:11px 16px}.table tr:last-child td{border-bottom:0}.table tr.clickable{cursor:pointer}.table tr.clickable:hover td{background:var(--surface-2)}.table tr.selected td{background:var(--accent-soft)}.dot{background:var(--text-3);border-radius:50%;flex-shrink:0;width:8px;height:8px;display:inline-block}.dot.on{background:var(--success)}.dot.live{background:var(--success);box-shadow:0 0 0 3px color-mix(in srgb, var(--success) 22%, transparent)}.dot.warn{background:var(--warn)}.dot.off{background:var(--text-3)}.dot.danger{background:var(--danger)}.status{white-space:nowrap;align-items:center;gap:7px;display:inline-flex}.empty{text-align:center;color:var(--text-2);padding:48px 20px}.empty h3{color:var(--text);margin-bottom:6px}.bar{background:var(--surface-3);border-radius:6px;height:6px;overflow:hidden}.bar>i{background:var(--accent);border-radius:6px;height:100%;transition:width .4s;display:block}.bar.warn>i{background:var(--warn)}.bar.danger>i{background:var(--danger)}.backdrop{background:var(--overlay);z-index:100;justify-content:center;align-items:center;padding:20px;animation:.15s fade;display:flex;position:fixed;inset:0}.modal{background:var(--surface);box-shadow:var(--shadow-lg);border-radius:16px;flex-direction:column;width:100%;max-width:480px;max-height:calc(100vh - 40px);animation:.18s pop;display:flex}.modal.lg{max-width:760px}.modal.xl{max-width:1100px}.modal-head{justify-content:space-between;align-items:flex-start;gap:12px;padding:20px 22px 8px;display:flex}.modal-body{padding:8px 22px 16px;overflow:auto}.modal-foot{flex-wrap:wrap;justify-content:flex-end;gap:8px;padding:14px 22px 20px;display:flex}.sheet-backdrop{background:var(--overlay);z-index:100;justify-content:center;align-items:flex-end;animation:.15s fade;display:flex;position:fixed;inset:0}.sheet{background:var(--surface);width:100%;max-width:560px;padding:8px 20px calc(20px + env(safe-area-inset-bottom));border-radius:20px 20px 0 0;max-height:88vh;animation:.22s cubic-bezier(.2,.8,.2,1) up;overflow:auto}.sheet-grip{background:var(--border-strong);border-radius:5px;width:38px;height:5px;margin:6px auto 14px}@media (width>=761px){.sheet-backdrop{align-items:center;padding:20px}.sheet{border-radius:18px;padding-bottom:20px}}.drawer-backdrop{background:var(--overlay);z-index:100;justify-content:flex-end;animation:.15s fade;display:flex;position:fixed;inset:0}.drawer{background:var(--surface);flex-direction:column;width:100%;max-width:560px;height:100%;animation:.22s cubic-bezier(.2,.8,.2,1) slide;display:flex}.toasts{left:50%;bottom:calc(24px + env(safe-area-inset-bottom));z-index:200;pointer-events:none;flex-direction:column;align-items:center;gap:8px;width:max-content;max-width:calc(100vw - 24px);display:flex;position:fixed;transform:translate(-50%)}:is(body:has(.sheet-backdrop) .toasts,body:has(.backdrop) .toasts){top:calc(16px + env(safe-area-inset-top));bottom:auto}.toast{pointer-events:auto;color:#fff;box-shadow:var(--shadow-lg);background:#1d1d1f;border-radius:12px;align-items:center;gap:14px;max-width:100%;padding:11px 14px 11px 16px;font-size:14px;animation:.2s up;display:flex}[data-theme=dark] .toast{background:#2c2c30}.toast.error{background:var(--danger)}.toast button{color:#9cc3ff;cursor:pointer;white-space:nowrap;background:0 0;border:0;padding:4px 6px;font-weight:600}@keyframes fade{0%{opacity:0}to{opacity:1}}@keyframes pop{0%{opacity:0;transform:scale(.97)}to{opacity:1;transform:none}}@keyframes up{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}@keyframes slide{0%{opacity:0;transform:translate(24px)}to{opacity:1;transform:none}}.spinner{border:2px solid var(--border-strong);border-top-color:var(--accent);border-radius:50%;width:18px;height:18px;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.center-screen{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:14px;min-height:100%;padding:24px;display:flex}.app-footer{color:var(--text-3);text-align:center;padding:14px 16px;font-size:11.5px}.seatmap{background:var(--map-bg);touch-action:none;-webkit-user-select:none;user-select:none;width:100%;height:100%;position:relative;overflow:hidden}.seatmap svg{width:100%;height:100%;display:block}.seatmap .st-shape{fill:var(--map-struct-fill);stroke:var(--map-struct-stroke)}.seatmap .st-text{fill:var(--map-text);font-family:var(--font)}.seatmap .seat rect{fill:var(--seat-empty);stroke:var(--seat-empty-stroke);stroke-width:1.4px;transition:fill .25s,stroke .25s}.seatmap .seat text{fill:var(--seat-label);font-family:var(--font);pointer-events:none;font-weight:500;display:none}.seatmap.labels .seat text{display:block}.seatmap .seat.t-reserve rect{fill:var(--seat-reserve);stroke:var(--seat-reserve-stroke)}.seatmap .seat.t-pelayan rect{fill:var(--seat-pelayan);stroke:var(--seat-pelayan-stroke)}.seatmap .seat.occ rect{fill:var(--seat-occ);stroke:var(--seat-occ-stroke)}.seatmap .seat.occ.t-reserve rect{fill:var(--seat-reserve-occ);stroke:var(--seat-reserve-occ)}.seatmap .seat.occ.t-pelayan rect{fill:var(--seat-pelayan-occ);stroke:var(--seat-pelayan-occ)}.seatmap .seat.occ text{fill:var(--seat-label-occ)}.seatmap .seat.dis rect{fill:var(--seat-disabled);stroke:var(--seat-disabled)}.seatmap .seat.dim{opacity:.28}.seatmap .seat.sel rect{stroke:var(--highlight);stroke-width:3px}.seatmap .seat.hl rect{stroke:var(--highlight);stroke-width:3.5px;animation:1.2s ease-in-out infinite hl}.seatmap.interactive .seat{cursor:pointer}@keyframes hl{50%{stroke-opacity:.25}}.seatmap .area-full rect{fill:var(--map-full);stroke:var(--map-full-stroke);stroke-dasharray:6 5}.seatmap .area-full text{fill:var(--danger);font-weight:600;font-family:var(--font)}.seatmap-overlay{pointer-events:none;background:color-mix(in srgb, var(--map-bg) 55%, transparent);justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.seatmap-overlay div{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);text-align:center;border-radius:16px;padding:16px 26px}.seatmap-overlay strong{color:var(--danger);letter-spacing:-.01em;font-size:22px;display:block}.seatmap-overlay span{color:var(--text-2);font-size:13px}.legend{color:var(--text-2);flex-wrap:wrap;gap:14px;font-size:12.5px;display:flex}.legend span{align-items:center;gap:6px;display:inline-flex}.legend i{border:1.4px solid var(--seat-empty-stroke);background:var(--seat-empty);border-radius:3px;width:12px;height:12px;display:inline-block}.legend i.occ{background:var(--seat-occ);border-color:var(--seat-occ)}.legend i.reserve{background:var(--seat-reserve);border-color:var(--seat-reserve-stroke)}.legend i.pelayan{background:var(--seat-pelayan);border-color:var(--seat-pelayan-stroke)}.legend i.dis{background:var(--seat-disabled);border-color:var(--seat-disabled)}@media print{@page{margin:14mm}body{background:#fff;font-size:11pt}.no-print{display:none!important}.card{break-inside:avoid;border:1px solid #ddd}.admin-shell{display:block!important}.admin-main{padding:0!important;overflow:visible!important}}
