:root{--radius-pill: 999px;--accent: #8fb0cb;--accent-soft: #7fa3c2;--on-accent: #22364a;--nav-bg: #ffffff;--nav-text: #a29b93;--app-bg: #fdfbf7;--surface: #ffffff;--surface-soft: #f7f3ec;--hairline: #ece2d6;--text: #332f2b;--text-muted: #6b6560;--text-faint: #a29b93;--chip-bg: #f3ede5;--state-achieved: #a3c197;--state-achieved-bg: #f2f7ef;--state-achieved-ink: #5f8153;--on-achieved: #2a3f22;--state-behind: #f5dd93;--state-behind-bg: #fdf9e8;--state-behind-ink: #8a7327;--state-overtime: #cf7f87;--overtime-line: #c2453f;--presence-solid: #c2453f;--on-presence-solid: #fff;--on-overtime: #5e272d;--state-empty-border: #ddd2c6;--state-empty-bg: #fdfbf7;--state-empty-ink: #a29b93;--state-takeout: #8fb0cb;--state-takeout-bg: #f0f5fa;--state-takeout-ink: #4d6a82;--state-suggest-bg: #e8f2e3;--state-suggest-ink: #4f7244;--state-suggest-line: #7fa870;--state-suggest-solid: #8db57f;--on-suggest-solid: #1f3319;--state-suggest-glow: rgba(127, 168, 112, .45);--state-behind-line: #e8c867;--state-blocked-bg: #efebe5;--state-blocked-line: #e2dad0;--state-blocked-ink: #9a928a;--merge-line: #b8a590;--merge-ink: #7a6955;--warn-bg: #f5dd93;--warn-ink: #8a7327;--danger-ink: #a55b62;--danger: #cf7f87;--danger-bg: #fbf0f1;--danger-border: #eccdd0;--font: "GenJyuuGothicX", "Noto Sans TC", sans-serif;--mono: "GenJyuuGothicX", "Noto Sans TC", sans-serif;--shadow-card: 0 1px 2px rgba(74, 69, 64, .04), 0 6px 18px rgba(74, 69, 64, .045);--shadow-btn: 0 6px 16px rgba(92, 120, 145, .2)}*{font-variant-numeric:tabular-nums}*{box-sizing:border-box}html,body{margin:0;padding:0;background:#efece7;font-family:var(--font);color:var(--text);height:100%;overflow:hidden}.app-shell{display:flex;width:100%;height:100vh;height:100dvh;overflow:hidden}.sidebar{width:64px;flex:none;background:var(--nav-bg);display:flex;flex-direction:column;align-items:center;padding:16px 0;gap:4px}.sidebar-logo{width:34px;height:34px;border-radius:10px;background:var(--accent);display:flex;align-items:center;justify-content:center;font-size:16px;margin-bottom:18px}.nav-item{width:48px;padding:8px 0;border-radius:10px;display:flex;flex-direction:column;align-items:center;gap:3px;color:var(--nav-text);font:600 10px var(--font);cursor:pointer;margin-bottom:2px}.nav-item .icon{font-size:16px}.nav-item.active{background:var(--accent-soft);color:var(--on-accent)}.nav-item.nav-alert{position:relative;background:#f3d9a4;color:#6b4e12;animation:nav-alert-pulse 1.6s ease-in-out infinite}.nav-item.nav-alert.active{background:#e9c477;color:#4a3607}.nav-badge{position:absolute;top:2px;right:4px;min-width:17px;height:17px;padding:0 4px;border-radius:9px;background:#b3402f;color:#fff;font:800 10px/17px var(--font);text-align:center}@keyframes nav-alert-pulse{0%,to{box-shadow:0 0 #b3402f00}50%{box-shadow:0 0 0 3px #b3402f40}}.nav-spacer{flex:1}.nav-avatar{width:34px;height:34px;border-radius:"50%";border-radius:50%;background:var(--accent);display:flex;align-items:center;justify-content:center;font-size:15px;color:var(--on-accent);cursor:pointer}.main{flex:1;display:flex;flex-direction:column;min-width:0;min-height:0;background:var(--app-bg)}.top-bar{background:var(--nav-bg);color:var(--text);padding:8px 20px;display:flex;justify-content:space-between;align-items:center;font:600 11px var(--font)}.top-bar-right{display:flex;gap:14px;align-items:center;font-family:var(--mono)}.dot{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:4px}.content{flex:1;min-height:0;padding:16px 20px 24px;overflow:auto;display:flex;flex-direction:column}.floor-page{display:flex;flex-direction:column;min-height:0;flex:1}.toolbar{display:flex;align-items:center;gap:8px;margin-bottom:16px;flex-wrap:wrap}.floor-tab{font:700 12px var(--font);padding:7px 14px;border-radius:var(--radius-pill);background:var(--chip-bg);color:var(--text-muted);cursor:pointer}.floor-tab.active{background:var(--accent);color:var(--on-accent)}.quick-open-btn{width:46px;height:46px;border-radius:12px;background:var(--accent);color:var(--on-accent);font:800 18px var(--font);display:flex;align-items:center;justify-content:center;cursor:pointer}.quick-open-btn.wide{width:auto;padding:0 16px;white-space:nowrap}.legend{display:flex;gap:14px;align-items:center;font:600 10px var(--font);color:var(--text-muted);margin-bottom:10px}.floor-canvas{position:relative;background:var(--surface);border-radius:14px;box-shadow:var(--shadow-card);flex:1;min-height:420px;overflow:hidden;touch-action:none}.table-card{position:absolute;width:78px;height:78px;background:var(--surface);border:1.5px solid var(--hairline);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;cursor:pointer;box-shadow:var(--shadow-card);user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;-webkit-user-drag:none;touch-action:none;z-index:1}.table-card.shape-circle{border-radius:50%}.table-card.shape-square{border-radius:14px}.table-card.shape-rect{border-radius:14px;width:104px}.table-card.state-empty{border-style:dashed;border-color:var(--state-empty-border);background:var(--state-empty-bg);color:var(--state-empty-ink)}.table-card.state-achieved{border-color:var(--hairline)}.table-card.state-behind,.table-card.is-blocked,.table-card.online-waiting,.table-card.seat-until-soon{border-color:var(--state-behind-line);border-width:2px}.table-card.state-overtime,.table-card.online-pack,.table-card.pending-cash{border-color:var(--overtime-line);border-width:2px}.table-card.resv-locked,.table-card.is-disabled{background:var(--state-blocked-bg);border-style:solid;border-color:var(--state-blocked-line);box-shadow:none}.table-card.resv-locked .table-name,.table-card.is-disabled .table-name,.table-card.is-disabled .table-sub{color:var(--state-blocked-ink)}.table-card.is-blocked .state-badge.achieved,.table-card.seat-until-soon .state-badge.achieved,.table-card.seat-until-over .state-badge.achieved{display:none}.table-card.needs-presence,.table-card.seat-until-over{background:var(--presence-solid);border-color:var(--presence-solid);border-width:2px}.table-card.needs-presence .table-name,.table-card.needs-presence .table-sub,.table-card.needs-presence .blocked-why,.table-card.seat-until-over .table-name,.table-card.seat-until-over .table-sub,.table-card.seat-until-over .blocked-why{color:var(--on-presence-solid)}.table-card.needs-presence .state-badge,.table-card.seat-until-over .state-badge{background:#ffffff3d;color:var(--on-presence-solid)}.table-name{font:800 14px var(--font);color:var(--text)}.table-sub{font:600 10px var(--mono);color:var(--text-muted)}.table-sub.blocked-why{color:var(--state-behind-ink, #8a7327);background:var(--state-behind-bg);border-radius:8px;padding:1px 6px;font-weight:700;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cake-diff{background:var(--state-behind, #fdf3d6);color:var(--state-behind-ink, #8a7327);border-radius:8px;padding:1px 8px;font:700 11px var(--font)}.cake-diff.short{background:var(--state-overtime);color:var(--on-overtime)}.table-sub.resv-late{background:var(--state-behind, #fdf3d6);color:var(--state-behind-ink, #8a7327);border-radius:8px;padding:1px 6px;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.extra-wait{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:10px 14px;margin-bottom:10px;border-radius:12px;background:var(--surface-soft);border:1px solid var(--hairline)}.extra-wait-label{font:800 13px var(--font);display:flex;flex-direction:column;gap:2px}.extra-wait-hint{font:600 11px var(--font);color:var(--text-muted)}.extra-wait-picks{display:flex;gap:8px;flex-wrap:wrap}.table-sub.seat-until{color:var(--state-behind-ink, #8a7327);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.table-sub.seat-until.over{background:var(--state-overtime);color:var(--on-overtime);border-radius:8px;padding:1px 6px;margin-top:2px}.table-card.seat-until-over .table-sub.seat-until.over{background:#ffffff3d;color:var(--on-presence-solid)}.table-card.state-empty.seat-suggest-tile{border:2.5px solid var(--state-suggest-line);background:var(--state-suggest-bg);color:var(--state-suggest-ink);animation:seat-suggest-glow 2.4s ease-in-out infinite}.table-card.state-empty.seat-suggest-tile .table-name{color:var(--on-suggest-solid)}@keyframes seat-suggest-glow{0%,to{box-shadow:var(--shadow-card),0 0 0 0 var(--state-suggest-glow)}50%{box-shadow:var(--shadow-card),0 0 0 7px var(--state-suggest-glow)}}@media (prefers-reduced-motion: reduce){.table-card.state-empty.seat-suggest-tile{animation:none}}.table-sub.seat-suggest{background:var(--state-suggest-solid);color:var(--on-suggest-solid);border-radius:8px;padding:1px 6px;margin-top:2px;font-weight:800;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.seat-suggest-box{margin-top:10px;padding:8px 10px;border-radius:8px;background:var(--state-suggest-bg);color:var(--state-suggest-ink);font:700 13px var(--font);line-height:1.5}.seat-suggest-box .hint{font:600 11px var(--font)}.table-sub.resv-who{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.state-badge{font:700 9px var(--font);padding:1px 7px;border-radius:8px;margin-top:2px;white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}.state-badge.achieved{background:var(--state-achieved-bg);color:var(--state-achieved-ink)}.state-badge.behind{background:var(--state-behind-bg);color:var(--state-behind-ink)}.state-badge.overtime{background:var(--state-overtime);color:var(--on-overtime)}.drag-ghost{position:fixed;transform:translate(-50%,-50%);pointer-events:none;z-index:100;background:var(--accent);color:var(--on-accent);font:800 12px var(--font);padding:8px 16px;border-radius:14px;box-shadow:0 6px 18px #00000040;opacity:.92;-webkit-user-select:none;user-select:none}.pending-cash-badge{position:absolute;top:-10px;right:-8px;font:700 10.5px var(--font);color:#fff;background:var(--danger-ink);padding:3px 8px;border-radius:10px;white-space:nowrap;box-shadow:var(--shadow-card)}.split-btn{position:absolute;top:-8px;left:-8px;font:700 9px var(--font);color:var(--state-takeout-ink);background:#fff;border:1px solid var(--accent, #8fb0cb);padding:2px 7px;border-radius:10px;white-space:nowrap;cursor:pointer;box-shadow:var(--shadow-card)}.split-btn:hover{background:var(--accent-soft, #f0f5fa)}.merge-frame{position:absolute;pointer-events:none;z-index:0;box-sizing:border-box;border:2px dashed var(--merge-line);border-radius:22px;background:var(--surface-soft)}.merge-frame.ring{border-radius:20px}.merge-frame.ring.circle{border-radius:50%}.merge-frame-label{position:absolute;bottom:-11px;left:50%;transform:translate(-50%);font:800 10.5px var(--font);color:var(--merge-ink);background:var(--surface);padding:1px 8px;border-radius:var(--radius-pill);border:1.5px dashed var(--merge-line);white-space:nowrap}.merge-frame-label.at-right{bottom:auto;top:50%;left:100%;transform:translate(-50%,-50%)}.merge-frame-label.at-top{bottom:auto;top:-11px}.merge-link{position:absolute;left:0;top:0;overflow:visible;pointer-events:none;z-index:0}.merge-link line{stroke:var(--merge-line);stroke-width:2;stroke-dasharray:6 5}.table-card.merged.needs-presence{background:var(--presence-solid);border-color:var(--presence-solid)}.table-card.merge-origin{border-color:var(--accent);border-width:2px}.table-card.merge-picked{background:var(--accent);border-color:var(--accent);border-style:solid;color:var(--on-accent)}.table-card.merge-picked .table-name,.table-card.merge-picked .table-sub{color:var(--on-accent)}.merge-btn{position:absolute;top:-8px;left:-8px;font:700 9px var(--font);color:var(--state-takeout-ink);background:#fff;border:1px solid var(--state-takeout);padding:2px 7px;border-radius:10px;white-space:nowrap;cursor:pointer;box-shadow:var(--shadow-card)}.merge-btn:hover{background:var(--state-takeout-bg)}.takeout-row{display:flex;gap:10px;margin-top:14px;flex-wrap:wrap}.takeout-card{background:var(--state-takeout-bg);color:var(--state-takeout-ink);border-radius:12px;padding:10px 14px;font:700 12px var(--font);min-width:140px;cursor:pointer}.takeout-card.takeout-new{background:var(--accent);color:var(--on-accent);border:none;font:800 14px var(--font);min-height:44px}.takeout-card.takeout-new:disabled{opacity:.6;cursor:default}.card{background:var(--surface);border:1px solid var(--hairline);border-radius:14px;box-shadow:var(--shadow-card);padding:14px;display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:10px}.card-body{flex:1;min-width:0}.card-title{font:700 15px var(--font);color:var(--text)}.card-sub{font:500 12px var(--font);color:var(--text-muted);margin-top:3px}.card-tax-id{font:700 13px var(--font);color:var(--state-behind-ink);background:var(--state-behind-bg);padding:4px 8px;border-radius:6px;display:inline-block;margin-top:6px}.btn{font:700 13px var(--font);padding:10px 18px;border-radius:10px;background:var(--accent);color:var(--on-accent);cursor:pointer;white-space:nowrap;border:none;box-shadow:var(--shadow-btn)}.btn.outline{background:#fff;border:1.5px solid var(--accent);color:var(--accent);box-shadow:none}.btn.chip{background:var(--chip-bg);color:var(--text-muted);box-shadow:none}.btn.chip.active{background:var(--accent);color:var(--on-accent)}.btn:disabled{opacity:.5;cursor:default}.empty{text-align:center;padding:40px 20px;color:var(--text-faint);font:500 13px var(--font)}.login-box{max-width:360px;margin:80px auto;background:#fff;border-radius:16px;padding:24px;box-shadow:var(--shadow-card);text-align:center}.login-box input{width:100%;padding:10px 12px;border-radius:8px;border:1px solid var(--hairline);font:600 13px var(--font);margin-bottom:10px}.err{background:#fbf0f1;color:var(--danger-ink);border-radius:8px;padding:8px 10px;font:600 12px var(--font);margin-bottom:10px}.back-link{font:700 13px var(--font);color:var(--accent);cursor:pointer;margin-bottom:10px;display:inline-block}.order-header{display:flex;align-items:baseline;gap:10px;margin-bottom:12px}.order-header .table-label{font:800 18px var(--font)}.order-header .party-label{font:600 12px var(--font);color:var(--text-muted)}.order-layout{display:flex;gap:16px;align-items:flex-start}.order-main{flex:1;min-width:0}.item-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px}.item-tile{background:var(--surface);border:1px solid var(--hairline);border-radius:12px;box-shadow:var(--shadow-card);padding:12px;cursor:pointer;-webkit-user-select:none;user-select:none}.item-tile .emoji{font-size:22px}.item-tile .name{font:700 13px var(--font);margin-top:4px}.item-tile .price{font:700 12px var(--mono);color:var(--accent);margin-top:2px}.serve-later-badge{position:absolute;top:6px;right:6px;font:700 10px var(--font);color:var(--state-behind-ink);background:var(--state-behind-bg);border:1px solid var(--state-behind);padding:3px 7px;border-radius:8px;cursor:pointer}.order-ticket-panel{width:300px;flex:none;background:var(--surface);border-radius:14px;box-shadow:var(--shadow-card);padding:14px;display:flex;flex-direction:column}.ticket-title{font:800 14px var(--font);margin-bottom:8px}.ticket-list{margin-bottom:10px}.ticket-row{display:flex;align-items:center;gap:8px;padding:8px 0;border-bottom:1px solid var(--hairline)}.ticket-row .name{flex:1;font:600 12px var(--font);min-width:0}.ticket-row .note{font:500 10px var(--font);color:var(--text-muted)}.ticket-row .amount{font:700 12px var(--mono);color:var(--text-muted);width:46px;text-align:right}.qty-stepper{display:flex;align-items:center;gap:6px}.qty-stepper button{width:22px;height:22px;border-radius:6px;border:1px solid var(--hairline);background:var(--surface-soft);font:700 12px var(--font);cursor:pointer;color:var(--text)}.qty-stepper .qty{font:700 12px var(--mono);min-width:16px;text-align:center}.qty-stepper.touch{gap:10px}.qty-stepper.touch button{width:34px;height:34px;border-radius:9px;font-size:17px}.qty-stepper.touch .qty{font-size:15px;min-width:24px}.qty-stepper.large{gap:14px}.qty-stepper.large button{width:44px;height:44px;border-radius:10px;font-size:20px}.qty-stepper.large .qty{font-size:30px;min-width:40px}.ticket-subtotal{display:flex;justify-content:space-between;font:800 15px var(--font);padding-top:8px;border-top:1.5px solid var(--hairline);margin-bottom:10px}.invoice-row{display:flex;gap:6px;margin-bottom:10px;flex-wrap:wrap}.pay-row{display:flex;gap:8px}.order-header-actions{flex:1;display:flex;justify-content:flex-end}.ticket-status{margin-bottom:10px;padding:10px;background:var(--surface-soft);border-radius:10px;display:flex;flex-direction:column;gap:5px}.ticket-status-row{display:flex;justify-content:space-between;font:600 12px var(--font);color:var(--text-muted)}.ticket-status-row-stacked{flex-direction:column;gap:2px}.ticket-status-row .value{font:700 12px var(--mono);color:var(--text)}.tx-list{margin-bottom:10px;display:flex;flex-direction:column;gap:8px}.tx-card{display:flex;flex-direction:column;background:var(--surface-soft);border-radius:10px;padding:8px 10px}.tx-card.pending{background:var(--state-behind-bg)}.tx-card.refunded{opacity:.7}.tx-card-head{display:flex;justify-content:space-between;font:700 12px var(--font);color:var(--text)}.tx-card-items{font:600 11px var(--font);color:var(--text-muted);margin-top:4px;display:flex;flex-direction:column;gap:3px}.tx-card-item-row{display:flex;justify-content:space-between;gap:8px}.tx-card-item-note{color:var(--text-faint, var(--text-muted))}.pay-row .btn{flex:1;text-align:center}.waitlist-row{display:flex;align-items:center;gap:12px;background:var(--surface);border-radius:12px;padding:10px 14px;margin-bottom:8px;box-shadow:var(--shadow-card)}.waitlist-row.notified{background:var(--state-achieved-bg)}.waitlist-avatar{width:34px;height:34px;border-radius:50%;background:var(--state-empty-border);color:#6b6560;display:flex;align-items:center;justify-content:center;font:700 13px var(--font);flex:none}.waitlist-row.notified .waitlist-avatar{background:var(--state-achieved)}.waitlist-name{font:800 14px var(--font);color:var(--text)}.waitlist-sub{font:600 11px var(--font);color:var(--text-muted);margin-top:2px}.waitlist-status-chip{font:700 10px var(--font);padding:2px 9px;border-radius:var(--radius-pill);background:var(--chip-bg);color:var(--text-muted);margin-left:8px}.waitlist-row.notified .waitlist-status-chip{background:var(--state-achieved);color:var(--on-achieved)}.waitlist-actions{display:flex;align-items:center;gap:8px;margin-left:auto}.waitlist-timer{font:700 12px var(--mono);color:var(--state-achieved-ink)}.add-waitlist-form{display:flex;flex-direction:column;gap:10px}.add-waitlist-form input{padding:9px 11px;border-radius:10px;border:1px solid var(--hairline);font:600 13px var(--font)}.close-layout{display:flex;gap:16px;align-items:flex-start;flex-wrap:wrap}.close-panel{flex:1;min-width:320px;background:var(--surface);border-radius:14px;box-shadow:var(--shadow-card);padding:16px}.close-stats-row{display:flex;gap:24px;margin-bottom:16px}.close-stat-label{font:600 11px var(--font);color:var(--text-muted)}.close-stat-value{font:800 22px var(--mono);color:var(--text);margin-top:2px}.cash-row{display:flex;justify-content:space-between;align-items:center;padding:8px 0;border-bottom:1px solid var(--hairline);font:600 13px var(--font)}.cash-row .value{font:700 13px var(--mono)}.cash-row.total{font-weight:800;border-bottom:none;padding-top:10px}.cash-row input{width:110px;padding:6px 9px;border-radius:8px;border:1px solid var(--hairline);font:700 13px var(--mono);text-align:right}.short-over-banner{margin-top:10px;padding:10px 14px;border-radius:10px;font:700 13px var(--font);display:flex;justify-content:space-between}.short-over-banner.short{background:#fbf0f1;color:var(--danger-ink)}.short-over-banner.over{background:var(--state-achieved-bg);color:var(--state-achieved-ink)}.short-over-banner.even{background:var(--chip-bg);color:var(--text-muted)}.short-over-banner.total{font-size:15px;border:1.5px solid currentColor}.close-actions{display:flex;gap:10px;margin-top:14px}.ledger-mini-row{display:flex;justify-content:space-between;align-items:center;padding:4px 0 4px 14px;font:600 12px var(--font);color:var(--text-muted)}.ledger-mini-row .value{font:700 12px var(--mono)}.ledger-panel{width:340px;flex:none;background:var(--surface);border-radius:14px;box-shadow:var(--shadow-card);padding:16px}.ledger-entry{display:flex;justify-content:space-between;align-items:center;padding:8px 0;border-bottom:1px solid var(--hairline);font:600 12px var(--font)}.ledger-entry .amount.income{color:var(--state-achieved-ink)}.ledger-entry .amount.expense{color:var(--danger-ink)}.ledger-entry .void-btn{font:700 10px var(--font);color:var(--text-faint);cursor:pointer;margin-left:8px}.track-card{display:flex;justify-content:space-between;align-items:center;padding:10px 12px;border:1px solid var(--hairline);border-radius:10px;margin-bottom:8px}.track-card-code{font:800 13px var(--font);color:var(--text)}.track-card-range{font:600 11px var(--mono);color:var(--text-muted);margin-top:2px}.track-status-chip{font:700 10px var(--font);padding:3px 10px;border-radius:var(--radius-pill);background:var(--chip-bg);color:var(--text-muted)}.track-status-chip.active{background:var(--state-achieved);color:var(--on-achieved)}.track-progress-row{display:flex;justify-content:space-between;align-items:center;font:700 12px var(--font);color:var(--text-muted);margin:12px 0 6px}.track-progress-bar{height:8px;border-radius:6px;background:var(--chip-bg);overflow:hidden}.track-progress-fill{height:100%;background:var(--accent);border-radius:6px}.track-warn-banner{margin-top:10px;padding:9px 12px;border-radius:10px;font:700 12px var(--font);background:var(--state-behind-bg);color:var(--state-behind-ink)}.track-shell-note{margin-top:12px;padding:9px 12px;border-radius:10px;font:600 11px var(--font);background:var(--chip-bg);color:var(--text-muted)}.track-form label{display:block;margin-top:10px}.track-form input{margin-top:4px;padding:9px 11px;border:1px solid var(--hairline);border-radius:9px;font:700 15px var(--mono);color:var(--text);background:var(--surface, transparent)}.track-form input:focus{outline:2px solid var(--accent);outline-offset:-1px}.closed-banner{background:var(--state-achieved-bg);color:var(--state-achieved-ink);border-radius:10px;padding:10px 14px;font:700 13px var(--font);margin-bottom:14px}.badge{position:absolute;top:-6px;right:-6px;background:var(--state-overtime);color:var(--on-overtime);font:700 10px var(--font);border-radius:8px;min-width:16px;height:16px;display:flex;align-items:center;justify-content:center;padding:0 3px}.no-spinner::-webkit-outer-spin-button,.no-spinner::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.no-spinner{-moz-appearance:textfield}.dc-layout{display:flex;gap:18px;align-items:flex-start;flex-wrap:wrap}.dc-main{flex:1.9;min-width:420px;display:flex;flex-direction:column;gap:13px}.dc-sidebar{flex:1;min-width:280px;max-width:330px;display:flex;flex-direction:column;gap:13px}.dc-side-card{background:var(--surface);border:1px solid var(--hairline);border-radius:12px;padding:16px;box-shadow:var(--shadow-card)}.dc-gate{flex:1.9;min-width:420px;background:var(--surface);border:1px solid var(--hairline);border-radius:14px;box-shadow:var(--shadow-card);padding:32px 20px;display:flex;flex-direction:column;align-items:center;text-align:center;gap:14px}.dc-gate-icon{width:64px;height:64px;border-radius:50%;background:var(--surface-soft);display:flex;align-items:center;justify-content:center;font-size:30px}.dc-gate-title{font:800 20px var(--font);color:var(--text)}.dc-gate-desc{font:500 12px var(--font);color:var(--text-muted);max-width:420px}.dc-gate-stats{display:flex;gap:22px;margin-top:4px}.dc-gate-stat-label{font:600 10px var(--font);color:var(--text-muted)}.dc-gate-stat-value{font:800 20px var(--mono);color:var(--text);margin-top:2px}.dc-gate-btn{font:800 15px var(--font);color:var(--on-accent);background:var(--accent);padding:14px 46px;border-radius:12px;margin-top:6px;cursor:pointer;box-shadow:var(--shadow-btn)}.dc-gate-btn:active{opacity:.85}.dc-titlebar{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap}.dc-title{font:800 19px var(--font);color:var(--text)}.dc-back-btn{font:700 12px var(--font);color:var(--text-muted);background:var(--surface);border:1.5px solid #ece2d6;padding:5px 14px;border-radius:10px;cursor:pointer}.dc-badge{font:800 12px var(--font);padding:5px 12px;border-radius:10px;white-space:nowrap}.dc-badge.pending{color:var(--state-behind-ink);background:var(--state-behind-bg)}.dc-badge.good{color:var(--on-accent);background:var(--accent)}.dc-badge.bad{color:var(--on-overtime);background:var(--danger)}.dc-kpi-row{background:var(--surface);border:1px solid var(--hairline);border-radius:12px;padding:14px 18px;display:flex;align-items:center;gap:28px;box-shadow:var(--shadow-card)}.dc-kpi-label{font:600 10px var(--font);color:var(--text-muted)}.dc-kpi-value{font:800 24px var(--mono);color:var(--text);margin-top:2px}.dc-recon-card{background:var(--surface);border:1px solid var(--hairline);border-radius:12px;padding:14px 18px;box-shadow:var(--shadow-card)}.dc-recon-card.bad{background:var(--danger-bg);border-color:var(--danger-border)}.dc-recon-head{display:flex;align-items:center;gap:8px;margin-bottom:11px}.dc-recon-icon{font-size:16px}.dc-recon-name{font:800 15px var(--font);color:var(--text)}.dc-recon-cols{display:flex;gap:12px}.dc-recon-col{flex:1;background:var(--surface-soft);border-radius:10px;padding:9px 12px}.dc-recon-col.input{background:var(--surface);border:1.5px solid var(--hairline)}.dc-recon-col.input.bad{border-color:var(--danger)}.dc-recon-col.input.good{border-color:var(--accent)}.dc-recon-col.diff{background:var(--surface-soft);border:1px solid var(--hairline)}.dc-recon-col.diff.good{background:var(--state-achieved-bg);border-color:#dce9f3}.dc-recon-col.diff.bad{background:var(--danger-bg);border-color:var(--danger-border)}.dc-recon-col-label{font:600 9px var(--font);color:var(--text-muted)}.dc-recon-col.diff.good .dc-recon-col-label{color:var(--state-achieved-ink)}.dc-recon-col.diff.bad .dc-recon-col-label{color:var(--danger-ink)}.dc-recon-col-value{font:800 16px var(--mono);color:var(--text);margin-top:1px}.dc-recon-col.diff.good .dc-recon-col-value{color:var(--state-achieved-ink)}.dc-recon-col.diff.bad .dc-recon-col-value{color:var(--danger)}.dc-recon-col input{width:100%;border:none;background:transparent;padding:0;font:800 16px var(--mono);color:var(--text);outline:none}.dc-topup{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-top:9px;padding-top:9px;border-top:1px solid var(--hairline);font:600 12px var(--font);color:var(--text)}.dc-topup input{width:110px;padding:6px 9px;border-radius:8px;border:1px solid var(--hairline);font:700 13px var(--mono);text-align:right}.dc-topup-void{font:700 11px var(--font);color:var(--text-faint);background:none;border:none;padding:6px 8px;margin-left:2px;cursor:pointer}.dc-topup-void:disabled{opacity:.5;cursor:default}.dc-topup-list{width:100%;display:grid;gap:3px;font:600 11px var(--font);color:var(--text-muted)}.dc-formula{font:500 9px var(--font);color:var(--text-faint);margin-top:8px}.dc-tip{font:600 10px var(--font);color:var(--state-behind-ink);margin-top:8px}.dc-summary-grid{display:flex;gap:8px;margin-bottom:9px}.dc-summary-cell{flex:1;display:flex;flex-direction:column;gap:2px;background:var(--surface-soft);border-radius:8px;padding:8px 10px}.dc-summary-cell.short{background:var(--danger-bg)}.dc-summary-cell.over{background:var(--state-achieved-bg)}.dc-summary-cell-label{font:600 10px var(--font);color:var(--text-muted)}.dc-summary-cell-value{font:800 13px var(--mono);color:var(--text)}.dc-summary-cell.short .dc-summary-cell-value{color:var(--danger)}.dc-summary-cell.over .dc-summary-cell-value{color:var(--state-achieved-ink)}.dc-summary-total{display:flex;justify-content:space-between;align-items:center;background:var(--state-achieved-bg);border:1px solid #dce9f3;border-radius:9px;padding:11px 14px}.dc-summary-total.short{background:var(--danger-bg);border-color:var(--danger-border)}.dc-summary-total-label{font:800 13px var(--font);color:var(--state-achieved-ink)}.dc-summary-total.short .dc-summary-total-label{color:var(--danger-ink)}.dc-summary-total-value{font:800 18px var(--mono);color:var(--accent)}.dc-summary-total.short .dc-summary-total-value{color:var(--danger)}.dc-side-title{font:700 12px var(--font);color:var(--text-muted);margin-bottom:10px;display:flex;align-items:center;gap:8px}.dc-side-title .count{margin-left:auto;font:800 12px var(--font);color:var(--text)}.dc-invoice-item{display:flex;align-items:center;gap:8px;padding:5px 0}.dc-invoice-no{font:700 9px var(--mono);color:var(--text-muted);white-space:nowrap}.dc-invoice-desc{flex:1;font:600 11px var(--font);color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dc-invoice-amount{font:700 11px var(--mono);color:var(--text)}.dc-side-footnote{font:600 9px var(--font);color:var(--text-faint);margin-top:9px}.dc-bottom-actions{width:100%;background:var(--surface);border:1px solid var(--hairline);border-radius:14px;padding:14px 18px;margin-top:14px;box-shadow:var(--shadow-card);display:flex;gap:10px}.dc-bottom-btn{flex:1;text-align:center;font:700 13px var(--font);color:var(--text-muted);background:var(--surface);border:1.5px solid #ece2d6;padding:13px 0;border-radius:11px;cursor:pointer}.dc-bottom-btn.primary{flex:2;font:800 14px var(--font);color:var(--on-accent);background:var(--accent);border:none;box-shadow:var(--shadow-btn)}.dc-bottom-btn.disabled{opacity:.5;cursor:default}.modal-mask{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000059;display:flex;align-items:center;justify-content:center;z-index:60;padding:16px}.preinv-hint{background:var(--state-takeout-bg);color:var(--state-takeout-ink);border-radius:10px;padding:9px 12px;font:500 12px/1.7 var(--font);margin-bottom:12px}.preinv-ok{background:var(--state-achieved-bg);color:var(--state-achieved-ink);border-radius:10px;padding:10px 12px;font:700 12.5px/1.6 var(--font);margin-bottom:10px;cursor:pointer}.preinv-note{background:var(--state-behind-bg);color:var(--state-behind-ink);border-radius:10px;padding:9px 11px;font:600 12.5px/1.7 var(--font);display:flex;gap:8px;align-items:flex-start;white-space:pre-wrap;word-break:break-word}.preinv-note-tag{flex:none;font:800 11px var(--font);background:var(--state-behind);color:var(--state-behind-ink);border-radius:var(--radius-pill);padding:2px 9px}.preinv-pill{font:700 11px var(--font);border-radius:var(--radius-pill);padding:3px 10px;background:var(--chip-bg);color:var(--text-muted)}.preinv-pill.warn{background:var(--state-behind-bg);color:var(--state-behind-ink)}.preinv-issued{border-top:1px solid var(--hairline);padding-top:8px;display:flex;flex-direction:column;gap:6px}.preinv-issued-row{display:flex;align-items:center;justify-content:space-between;gap:8px;font:600 12px var(--font);color:var(--text-muted)}.preinv-modal{background:var(--surface);border-radius:16px;box-shadow:var(--shadow-card);width:560px;max-width:100%;max-height:90vh;display:flex;flex-direction:column;min-height:0}.preinv-modal-head{flex:none;padding:14px 16px;border-bottom:1px solid var(--hairline)}.preinv-modal-body{flex:1;min-height:0;overflow:auto;padding:12px 16px;display:flex;flex-direction:column;gap:10px}.preinv-modal-foot{flex:none;padding:12px 16px;border-top:1px solid var(--hairline);display:flex;align-items:center;gap:8px}.preinv-split{border:1px solid var(--hairline);border-radius:12px;padding:11px 12px;background:var(--surface-soft)}.preinv-split-head{display:flex;align-items:center;gap:8px;margin-bottom:9px}.preinv-input{padding:9px 11px;border-radius:9px;border:1px solid var(--hairline);background:var(--surface);font:600 13px var(--font);color:var(--text)}.preinv-alloc{display:flex;flex-direction:column;gap:4px;margin-top:4px}.preinv-alloc-row{display:flex;align-items:center;gap:8px;font:600 12.5px var(--font);background:var(--surface);border-radius:9px;padding:6px 9px}.preinv-sub{font:500 11.5px var(--font);color:var(--text-faint)}.preinv-stepper{flex:none;display:flex;align-items:center;gap:2px}.preinv-stepper span{width:30px;height:30px;display:flex;align-items:center;justify-content:center;border-radius:8px;background:var(--chip-bg);color:var(--text);font:800 15px var(--font);cursor:pointer;-webkit-user-select:none;user-select:none}.preinv-stepper b{min-width:30px;text-align:center;font:800 14px var(--font)}.preinv-pill.done{background:var(--state-achieved-bg);color:var(--state-achieved-ink)}.dc-recv-list{border:1px solid var(--hairline);border-radius:10px;background:var(--surface-soft);padding:9px 10px;margin-bottom:9px}.dc-step{display:inline-flex;align-items:center;gap:6px;align-self:flex-start;margin:2px 0 7px;padding:3px 10px;border-radius:999px;background:var(--state-takeout-bg);color:var(--state-takeout-ink);font:800 11px var(--font)}.dc-step:first-of-type{margin-top:0}.dc-recv-head{font:800 11px var(--font);color:var(--text);margin-bottom:7px}.dc-recv-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:6px 0;border-bottom:1px solid var(--hairline)}.dc-recv-row:last-of-type{border-bottom:none}.dc-recv-row.on .dc-recv-name>span:first-of-type{color:var(--text);font-weight:800}.dc-recv-name{display:flex;align-items:center;gap:6px;flex:1;min-width:0;font:600 12px var(--font);color:var(--text-muted);cursor:pointer}.dc-recv-name input[type=checkbox]{width:17px;height:17px;accent-color:var(--accent);flex-shrink:0}.dc-recv-tag{font:700 9px var(--font);padding:2px 6px;border-radius:6px;color:var(--state-behind-ink);background:var(--state-behind-bg);white-space:nowrap}.dc-recv-qty{display:flex;align-items:center;gap:5px;flex-shrink:0}.dc-recv-ordered{font:600 10px var(--font);color:var(--text-faint);white-space:nowrap}.dc-recv-unit{font:600 10px var(--font);color:var(--text-faint)}.dc-recv-qty input{width:62px;padding:6px;text-align:center;border:1px solid var(--hairline);border-radius:8px;background:var(--surface);color:var(--text);font:700 13px var(--mono);font-variant-numeric:tabular-nums}.dc-recv-qty input:disabled{opacity:.4}.dc-recv-qty input:focus{outline:none;border-color:var(--accent)}.dc-recv-rest{display:flex;align-items:center;gap:5px;width:100%;font:600 10px var(--font);color:var(--text-faint)}.dc-recv-chip{padding:5px 10px;border-radius:var(--radius-pill);border:1px solid var(--hairline);background:var(--surface);color:var(--text);font:700 11px var(--font);line-height:1;cursor:pointer}.dc-recv-chip.on{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.dc-recv-foot{font:600 10px var(--font);color:var(--text-faint);margin-top:7px}.dc-taxid{display:flex;align-items:center;gap:7px;padding:9px 10px;margin-bottom:11px;border-radius:9px;border:1px solid var(--warn-bg);background:var(--state-behind-bg);color:var(--state-behind-ink);font:700 12px var(--font);cursor:pointer}.dc-taxid input[type=checkbox]{width:17px;height:17px;accent-color:var(--accent)}.dc-taxid.on{border-color:var(--state-achieved);background:var(--state-achieved-bg);color:var(--state-achieved-ink)}.ledger-entry{flex-wrap:wrap}.ledger-recv{width:100%;margin-top:3px;font:600 10px var(--font);color:var(--text-faint)}.dc-recv-counted{display:flex;align-items:center;gap:6px;flex-wrap:wrap;width:100%;margin-top:4px;padding:8px 9px;border-radius:9px;border:1px solid var(--warn-bg);background:var(--state-behind-bg)}.dc-recv-counted-q{width:100%;font:700 11px var(--font);color:var(--state-behind-ink);line-height:1.5}.dc-recv-block{margin-top:7px;padding:8px 10px;border-radius:9px;border:1px solid var(--danger-border);background:var(--danger-bg);font:700 11px var(--font);color:var(--danger-ink)}.dc-unbilled{border:1px solid var(--state-behind);background:var(--state-behind-bg);border-radius:10px;padding:10px;margin-bottom:11px;max-height:240px;overflow-y:auto}.dc-unbilled-h{font:800 12px var(--font);color:var(--state-behind-ink);margin-bottom:8px}.dc-unbilled-g+.dc-unbilled-g{margin-top:6px}.dc-unbilled-pick{display:flex;flex-direction:column;gap:2px;width:100%;text-align:left;cursor:pointer;padding:8px 10px;border-radius:8px;border:1px solid var(--hairline);background:var(--surface);font:inherit;color:var(--text)}.dc-unbilled-g.on .dc-unbilled-pick{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.dc-unbilled-name{font:800 13px var(--font)}.dc-unbilled-meta{font:600 11px var(--font);opacity:.85}.dc-unbilled-hint{margin-top:6px;font:600 11px var(--font);color:var(--text-faint);line-height:1.5}.btn.dc-btn-locked{opacity:.45;cursor:not-allowed}.dc-recv-fixed{font:700 12px var(--mono);color:var(--text-muted)}.dc-recv-tag.done{background:var(--state-achieved-bg);color:var(--state-achieved-ink)}.dc-locked-why{margin:0 0 8px;font:700 13px var(--font);color:var(--danger-ink)}.dc-paypend{border:1px solid var(--hairline);border-radius:12px;padding:10px;margin-bottom:8px;background:var(--state-behind-bg)}.dc-paypend-h{font:800 13px var(--font);color:var(--text);margin-bottom:2px}.dc-paypend-items{display:flex;flex-direction:column;gap:4px;margin:7px 0 10px}.dc-paypend-item{display:flex;align-items:center;gap:8px;min-height:36px;padding:4px 4px 4px 9px;border-radius:9px;background:var(--surface);font:600 12px var(--font);color:var(--text-muted)}.dc-paypend-item>span:first-child{flex:1;min-width:0}.dc-paypend-undo{flex:none;display:inline-flex;align-items:center;justify-content:center;min-height:28px;padding:5px 13px;border-radius:8px;border:1.5px solid var(--danger-border);background:var(--surface);color:var(--danger-ink);font:700 12px var(--font);white-space:nowrap;cursor:pointer}.dc-paypend-undo:active{background:var(--danger-bg)}.dc-paypend-row{display:flex;gap:6px;align-items:center;margin-top:8px}.dc-paypend-row .btn{flex:1}.dc-paypend-amt{width:86px;padding:7px 9px;border-radius:9px;border:1px solid var(--hairline);background:var(--surface);color:var(--text);font:700 13px var(--font);text-align:right;font-variant-numeric:tabular-nums}.dc-paypend-inv{flex:1;min-width:0;padding:7px 9px;border-radius:9px;border:1px solid var(--hairline);background:var(--surface);color:var(--text);font:600 12px var(--font)}.dc-paypend .dc-taxid{margin-top:10px;margin-bottom:8px}.dc-unpaid-item{display:flex;align-items:center;gap:8px;padding:7px 2px;border-bottom:1px solid var(--hairline);cursor:pointer}.dc-unpaid-name{flex:1;min-width:0;font:700 12px var(--font);color:var(--text)}.dc-unpaid-date{display:block;font:600 10px var(--font);color:var(--text-faint);margin-top:1px}.dc-unpaid-amt{font:800 13px var(--font);color:var(--text);font-variant-numeric:tabular-nums}.ann-current{padding:10px 12px;margin-bottom:14px;background:var(--surface-soft)}.ann-current-title{font:700 12px var(--font);color:var(--text-muted);margin-bottom:3px}.ann-current-body{font:700 16px/1.5 var(--font);color:var(--text);white-space:pre-wrap}.ann-input{width:100%;padding:10px 12px;border:1.5px solid var(--hairline);border-radius:10px;background:var(--surface);color:var(--text);font:600 16px/1.5 var(--font);resize:vertical}.ann-input:focus{outline:none;border-color:var(--accent)}.ann-when{display:flex;gap:8px;margin:12px 0;flex-wrap:wrap}.ann-ex-label{margin:12px 0 6px;font:700 12px var(--font);color:var(--text-muted)}.ann-ex{display:flex;flex-direction:column;gap:6px}.ann-ex-btn{display:block;width:100%;padding:10px 12px;border-radius:10px;border:1.5px solid var(--hairline);background:var(--surface);color:var(--text);font:600 13px var(--font);text-align:left;line-height:1.4;cursor:pointer}.ann-ex-btn.on{border-color:var(--accent);background:var(--accent);color:var(--on-accent);font-weight:700}.ann-when-btn{padding:9px 14px;border-radius:10px;border:1.5px solid var(--hairline);background:var(--surface);color:var(--text-muted);font:700 14px var(--font);cursor:pointer}.ann-when-btn.on{border-color:var(--accent);background:var(--accent);color:var(--on-accent)}.ann-actions{display:flex;gap:10px;margin-top:6px;flex-wrap:wrap}.ann-ok{color:var(--accent-soft);font:700 14px var(--font)}.ann-err{color:#b4645f;font:700 14px var(--font)}
