@import"https://fonts.googleapis.com/css2?family=DM+Sans:wght@500;600;700&family=Noto+Sans+TC:wght@400;500;600;700;800&display=swap";:root{color:#f8f6ff;background:#100d1d;font-family:Noto Sans TC,system-ui,sans-serif;font-synthesis:none;--ink: #f8f6ff;--muted: #aaa4bb;--panel: #1a1629;--panel-2: #211c34;--line: rgba(255, 255, 255, .09);--pink: #ff4ca0;--violet: #8a6cff;--mint: #38d6a3;--amber: #ffbf47}*{box-sizing:border-box}html{min-height:100%;background:#100d1d}body{margin:0;min-width:320px;min-height:100vh;min-height:100dvh;background:radial-gradient(circle at 95% -5%,rgba(138,108,255,.23),transparent 28rem),radial-gradient(circle at -10% 26%,rgba(255,76,160,.12),transparent 22rem),#100d1d}button,input{font:inherit}button{color:inherit;cursor:pointer}button:disabled{cursor:default;opacity:.45}#app{width:min(100%,760px);margin:0 auto;padding:env(safe-area-inset-top) 18px calc(36px + env(safe-area-inset-bottom))}.topbar{display:flex;align-items:center;justify-content:space-between;padding:24px 2px 12px}.eyebrow{margin:0 0 3px;color:var(--pink);font-family:DM Sans,sans-serif;font-size:11px;font-weight:700;letter-spacing:.17em;text-transform:uppercase}h1,h2,p{margin-top:0}h1{margin-bottom:0;font-size:28px;letter-spacing:-.04em}h2{margin-bottom:0;font-size:17px}.round-button,.icon-button{border:1px solid var(--line);background:#ffffff0e}.round-button{width:44px;height:44px;border-radius:50%;font-size:18px}.connection{min-height:32px;display:flex;align-items:center;gap:8px;padding:0 3px;color:var(--muted);font-size:12px}.connection-dot{width:7px;height:7px;border-radius:50%;background:var(--mint);box-shadow:0 0 12px var(--mint)}.connection.offline .connection-dot{background:var(--amber);box-shadow:none}.connection button{margin-left:4px;padding:3px 9px;border:0;border-radius:999px;background:#ffbf4726;color:var(--amber);font-size:11px}.connection time{margin-left:auto}.conflict-banner{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:10px;margin:4px 0 12px;padding:11px 12px;border:1px solid rgba(255,191,71,.28);border-radius:13px;background:#ffbf471a}.conflict-banner>span{display:grid;place-items:center;width:26px;height:26px;border-radius:50%;background:var(--amber);color:#281a00;font-weight:800}.conflict-banner div{display:grid;gap:2px}.conflict-banner strong{color:var(--amber);font-size:12px}.conflict-banner small{color:var(--muted);font-size:10px}.conflict-banner button{padding:7px 10px;border:1px solid rgba(255,191,71,.3);border-radius:9px;background:transparent;color:var(--amber);font-size:11px}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:9px 0 18px}.stats button{min-width:0;display:grid;gap:4px;padding:14px 6px;border:1px solid var(--line);border-radius:15px;background:linear-gradient(145deg,#fff1,#ffffff06);color:var(--muted);font-size:11px}.stats span{color:var(--ink);font-family:DM Sans,sans-serif;font-size:23px;font-weight:700}.stats small{color:var(--muted);font-size:12px}.session-switcher{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin:0 0 15px;padding:4px;border:1px solid var(--line);border-radius:14px;background:#00000021}.session-switcher button{padding:10px;border:0;border-radius:10px;background:transparent;color:var(--muted);font-size:13px;font-weight:700}.session-switcher button.active{background:var(--violet);color:#fff;box-shadow:0 7px 16px #8a6cff38}.search-panel{display:grid;gap:9px}.search{min-width:0;height:52px;display:flex;align-items:center;gap:8px;padding:0 10px 0 14px;border:1px solid rgba(255,255,255,.12);border-radius:15px;background:var(--panel);box-shadow:0 16px 35px #00000026}.search-icon{flex:0 0 auto;color:var(--pink);font-size:25px;line-height:1;transform:rotate(-18deg)}.search input{flex:1 1 auto;width:0;min-width:0;border:0;outline:0;background:transparent;color:var(--ink);font-size:16px}.search input[hidden]{display:none}.search input::placeholder{color:#7f798f}.search-clear{flex:0 0 auto;display:grid;place-items:center;width:28px;height:28px;margin:0;padding:0;border:0;border-radius:999px;background:#ffffff1f;color:var(--ink);font-size:18px;line-height:1}.search-clear[hidden]{display:none}.search-mode{flex:0 0 auto;display:inline-flex;gap:2px;padding:2px;border-radius:999px;background:#ffffff0f}.search-mode button{border:0;border-radius:999px;background:transparent;color:var(--muted);font-size:12px;line-height:1;padding:7px 10px;white-space:nowrap}.search-mode button.active{background:#ff4ca02e;color:#ff80ba}.filters{display:flex;gap:7px;padding:14px 0 20px;overflow-x:auto;scrollbar-width:none}.filters button{flex:0 0 auto;padding:7px 13px;border:1px solid var(--line);border-radius:999px;background:transparent;color:var(--muted);font-size:12px}.filters button.active{border-color:#ff4ca05c;background:#ff4ca021;color:#ff80ba}.result-head{display:flex;align-items:baseline;justify-content:space-between;padding:0 3px 9px}.result-head span{color:var(--muted);font-size:12px}.ticket-list{display:grid;gap:4px}.ticket-card{overflow:hidden;border:1px solid var(--line);border-radius:10px;background:#1a1629e0}.ticket-card.done{opacity:.68}.ticket-card.is-open{box-shadow:0 10px 28px #0000002e}.ticket-summary{width:100%;display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:44px;padding:8px 10px;border:0;background:transparent;text-align:left;cursor:pointer}.ticket-line-main{min-width:0;display:flex;align-items:baseline;gap:8px;flex:1}.ticket-name{flex:0 1 auto;max-width:42%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:700}.ticket-name .kind-badge{margin-left:4px;vertical-align:middle}.ticket-phone{flex:0 0 auto;color:var(--muted);font-family:DM Sans,sans-serif;font-size:12px;letter-spacing:.02em}.ticket-type-short{min-width:0;flex:1 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted);font-size:11px}.summary-right{display:flex;align-items:center;gap:6px;flex:0 0 auto}.ticket-progress{font-family:DM Sans,sans-serif;font-size:11px;font-weight:600;color:#c5bdd8;font-variant-numeric:tabular-nums}.status{padding:3px 7px;border-radius:999px;font-size:10px;font-weight:600}.status.complete{background:#38d6a321;color:var(--mint)}.status.pending{background:#8a6cff26;color:#aa96ff}.status.partial{background:#ffbf4721;color:var(--amber)}.status.refund{background:#ff6e6e24;color:#ff8d84}.chevron{color:var(--muted);font-size:14px;width:1em;text-align:center}.ticket-detail{display:none;padding:0 10px 12px;border-top:1px solid var(--line)}.ticket-detail.open{display:block;padding-top:10px}.ticket-detail-meta{margin:0 0 10px;color:var(--muted);font-size:11px}.warning{margin:2px 0 12px;padding:10px 12px;border:1px solid rgba(255,191,71,.22);border-radius:10px;background:#ffbf4717;color:var(--amber);font-size:12px}.settle-banner{margin:0 0 10px;padding:10px 12px;border:1px solid rgba(122,214,198,.28);border-radius:10px;background:#7ad6c614;color:#b7efe4;font-size:12px;line-height:1.45}.settle-btn{appearance:none;border:1px solid rgba(255,255,255,.16);background:#ffffff0f;color:var(--ink);border-radius:8px;padding:8px 12px;font-size:13px}.settle-btn.coupon{border-color:#ffbf4759;color:var(--amber)}.credit-hits{display:grid;gap:10px;margin:0 0 10px}.credit-hit{padding:12px;border:1px solid rgba(122,214,198,.28);border-radius:12px;background:#7ad6c612;font-size:13px}.credit-hit-main{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 6px;line-height:1.4}.credit-hit-badge{display:inline-block;padding:2px 6px;border-radius:6px;background:#7ad6c62e;color:#b7efe4;font-size:10px;font-weight:700;letter-spacing:.02em}.credit-hit-note{margin:6px 0 0;color:var(--muted);font-size:11px}.credit-hit-actions{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}.credit-due{color:var(--amber)}dl{margin:0 0 13px;padding:11px 12px;border-radius:11px;background:#00000024}dl div{display:grid;grid-template-columns:78px 1fr;gap:8px;padding:3px 0;font-size:11px}dt{color:var(--muted)}dd{margin:0;overflow-wrap:anywhere}.sessions{display:grid;gap:8px}.session-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-top:10px;border-top:1px solid var(--line)}.session-row>div:first-child{display:grid;gap:2px}.session-name{font-weight:700}.session-count{color:var(--muted);font-size:10px}.unit-row{align-items:flex-end}.unit-row.checked{border-color:#38d6a338}.unit-copy{min-width:0}.unit-copy label{display:grid;gap:4px;margin-top:7px;color:var(--muted);font-size:10px}.unit-copy select{max-width:180px;padding:7px 25px 7px 8px;border:1px solid var(--line);border-radius:8px;background:#100d1d;color:var(--ink);font-size:12px}.stepper{display:flex;gap:7px}.icon-button{width:36px;height:36px;border-radius:10px;font-size:20px}.check-button{min-width:118px;min-height:40px;padding:0 14px;border:0;border-radius:10px;background:linear-gradient(135deg,#7f5cff,#9d54e9);font-size:13px;font-weight:700}.check-button.is-checked{background:#38d6a329;color:var(--mint);box-shadow:inset 0 0 0 1px #38d6a347}.check-button:disabled{background:#38d6a321;color:var(--mint);opacity:1}.checkin-actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:8px}.checkin-actions .settle-btn{min-height:40px;border-radius:10px;font-weight:700;padding:0 12px}.coupon-button{min-height:40px;padding:0 12px;border:1px solid rgba(255,191,71,.45);border-radius:10px;background:#ffbf471f;color:var(--amber);font-size:13px;font-weight:700}.coupon-button.compact{min-height:34px;padding:0 8px;font-size:12px}.coupon-done{font-size:12px;color:var(--muted);white-space:nowrap}.force-checkin{display:grid;gap:8px;min-width:min(220px,100%);padding:10px;border-radius:12px;background:#e04a4a29;box-shadow:inset 0 0 0 1px #ff6e6e59}.force-checkin p{margin:0;color:#ffb0a8;font-size:12px;font-weight:700}.force-checkin>div{display:flex;flex-wrap:wrap;gap:6px}.force-checkin button{min-height:34px;padding:0 10px;border:0;border-radius:9px;font-size:12px;font-weight:700}.force-checkin .force-yes{background:linear-gradient(135deg,#d63d3d,#f06a3c);color:#fff}.force-checkin .force-no{background:#ffffff14;color:var(--ink)}.unit-row.force-prompt{align-items:stretch}.empty{display:grid;place-items:center;padding:52px 20px;border:1px dashed var(--line);border-radius:16px;color:var(--muted);text-align:center}.empty span{font-size:30px}.empty p{margin:10px 0 4px;color:var(--ink)}.empty small{font-size:11px}dialog{width:min(calc(100% - 28px),520px);padding:20px;border:1px solid var(--line);border-radius:20px;background:#191526;color:var(--ink);box-shadow:0 28px 90px #0000008c}dialog::backdrop{background:#05040abd;backdrop-filter:blur(8px)}.dialog-head{display:flex;align-items:flex-start;justify-content:space-between}.dialog-head button{width:34px;height:34px;border:0;background:transparent;color:var(--muted);font-size:24px}.dialog-copy{margin:16px 0;color:var(--muted);font-size:12px;line-height:1.65}dialog label{display:grid;gap:6px;margin:12px 0;color:#c9c3d5;font-size:12px}dialog input{width:100%;padding:12px;border:1px solid var(--line);border-radius:10px;outline:0;background:#100d1d;color:var(--ink)}dialog input:focus{border-color:var(--violet)}.dialog-actions{display:flex;justify-content:flex-end;gap:8px;padding-top:8px}.dialog-actions button{padding:10px 14px;border:1px solid var(--line);border-radius:10px;background:transparent;font-size:12px}.dialog-actions .primary{border:0;background:var(--violet)}.conflict-list{display:grid;gap:10px;max-height:min(58vh,520px);overflow-y:auto}.conflict-card{padding:13px;border:1px solid rgba(255,191,71,.22);border-radius:12px;background:#ffbf4712}.conflict-card strong{font-size:14px}.conflict-card p{margin:5px 0;color:#d8d1e6;font-size:11px}.conflict-card small{display:block;color:var(--amber);font-size:10px;line-height:1.5}.conflict-card>div{display:flex;justify-content:flex-end;gap:7px;margin-top:11px}.conflict-card button{padding:8px 10px;border:1px solid var(--line);border-radius:9px;background:transparent;font-size:11px}.conflict-card button.primary{border-color:transparent;background:var(--violet)}.loading{position:fixed;inset:0;z-index:5;display:grid;place-content:center;place-items:center;background:#08060fc2;backdrop-filter:blur(5px)}.loading span{width:34px;height:34px;border:3px solid rgba(255,255,255,.16);border-top-color:var(--pink);border-radius:50%;animation:spin .8s linear infinite}.loading p{margin:12px 0 0;font-size:12px}.loading small{margin-top:5px;color:var(--muted);font-size:11px}.toast{position:fixed;z-index:10;left:50%;bottom:calc(24px + env(safe-area-inset-bottom));width:max-content;max-width:calc(100% - 30px);transform:translate(-50%);padding:11px 15px;border:1px solid var(--line);border-radius:12px;background:#29223d;box-shadow:0 12px 35px #0006;font-size:12px}.topbar-actions{display:flex;align-items:center;gap:8px}.text-button{padding:8px 12px;border:1px solid var(--line);border-radius:999px;background:#ffffff0e;color:var(--ink);font-size:12px;font-weight:600}.text-button.active{border-color:#ffd6668c;background:#ffd66624;color:var(--accent)}.topbar-actions .nav-short{display:none}@media(max-width:640px){.topbar{align-items:flex-start;gap:10px}.topbar-actions{gap:6px;flex-wrap:wrap;justify-content:flex-end}.topbar-actions .text-button{padding:8px 11px;min-width:36px}.topbar-actions .nav-full{display:none}.topbar-actions .nav-short{display:inline}.stats{gap:6px;margin:6px 0 10px}.stats button{gap:1px;padding:8px 4px;border-radius:11px;font-size:10px;line-height:1.2}.stats span{font-size:17px}.stats small{font-size:10px}}.fees-main{display:grid;gap:18px;padding-top:8px}.fees-note{margin:0;color:var(--muted);font-size:12px;line-height:1.55}.fee-block{display:grid;gap:10px}.fee-block h2{font-size:16px}.fee-table-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:14px;background:#1a1629f0}.fee-table{width:100%;border-collapse:collapse;font-size:12px}.fee-table th,.fee-table td{padding:10px 8px;border-bottom:1px solid var(--line);text-align:left;white-space:nowrap}.fee-table th{color:var(--muted);font-weight:600}.fee-table tfoot td{border-bottom:0;color:var(--mint);font-weight:700}.fee-input{width:88px;padding:7px 8px;border:1px solid var(--line);border-radius:8px;background:#100d1d;color:var(--ink)}.fee-save{padding:7px 10px;border:0;border-radius:8px;background:var(--violet);font-size:12px;font-weight:700}.field-actions{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 10px}.field-add{padding:9px 12px;border:1px solid rgba(138,108,255,.35);border-radius:10px;background:#8a6cff24;color:#cbbdff;font-size:12px;font-weight:700}.field-add.pr{border-color:#ffbf4759;background:#ffbf471f;color:var(--amber)}.field-board{display:grid;gap:10px;margin:0 0 18px;padding:12px;border:1px solid var(--line);border-radius:16px;background:#1a1629f0}.field-board-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.field-board-head h2{margin:0;font-size:15px}.field-board-head span{color:var(--muted);font-size:12px}.field-table-wrap{overflow-x:auto}.field-table{width:100%;border-collapse:collapse;font-size:12px}.field-table th,.field-table td{padding:8px 6px;border-bottom:1px solid var(--line);text-align:left;vertical-align:middle}.field-table th{color:var(--muted);font-weight:600}.field-table tr.is-checked td{color:var(--mint)}.field-num{font-family:DM Sans,sans-serif;font-weight:700;width:2rem}.field-table select{max-width:140px;padding:6px 8px;border:1px solid var(--line);border-radius:8px;background:#100d1d;color:var(--ink);font-size:12px}.field-row-actions{display:flex;gap:4px;white-space:nowrap}.field-row-actions .text-button{padding:4px 8px;font-size:11px}.field-row-actions .danger{color:#ff8d84;border-color:#ff6e6e47}.field-page{display:grid;gap:14px;padding-top:4px}.field-table tr.is-pending td{opacity:.72}.field-table .check-button{min-width:64px;min-height:34px;padding:0 10px;font-size:12px}.force-checkin.compact{min-width:auto;padding:6px}.kind-badge{display:inline-block;margin-left:6px;padding:1px 6px;border-radius:999px;font-size:10px;font-weight:700;vertical-align:middle}.kind-badge.onsite{background:#8a6cff2e;color:#cbbdff}.kind-badge.pr{background:#ffbf4729;color:var(--amber)}.kind-badge.refund{background:#ff6e6e29;color:#ff8d84}.ops-status{display:grid;gap:6px;margin:10px 0;color:var(--muted);font-size:11px}.ops-status select{max-width:100%;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:#100d1d;color:var(--ink)}.no-performer,.refund-note,.afternoon-hint{color:var(--muted);font-size:12px}.afternoon-hint{display:block;margin-top:4px;line-height:1.4}.refund-note{margin:8px 0}.cash-main{display:grid;gap:18px;padding-top:8px}.cash-block{display:grid;gap:12px;padding:14px;border:1px solid var(--line);border-radius:16px;background:#1a1629f0}.cash-block-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.cash-balance{margin:4px 0 0;color:var(--muted);font-size:13px}.cash-balance strong{color:var(--ink);font-family:DM Sans,sans-serif;font-size:28px;font-weight:700}.cash-pending{color:var(--amber);font-size:11px;font-weight:700}.cash-denom-list{display:grid;gap:8px}.cash-denom-row{display:grid;grid-template-columns:64px 1fr 72px;align-items:center;gap:8px}.cash-face,.cash-subtotal{font-family:DM Sans,sans-serif;font-size:14px}.cash-subtotal{text-align:right;color:var(--muted)}.cash-qty{width:100%;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:#100d1d;color:var(--ink)}.cash-recon{display:grid;gap:10px;padding-top:4px;border-top:1px solid var(--line)}.cash-recon>div,.cash-recon label{display:flex;align-items:center;justify-content:space-between;gap:10px;color:var(--muted);font-size:12px;flex-wrap:wrap}.cash-recon strong{color:var(--ink);font-family:DM Sans,sans-serif}.cash-recon small{width:100%;text-align:right;opacity:.75}.cash-variance.is-flat strong{color:var(--mint)}.cash-variance.is-off strong{color:#ff8d84}.cash-actions{display:flex;flex-wrap:wrap;gap:8px}@keyframes spin{to{transform:rotate(360deg)}}@media(min-width:640px){#app{padding-inline:26px}.ticket-list{grid-template-columns:1fr}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important}}
