@import "https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&display=swap";@import "https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;500;600;700&display=swap";@import "https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,400;0,600;1,400&display=swap";@import "https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap";:root{--primary:#1a7a5c;--primary-light:#2dd4a0;--primary-dark:#0f5c43;--primary-container:#a8f2ce;--on-primary-container:#00201b;--accent:#0e7490;--success:#4d9a6f;--warning:#e8a830;--danger:#ba1a1a;--bg-dark:#fafdfb;--bg-card:#fff;--bg-card-hover:#f0f4f1;--bg-surface:#f5f8f5;--surface-container:#eef2ee;--surface-container-high:#e8ece8;--text-primary:#191c1a;--text-secondary:#414942;--text-muted:#717971;--border:#c1c9c0;--border-light:#e1e4e0;--shadow-sm:0 1px 2px #0000004d, 0 1px 3px 1px #00000026;--shadow-md:0 1px 2px #0000004d, 0 2px 6px 2px #00000026;--shadow-lg:0 4px 8px 3px #00000026, 0 1px 3px #0000004d;--shadow-glow:none;--radius-sm:8px;--radius-md:12px;--radius-lg:16px;--radius-xl:28px;--transition-color:background-color .2s ease, color .2s ease, border-color .2s ease;--transition-transform:transform .2s cubic-bezier(.2, 0, 0, 1);--transition-opacity:opacity .2s ease}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg-dark);color:var(--text-primary);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;height:100vh;font-family:Roboto,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;line-height:1.6;overflow:hidden}h1,h2,h3,h4,.panel-title,.tech-title,.room-name{letter-spacing:0;font-family:Roboto,-apple-system,sans-serif;font-weight:500}#root{height:100vh}:focus-visible{outline:2px solid var(--primary);outline-offset:2px}input:focus,button:focus,textarea:focus{outline:none}.ui-inline-icon{vertical-align:-.18em;flex-shrink:0}.ui-inline-icon-xs{font-size:14px!important}.ui-inline-icon-sm{font-size:18px!important}.ui-inline-icon-lg{font-size:24px!important}.ui-close-icon{font-size:18px!important}.ui-empty-icon{color:var(--text-muted);opacity:.58;font-size:40px!important}.ui-status-icon-success{color:var(--success)}.ui-status-icon-warning{color:var(--warning)}.ui-status-icon-danger{color:var(--danger)}.app-layout{--side-dock-width:390px;--resizer-width:10px;grid-template-columns:var(--side-dock-width) var(--resizer-width) minmax(760px, 1fr);grid-template-rows:70px 1fr;gap:0;height:100vh;display:grid}.app-header{background:var(--bg-card);box-shadow:var(--shadow-sm);z-index:100;border-bottom:none;grid-column:1/-1;justify-content:space-between;align-items:center;padding:0 24px;display:flex}.tech-battery-pill{color:var(--primary-dark);vertical-align:middle;background:#1a7a5c1f;border-radius:999px;align-items:center;margin-left:8px;padding:1px 7px;font-size:11px;font-weight:700;line-height:1.4;display:inline-flex}.tech-filter-bar{border-bottom:1px solid var(--dispatch-line,#e5e7eb);background:#fdfdfd;flex-direction:column;flex-shrink:0;gap:8px;padding:10px 12px 8px;display:flex}.tech-sort-segment{width:100%}.tech-sort-segment .ant-segmented{background:var(--dispatch-line,#e5e7eb);border-radius:0;width:100%;padding:2px}.tech-sort-segment .ant-segmented-item{border-radius:0;flex:50%;min-width:0}.tech-sort-segment .ant-segmented-item-label{text-transform:uppercase;letter-spacing:.05em;color:var(--dispatch-muted,#64748b);min-height:28px;font-size:11px;font-weight:700;line-height:28px}.tech-sort-segment .ant-segmented-item-selected{box-shadow:none;background:#fff}.tech-sort-segment .ant-segmented-item-selected .ant-segmented-item-label{color:var(--dispatch-ink,#0f172a)}.tech-filter-group{flex-wrap:wrap;gap:6px;display:flex}.tech-connection-summary{color:var(--text-muted);flex-wrap:wrap;gap:5px;font-size:10px;font-weight:700;display:flex}.tech-connection-summary span{white-space:nowrap;border:1px solid #0000;border-radius:999px;align-items:center;min-height:18px;padding:1px 6px;line-height:1.2;display:inline-flex}.tech-connection-summary .is-online{color:#17623f;background:#e2f5ea;border-color:#9ad4af}.tech-connection-summary .is-degraded,.tech-connection-summary .is-delayed{color:#7a5712;background:#fff4d6;border-color:#e6c86f}.tech-connection-summary .is-offline{color:#9f2f2f;background:#fce8e8;border-color:#e6a2a2}.tech-connection-summary .is-unknown,.tech-connection-summary .is-standby{color:#59645c;background:#edf0ed;border-color:#c9d0ca}.tech-connection-dot{background:#9aa49c;border-radius:999px;flex:none;width:8px;height:8px;margin-right:6px}.tech-connection-dot.is-online{background:#2f9b65;box-shadow:0 0 0 3px #2f9b6524}.tech-connection-dot.is-degraded,.tech-connection-dot.is-delayed{background:#d39822;box-shadow:0 0 0 3px #d3982224}.tech-connection-dot.is-offline{background:#c94c4c;box-shadow:0 0 0 3px #c94c4c24}.tech-connection-dot.is-standby{background:#8b978e}.tech-connection-caption{color:#657168;margin-top:3px;padding-left:14px;font-size:10px;font-weight:700;line-height:1.1}.tech-connection-caption.is-online{color:#17623f}.tech-connection-caption.is-degraded,.tech-connection-caption.is-delayed{color:#8a6112}.tech-connection-caption.is-offline{color:#a43b3b}.tech-connection-caption.is-standby{color:#59645c}.app-header h1{color:var(--primary);align-items:center;gap:10px;font-size:22px;font-weight:500;display:flex}.dispatch-header-icon{font-size:24px!important}.app-header .header-actions{align-items:center;gap:16px;display:flex}.dispatch-action-icon{font-size:18px!important}.header-date{color:var(--text-primary);background:var(--surface-container);border-radius:var(--radius-sm);border:1px solid var(--border-light);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;box-sizing:border-box;appearance:none;min-height:40px;transition:var(--transition-color);padding:8px 16px;font-family:Roboto,sans-serif;font-size:14px;line-height:1.2}.header-date:focus-visible{border-color:var(--primary)}.header-date::-webkit-date-and-time-value{text-align:left;min-height:1.2em}.header-date::-webkit-calendar-picker-indicator{cursor:pointer}.btn{cursor:pointer;letter-spacing:.02em;transition:var(--transition-color), box-shadow .2s ease;border:none;border-radius:20px;align-items:center;gap:8px;padding:10px 24px;font-family:Roboto,sans-serif;font-size:14px;font-weight:500;text-decoration:none;display:inline-flex}.btn:hover{box-shadow:var(--shadow-sm)}.btn-primary{background:var(--primary);color:#000}.btn-primary:hover{background:var(--primary-light)}.btn-success{background:var(--success);color:#000}.btn-warning{background:var(--warning);color:#000}.btn-danger{background:var(--danger);color:#fff}.btn-ghost{color:var(--text-primary);border:1px solid var(--border-light);background:0 0}.btn-ghost:hover{background:var(--bg-hover);border-color:var(--primary)}.sidebar-left,.sidebar-right{background:var(--bg-surface);flex-direction:column;min-width:0;min-height:0;display:flex;overflow-y:auto}.side-dock{--inner-resizer-width:8px;grid-area:2/1;grid-template-columns:minmax(180px, var(--tech-panel-width,272px)) var(--inner-resizer-width) minmax(90px, 1fr);border-right:1px solid var(--border);background:var(--bg-surface);min-width:0;min-height:0;display:grid}.side-dock>.sidebar-left{border-right:none;grid-area:1/1}.side-dock>.inner-panel-resizer{grid-area:1/2}.side-dock>.sidebar-right{border-left:none;grid-area:1/3}.inner-panel-resizer{cursor:col-resize;background:linear-gradient(to right, transparent 35%, var(--border) 35%, var(--border) 65%, transparent 65%);transition:background-color .2s;position:relative}.inner-panel-resizer:after{content:"";background:#10b98173;border-radius:999px;width:2px;height:44px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.inner-panel-resizer:hover{background-color:#10b98124}.sidebar-right .panel-title{gap:8px;padding:14px 16px;font-size:14px}.sidebar-right .panel-title .count-badge{padding:1px 6px;font-size:11px}.sidebar-right.room-panel{position:relative;overflow:hidden}.room-row.is-confirming{outline:2px solid var(--dispatch-red,#dc2626);outline-offset:-1px;z-index:1}.room-clean-drawer-layer{z-index:30;box-sizing:border-box;pointer-events:none;justify-content:center;align-items:center;padding:16px 12px;display:flex;position:absolute;inset:0}.room-clean-drawer-backdrop{cursor:pointer;pointer-events:auto;background:#0f172a52;border:none;margin:0;padding:0;position:absolute;inset:0}.room-clean-drawer-sheet{z-index:1;pointer-events:auto;border:1px solid var(--dispatch-line,#d7e1da);border-top:2px solid var(--dispatch-ink,#102116);background:#fff;flex-direction:column;gap:10px;width:100%;max-width:280px;margin:0;padding:16px 14px 14px;animation:.16s ease-out room-clean-sheet-in;display:flex;position:relative;box-shadow:0 12px 32px #0f172a2e}@keyframes room-clean-sheet-in{0%{opacity:.55;transform:translateY(6px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}.room-clean-drawer-head h2{color:var(--dispatch-ink,#0f172a);margin:0;font-size:15px;font-weight:700;line-height:1.2}.room-clean-drawer-body{color:var(--dispatch-muted,#64748b);margin:0;font-size:13px;line-height:1.5}.room-clean-drawer-body strong{color:var(--dispatch-ink,#0f172a)}.room-clean-drawer-actions{justify-content:flex-end;gap:8px;display:flex}.panel-resizer{cursor:col-resize;background:linear-gradient(to right, transparent 40%, var(--border) 40%, var(--border) 60%, transparent 60%);grid-row:2;transition:background-color .2s;position:relative}.panel-resizer:after{content:"";background:#0ea5e973;border-radius:999px;width:2px;height:52px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.panel-resizer:hover{background-color:#0ea5e91f}.panel-resizer-side{grid-column:2}.panel-title{color:var(--text-primary);border-bottom:1px solid var(--border);align-items:center;gap:12px;padding:20px 24px;font-size:16px;display:flex}.side-dock .panel-title{gap:8px;padding:14px 12px;font-size:15px}.side-dock .panel-title .count-badge{padding:1px 6px;font-size:10px}.panel-title .count-badge{background:var(--primary);color:#000;border-radius:2px;padding:2px 8px;font-family:Roboto,sans-serif;font-size:12px;font-weight:600}.tech-queue-list{flex:1;padding:8px}.tech-queue-columns{color:var(--text-muted);border-bottom:1px dashed var(--border);grid-template-columns:22px minmax(0,1fr) 34px 34px;align-items:center;gap:8px;margin-bottom:6px;padding:2px 8px 6px;font-size:11px;font-weight:700;display:grid}.tech-queue-columns .col-name{grid-column:2}.tech-queue-columns .col-round,.tech-queue-columns .col-point{text-align:center}.tech-queue-footer{border-top:1px solid var(--border);gap:8px;padding:8px 8px 10px;display:grid}.dispatch-plan-panel{gap:8px;padding:0 8px 10px;display:grid}.dispatch-plan-panel-head{color:var(--text-primary);justify-content:space-between;align-items:center;padding:4px 2px 0;font-size:12px;font-weight:700;display:flex}.dispatch-plan-empty{border:1px dashed var(--border);color:var(--text-muted);background:#f8fafce6;border-radius:14px;padding:12px;font-size:12px}.dispatch-plan-list{gap:6px;display:grid}.dispatch-plan-item{background:#f8fafc;border:1px solid #dbe3ee;border-radius:14px;grid-template-columns:48px minmax(0,1fr);align-items:start;gap:8px;padding:9px 10px;display:grid}.dispatch-plan-soft_assigned{background:linear-gradient(135deg,#e2f5eafa,#f8fafcf5);border-color:#8fd4a6}.dispatch-plan-unplanned{background:linear-gradient(135deg,#fff7dcfa,#f8fafcf5);border-color:#f2c97e}.dispatch-plan-time{color:#14532d;font-family:Roboto,sans-serif;font-size:14px;font-weight:700;line-height:1.2}.dispatch-plan-main{gap:4px;min-width:0;display:grid}.dispatch-plan-title{color:var(--text-primary);justify-content:space-between;align-items:baseline;gap:8px;font-size:12px;display:flex}.dispatch-plan-title span,.dispatch-plan-meta span{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.dispatch-plan-title strong{color:#0f172a;font-size:13px}.dispatch-plan-meta{color:var(--text-muted);justify-content:space-between;align-items:center;gap:8px;font-size:11px;display:flex}.dispatch-plan-actions{justify-content:flex-end;display:flex}.dispatch-plan-lock{min-height:28px;color:var(--text-primary);background:#ffffffe6;border:1px solid #cbd5e1;border-radius:999px;align-items:center;gap:4px;padding:0 10px;font-size:11px;font-weight:700;display:inline-flex}.dispatch-plan-lock.is-active{color:#1d4ed8;background:#dbeafef2;border-color:#2563eb}.dispatch-plan-lock:disabled{opacity:.55;cursor:not-allowed}.tech-performance-btn{border-top:1px solid var(--dispatch-line,#e5e7eb);border-radius:0;justify-content:center;gap:6px;width:100%;min-height:44px}.tech-queue-list.room-list{flex-direction:column;flex:1;gap:6px;min-height:0;padding:8px 10px 12px;display:flex;overflow:hidden auto}.tech-queue-footer{flex-shrink:0}.tech-row{cursor:context-menu;min-width:0;max-width:100%;overflow:hidden}.tech-row-detail{width:100%;min-width:0;max-width:100%}.tech-row-detail .room-row-runtime-value,.tech-row-detail .tech-conn-value{overflow-wrap:anywhere;word-break:break-word;min-width:0;max-width:100%}.tech-row.tech-status-0{background:#e2f5ea;border-color:#8fd4a6 #8fd4a6 #8fd4a6 #16a34a}.tech-row.tech-status-1{background:#e0eff8;border-color:#8fc5e5 #8fc5e5 #8fc5e5 #2563eb}.tech-row.tech-status-2{background:#fdf3d7;border-color:#e8c96e #e8c96e #e8c96e #ca8a04}.tech-row.tech-status-3{background:#fce8e8;border-color:#e8a5a5 #e8a5a5 #e8a5a5 #dc2626}.tech-row-top{width:100%}.tech-row-identity{flex:1;align-items:center;gap:8px;min-width:0;display:flex}.tech-rank{color:#64748b;text-align:center;flex-shrink:0;width:20px;font-family:Roboto,sans-serif;font-size:14px;font-style:italic;font-weight:700;line-height:1}.tech-rank.is-top{color:#0f172a;font-size:15px}.tech-row-main{align-items:center;gap:6px}.tech-row-name{align-items:center;gap:0;min-width:0;display:inline-flex}.tech-row-name .tech-connection-dot{margin-right:6px}.tech-part-time{color:#64748b;margin-left:4px;font-size:10px;font-weight:700}.tech-row-side{flex-direction:column;flex-shrink:0;align-items:flex-end;gap:2px;display:flex}.tech-row-status.status-0{color:#15803d}.tech-row-status.status-1{color:#1d4ed8}.tech-row-status.status-2{color:#a16207}.tech-row-status.status-3{color:#b91c1c}.tech-row-counts{align-items:center;gap:6px;display:inline-flex}.tech-count{font-variant-numeric:tabular-nums;font-size:11px;font-weight:700;line-height:1}.tech-count-rotation{color:#14532d}.tech-count-designated{color:#0c4a6e}.tech-battery-pill{color:#475569;background:#e2e8f0;border-radius:999px;flex-shrink:0;align-items:center;min-height:16px;padding:0 5px;font-size:10px;font-weight:800;line-height:1;display:inline-flex}.tech-battery-pill.is-low{color:#b91c1c;background:#fee2e2}.tech-battery-pill.is-charging{color:#15803d;background:#dcfce7}.tech-row-detail .tech-conn-value.is-online{color:#17623f}.tech-row-detail .tech-conn-value.is-degraded,.tech-row-detail .tech-conn-value.is-delayed{color:#8a6112}.tech-row-detail .tech-conn-value.is-offline{color:#a43b3b}.tech-row-detail .tech-conn-value.is-standby,.tech-row-detail .tech-conn-value.is-unknown{color:#59645c}.room-filter-chip.tech-filter-status-0.is-active{background:#15803d;border-color:#15803d}.room-filter-chip.tech-filter-status-1.is-active{background:#1d4ed8;border-color:#1d4ed8}.room-filter-chip.tech-filter-status-2.is-active{background:#a16207;border-color:#a16207}.room-filter-chip.tech-filter-status-3.is-active{background:#b91c1c;border-color:#b91c1c}.performance-modal{width:min(980px,94vw);max-width:980px}.performance-filter-row{grid-template-columns:repeat(3,minmax(160px,1fr)) auto;align-items:end;gap:10px;display:grid}.performance-filter-row label{color:var(--text-secondary);flex-direction:column;gap:4px;font-size:12px;display:flex}.performance-summary{flex-wrap:wrap;gap:8px 12px;margin-top:12px;display:flex}.performance-summary span{background:var(--bg-dark);border:1px solid var(--border);border-radius:999px;padding:4px 8px;font-size:12px}.performance-table-wrap{border:1px solid var(--border);border-radius:8px;max-height:58vh;margin-top:12px;overflow:auto}.performance-table{border-collapse:collapse;width:100%;font-size:13px}.performance-table th,.performance-table td{border-bottom:1px solid var(--border);text-align:left;white-space:nowrap;padding:8px 10px}.performance-table th{z-index:1;background:var(--bg-card);position:sticky;top:0}.performance-empty{color:var(--text-muted);text-align:center!important;padding:24px 10px!important}.room-filter-bar{border-bottom:1px solid var(--dispatch-line,#e5e7eb);flex-wrap:wrap;flex-shrink:0;gap:6px;padding:10px 12px 8px;display:flex}.room-filter-chip{border:1px solid var(--dispatch-line,#dbe3ee);min-height:26px;color:var(--dispatch-muted,#64748b);cursor:pointer;background:#fff;border-radius:999px;align-items:center;gap:4px;padding:0 8px;font-size:11px;font-weight:600;line-height:1;transition:border-color .15s,background .15s,color .15s;display:inline-flex}.room-filter-chip strong{color:var(--dispatch-ink,#0f172a);font-size:12px;font-weight:800}.room-filter-chip:hover{color:var(--dispatch-ink,#0f172a);border-color:#94a3b8}.room-filter-chip.is-active{border-color:var(--dispatch-ink,#102116);background:var(--dispatch-ink,#102116);color:#fff}.room-filter-chip.is-active strong{color:#fff}.room-filter-chip.status-0.is-active{background:#15803d;border-color:#15803d}.room-filter-chip.status-1.is-active{background:#1d4ed8;border-color:#1d4ed8}.room-filter-chip.status-2.is-active{background:#a16207;border-color:#a16207}.room-filter-chip.status-3.is-active{background:#b91c1c;border-color:#b91c1c}.room-list{flex-direction:column;flex:1;gap:6px;min-height:0;padding:8px 10px 12px;display:flex;overflow:hidden auto}.room-list-empty{color:var(--dispatch-muted,#64748b);flex-direction:column;justify-content:center;align-items:center;gap:8px;padding:28px 12px;font-size:13px;display:flex}.room-row{box-sizing:border-box;border-radius:var(--radius-sm,8px);cursor:default;background:#f8fafc;border:1px solid #dbe3ee;border-left-width:4px;flex-direction:column;gap:0;min-width:0;max-width:100%;min-height:44px;padding:8px 10px;transition:transform .15s,border-color .15s,background .15s,min-height .15s,padding .15s;display:flex;overflow:hidden;box-shadow:0 1px 3px #0000000f}.room-row.has-runtime{gap:8px;min-height:72px;padding:10px 10px 9px}.room-row.is-cleanable{cursor:pointer}.room-row:hover{border-color:#94a3b8}.room-row.status-0{background:#e2f5ea;border-color:#8fd4a6 #8fd4a6 #8fd4a6 #16a34a}.room-row.status-1{background:#e0eff8;border-color:#8fc5e5 #8fc5e5 #8fc5e5 #2563eb}.room-row.status-2{background:#fdf3d7;border-color:#e8c96e #e8c96e #e8c96e #ca8a04}.room-row.status-3{background:#fce8e8;border-color:#e8a5a5 #e8a5a5 #e8a5a5 #dc2626}.room-row.status-3.is-cleanable:hover{filter:brightness(.98);border-color:#dc2626}.room-row.is-busy{opacity:.72;pointer-events:none}.room-row-top{justify-content:space-between;align-items:center;gap:8px;min-width:0;display:flex}.room-row-main{flex:1;align-items:center;gap:8px;min-width:0;display:flex}.room-row-name{color:#0f172a;white-space:nowrap;text-overflow:ellipsis;font-size:14px;font-weight:700;line-height:1.15;overflow:hidden}.room-capacity-icons{color:#475569;flex-wrap:wrap;flex-shrink:0;align-items:center;gap:1px;line-height:1;display:inline-flex}.room-capacity-icon{opacity:.88;width:15px!important;height:15px!important;font-size:15px!important}.room-capacity-icon.is-sofa{opacity:.8}.room-capacity-fallback{color:#64748b;font-size:11px;font-weight:600}.room-row-status{letter-spacing:.02em;white-space:nowrap;flex-shrink:0;font-size:11px;font-weight:700;line-height:1.2}.room-row-status.status-0{color:#15803d}.room-row-status.status-1{color:#1d4ed8}.room-row-status.status-2{color:#a16207}.room-row-status.status-3{color:#b91c1c}.room-row-runtime-block{box-sizing:border-box;background:#ffffff9e;border:1px solid #0f172a0f;border-radius:6px;flex-direction:column;gap:4px;width:100%;min-width:0;max-width:100%;padding:7px 8px;display:flex;overflow:hidden}.room-row-runtime-line{grid-template-columns:2em minmax(0,1fr);align-items:start;gap:6px;width:100%;min-width:0;max-width:100%;display:grid}.room-row-runtime-label{color:#64748b;letter-spacing:0;white-space:nowrap;font-size:10px;font-weight:700;line-height:1.4}.room-row-runtime-value{color:#0f172a;white-space:normal;overflow-wrap:anywhere;word-break:break-word;-webkit-hyphens:auto;hyphens:auto;min-width:0;max-width:100%;font-size:12px;font-weight:600;line-height:1.4}.room-clean-drawer-actions .room-clean-confirm-cancel,.room-clean-confirm-modal .room-clean-confirm-cancel{color:var(--dispatch-ink,#102116)!important;border:1px solid var(--dispatch-line,#d7e1da)!important;box-shadow:none!important;background:#fff!important}.room-clean-drawer-actions .room-clean-confirm-cancel:hover,.room-clean-confirm-modal .room-clean-confirm-cancel:hover{color:var(--dispatch-ink,#102116)!important;border-color:var(--dispatch-ink,#102116)!important;background:#f7faf8!important}.room-clean-drawer-actions .room-clean-confirm-submit,.room-clean-confirm-modal .room-clean-confirm-submit{background:var(--dispatch-ink,#102116)!important;color:#fff!important;border:1px solid var(--dispatch-ink,#102116)!important;box-shadow:none!important}.room-clean-drawer-actions .room-clean-confirm-submit:hover,.room-clean-confirm-modal .room-clean-confirm-submit:hover{background:var(--dispatch-green,#0f7a61)!important;color:#fff!important;border-color:var(--dispatch-green,#0f7a61)!important}.main-content{background:var(--bg-dark);border-right:none;grid-area:2/3;min-width:0;position:relative;overflow:auto}.dispatch-layout{--header-height:70px;--drawer-gap:14px;--drawer-rail-width:54px;grid-template-columns:1fr;grid-template-rows:var(--header-height) 1fr;isolation:isolate;position:relative;overflow:hidden}.dispatch-layout .app-header{z-index:20;position:relative}.dispatch-revenue-modal-metrics div{justify-content:space-between;align-items:center;gap:12px;display:flex}.dispatch-revenue-modal-metrics strong{color:#17362a;font-weight:700}.dispatch-revenue-modal-subtitle{color:var(--text-muted);margin-bottom:16px;font-size:13px}.dispatch-revenue-modal-metrics{background:#0f61480d;border-radius:16px;gap:10px;padding:12px 14px;display:grid}.dispatch-drawer-toggle{top:calc(var(--header-height) + ((100% - var(--header-height)) / 2));width:30px;min-height:72px;color:var(--text-primary);cursor:pointer;z-index:16;background:linear-gradient(#fffffffa,#f0fdfaeb);border:1px solid #e2e8f0eb;border-radius:14px;transition:transform .24s,box-shadow .24s,background-color .24s,left .28s,right .28s;position:absolute;transform:translateY(-50%);box-shadow:0 12px 28px #0f172a1a}.dispatch-drawer-toggle:hover{transform:translateY(calc(-50% - 2px));box-shadow:0 22px 44px #0f172a29}.dispatch-drawer-toggle-left{left:10px}.dispatch-drawer-toggle-right{right:10px}.dispatch-drawer-toggle.is-open{background:linear-gradient(#fffffffa,#dcfce7f5);border-color:#22c55e47;box-shadow:0 16px 36px #0f172a29}.dispatch-drawer-toggle-left.is-open{left:calc(var(--drawer-gap) + var(--left-sidebar-width) - 16px)}.dispatch-drawer-toggle-right.is-open{right:calc(var(--drawer-gap) + var(--right-sidebar-width) - 16px)}.dispatch-drawer-toggle-label{writing-mode:vertical-rl;text-orientation:mixed;letter-spacing:.06em;text-transform:uppercase;justify-content:center;align-items:center;font-size:11px;font-weight:700;display:inline-flex}.dispatch-drawer-toggle-badge{color:#fff;text-align:center;background:#ef4444;border-radius:999px;min-width:16px;height:16px;padding:0 4px;font-size:9px;font-weight:700;line-height:16px;position:absolute;top:4px;right:3px;box-shadow:0 4px 10px #ef444447}.install-prompt{-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);z-index:120;background:#fffffff5;border:1px solid #e2e8f0eb;border-radius:16px;align-items:center;gap:10px;max-width:min(92vw,460px);padding:8px 10px 8px 12px;display:flex;position:fixed;bottom:16px;left:50%;transform:translate(-50%);box-shadow:0 14px 36px #0f172a1f}.install-prompt-copy{flex-direction:column;gap:1px;min-width:0;display:flex}.install-prompt-copy strong{color:var(--text-primary);font-size:12px;line-height:1.2}.install-prompt-copy span{color:var(--text-secondary);font-size:11px;line-height:1.35}.install-prompt-actions{flex-shrink:0;align-items:center;gap:6px;display:inline-flex}.install-prompt-confirm,.install-prompt-dismiss{color:var(--text-secondary);cursor:pointer;transition:var(--transition-color), var(--transition-transform);background:#fff;border:1px solid #94a3b83d;border-radius:999px;padding:6px 10px;font-size:11px;font-weight:600}.install-prompt-confirm{color:#065f46;background:linear-gradient(#ecfdf5,#d1fae5);border-color:#10b98152}.install-prompt-confirm:hover,.install-prompt-dismiss:hover{transform:translateY(-1px)}.dispatch-drawer .panel-resizer{z-index:3;background:0 0;width:12px;position:absolute;top:24px;bottom:24px}.dispatch-drawer .panel-resizer:after{background:#0ea5e957;height:72px}.dispatch-drawer .panel-resizer-left{right:-10px}.dispatch-drawer .panel-resizer-right{left:-10px}@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.modal-content{background:var(--bg-card);border:1px solid var(--border-light);border-radius:var(--radius-sm);width:700px;max-height:85vh;box-shadow:0 1px 3px #0000001a;box-shadow:var(--shadow-lg);position:relative}.modal-header{border-bottom:1px solid var(--border);padding:24px}.modal-header h2{color:var(--primary);align-items:center;gap:8px;font-size:24px;display:flex}.form-label{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em;margin-bottom:8px;font-size:12px;display:block}.form-input,.form-select{background:var(--bg-dark);border:1px solid var(--border-light);color:var(--text-primary);border-radius:var(--radius-sm);width:100%;padding:12px;font-family:Outfit}.form-input:focus,.form-select:focus{border-color:var(--primary)}input{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.connection-indicator{color:var(--text-secondary);align-items:center;gap:8px;font-size:13px;display:flex}.connection-dot{background:var(--success);border-radius:50%;width:8px;height:8px}.connection-dot.disconnected{background:var(--danger)}.connection-dot.reconnecting{background:var(--warning)}.dispatch-auto-switch{background:#a8f2ce33;border:1px solid #1a7a5c29;border-radius:999px;align-items:center;gap:12px;padding:8px 14px;display:inline-flex}.dispatch-auto-switch-copy{flex-direction:column;gap:2px;min-width:0;display:flex}.dispatch-auto-switch-copy strong{color:var(--primary-dark);font-size:12px;line-height:1.1}.dispatch-auto-switch-copy span{color:var(--text-muted);white-space:nowrap;font-size:11px;line-height:1.2}html{touch-action:manipulation}.calendar-event{border:none;box-shadow:0 2px 10px #0f172a29}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.calendar-container{flex-direction:column;height:100%;display:flex}.calendar-header{border-bottom:1px solid var(--border);background:var(--bg-surface);grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:4px 12px;padding:10px 14px;display:grid}.calendar-header-left{flex-direction:column;gap:4px;min-width:0;display:flex}.calendar-header-topline{align-items:center;gap:8px;min-width:0;display:flex}.calendar-header-date{flex:none;font-size:15px;font-weight:600}.calendar-header-tools{flex-wrap:wrap;grid-area:1/2/span 2;justify-content:flex-end;align-items:center;gap:6px 10px;display:inline-flex}.calendar-create-btn{align-self:center;min-height:34px}.calendar-supplement-btn{color:#0f766e;background:#ecfeff;border-color:#0d9488}.calendar-supplement-btn:hover{background:#ccfbf1;border-color:#0f766e}.calendar-slider-stack{flex-direction:column;gap:4px;display:inline-flex}.calendar-slider-control{color:var(--text-secondary);align-items:center;gap:6px;min-height:28px;font-size:12px;display:inline-flex}.calendar-slider-control input[type=range]{width:104px;accent-color:var(--primary);cursor:pointer}.calendar-slider-control strong{text-align:right;min-width:42px;color:var(--text-primary);font-size:10px}.calendar-legend{flex-wrap:wrap;align-items:center;gap:4px 8px;max-width:none;display:inline-flex}.calendar-legend-group{border:1px solid var(--border);background:#f8fafc;border-radius:999px;flex-wrap:wrap;align-items:center;gap:5px;padding:2px 6px;display:inline-flex}.calendar-legend-title{color:var(--text-muted);letter-spacing:.01em;font-size:10px;font-weight:700}.calendar-legend-items{flex-wrap:wrap;align-items:center;gap:6px;display:inline-flex}.calendar-legend-item{color:var(--text-secondary);align-items:center;gap:4px;font-size:10px;line-height:1;display:inline-flex}.calendar-legend-swatch{width:10px;height:10px;box-shadow:none;border:1px solid #0f172a1f;border-radius:3px;flex:0 0 10px}.calendar-column-header{z-index:30;border-bottom:1px solid var(--border);text-align:center;padding:4px 8px;font-weight:700;line-height:1.25;position:sticky;top:0}.calendar-column-header--unassigned,.calendar-column-header--technician{background:var(--bg-surface);color:var(--primary-light);font-size:16px}@media (width<=1320px){.calendar-header{grid-template-columns:1fr}.calendar-header-tools{grid-area:auto/1;justify-content:flex-start}}.calendar-legend-swatch.visual-state-booked{background:#dbeafe}.calendar-legend-swatch.visual-state-waiting-next,.calendar-legend-swatch.visual-state-arrived{background:#fde7b1}.calendar-legend-swatch.visual-state-in-service{background:#b9e7d1}.calendar-legend-swatch.visual-state-finished{background:#cbd5e1}.calendar-legend-swatch.visual-state-late{background:#f8c7af}.calendar-legend-swatch.visual-state-paused{background:#ffd792}.calendar-legend-swatch.visual-state-overtime{background:#f7b6b6}.calendar-legend-swatch.plan-state-soft-assigned,.calendar-legend-swatch.plan-state-locked,.calendar-legend-swatch.plan-state-unplanned{background:0 0;border-style:dashed;border-width:2px}.calendar-legend-swatch.plan-state-soft-assigned{background:#2563eb14;border-color:#1d4ed8}.calendar-legend-swatch.plan-state-locked{background:#0d94881f;border-color:#0f766e}.calendar-legend-swatch.plan-state-unplanned{background:#94a3b814;border-color:#94a3b8}.calendar-legend-badge{color:#fff;border-radius:6px;justify-content:center;align-items:center;width:18px;height:18px;font-size:10px;font-weight:900;display:inline-flex}.calendar-legend-badge.rotation{background:linear-gradient(#24579b,#183d72)}.calendar-legend-badge.designated{background:linear-gradient(#0f7a61,#0a5b48)}.calendar-body{flex:1;position:relative;overflow:auto}.time-grid{grid-template-columns:64px 1fr;width:max-content;min-width:100%;min-height:100%;display:grid}.time-grid-wrap{width:max-content;min-width:100%;position:relative}.timeline-now-marker{z-index:45;pointer-events:none;border-top:2px solid #0ea5e9d9;position:absolute;left:0;right:0}.timeline-now-marker:before{content:"";background:#0ea5e9f2;border-radius:50%;width:8px;height:8px;position:absolute;top:-5px;left:64px;box-shadow:0 0 0 2px #ffffffe6}.timeline-now-label{color:#f0f9ff;letter-spacing:.02em;background:#0284c7;border-radius:999px;height:20px;padding:0 6px;font-size:10px;font-weight:700;line-height:20px;position:absolute;top:-11px;left:6px}.timeline-hover-marker{z-index:44;pointer-events:none;border-top:1px dashed #0d9488e0;position:absolute;left:0;right:0}.timeline-hover-marker:before{content:"";background:#0d9488f2;border-radius:50%;width:6px;height:6px;position:absolute;top:-4px;left:64px;box-shadow:0 0 0 2px #ffffffe6}.timeline-hover-label{color:#f0fdfa;letter-spacing:.02em;background:#0f766eeb;border-radius:999px;height:18px;padding:0 6px;font-size:10px;font-weight:700;line-height:18px;position:absolute;top:-10px;right:8px}.time-labels{border-right:1px solid var(--border)}.time-label{height:var(--calendar-hour-height,100px);color:var(--text-muted);justify-content:center;align-items:flex-start;padding-top:4px;font-family:Roboto,sans-serif;font-size:11px;font-weight:500;display:flex}.time-slots{position:relative}.time-slot-line{height:var(--calendar-hour-height,100px);border-bottom:1px solid var(--border)}.time-slot-line:nth-child(odd){background:#ffffff05}.calendar-event{cursor:pointer;z-index:10;color:#17222d;border:1px solid #0f172a14;border-radius:14px;flex-direction:column;align-items:flex-start;gap:5px;padding:6px 8px 7px;transition:transform .18s,box-shadow .18s,background-color .12s,color .12s;display:flex;position:absolute;left:8px;overflow:hidden;box-shadow:0 10px 24px #0f172a29}.calendar-event:before{content:"";opacity:.28;background:currentColor;width:4px;position:absolute;inset:0 auto 0 0}.calendar-event:hover{z-index:20;transform:translateY(-2px);box-shadow:0 16px 30px #0f172a33}.calendar-event.short-hover-expand{contain:layout}.calendar-event.short-hover-expand.expanded{z-index:42;box-shadow:0 16px 32px #0f172a3d;height:var(--calendar-card-expand-height)!important}.calendar-event.short-hover-expand.expanded:hover{transform:translateY(-2px)}.calendar-event.short-hover-expand.expanded .event-title,.calendar-event.short-hover-expand.expanded .event-detail,.calendar-event.short-hover-expand.expanded .event-supporting-line{-webkit-line-clamp:unset;text-overflow:clip;white-space:normal;display:block;overflow:visible}.calendar-event .event-top-row{justify-content:space-between;align-items:flex-start;gap:6px;width:100%;display:flex}.calendar-event .event-pill-stack{flex-wrap:wrap;flex:auto;align-items:center;gap:4px;min-width:0;display:flex}.calendar-event .event-state-pill{letter-spacing:.04em;white-space:nowrap;box-sizing:border-box;background:#ffffffb8;border:1px solid;border-radius:999px;flex:none;justify-content:center;align-items:center;min-width:40px;max-width:calc(100% - 30px);min-height:24px;padding:0 8px 1px;font-size:10px;font-weight:800;line-height:1;display:inline-flex;overflow:visible}.calendar-event .event-delivery-pill{letter-spacing:.04em;white-space:nowrap;box-sizing:border-box;border:1px solid;border-radius:999px;justify-content:center;align-items:center;min-height:24px;padding:0 8px 1px;font-size:10px;font-weight:900;line-height:1;display:inline-flex}.calendar-event .event-delivery-pill.delivered{color:#0b6b45;background:#10b98124}.calendar-event .event-delivery-pill.pending{color:#9a5a00;background:#f59e0b24}.calendar-event .event-plan-pill{letter-spacing:.04em;white-space:nowrap;box-sizing:border-box;background:#ffffffc2;border:1px dashed;border-radius:999px;justify-content:center;align-items:center;min-height:22px;padding:0 7px 1px;font-size:9px;font-weight:900;line-height:1;display:inline-flex}.calendar-event .event-plan-pill.predicted{color:#1d4ed8;background:#2563eb14}.calendar-event .event-plan-pill.locked{color:#0f766e;background:#0d94881f}.calendar-event .event-plan-pill.unplanned{color:#64748b;background:#94a3b81f}.calendar-event .event-service-room-pill,.calendar-event .event-service-time-text{box-sizing:border-box;color:#0c6245;white-space:nowrap;text-overflow:ellipsis;align-items:center;font-size:10px;line-height:1;display:inline-flex;overflow:hidden}.calendar-event .event-service-room-pill{letter-spacing:.04em;background:#0f6b4b24;border:1px solid;border-radius:3px;flex:0 auto;max-width:72px;min-height:24px;padding:0 8px 1px;font-weight:800}.calendar-event .event-service-time-text{justify-content:flex-start;width:100%;min-width:0;min-height:20px;padding:0;font-family:Outfit,sans-serif;font-size:16px;font-weight:900;line-height:1.15}.calendar-event.visual-state-in-service .event-pill-stack{align-items:center}.calendar-event .event-state-pill.tone-booked{color:#1d4d89;background:#24579b1f}.calendar-event .event-state-pill.tone-arrived{color:#8f5300;background:#9a5a0024}.calendar-event .event-state-pill.tone-in-service{color:#0c6245;background:#0f6b4b24}.calendar-event .event-state-pill.tone-finished{color:#445268;background:#47556921}.calendar-event .event-state-pill.tone-late{color:#a24312;background:#bc4d1429}.calendar-event .event-state-pill.tone-paused{color:#995900;background:#b56a002e}.calendar-event .event-state-pill.tone-overtime{color:#9f1f16;background:#b423182b}.calendar-event .event-state-pill.tone-voided{color:#57677d;background:#64748b1f}.calendar-event .event-assign-corner{color:#fff;border-radius:8px;justify-content:center;align-items:center;width:24px;height:24px;font-size:12px;font-weight:900;line-height:1;display:inline-flex;box-shadow:inset 0 1px #ffffff38}.calendar-event .event-assign-corner.rotation{background:linear-gradient(#24579b,#183d72)}.calendar-event .event-assign-corner.designated{background:linear-gradient(#0f7a61,#0a5b48)}.calendar-event .event-assign-corner.pending{background:linear-gradient(#64748b,#475569)}.calendar-event .event-countdown{letter-spacing:-.04em;width:100%;font-size:17px;font-weight:900;line-height:.98}.calendar-event .event-countdown.accent-success{color:#0f6b4b}.calendar-event .event-countdown.accent-warning{color:#9a5a00}.calendar-event .event-countdown.accent-danger{color:#a61b1b}.calendar-event .event-countdown.accent-info{color:#24579b}.calendar-event .event-countdown.accent-muted{color:#475569}.calendar-event .event-main-lines{gap:2px;width:100%;min-width:0;display:grid}.calendar-event .event-supporting-line{color:#17222db8;white-space:nowrap;text-overflow:ellipsis;font-size:10px;font-weight:700;line-height:1.15;overflow:hidden}.calendar-event .event-plan-line{color:#17222da8;white-space:nowrap;text-overflow:ellipsis;font-size:9px;font-weight:700;line-height:1.1;overflow:hidden}.calendar-event .event-title{width:100%;min-width:0;font-family:Outfit,sans-serif}.calendar-event .event-title-grid{grid-template-columns:minmax(0,1fr);row-gap:2px;width:100%;display:grid}.calendar-event .event-title-project-inline,.calendar-event .event-title-project-line{white-space:nowrap;text-overflow:ellipsis;font-size:13px;font-weight:800;line-height:1.12;overflow:hidden}.calendar-event .event-detail-block{gap:1px;width:100%;display:grid}.calendar-event .event-detail{color:#17222db3;white-space:nowrap;text-overflow:ellipsis;width:100%;font-size:10px;font-weight:600;line-height:1.3;overflow:hidden}.calendar-event .event-schedule-line{color:#17222db8;white-space:nowrap;text-overflow:ellipsis;width:100%;font-size:9px;font-weight:600;line-height:1.1;overflow:hidden}.calendar-event.compact{gap:4px}.calendar-event.compact .event-countdown{font-size:15px}.calendar-event.compact .event-title-project-inline,.calendar-event.compact .event-title-project-line{font-size:12px}.calendar-event.compact .event-service-time-text{font-size:15px}.calendar-event.compact .event-detail,.calendar-event.compact .event-schedule-line,.calendar-event.compact .event-supporting-line,.calendar-event.compact .event-plan-line{font-size:9px}.calendar-event.tiny{gap:3px;padding:5px 6px}.calendar-event.tiny .event-state-pill{min-width:38px;min-height:22px;padding:0 6px 1px;font-size:10px}.calendar-event.tiny .event-assign-corner{border-radius:7px;width:20px;height:20px;font-size:11px}.calendar-event.tiny .event-countdown{font-size:14px}.calendar-event.tiny .event-title-project-inline,.calendar-event.tiny .event-title-project-line{font-size:11px}.calendar-event.tiny .event-service-time-text{font-size:14px}.calendar-event.tiny .event-detail,.calendar-event.tiny .event-schedule-line,.calendar-event.tiny .event-supporting-line,.calendar-event.tiny .event-plan-line{font-size:9px}.calendar-event.visual-state-booked{color:#24579b;background:linear-gradient(#eef5fb,#f8fbff)}.calendar-event.visual-state-waiting-next,.calendar-event.visual-state-arrived{color:#9a5a00;background:linear-gradient(#fff4df,#fffaf0)}.calendar-event.visual-state-in-service{color:#0f6b4b;background:linear-gradient(#e6f7ef,#f6fcf8)}.calendar-event.visual-state-finished{color:#475569;background:linear-gradient(#edf1f5,#f8fafc)}.calendar-event.visual-state-late{color:#bc4d14;background:linear-gradient(#fff4effa,#fff9f6fa),linear-gradient(135deg,#bc4d1414,#0000 55%);border-color:#bc4d1433;box-shadow:0 12px 28px #bc4d142e}.calendar-event.visual-state-paused{color:#b56a00;background:linear-gradient(#fff5e4fa,#fffbf3fa),linear-gradient(135deg,#b56a0014,#0000 58%);border-color:#b56a0038;box-shadow:0 12px 28px #b56a0029}.calendar-event.visual-state-overtime{color:#b42318;background:linear-gradient(#fdededfc,#fff6f6fc),linear-gradient(135deg,#b423181f,#0000 54%);border-color:#b4231842;box-shadow:0 14px 30px #b4231833}.calendar-event.visual-state-voided{color:#64748b;opacity:.78;background:linear-gradient(#f1f5f9,#f8fafc)}.calendar-event.dispatch-plan-soft_assigned,.calendar-event.dispatch-plan-soft-assigned{border:2px dashed #2563eb5c}.calendar-event.dispatch-plan-soft_assigned:after,.calendar-event.dispatch-plan-soft-assigned:after{content:"";pointer-events:none;border:1px dashed #2563eb38;border-radius:11px;position:absolute;inset:6px}.calendar-event.dispatch-plan-locked{border:2px dashed #0d948870;box-shadow:0 12px 28px #0f766e29}.calendar-event.dispatch-plan-locked:after{content:"";pointer-events:none;border:1px dashed #0d948847;border-radius:11px;position:absolute;inset:6px}.calendar-event.dispatch-plan-unplanned{background:linear-gradient(#f8fafc,#fff);border:2px dashed #94a3b861}.calendar-event.unassigned{color:#475569;background:linear-gradient(#eef2f7,#f8fafc)}.calendar-event.unassigned.guest-accented:before{background:var(--guest-accent,#38bdf8);opacity:.95}.calendar-event.visual-state-late:before,.calendar-event.visual-state-paused:before,.calendar-event.visual-state-overtime:before{opacity:.72;width:5px}.calendar-event.visual-state-late .event-countdown,.calendar-event.visual-state-paused .event-countdown,.calendar-event.visual-state-overtime .event-countdown{font-size:18px}.calendar-event.visual-state-late .event-title-project-inline,.calendar-event.visual-state-late .event-title-project-line,.calendar-event.visual-state-paused .event-title-project-inline,.calendar-event.visual-state-paused .event-title-project-line,.calendar-event.visual-state-overtime .event-title-project-inline,.calendar-event.visual-state-overtime .event-title-project-line{color:#17222df0}.calendar-event.visual-state-late .event-supporting-line,.calendar-event.visual-state-paused .event-supporting-line,.calendar-event.visual-state-overtime .event-supporting-line{color:#17222dc7}.calendar-event.highlighted{z-index:26;box-shadow:0 0 0 2px #ffffffe6,0 0 0 4px #0ea5e98c}.modal-overlay{z-index:1000;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0f172a99;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal-content{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);width:700px;max-height:85vh;box-shadow:var(--shadow-lg);flex-direction:column;display:flex;position:relative;overflow:hidden}.modal-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:20px 24px;display:flex}.modal-header h2{color:var(--text-primary);margin:0;font-size:20px}.modal-body{padding:24px;overflow-y:auto}.modal-footer{border-top:1px solid var(--border);background:var(--bg-dark);justify-content:flex-end;gap:12px;padding:16px 24px;display:flex}.form-group{margin-bottom:20px}.form-hint{color:var(--text-secondary);font-size:13px;line-height:1.5}.form-row{grid-template-columns:1fr 1fr;gap:16px;display:grid}.form-label{color:var(--text-primary);margin-bottom:8px;font-size:14px;font-weight:500;display:block}.form-input,.form-select{background:var(--bg-card);border:1px solid var(--border);color:var(--text-primary);border-radius:var(--radius-sm);box-sizing:border-box;width:100%;min-height:40px;padding:9px 12px;line-height:1.2;transition:border-color .2s}.form-input:focus,.form-select:focus{border-color:var(--primary);outline:none;box-shadow:0 0 0 3px #10b98126}.checkbox-inline{color:var(--text-primary);align-items:center;gap:8px;font-size:14px;display:inline-flex}.form-input[type=date]{appearance:none;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}.form-input[type=date]::-webkit-date-and-time-value{text-align:left;min-height:1.2em}.form-input[type=date]::-webkit-calendar-picker-indicator{cursor:pointer}.booking-modal,.supplement-modal{width:min(1232px,98vw);max-height:90vh}.booking-modal .btn.btn-sm{letter-spacing:.01em;text-transform:none;padding:6px 10px;font-size:12px}.booking-modal-header{padding:14px 18px}.booking-modal-body{flex-direction:column;gap:12px;padding:14px 16px;display:flex}.booking-modal-footer{padding:12px 16px}.booking-meta-card,.booking-guest-section{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:12px}.booking-meta-grid{grid-template-columns:minmax(230px,2.1fr) minmax(220px,1.7fr) repeat(2,minmax(160px,1fr));align-items:end;gap:12px;display:grid}.supplement-meta-grid{grid-template-columns:minmax(320px,2.4fr) minmax(150px,1fr) minmax(140px,1fr)}.booking-meta-source,.booking-meta-ref,.booking-meta-date,.booking-meta-slot{min-width:0}.booking-meta-source .source-selector{margin-top:2px}.booking-meta-ref .form-input,.booking-meta-date .form-input,.booking-meta-slot .form-select{height:40px;min-height:40px}.booking-ref-input{max-width:280px}.booking-meta-ref .form-input::placeholder{font-size:12px}.booking-meta-grid .form-group,.booking-guest-grid .form-group{margin-bottom:0}.source-selector{grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;display:grid}.source-chip{border:1px solid var(--border);color:var(--text-primary);border-radius:var(--radius-sm);cursor:pointer;min-height:40px;transition:var(--transition-color), var(--transition-transform);background:#f8fafc;justify-content:center;align-items:center;padding:8px 0;font-size:12px;font-weight:600;display:inline-flex}.source-chip:hover{border-color:#7dd3fc;transform:translateY(-1px)}.source-chip.active{color:#0c4a6e;background:#e0f2fe;border-color:#0284c7}.field-hint{color:var(--text-muted);margin-top:4px;font-size:11px}.guest-toolbar{justify-content:space-between;align-items:center;margin-bottom:10px;display:flex}.guest-toolbar-title{color:var(--text-primary);align-items:center;gap:6px;font-size:14px;font-weight:700;display:inline-flex}.booking-guest-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.guest-card{border:1px solid var(--border);border-radius:var(--radius-md);background:#f8fafc;flex-direction:column;gap:10px;padding:10px;display:flex}.guest-card-header{justify-content:space-between;align-items:center;display:flex}.guest-card-header h4{color:var(--text-primary);margin:0;font-size:14px}.guest-controls{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.selected-items{flex-wrap:wrap;gap:6px;min-height:32px;margin:6px 0 8px;display:flex}.empty-pill{border:1px dashed var(--border);color:var(--text-muted);border-radius:999px;align-items:center;padding:4px 10px;font-size:11px;display:inline-flex}.item-tag{color:#1e3a8a;white-space:nowrap;background:#eff6ff;border:1px solid #bfdbfe;border-radius:999px;align-items:center;gap:6px;padding:4px 8px;font-size:11px;display:inline-flex}.item-tag .remove{color:inherit;cursor:pointer;background:0 0;border:none;align-items:center;padding:0;font-size:11px;line-height:1;display:inline-flex}.project-quick-grid{grid-template-columns:repeat(5,minmax(0,1fr));gap:6px;max-height:320px;padding-right:2px;display:grid;overflow:auto}.project-quick-btn{color:#1e3a8a;border-radius:var(--radius-sm);text-align:left;cursor:pointer;transition:var(--transition-color), var(--transition-transform);background:#f8fbff;border:1px solid #bfdbfe;flex-direction:column;gap:1px;min-height:40px;padding:5px 6px;display:flex}.project-quick-btn:hover{background:#eff6ff;border-color:#60a5fa;transform:translateY(-1px)}.project-quick-btn.active{background:#dbeafe;border-color:#2563eb;box-shadow:inset 0 0 0 1px #2563eb59}.project-quick-btn strong{white-space:nowrap;text-overflow:ellipsis;font-size:11px;line-height:1.2;overflow:hidden}.project-quick-btn span{color:#1d4ed8;white-space:nowrap;text-overflow:ellipsis;font-size:9px;overflow:hidden}.supplement-form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.supplement-project-picker{grid-column:1/-1}@media (width<=1080px){.app-layout{grid-template-rows:70px 44vh 1fr;grid-template-columns:1fr}.side-dock{grid-area:2/1;grid-template-columns:minmax(180px, var(--tech-panel-width,272px)) var(--inner-resizer-width) minmax(90px, 1fr);border-right:none;border-bottom:1px solid var(--border)}.panel-resizer-side{display:none}.main-content{grid-area:3/1}.booking-modal,.supplement-modal{width:min(1120px,98vw)}.booking-meta-grid,.supplement-meta-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.booking-meta-source,.booking-meta-ref{grid-column:span 2}.booking-guest-grid,.guest-controls{grid-template-columns:1fr}.project-quick-grid,.source-selector{grid-template-columns:repeat(3,minmax(0,1fr))}.dispatch-layout{grid-template-columns:1fr;grid-template-rows:var(--header-height) 1fr}.dispatch-layout-left-open .dispatch-main,.dispatch-layout-right-open .dispatch-main{padding-left:0;padding-right:0}.dispatch-drawer{top:calc(var(--header-height) + 10px);max-width:min(78vw,420px);bottom:10px}.dispatch-drawer-toggle-left.is-open{left:10px}.dispatch-drawer-toggle-right.is-open{right:10px}}@media (width<=760px){.app-layout{grid-template-rows:70px 50vh 1fr}.side-dock{grid-template-columns:1fr;overflow-y:auto}.side-dock>.sidebar-left{border-right:none;border-bottom:1px solid var(--border);grid-area:1/1}.side-dock>.inner-panel-resizer{display:none}.side-dock>.sidebar-right{border-left:none;grid-area:2/1}.dispatch-layout{grid-template-rows:var(--header-height) 1fr}.dispatch-drawer{top:calc(var(--header-height) + 8px);width:auto;max-width:none;bottom:8px;left:8px;right:8px}.dispatch-drawer-left,.dispatch-drawer-right{width:auto}.dispatch-drawer-toggle{top:calc(var(--header-height) + 14px);border-radius:999px;width:72px;min-height:44px;padding:0 12px;bottom:auto;transform:none}.dispatch-drawer-toggle-left,.dispatch-drawer-toggle-left.is-open{left:12px}.dispatch-drawer-toggle-right,.dispatch-drawer-toggle-right.is-open{right:12px}.dispatch-drawer-toggle-label{writing-mode:horizontal-tb;letter-spacing:.04em}.dispatch-drawer-toggle-badge{top:-4px;right:-2px}.dispatch-drawer-toggle:hover{transform:translateY(-2px)}.dispatch-revenue-primary{font-size:28px}.install-prompt{align-items:flex-start;max-width:none;bottom:72px;left:12px;right:12px;transform:none}.install-prompt-actions{flex-direction:column;align-items:stretch}.booking-modal,.supplement-modal{width:96vw;max-height:92vh}.booking-meta-grid,.supplement-meta-grid{grid-template-columns:1fr}.source-selector,.project-quick-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.guest-toolbar{flex-direction:column;align-items:flex-start;gap:8px}.supplement-form-grid{grid-template-columns:1fr}}.context-menu{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);z-index:1000;flex-direction:column;min-width:200px;max-height:calc(100vh - 16px);padding:8px 0;display:flex;position:fixed;overflow:hidden auto}.context-menu-header{color:var(--text-secondary);border-bottom:1px solid var(--border);margin-bottom:4px;padding:8px 16px;font-size:13px;font-weight:600}.context-menu-btn{text-align:left;width:100%;color:var(--text-primary);cursor:pointer;transition:var(--transition-color);background:0 0;border:none;align-items:center;gap:8px;padding:8px 16px;font-size:14px;display:flex}.context-menu-btn:hover{background:var(--bg-card-hover)}.ui-badge{white-space:nowrap;letter-spacing:.02em;border-radius:6px;justify-content:center;align-items:center;padding:2px 8px;font-size:11px;font-weight:700;line-height:1.4;display:inline-flex}.ui-badge-soft{border:1px solid #0000000d}.ui-badge-info.ui-badge-soft{color:#0e7490;background:#0e74901f}.ui-badge-warning.ui-badge-soft{color:#c28b1e;background:#e8a8301f}.ui-badge-success.ui-badge-soft{color:#1a7a5c;background:#4d9a6f1f}.ui-badge-xs{border-radius:4px;padding:1px 4px;font-size:10px}.cashier-form-single{flex-direction:column;gap:16px;margin-top:16px;display:flex}.form-input-lg{letter-spacing:.05em;background:var(--surface-container-high);border-radius:12px;height:52px;padding:0 20px;font-size:18px;font-weight:500}.form-input-lg:focus{background:var(--bg-card);box-shadow:0 0 0 2px #1a7a5c33}.cashier-writeoff-success-overlay{background:var(--bg-card);z-index:1000;border-radius:var(--radius-lg);justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.success-anim-container{flex-direction:column;align-items:center;gap:12px;display:flex;position:relative}.success-icon-anim{color:var(--color-success);animation:.4s cubic-bezier(.175,.885,.32,1.275) both success-bounce;font-size:80px!important}@keyframes success-bounce{0%{opacity:0;transform:scale(0)}60%{transform:scale(1.2)}to{opacity:1;transform:scale(1)}}.success-anim-container h2{color:var(--text-primary);opacity:0;margin:0;font-size:24px;animation:.3s .1s forwards slide-up-fade}.success-anim-container p{color:var(--text-muted);opacity:0;margin:0;font-size:14px;animation:.3s .2s forwards slide-up-fade}@keyframes slide-up-fade{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.success-particles{pointer-events:none;position:absolute}.particle{background:var(--color-success-light);opacity:0;border-radius:50%;width:8px;height:8px;position:absolute}.particle.p1{animation:.6s .1s forwards p1-fly}.particle.p2{animation:.6s .1s forwards p2-fly}.particle.p3{animation:.6s .1s forwards p3-fly}.particle.p4{animation:.6s .1s forwards p4-fly}.particle.p5{animation:.6s .1s forwards p5-fly}.particle.p6{animation:.6s .1s forwards p6-fly}@keyframes p1-fly{0%{opacity:1;transform:translate(0)scale(1)}to{opacity:0;transform:translate(-40px,-60px)scale(0)}}@keyframes p2-fly{0%{opacity:1;transform:translate(0)scale(1)}to{opacity:0;transform:translate(50px,-50px)scale(0)}}@keyframes p3-fly{0%{opacity:1;transform:translate(0)scale(1)}to{opacity:0;transform:translate(-60px,40px)scale(0)}}@keyframes p4-fly{0%{opacity:1;transform:translate(0)scale(1)}to{opacity:0;transform:translate(45px,55px)scale(0)}}@keyframes p5-fly{0%{opacity:1;transform:translate(0)scale(1)}to{opacity:0;transform:translate(-10px,-80px)scale(0)}}@keyframes p6-fly{0%{opacity:1;transform:translate(0)scale(1)}to{opacity:0;transform:translate(70px,10px)scale(0)}}.ant-modal .ant-modal-content,.ant-modal-confirm .ant-modal-content,.modal-overlay .modal-content{border:2px solid var(--dispatch-ink,var(--admin-text-main,#17221d))!important;border-radius:0!important;box-shadow:16px 16px #0000001a!important}.ant-drawer .ant-drawer-content-wrapper{box-shadow:12px 14px #0000001a!important}.ant-drawer .ant-drawer-content{border:1px solid var(--dispatch-ink,var(--admin-text-main,#17221d));border-radius:0!important}.ant-dropdown .ant-dropdown-menu,.ant-select-dropdown,.ant-picker-dropdown .ant-picker-panel-container,.ant-popover .ant-popover-inner,.ant-tooltip .ant-tooltip-inner,.context-menu{border:1px solid var(--dispatch-ink,var(--admin-text-main,#17221d))!important;border-radius:0!important;box-shadow:10px 10px #0000001a!important}.login-page{--login-ink:oklch(20% .03 145);--login-muted:oklch(45% .02 145);--login-line:oklch(88% .02 145);--login-green:oklch(35% .06 145);--login-green-soft:oklch(90% .03 145);background-color:var(--admin-surface,#fff);min-height:100vh;color:var(--login-ink);font-family:var(--admin-font-sans,"Outfit", sans-serif);place-items:center;padding:40px 24px;display:grid}.login-container{flex-direction:column;gap:48px;width:100%;max-width:440px;display:flex}.login-header{text-align:left;border-bottom:2px solid var(--login-ink);padding-bottom:32px}.login-header .eyebrow{letter-spacing:.15em;text-transform:uppercase;color:var(--login-green);margin-bottom:12px;font-size:10px;font-weight:600;display:block}.login-header h1{font-family:var(--admin-font-serif,"Iowan Old Style", Georgia, serif);letter-spacing:-.02em;margin:0;font-size:clamp(2.5rem,8vw,3.5rem);line-height:1}.login-header p{color:var(--login-muted);max-width:320px;margin:16px 0 0;font-size:14px;line-height:1.6}.login-form-wrap{border:1px solid var(--login-line);background:0 0;padding:40px}.login-form-wrap label{letter-spacing:.15em;text-transform:uppercase;color:var(--login-ink);margin-bottom:12px;font-size:10px;font-weight:500;display:block}.login-page .ant-form-item-label>label{letter-spacing:.15em!important;text-transform:uppercase!important;color:var(--login-ink)!important;height:auto!important;font-size:10px!important;font-weight:500!important}.login-page .ant-input{border:none!important;border-bottom:1px solid var(--login-line)!important;box-shadow:none!important;color:var(--login-ink)!important;font-size:18px!important;font-family:var(--admin-font-sans)!important;background:0 0!important;border-radius:0!important;padding:12px 0!important}.login-page .ant-input:focus,.login-page .ant-input-focused{border-bottom-color:var(--login-ink)!important}.login-page .ant-btn{font-family:var(--admin-font-sans,"Outfit", sans-serif)!important;text-transform:uppercase!important;letter-spacing:.12em!important;border:1px solid var(--login-ink)!important;height:48px!important;color:var(--login-ink)!important;box-shadow:none!important;background:0 0!important;border-radius:0!important;font-size:11px!important;font-weight:700!important;transition:all .2s cubic-bezier(.16,1,.3,1)!important}.login-page .ant-btn-primary,.login-page .ant-btn:hover{background:var(--login-ink)!important;color:#fff!important}.login-footer{margin-top:24px}.login-download-card{border-top:1px solid var(--login-line);padding-top:32px}.login-download-card span{color:var(--login-muted);font-size:11px;font-style:italic;font-family:var(--admin-font-serif);margin-bottom:16px;display:block}.login-download-trigger{color:var(--login-ink);letter-spacing:.05em;text-transform:uppercase;cursor:pointer;background:0 0;border:none;align-items:center;gap:12px;padding:0;font-size:12px;font-weight:600;transition:opacity .2s;display:inline-flex}.login-download-trigger:hover{opacity:.7}.login-download-trigger svg{font-size:16px}.ant-modal-content{border-radius:0!important;padding:40px!important;box-shadow:16px 16px #0000001a!important}.ant-modal-header{margin-bottom:24px!important}.ant-modal-title{font-family:var(--admin-font-serif)!important;font-size:24px!important}.ant-modal-footer .ant-btn{height:38px!important}@media (width<=640px){.login-container{gap:32px}.login-form-wrap{padding:24px}}
