/* GENERATED by scripts/build-canon-scheduler-bridge.js — do not edit.
   The legacy rules that reach scheduler.html's markup, inside the
   canon components layer. See that script for why this exists.
     css/style.css: 130 rules kept, 566 dropped
     css/dashboard.css: 329 rules kept, 626 dropped
     legacy/css/scheduler.css: 1282 rules kept, 36 dropped
     legacy/hub/css/dispatch.css: 381 rules kept, 1 dropped
     legacy/hub/css/customer360.css: 38 rules kept, 25 dropped */

@layer components {
/* ── css/style.css ── */
.app { display: flex; flex-direction: column; height: 100vh; }
  .logo { display: flex; align-items: center; gap: 9px; font-size: var(--text-lg); font-weight: 600; color: var(--text-primary); letter-spacing: -0.01em; }
  .topbar-badge {
    font-size: var(--text-2xs); font-weight: 500;
    background: rgba(34,197,94,0.12); color: #22c55e;
    border: 1px solid rgba(34,197,94,0.2);
    padding: var(--sp-0_5) var(--sp-2); border-radius: 20px; letter-spacing: 0.02em;
    flex-shrink: 0; white-space: nowrap;
  }
  .ai-credit-chip .ti { font-size: 1.05em; line-height: 1; flex-shrink: 0; }
  .ai-credit-chip.is-low {
    color: #ef4444; background: rgba(239,68,68,0.12); border-color: rgba(239,68,68,0.25);
  }
  .ai-credit-chip.is-low:hover { background: rgba(239,68,68,0.2); }
  .topbar-save-status.is-dirty { color: #f59e0b; }
  .topbar-save-status.is-saved { color: var(--text-muted); }
  .floor-tab.active {
    color: var(--accent-fg); background: var(--accent, #33b1ff);
    border-color: var(--accent, #33b1ff);
  }
  .toolbar {
    display: flex; flex-direction: column;
    background: var(--bg-sidebar);
    border-bottom: 1px solid var(--border);
    flex-shrink: 0;
  }
  .btn.active { background: var(--accent-light); color: var(--accent); border-color: var(--border-focus); }
  .btn-secondary {
    width: 100%; padding: 7px var(--sp-3); font-size: var(--text-sm); font-weight: 500;
    background: rgba(255,255,255,0.05); color: var(--text-secondary);
    border: 1px solid var(--border); border-radius: var(--radius-md);
    cursor: pointer; margin-top: var(--sp-1_5);
    display: flex; align-items: center; justify-content: center; gap: var(--sp-1_5);
    transition: all var(--transition);
  }
  .btn-secondary:hover { background: rgba(255,255,255,0.09); color: var(--text-primary); }
  .btn-icon {
    width: 28px; height: 28px; padding: 0;
    display: inline-flex; align-items: center; justify-content: center;
    border-radius: var(--radius-md); background: transparent;
    border: 1px solid var(--border); color: var(--text-secondary);
    cursor: pointer; transition: all var(--transition); font-size: var(--text-md);
  }
  .btn-icon:hover { background: rgba(255,255,255,0.06); color: var(--text-primary); }
  .btn-icon:active:not(:disabled) { transform: scale(0.9); }
  .btn-icon:disabled { opacity: 0.3; cursor: not-allowed; }
  .btn-ai.loading { animation: pulse-ai 1.2s ease infinite; }
  @keyframes pulse-ai { 0%,100% { opacity: 1; } 50% { opacity: 0.5; } }
  .color-swatch.selected { border-color: #fff; box-shadow: 0 0 0 1px rgba(255,255,255,0.3); transform: scale(1.15); }
  .main { display: flex; flex: 1; overflow: hidden; }
  .sidebar {
    width: 288px; flex-shrink: 0;
    background: var(--bg-sidebar); border-right: 1px solid var(--border);
    display: flex; flex-direction: column; overflow: hidden;
    transition: width 0.22s ease;
  }
  .sidebar.collapsed { width: 52px; }
  .sidebar.collapsed .sidebar-tabs { flex-direction: column; border-bottom: none; padding: var(--sp-1); gap: 3px; }
  .sidebar.collapsed .s-tab-label { display: none; }
  .sidebar.collapsed .sidebar-pane { display: none !important; }
  .sidebar.collapsed .sidebar-hint { display: none; }
  .sidebar.collapsed .sidebar-tab { padding: 11px 0; border-bottom: none; margin-bottom: 0; border-radius: var(--radius-md); }
  .sidebar.collapsed .sidebar-tab.active { background: var(--accent-light); }
  .sidebar.collapsed .sidebar-tab i { font-size: 19px; }
  .sidebar.collapsed .sidebar-collapse-btn { width: auto; border-left: none; border-top: 1px solid var(--border); margin: var(--sp-1) var(--sp-1) 0; padding: 9px 0; border-radius: var(--radius-md); }
  .section-title { font-size: var(--text-xs); font-weight: 600; color: var(--text-muted); text-transform: uppercase; letter-spacing: 0.05em; }
  .duct-item.selected { background: var(--accent-light); border-color: rgba(51,177,255,0.3); }
  .legend { display: flex; flex-direction: column; gap: 5px; margin-top: var(--sp-2_5); }
  .brand-badge.mid { background: rgba(51,177,255,0.12); color: #5cc0ff; border: 1px solid rgba(51,177,255,0.2); }
  .brand-badge.budget { background: rgba(34,197,94,0.1); color: #4ade80; border: 1px solid rgba(34,197,94,0.2); }
  .upload-box.dragging { border-color: var(--accent); background: #f0f7ff; }
  .ai-status-overlay.active { opacity: 1; visibility: visible; pointer-events: auto; }
  .ai-step.active  { color: var(--text-primary); font-weight: 500; }
  .ai-step.pending { color: var(--text-muted); opacity: 0.5; }
  #uploadOverlay.loading .upload-choice-row,
  #uploadOverlay.loading .upload-box,
  #uploadOverlay.loading .upload-alt,
  #uploadOverlay.loading .btn-demo { display: none; }
  #uploadOverlay.loading .upload-loading { display: flex; }
  .modal-bg { display: none; position: fixed; inset: 0; background: rgba(0,0,0,0.6); backdrop-filter: blur(4px); z-index: 100; align-items: center; justify-content: center; }
  .modal-bg.open { display: flex; }
  .modal { background: var(--bg-modal); border-radius: var(--radius-xl); border: 1px solid var(--border); padding: var(--sp-7); max-width: 520px; width: 90%; max-height: 82vh; overflow-y: auto; box-shadow: var(--shadow-lg); }
  .modal::-webkit-scrollbar { width: 4px; }
  .modal::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.1); border-radius: 2px; }
  .modal-title-icon.blue { background: rgba(51,177,255,0.12); border: 1px solid rgba(51,177,255,0.2); color: #5cc0ff; }
  @media (min-width: 769px) {
    body:has(.chat-panel.open) .toast-container { right: 340px; }
  }
  .unit-card.active { background: var(--accent-light); border-color: var(--border-focus); }
  .unit-card.active .unit-card-icon { background: var(--accent-light); border-color: rgba(51,177,255,0.4); }
  @keyframes fadeIn { from { opacity: 0; transform: scale(0.96); } to { opacity: 1; transform: scale(1); } }
  .modal-bg.open .modal { animation: fadeIn 0.18s ease; }
  @keyframes spin { to { transform: rotate(360deg); } }
  .spin { animation: spin 0.8s linear infinite; }
  .settings-tab.active { color: var(--accent); border-bottom-color: var(--accent); }
  .settings-pane.active { display: block; }

  .theme-grid { display: grid; grid-template-columns: repeat(5, 1fr); gap: var(--sp-2); }
  .theme-card { border: 2px solid var(--border); border-radius: var(--radius-md); cursor: pointer; overflow: hidden; transition: all var(--transition); }
  .theme-card:hover { border-color: rgba(255,255,255,0.2); transform: translateY(-1px); }
  .theme-card.active { border-color: var(--accent); box-shadow: 0 0 0 1px var(--accent); }
  .theme-preview { height: 52px; display: flex; gap: 3px; padding: 5px; }
  .theme-preview-sidebar { width: 30%; border-radius: 3px 0 0 3px; }
  .theme-preview-canvas { flex: 1; border-radius: 0 3px 3px 0; position: relative; }
  .theme-preview-dot { width: 8px; height: 8px; border-radius: 50%; position: absolute; bottom: 5px; right: 5px; }
  .theme-name { font-size: var(--text-2xs); font-weight: 500; text-align: center; padding: 5px var(--sp-0_5); color: var(--text-secondary); }
  .theme-card.active .theme-name { color: var(--accent); font-weight: 600; }
  .accent-dot.active { border-color: rgba(255,255,255,0.85); box-shadow: 0 0 0 2px currentColor; }
  .icon-option.active { background: var(--accent-light); color: var(--accent); border-color: var(--border-focus); }
  .duct-preset-btn.active { background: var(--accent-light); color: var(--accent); border-color: var(--border-focus); }
  .density-btn.active { background: var(--accent-light); color: var(--accent); }
.lib-tab.active { color: var(--accent); background: var(--bg-card); border-color: var(--border); }
.sidebar-tab.active { color: var(--accent); border-bottom-color: var(--accent); background: var(--accent-light); }
.sidebar.collapsed .s-tab-badge { position: absolute; top: 3px; right: 5px; }
.sidebar-pane.active { display: flex; }
.acc-section:not(.collapsed) > .acc-header { background: rgba(255,255,255,0.035); }
.acc-section.collapsed .acc-chevron { transform: rotate(-90deg); }
.acc-section.collapsed .acc-body-grid { grid-template-rows: 0fr; }
.auth-gate {
  position: fixed; inset: 0; background: rgba(0,0,0,0.7); backdrop-filter: blur(8px);
  z-index: 500; display: flex; align-items: center; justify-content: center;
}
.auth-gate-card {
  background: var(--bg-modal); border: 1px solid var(--border); border-radius: var(--radius-xl);
  padding: var(--sp-10) 36px; max-width: 380px; width: 90%; text-align: center;
  box-shadow: var(--shadow-lg);
}
.auth-gate-logo { margin-bottom: var(--sp-7); }
.auth-gate-icon {
  width: 56px; height: 56px; border-radius: 14px; margin: 0 auto var(--sp-3);
  background: linear-gradient(135deg, var(--accent), var(--brand-secondary));
  display: flex; align-items: center; justify-content: center;
  font-size: 28px; color: #fff; box-shadow: 0 4px 20px var(--accent-glow);
}
.auth-gate-name { font-size: 20px; font-weight: 700; }
.auth-gate-btn {
  display: flex; align-items: center; justify-content: center; gap: var(--sp-2);
  width: 100%; padding: var(--sp-3); font-size: var(--text-md); font-weight: 600;
  background: var(--accent); color: var(--accent-fg); border: none; border-radius: var(--radius-md);
  cursor: pointer; text-decoration: none; margin-bottom: var(--sp-2_5);
  transition: background var(--transition);
}
.auth-gate-btn:hover { background: var(--accent-hover); }
.auth-gate-guest-btn {
  width: 100%; padding: var(--sp-2_5); font-size: var(--text-base); color: var(--text-muted);
  background: transparent; border: 1px solid var(--border); border-radius: var(--radius-md);
  cursor: pointer; font-family: var(--font); transition: all var(--transition);
  display: flex; align-items: center; justify-content: center; gap: var(--sp-2);
}
.auth-gate-guest-btn:hover { border-color: rgba(255,255,255,0.18); color: var(--text-primary); }
.auth-gate-home-link {
  display: flex; align-items: center; justify-content: center; gap: var(--sp-1);
  margin-top: var(--sp-3); font-size: var(--text-base); color: var(--text-muted);
  text-decoration: none; transition: color var(--transition);
}
.auth-gate-home-link:hover { color: var(--text-primary); }
.user-dropdown.open { display: block; }
.export-dropdown.open { display: block; animation: fadeIn 0.12s ease; }
.ai-cost-badge .ti { font-size: 1em; line-height: 1; color: inherit; }
.export-dropdown-item:hover .ai-cost-badge .ti { color: var(--text-secondary); }
.dropdown-section-label .ti-circle-check { color: var(--success, #22c55e); font-size: var(--text-sm); }
.health-breakdown.is-open { display: block; animation: fadeIn 0.12s ease; }
.chat-panel.open { transform: translateX(0); }
.team-chat-panel.open { transform: translateX(0); }
.tc-activity .ti { font-size: var(--text-xs); }
.team-chat-tab.active { color: var(--text-primary); border-bottom-color: var(--accent); }
.equip-tab.active { background: var(--bg-card); color: var(--text-primary); box-shadow: 0 1px 3px rgba(0,0,0,0.25); }
.wf-step.active .wf-icon { background: var(--accent-light);   color: var(--accent); }
.wf-step.pending .wf-icon { background: rgba(255,255,255,0.05); color: var(--text-muted); }
.wf-step.pending .wf-label { color: var(--text-muted); }
#sidebarOverlay.active { display: block; }

@media (max-width: 768px) {
  .sidebar {
    position: fixed; left: -100%; top: 0; bottom: 0;
    width: 86vw; max-width: 340px;
    z-index: 40; transition: left 0.25s ease;
    box-shadow: 4px 0 24px rgba(0,0,0,0.4);
  }
  .sidebar.mobile-open { left: 0; }
  .sidebar.collapsed { width: 86vw; max-width: 340px; }
  .sidebar.collapsed .sidebar-pane { display: flex !important; }
  .sidebar.collapsed .sidebar-tabs { flex-direction: row; }
  .sidebar.collapsed .sidebar-hint { display: flex; }
  .sidebar.collapsed .s-tab-label { display: inline; }
  .toolbar { position: relative; }
  .logo { font-size: var(--text-base); }
  .topbar-actions > .btn-icon { width: 100%; }
  .topbar-actions .btn-icon { width: 100%; justify-content: flex-start; height: 42px; gap: 9px; }
  .btn-icon { width: 44px; height: 44px; font-size: var(--text-lg); }
  .modal { padding: var(--sp-5) var(--sp-4); }
  .theme-grid { grid-template-columns: repeat(3, 1fr); }
  .auth-gate-card { padding: var(--sp-7) var(--sp-5); }
}
.context-menu.open { display: block; }
.context-menu-item.danger { color: #f87171; }
.context-menu-item.danger:hover { background: rgba(239,68,68,0.08); border-color: rgba(239,68,68,0.2); }
.cmd-palette-bg.open { display: flex; animation: fadeIn 0.15s ease; }
.cmd-result-item.active {
  background: var(--accent-light); color: var(--text-primary); border-color: rgba(51,177,255,0.2);
}
.cmd-result-item.active i { color: var(--accent); }
body.nd-readonly .toolbar .btn:not(#btnUndo):not(#btnRedo):not(#btnSnap):not(#btnRooms) {
  opacity: 0.4; pointer-events: none;
}
body.nd-readonly .toolbar .btn-icon:not(#btnUndo):not(#btnRedo) {
  opacity: 0.4; pointer-events: none;
}
.toolbar { box-shadow: var(--edge-light); }
.sidebar { box-shadow: var(--edge-light); }
.modal { box-shadow: var(--shadow-lg); }
.sidebar-tab.active {
  border-bottom-color: transparent;
  background-image: var(--accent-line);
  background-repeat: no-repeat;
  background-position: bottom;
  background-size: 100% 2px;
}
.btn.active { box-shadow: var(--edge-light); }
@media (prefers-reduced-motion: reduce) {
  .modal-bg.open .modal { animation: none; }
}

/* ── css/dashboard.css ── */
@keyframes spin { to { transform: rotate(360deg); } }
    .spin { display: inline-block; animation: spin 0.8s linear infinite; }
    @keyframes fadeIn { from { opacity:0; transform:translateY(4px); } to { opacity:1; transform:translateY(0); } }
    .sidebar {
      background: var(--surface); border-right: 1px solid var(--border);
      display: flex; flex-direction: column; overflow: hidden;
    }
    .nav-group.collapsed .nav-chevron { transform: rotate(-90deg); }
    .nav-group.collapsed .nav-group-items { max-height: 0; }
    .nav-item.active { background: rgba(59,130,246,0.12); color: var(--accent); }
    .dash-section { padding: var(--sp-7) var(--sp-8); animation: fadeIn 0.2s ease; }
    .section-title {
      position: relative; padding-left: var(--sp-4);
      font-size: 30px; font-weight: 800; letter-spacing: -0.03em; line-height: 1.15; margin-bottom: 7px;
      background: linear-gradient(118deg, var(--text) 35%, var(--accent) 125%);
      -webkit-background-clip: text; background-clip: text;
      -webkit-text-fill-color: transparent; color: transparent;
    }
    .section-title::before {
      content: ""; position: absolute; left: 0; top: 5px; bottom: 5px;
      width: 4px; border-radius: 4px;
      background: linear-gradient(180deg, var(--accent), var(--brand-secondary, #60a5fa));
      box-shadow: 0 0 14px -2px var(--accent);
    }
    .section-subtitle { font-size: var(--text-md); color: var(--text-muted); margin-bottom: 26px; padding-left: var(--sp-4); }
    .btn-secondary { background: rgba(255,255,255,0.07); color: var(--text); border: 1px solid var(--border); }
    .btn-secondary:hover { background: rgba(255,255,255,0.11); }
    .stat-card {
      background: var(--card); border: 1px solid var(--border); border-radius: var(--radius); padding: 18px var(--sp-5);
    }
    .stat-label {
      font-size: var(--text-xs); font-weight: 700; color: var(--text-muted); text-transform: uppercase;
      letter-spacing: 0.06em; margin-bottom: var(--sp-2_5); display: flex; align-items: center; gap: var(--sp-2);
    }
    .stat-icon {
      width: 26px; height: 26px; border-radius: 7px;
      display: flex; align-items: center; justify-content: center; font-size: var(--text-md);
    }
    .si-blue   { background: rgba(59,130,246,0.12); color: var(--accent); }
    .si-purple { background: rgba(139,92,246,0.12); color: #8b5cf6; }
    .si-green  { background: rgba(34,197,94,0.12);  color: #22c55e; }
    .si-amber  { background: rgba(245,158,11,0.12); color: #f59e0b; }
    .stat-value { font-size: 28px; font-weight: 700; letter-spacing: -0.03em; line-height: 1; }
    .stat-value.sm { font-size: var(--text-2xl); padding-top: 5px; }
    .stat-sub { font-size: var(--text-xs); color: var(--text-muted); margin-top: 5px; }
    .skeleton {
      background: linear-gradient(90deg, var(--card) 0%, rgba(255,255,255,0.06) 50%, var(--card) 100%);
      background-size: 200% 100%; animation: shimmer 1.5s infinite; border-radius: 6px;
    }
    @keyframes shimmer { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } }
    .badge {
      display: inline-block; background: rgba(59,130,246,0.1); color: var(--accent);
      font-size: var(--text-2xs); font-weight: 700; padding: var(--sp-0_5) 7px; border-radius: 10px;
      border: 1px solid rgba(59,130,246,0.18);
    }
    .empty-state { text-align: center; padding: var(--sp-10) var(--sp-5); color: var(--text-muted); }
    .empty-state i { font-size: 40px; display: block; margin-bottom: var(--sp-2_5); opacity: 0.4; }
    .empty-state p { font-size: var(--text-md); margin-bottom: var(--sp-3_5); }
    .btn-star.pinned { color: #f59e0b; }
    .status-select.in-progress { background: rgba(245,158,11,0.1); color: #fbbf24; border-color: rgba(245,158,11,0.25); }
    .status-select.submitted   { background: rgba(59,130,246,0.1);  color: #60a5fa; border-color: rgba(59,130,246,0.25); }
    .status-select.complete    { background: rgba(34,197,94,0.1);   color: #4ade80; border-color: rgba(34,197,94,0.25); }
    .filter-select {
      background: var(--card); border: 1px solid var(--border); border-radius: 8px;
      color: var(--text); font-family: inherit; font-size: var(--text-sm); padding: 7px var(--sp-2_5); cursor: pointer;
      width: auto; flex-shrink: 0;
    }
    .filter-select:focus { outline: none; border-color: var(--accent); }
    .analytics-metrics { display: grid; grid-template-columns: repeat(4, 1fr); gap: var(--sp-3_5); margin-bottom: 22px; }
    .chart-card {
      background: var(--card); border: 1px solid var(--border); border-radius: var(--radius); padding: var(--sp-5);
    }
    .role-badge.admin { background: rgba(245,158,11,0.12); color: #f59e0b; border: 1px solid rgba(245,158,11,0.2); }
    .role-badge.user  { background: rgba(139,92,246,0.1);  color: #a78bfa; border: 1px solid rgba(139,92,246,0.18); }
    .admin-notif-item.unread { background: rgba(59,130,246,0.06); }
    .admin-notif-item.unread .admin-notif-icon { background: rgba(59,130,246,0.18); color: var(--accent); }
    .customer-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: var(--sp-3_5); }
    .customer-card {
      background: var(--card); border: 1px solid var(--border); border-radius: var(--radius);
      padding: 18px var(--sp-5); transition: border-color 0.15s;
    }
    .customer-card:hover { border-color: rgba(59,130,246,0.28); }
    .customer-card-name { font-size: var(--text-lg); font-weight: 700; margin-bottom: 3px; }
    .customer-card-address { font-size: var(--text-sm); color: var(--text-muted); margin-bottom: var(--sp-2_5); min-height: 16px; }
    .customer-card-meta {
      font-size: var(--text-xs); color: var(--text-muted); font-weight: 700; text-transform: uppercase;
      letter-spacing: 0.05em; margin-bottom: var(--sp-2);
    }
    .customer-project-list { display: flex; flex-direction: column; gap: var(--sp-1); }
    .customer-project-item {
      display: flex; align-items: center; justify-content: space-between; gap: var(--sp-2);
      font-size: var(--text-sm); padding: 5px var(--sp-2); background: rgba(255,255,255,0.03);
      border-radius: 6px; border: 1px solid transparent;
    }
    .customer-project-item:hover { border-color: var(--border); }
    .customer-project-name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--text); }
    .modal-overlay {
      position: fixed; inset: 0; background: rgba(0,0,0,0.55); backdrop-filter: blur(4px);
      display: flex; align-items: center; justify-content: center; z-index: 1000;
    }
    .modal-box {
      background: var(--surface); border: 1px solid var(--border); border-radius: 16px;
      padding: var(--sp-7); width: 100%; max-width: 440px; box-shadow: 0 24px 80px rgba(0,0,0,0.5);
    }
    .modal-box h3 { font-size: var(--text-xl); font-weight: 700; margin-bottom: var(--sp-5); display: flex; align-items: center; gap: var(--sp-2); }
    .form-group { margin-bottom: var(--sp-3_5); }
    .admin-tab.active { color: var(--accent); border-bottom-color: var(--accent); }
    .announcement-banner.info     { background: rgba(59,130,246,0.1);  border: 1px solid rgba(59,130,246,0.25); }
    .announcement-banner.warning  { background: rgba(245,158,11,0.1);  border: 1px solid rgba(245,158,11,0.25); }
    .announcement-banner.critical { background: rgba(239,68,68,0.1);   border: 1px solid rgba(239,68,68,0.3); }
    .announcement-banner.info i     { color: var(--accent); }
    .announcement-banner.warning i  { color: #f59e0b; }
    .announcement-banner.critical i { color: #f87171; }
    .settings-sidebar-link.active { color: var(--accent); border-left-color: var(--accent); background: rgba(255,255,255,0.04); }
    .settings-accordion.open .settings-accordion-chevron { transform: rotate(180deg); }
    .settings-accordion.open .settings-accordion-body { display: block; }
    .pagination {
      display: flex; align-items: center; gap: 5px; padding: var(--sp-3) var(--sp-4);
      border-top: 1px solid var(--border); justify-content: flex-end;
    }
    .page-btn.active  { background: var(--accent); color: #fff; border-color: var(--accent); }
    .equip-type-tab.active { background: rgba(59,130,246,0.15); color: var(--accent); border-color: rgba(59,130,246,0.3); }
    .inline-badge.active   { background: rgba(34,197,94,0.1);  color: #4ade80; border: 1px solid rgba(34,197,94,0.2); }
    .inline-badge.inactive { background: rgba(239,68,68,0.1);  color: #f87171; border: 1px solid rgba(239,68,68,0.2); }
    .inline-badge.builtin  { background: rgba(139,92,246,0.1); color: #a78bfa; border: 1px solid rgba(139,92,246,0.2); }
    .setup-box.open .setup-box-chevron { transform: rotate(180deg); }
    .canvas-hero-card.dismissed { display: none; }
    .view-toggle-btn.active { background:rgba(59,130,246,0.15); color:var(--accent); border-color:rgba(59,130,246,0.3); }
    .compliance-badge.pass { background:rgba(34,197,94,0.1); color:#4ade80; border:1px solid rgba(34,197,94,0.2); }
    .compliance-badge.fail { background:rgba(239,68,68,0.1); color:#f87171; border:1px solid rgba(239,68,68,0.2); }
    .ticket-status.open        { background:rgba(59,130,246,0.1);color:#60a5fa;border-color:rgba(59,130,246,0.25); }
    .ticket-status.in-progress { background:rgba(245,158,11,0.1);color:#fbbf24;border-color:rgba(245,158,11,0.25); }
    .ticket-status.resolved    { background:rgba(34,197,94,0.1);color:#4ade80;border-color:rgba(34,197,94,0.2); }
    .ticket-priority.low        { color:var(--text-muted); }
    .ticket-priority.normal     { color:var(--accent); }
    .ticket-priority.high       { color:#f59e0b; }
    .comment-bubble.staff { border-color:rgba(59,130,246,0.3);background:rgba(59,130,246,0.05); }
    .faq-card.open .faq-card-body { display:block; }
@media (max-width: 768px) {
  .sidebar {
    position: fixed; left: -240px; top: 0;
    width: 220px; height: 100vh; z-index: 300;
    transition: left 0.25s ease; overflow-y: auto;
  }
  .sidebar.open { left: 0; }
  .dash-section { padding: var(--sp-5) var(--sp-4); }
  .section-title { font-size: 23px; padding-left: 13px; }
  .section-subtitle { padding-left: 13px; }
  .analytics-metrics { grid-template-columns: repeat(2, 1fr) !important; }
  .customer-grid     { grid-template-columns: 1fr; }
  .modal-box { margin: var(--sp-4); max-width: calc(100% - 32px) !important; }
  .dash-section { overflow-x: hidden; }
}

@media (max-width: 480px) {
  .analytics-metrics { grid-template-columns: 1fr !important; }
  .stat-value        { font-size: 22px; }
}
.form-group.form-group-tight { margin-bottom: 0; }
.tab-sub.active { color: #fff; background: var(--accent); }
.list-row {
  display: flex; align-items: center; justify-content: space-between; gap: var(--sp-3);
  padding: var(--sp-3) var(--sp-5); border-bottom: 1px solid var(--border); transition: background 0.15s;
}
.list-row:last-child { border-bottom: none; }
.list-row:hover { background: rgba(255,255,255,0.025); }
.dt-state           { --_c: var(--doc-sent); display: inline-flex; align-items: center; gap: var(--sp-1); text-transform: none;
                      color: var(--_c); background: color-mix(in srgb, var(--_c) 14%, transparent); border-color: color-mix(in srgb, var(--_c) 30%, transparent); }
.dt-state i         { font-size: var(--text-sm); }
.dt-state.quoted    { --_c: var(--doc-sent); }
.dt-state.scheduled { --_c: var(--st-scheduled); }
.dt-state.invoiced  { --_c: var(--doc-paid); }
.nav-group.collapsed .nav-group-subtitle { display: block; }
.gs-step.active .gs-num { border-color: var(--accent); color: var(--accent); }
.gs-step.active { color: var(--text); }
.kbd {
  background: var(--bg); border: 1px solid var(--border); border-radius: 4px;
  padding: var(--sp-0_5) var(--sp-1_5); font-size: var(--text-xs); font-weight: 600; color: var(--text);
  font-family: monospace;
}
.stat-card, .chart-card { box-shadow: var(--card-shadow); }
.stat-card { transition: transform 0.18s ease, box-shadow 0.18s ease; }
.stat-card:hover { transform: translateY(-2px); box-shadow: var(--card-shadow-hover); }
.stat-card:hover .si-blue   { box-shadow: var(--glow-blue);   }
.stat-card:hover .si-purple { box-shadow: var(--glow-purple); }
.stat-card:hover .si-green  { box-shadow: var(--glow-green);  }
.stat-card:hover .si-amber  { box-shadow: var(--glow-amber);  }
.stat-card:hover .si-red    { box-shadow: var(--glow-red);    }
.stat-value, .stat-value.sm {
  font-family: var(--font-mono);
  font-variant-numeric: tabular-nums;
  font-feature-settings: "tnum" 1;
  letter-spacing: -0.01em;
  color: var(--text);
}
.stat-card { position: relative; overflow: hidden; }
.stat-card[data-color]::before {
  content: ''; position: absolute; top: 0; left: 0; right: 0; height: 3px;
}
.stat-card[data-color="blue"]::before   { background: var(--app-accent); }
.stat-card[data-color="purple"]::before { background: #8b5cf6; }
.stat-card[data-color="green"]::before  { background: #22c55e; }
.stat-card[data-color="amber"]::before  { background: #f59e0b; }
.stats-row-2 .stat-card:nth-child(1) { background: color-mix(in srgb, var(--app-accent) 6%, var(--card)); }
.stats-row-2 .stat-card:nth-child(2) { background: color-mix(in srgb, #6366f1 6%, var(--card)); }
.sidebar { background: linear-gradient(180deg, #1a1e29 0%, var(--surface) 60%); }
.nav-item.active {
  border-left: 3px solid var(--accent);
  padding-left: 7px;
  background: var(--accent-soft);
}
.nav-item.active i { filter: drop-shadow(0 0 5px var(--accent-edge)); }
@keyframes sectionFadeUp {
  from { opacity: 0; transform: translateY(8px); }
  to   { opacity: 1; transform: translateY(0); }
}
.dash-section { animation: sectionFadeUp 0.28s ease both; }
.quick-actions .btn i.ti-folder      { color: #60a5fa; }
.quick-actions .btn i.ti-settings    { color: #94a3b8; }
.quick-actions .btn i.ti-chart-bar   { color: #a78bfa; }
.quick-actions .btn i.ti-users-group { color: #4ade80; }
.quick-actions .btn i.ti-help        { color: #22d3ee; }
.customer-card, .chart-card {
  box-shadow: var(--shadow-2);
}
.customer-card {
  transition: transform .18s var(--out), box-shadow .18s var(--out), border-color .15s;
}
.customer-card:hover {
  transform: translateY(-2px); box-shadow: var(--shadow-3); border-color: var(--accent-edge);
}
.modal-box { background: var(--elev-3); box-shadow: var(--shadow-3); }
.analytics-metrics .stat-value, .kbd, td .badge { font-variant-numeric: tabular-nums; }
.admin-tab.active {
  border-bottom-color: transparent;
  background-image: var(--accent-line);
  background-repeat: no-repeat;
  background-position: bottom;
  background-size: 100% 2px;
}
.page-btn.active { box-shadow: var(--edge-light); }
.filter-select:focus {
  border-color: var(--accent);
  box-shadow: 0 0 0 3px var(--accent-soft);
}
@media (prefers-reduced-motion: reduce) {
  .stat-card, .customer-card { transition: none; }
  .stat-card:hover, .customer-card:hover { transform: none; }
  .dash-section { animation: none; }
}
.rail-indicator.show { opacity: 1; }
.rail-item.active { color: var(--accent); }
.rail-item.active:hover { background: transparent; }
.cmd-item.active { background: var(--accent-soft); }
.cmd-item.active i { color: var(--accent); }
.cmd-item.active .cmd-item-group { color: var(--accent); opacity: 0.9; }
.ov-stats .stat-card { flex: 1 1 150px; min-width: 140px; margin-bottom: 0; }
@media (max-width: 768px) {
  .app-rail.open { left: 0; box-shadow: var(--shadow-3); width: 220px; align-items: stretch; }
  .app-rail.open .rail-nav,
  .app-rail.open .rail-footer { align-items: stretch; padding: 0 var(--sp-2); }
  .app-rail.open .rail-item,
  .app-rail.open .rail-avatar {
    width: 100%; justify-content: flex-start; gap: var(--sp-3); padding: 0 var(--sp-2_5);
  }
  .app-rail.open .rail-item[data-tip]::after,
  .app-rail.open .rail-avatar[data-tip]::after {
    content: attr(data-tip); position: static; transform: none;
    background: none; border: none; box-shadow: none; padding: 0; margin-left: 0;
    font-size: var(--text-sm); font-weight: 600; color: inherit; white-space: nowrap;
  }
}
.sched-viewbtn { border:0; background:transparent; color:var(--text-muted); font-size:12px; font-weight:600; font-family:inherit; padding:var(--sp-1_5) var(--sp-3); border-radius:6px; cursor:pointer; transition:background .12s,color .12s; }
.sched-viewbtn:hover { color:var(--text); }
.sched-viewbtn.active { background:var(--accent); color:#fff; }
.sched-layout { display:grid; grid-template-columns:1fr 260px; gap:var(--sp-5); align-items:start; }
.sched-main { background:var(--card); border:1px solid var(--border); border-radius:var(--radius); overflow:hidden; min-height:420px; }
.sched-rail { background:var(--card); border:1px solid var(--border); border-radius:var(--radius); padding:var(--sp-3); }
.sched-rail-head { display:flex; align-items:center; justify-content:space-between; font-size:12px; font-weight:700; text-transform:uppercase; letter-spacing:.04em; color:var(--text-muted); margin-bottom:var(--sp-2_5); }
.sched-rail-add { border:0; background:var(--bg); color:var(--text); width:24px; height:24px; border-radius:6px; cursor:pointer; display:flex; align-items:center; justify-content:center; }
.sched-rail-add:hover { background:var(--accent); color:#fff; }
.sched-rail-empty { color:var(--text-muted); font-size:12px; padding:var(--sp-1) 0; }
.sched-tech-item { display:flex; align-items:center; gap:var(--sp-2); padding:var(--sp-1_5) var(--sp-2); border-radius:8px; cursor:pointer; font-size:13px; }
.sched-tech-item:hover { background:var(--bg); }
.sched-tech-item.active { background:rgba(59,130,246,0.12); }
.sched-tech-item.inactive { opacity:.45; }
.sched-tech-dot { width:11px; height:11px; border-radius:50%; flex-shrink:0; }
.sched-tech-name { flex:1; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.sched-tech-edit { color:var(--text-muted); opacity:0; transition:opacity .12s; }
.sched-tech-item:hover .sched-tech-edit { opacity:1; }
.sched-tech-edit:hover { color:var(--accent); }
.sched-upcoming-card { background:var(--bg); border:1px solid var(--border); border-left:3px solid var(--accent); border-radius:10px; padding:var(--sp-2_5) var(--sp-3); margin-bottom:var(--sp-2); cursor:pointer; }
.sched-upcoming-card:hover { border-color:var(--accent); }
.sched-up-cust { font-size:12px; font-weight:700; }
.sched-up-meta { font-size:11px; color:var(--text-muted); margin-top:var(--sp-0_5); }
.sched-month-head { display:grid; grid-template-columns:repeat(7,1fr); border-bottom:1px solid var(--border); }
.sched-month-head > div { padding:var(--sp-2) var(--sp-1); text-align:center; font-size:10px; font-weight:700; color:var(--text-muted); text-transform:uppercase; }
.sched-month-grid { display:grid; grid-template-columns:repeat(7,1fr); }
.sched-month-cell { min-height:84px; border-right:1px solid var(--border); border-bottom:1px solid var(--border); padding:var(--sp-1); cursor:pointer; overflow:hidden; }
.sched-month-cell:hover:not(.is-blank) { background:var(--bg); }
.sched-month-cell.is-blank { cursor:default; background:transparent; }
.sched-month-cell.is-offday { background:rgba(148,163,184,0.06); }
.sched-tg-headcell.is-offday { background:rgba(148,163,184,0.06); color:var(--text-muted); }
.sched-daynum { font-size:11px; font-weight:500; width:22px; height:22px; display:flex; align-items:center; justify-content:center; border-radius:50%; }
.sched-month-cell.is-today .sched-daynum { font-weight:700; color:var(--accent); background:rgba(59,130,246,0.15); }
.sched-more { font-size:9px; color:var(--text-muted); margin-top:var(--sp-0_5); }
.sched-chip { color:#fff; font-size:9px; border-radius:3px; padding:var(--sp-0_5) 5px; margin-top:var(--sp-0_5); overflow:hidden; white-space:nowrap; text-overflow:ellipsis; cursor:pointer; }
.sched-chip b { font-weight:700; }
.sched-chip.is-complete { opacity:.5; text-decoration:line-through; }
.sched-legend { display:flex; flex-wrap:wrap; gap:var(--sp-3); margin-bottom:var(--sp-3); font-size:11px; color:var(--text-muted); }
.sched-legend:empty { display:none; }
.sched-legend-item { display:inline-flex; align-items:center; gap:var(--sp-1); }
.sched-legend-dot { width:9px; height:9px; border-radius:50%; display:inline-block; }
.sched-status-tag { font-weight:600; }
.sched-tg { display:flex; flex-direction:column; }
.sched-tg-head { display:grid; border-bottom:1px solid var(--border); position:sticky; top:0; background:var(--card); z-index:2; }
.sched-tg-corner { border-right:1px solid var(--border); }
.sched-tg-headcell { padding:var(--sp-1_5) var(--sp-1); text-align:center; border-right:1px solid var(--border); display:flex; flex-direction:column; gap:var(--sp-px); }
.sched-tg-dow { font-size:10px; font-weight:700; text-transform:uppercase; color:var(--text-muted); }
.sched-tg-dnum { font-size:16px; font-weight:700; }
.sched-tg-headcell.is-today .sched-tg-dnum { color:var(--accent); }
.sched-allday-row { display:grid; border-bottom:1px solid var(--border); min-height:26px; }
.sched-allday-label { font-size:9px; color:var(--text-muted); text-transform:uppercase; padding:var(--sp-1); border-right:1px solid var(--border); display:flex; align-items:center; }
.sched-allday-cell { border-right:1px solid var(--border); padding:var(--sp-0_5); cursor:pointer; min-width:0; }
.sched-tg-body { display:grid; max-height:560px; overflow-y:auto; position:relative; }
.sched-tg-gutter { border-right:1px solid var(--border); }
.sched-tg-hour { position:relative; border-bottom:1px solid var(--border); }
.sched-tg-hour span { position:absolute; top:-7px; right:6px; font-size:10px; color:var(--text-muted); background:var(--card); padding:0 var(--sp-0_5); }
.sched-tg-col { position:relative; border-right:1px solid var(--border); }
.sched-tg-cell { border-bottom:1px solid var(--border); cursor:pointer; }
.sched-tg-cell:hover { background:var(--bg); }
.sched-event { position:absolute; color:#fff; border-radius:5px; padding:var(--sp-0_5) 5px; font-size:10px; overflow:hidden; cursor:pointer; box-shadow:0 1px 2px rgba(0,0,0,.2); box-sizing:border-box; display:flex; flex-direction:column; gap:var(--sp-px); }
.sched-event-time { font-weight:700; opacity:.9; }
.sched-event-title { overflow:hidden; white-space:nowrap; text-overflow:ellipsis; }
.sched-event-sub { overflow:hidden; white-space:nowrap; text-overflow:ellipsis; opacity:.85; font-size:9px; }
.sched-event.is-complete { opacity:.5; text-decoration:line-through; }
.sched-event { touch-action:none; }
.sched-chip { touch-action:none; }
.sched-event-resize { position:absolute; left:0; right:0; bottom:0; height:7px; cursor:ns-resize; }
.sched-event:hover .sched-event-resize { background:rgba(255,255,255,.35); }
.sched-dragging, .sched-resizing { opacity:.4; pointer-events:none; }
.sched-drag-ghost { pointer-events:none; z-index:9999; opacity:.92; box-shadow:0 6px 18px rgba(0,0,0,.4); border-radius:5px; overflow:hidden; color:#fff; transform:rotate(1deg); }
.sched-drop-active { outline:2px dashed var(--accent); outline-offset:-2px; background:rgba(59,130,246,0.10) !important; }
body.sched-dnd-active { cursor:grabbing; user-select:none; }
.sched-nowline { position:absolute; left:0; right:0; height:2px; background:#ef4444; z-index:3; pointer-events:none; }
.sched-nowline::before { content:''; position:absolute; left:-4px; top:-3px; width:8px; height:8px; border-radius:50%; background:#ef4444; }
.sched-list { padding:var(--sp-3) var(--sp-4); }
.sched-list-group { margin-bottom:18px; }
.sched-list-date { font-size:12px; font-weight:700; color:var(--text-muted); text-transform:uppercase; letter-spacing:.03em; padding-bottom:var(--sp-1_5); border-bottom:1px solid var(--border); margin-bottom:var(--sp-2); }
.sched-list-card { display:flex; align-items:center; gap:var(--sp-2_5); padding:var(--sp-2); border-radius:8px; cursor:pointer; }
.sched-list-card:hover { background:var(--bg); }
.sched-list-card.is-complete { opacity:.5; }
.sched-list-dot { width:10px; height:10px; border-radius:50%; flex-shrink:0; }
.sched-list-cust { font-size:13px; font-weight:600; }
.sched-list-meta { font-size:11px; color:var(--text-muted); margin-top:var(--sp-px); }
.sched-empty { padding:var(--sp-10); text-align:center; color:var(--text-muted); font-size:13px; }
.sched-empty-hint { margin-top:var(--sp-2); font-size:12px; opacity:0.85; display:flex; align-items:center; justify-content:center; gap:var(--sp-1_5); }
.sched-list-check { width:16px; height:16px; flex-shrink:0; cursor:pointer; accent-color:var(--accent); }
.sched-list-card.is-selected { background:rgba(59,130,246,0.10); outline:1px solid var(--accent); }
.day-map-body { display:grid; grid-template-columns:1fr 260px; gap:12px; }
#dayMap { height:60vh; min-height:320px; border-radius:10px; overflow:hidden; background:var(--bg); }
#dayMapList { max-height:60vh; overflow-y:auto; }
@media (max-width:760px) {
  .day-map-body { grid-template-columns:1fr; }
  #dayMap { height:48vh; min-height:260px; }
  #dayMapList { max-height:none; }
}
.day-map-pin span { display:flex; align-items:center; justify-content:center; width:26px; height:26px; background:var(--accent); color:#fff; border-radius:50%; font-size:12px; font-weight:700; border:2px solid #fff; box-shadow:0 1px 3px rgba(0,0,0,.4); }
.day-map-stop { display:flex; gap:10px; align-items:center; padding:8px; border-radius:8px; cursor:pointer; }
.day-map-stop:hover { background:var(--bg); }
.day-map-num { display:flex; align-items:center; justify-content:center; width:24px; height:24px; background:var(--accent); color:#fff; border-radius:50%; font-size:12px; font-weight:700; flex-shrink:0; }
.sched-history { padding:var(--sp-3) var(--sp-4); }
.sched-history-search { width:100%; max-width:340px; margin-bottom:var(--sp-3); padding:9px 12px; background:var(--card); border:1px solid var(--border); border-radius:8px; color:var(--text); font-size:13px; font-family:inherit; }
.job-media-strip { display:flex; flex-wrap:wrap; gap:6px; }
.job-media-thumb { width:64px; height:64px; object-fit:cover; border-radius:8px; border:1px solid var(--border); display:block; }
.job-checklist { display:flex; flex-direction:column; gap:4px; }
.job-checklist-item { display:flex; align-items:center; gap:8px; font-size:13px; }
.job-checklist-item span { flex:1; }
.job-checklist-x { background:none; border:none; color:var(--text-muted); cursor:pointer; padding:2px; font-size:14px; }
.job-checklist-x:hover { color:#ef4444; }
.sched-req-badge { position:absolute; top:-6px; right:-6px; min-width:18px; height:18px; padding:0 5px; border-radius:9px; background:#ef4444; color:#fff; font-size:10px; font-weight:700; display:flex; align-items:center; justify-content:center; }
.booking-card { background:var(--card); border:1px solid var(--border); border-radius:10px; padding:12px 14px; margin-bottom:10px; }
.booking-head { font-size:14px; margin-bottom:4px; }
.booking-meta { font-size:12px; color:var(--text-muted); margin-top:2px; }
.booking-msg { font-size:13px; margin-top:8px; padding:8px 10px; background:var(--bg); border-radius:8px; }
.booking-dep { font-size:10px; font-weight:700; padding:1px 7px; border-radius:9px; }
.booking-dep--paid { background:rgba(34,197,94,0.12); color:#4ade80; }
.booking-dep--pending { background:rgba(245,158,11,0.12); color:#fbbf24; }
.booking-actions { display:flex; gap:8px; margin-top:12px; }
.sched-bulkbar { display:flex; align-items:center; gap:var(--sp-2); padding:var(--sp-2) var(--sp-2_5); margin-bottom:var(--sp-3); background:var(--bg); border:1px solid var(--accent); border-radius:8px; flex-wrap:wrap; position:sticky; top:0; z-index:4; }
.sched-bulk-count { font-size:12px; font-weight:700; }
.sched-swim { display:flex; flex-direction:column; gap:var(--sp-2); }
.sched-swim-actions { display:flex; justify-content:flex-end; }
.sched-swim-scroll { overflow-x:auto; border:1px solid var(--border); border-radius:8px; }
.sched-swim-head { display:flex; border-bottom:1px solid var(--border); background:var(--card); position:sticky; top:0; z-index:3; }
.sched-swim-corner { width:170px; flex-shrink:0; position:sticky; left:0; background:var(--card); z-index:2; border-right:1px solid var(--border); }
.sched-swim-hours { display:flex; }
.sched-swim-hour { flex-shrink:0; font-size:10px; color:var(--text-muted); padding:var(--sp-1) var(--sp-1); border-left:1px solid var(--border); }
.sched-swim-row { display:flex; border-bottom:1px solid var(--border); }
.sched-swim-label { width:170px; flex-shrink:0; padding:var(--sp-2); position:sticky; left:0; background:var(--card); z-index:2; border-right:1px solid var(--border); }
.sched-swim-tech { display:flex; align-items:center; gap:var(--sp-1_5); font-size:12px; font-weight:600; }
.sched-swim-util { display:flex; align-items:center; gap:var(--sp-1_5); margin-top:var(--sp-1); }
.sched-swim-bar { flex:1; height:5px; border-radius:3px; background:var(--border); overflow:hidden; }
.sched-swim-bar > span { display:block; height:100%; background:var(--accent); transition:width .2s ease; }
.sched-swim-util.is-low  .sched-swim-bar > span { background:var(--fresh); }
.sched-swim-util.is-mid  .sched-swim-bar > span { background:var(--accent); }
.sched-swim-util.is-high .sched-swim-bar > span { background:var(--exhaust); }
.sched-swim-util.is-over .sched-swim-bar > span { background:var(--danger); }
.sched-swim-pct { font-size:10px; color:var(--text-muted); white-space:nowrap; }
.sched-swim-pct b { font-weight:700; color:var(--text-secondary,var(--text-muted)); }
.sched-swim-util.is-over .sched-swim-pct { color:#ef4444; font-weight:700; }
.sched-swim-untimed { display:flex; flex-wrap:wrap; gap:var(--sp-1); margin-top:var(--sp-1); }
.sched-swim-chip { font-size:9px; color:#fff; border-radius:3px; padding:1px 5px; cursor:pointer; max-width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.sched-swim-track { position:relative; touch-action:none; }
.sched-swim-gridline { position:absolute; top:0; bottom:0; width:1px; background:var(--border); }
.sched-swim-event { position:absolute; color:#fff; font-size:10px; border-radius:4px; padding:1px 5px; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; cursor:pointer; box-shadow:0 1px 2px rgba(0,0,0,.2); touch-action:none; box-sizing:border-box; }
.sched-swim-event.is-complete { opacity:.5; text-decoration:line-through; }
.sched-newtech { font-size:11px; font-weight:600; color:var(--accent); float:right; cursor:pointer; }
.sched-recur-opts { display:flex; flex-direction:column; gap:var(--sp-2); background:var(--bg); border:1px solid var(--border); border-radius:8px; padding:var(--sp-2_5); }
.sched-recur-row { display:flex; align-items:center; gap:var(--sp-2); font-size:12px; color:var(--text-muted); flex-wrap:wrap; }
.sched-recur-row input { padding:var(--sp-1_5) var(--sp-2); background:var(--card); border:1px solid var(--border); border-radius:6px; color:var(--text); font-size:13px; font-family:inherit; }
.sched-recur-hint { font-size:10px; color:var(--text-muted); }
.sched-weekdays { display:flex; gap:var(--sp-1); }
.sched-wd { width:30px; height:30px; border:1px solid var(--border); background:var(--card); color:var(--text-muted); border-radius:6px; font-size:11px; font-weight:700; cursor:pointer; font-family:inherit; }
.sched-wd.active { background:var(--accent); color:#fff; border-color:var(--accent); }
.sched-scope-row { display:flex; align-items:center; gap:var(--sp-3_5); flex-wrap:wrap; font-size:12px; color:var(--text-muted); background:var(--bg); border:1px solid var(--border); border-radius:8px; padding:var(--sp-2) var(--sp-2_5); }
.sched-scope-row label { display:flex; align-items:center; gap:5px; cursor:pointer; color:var(--text); }
.sched-modal-footer { display:flex; flex-direction:column; gap:12px; margin-top:20px; }
.sched-editactions { display:flex; align-items:center; gap:8px; flex-wrap:wrap; padding-bottom:12px; border-bottom:1px solid var(--border); }
.sched-editactions .sched-btn-danger { margin-left:auto; color:#ef4444; }
.sched-primaryactions { display:flex; justify-content:flex-end; gap:8px; }

@media (max-width: 860px) {
  .sched-layout { grid-template-columns:1fr; }
  .sched-sidebar > .sched-rail { flex:1; min-width:200px; }
  .sched-tg-week .sched-tg-body, .sched-tg-week .sched-tg-head, .sched-tg-week .sched-allday-row { min-width:640px; }
  .sched-main { overflow-x:auto; }
}

/* ── legacy/css/scheduler.css ── */
body.sched-app {
  --bg:            var(--app-bg);
  --bg-secondary:  var(--app-sunken);
  --surface:       var(--app-card);
  --card:          var(--app-card);
  --bg-card:       var(--app-card);
  --bg-card-hover: var(--app-card-hover);
  --bg-sidebar:    var(--app-surface);
  --bg-modal:      var(--app-card);
  --border:        var(--app-border);
  --border-strong: var(--app-border-2);
  --text:          var(--app-text);
  --text-primary:  var(--app-text);
  --text-secondary:var(--app-text-2);
  --text-muted:    var(--app-muted);
  --accent:        var(--app-accent);
  --accent-fg:     var(--app-accent-fg);
  --accent-hover:  #5cc0ff;
  --accent-soft:   rgba(51,177,255,0.14);
  --accent-edge:   rgba(51,177,255,0.45);
  --accent-glow:   rgba(51,177,255,0.28);
  --hot:           var(--app-danger);
  --hot-soft:      rgba(255,92,92,0.12);
  --st: var(--st-scheduled);
  --glass-bg:     rgba(24, 27, 33, 0.96);
  --glass-bg-2:   rgba(29, 32, 40, 0.97);
  --glass-border: rgba(255, 255, 255, 0.07);
  --glass-shadow: 0 1px 2px rgba(0,0,0,.28), 0 12px 30px -14px rgba(0,0,0,.55);
  --glass-blur:   blur(8px) saturate(115%);
  --topbar-h:     50px;
  --float-gap:    14px;

  background-color: var(--bg);
  color: var(--text);
  height: auto;
  min-height: 100vh;
  overflow-x: hidden;
  overflow-y: auto;
  background-image:
    radial-gradient(120% 80% at 50% -10%, rgba(51,177,255,0.07), transparent 62%);
  background-attachment: fixed;
}
.sched-app [data-status="scheduled"]   { --st: var(--st-scheduled); }
.sched-app [data-status="en_route"]    { --st: var(--st-en_route); }
.sched-app [data-status="in_progress"] { --st: var(--st-in_progress); }
.sched-app [data-status="complete"]    { --st: var(--st-complete); }
.sched-app [data-status="no_show"]     { --st: var(--st-no_show); }
.sched-app [data-status="cancelled"]   { --st: var(--st-cancelled); }
.sched-app [data-status="invoiced"]    { --st: var(--st-invoiced); }
.sched-page {
  display: flex;
  flex-direction: column;
  min-height: 100vh;
  padding-top: calc(var(--topbar-h) + var(--float-gap) * 2);
}
.sched-topbar {
  position: fixed;
  top: var(--float-gap);
  left: var(--float-gap);
  right: var(--float-gap);
  height: var(--topbar-h);
  z-index: 60;
  display: flex;
  align-items: center;
  gap: var(--sp-3);
  padding: 0 var(--sp-3_5);
  border-radius: 16px;
  background: var(--glass-bg);
  border: 1px solid var(--glass-border);
  box-shadow: var(--glass-shadow);
  -webkit-backdrop-filter: var(--glass-blur);
  backdrop-filter: var(--glass-blur);
}
.sched-back.btn-icon {
  width: 30px; height: 30px;
  color: var(--text-secondary);
  text-decoration: none;
}
.sched-brand-name { font-weight: 700; font-size: 14px; color: var(--text-primary); letter-spacing: -0.01em; }
.sched-brand-name b, .sched-app .auth-gate-name b { font-weight: 800; color: var(--accent); }
.sched-page-body {
  flex: 1;
  padding: var(--sp-1) var(--sp-5) var(--sp-10);
  width: 100%;
  max-width: 1720px;
  margin: 0 auto;
  box-sizing: border-box;
}
.sched-sections { width: 100%; min-width: 0; }
.sched-sections > section.dash-section { display: none; }
.sched-sections[data-section="board"]     #sec-scheduler { display: block; }
.sched-sections[data-section="customers"] #sec-customers { display: block; }
.sched-sections[data-section="equipment"] #sec-equipment { display: block; }
.sched-sections[data-section="reports"]   #sec-reports   { display: block; }
.sched-tab {
  display: inline-flex;
  align-items: center;
  gap: var(--sp-1_5);
  padding: var(--sp-1_5) var(--sp-2_5);
  border: none;
  border-radius: 8px;
  background: transparent;
  color: var(--text-secondary);
  font-size: 13px;
  font-weight: 500;
  cursor: pointer;
  white-space: nowrap;
  transition: background .12s, color .12s;
}
.sched-tab i { font-size: 16px; }
.sched-tab:hover { color: var(--text-primary); }
.sched-tab.active {
  background: var(--accent-soft, rgba(59,130,246,0.16));
  color: var(--accent);
  font-weight: 600;
  box-shadow: 0 1px 2px rgba(0,0,0,0.15);
}
.sched-app .sched-toolbar,
.sched-app .sched-main {
  background: var(--glass-bg-2);
  border: 1px solid var(--glass-border);
  border-radius: 16px;
  box-shadow: var(--glass-shadow);
  -webkit-backdrop-filter: var(--glass-blur);
  backdrop-filter: var(--glass-blur);
}
.sched-app .btn {
  width: auto;
  border: 1px solid var(--border);
  background: rgba(255,255,255,0.02);
  color: var(--text-secondary);
  border-radius: 8px;
  transition: background .15s, color .15s, border-color .15s, transform .12s ease;
}
.sched-app .btn-primary { width: auto; }
.sched-app .auth-gate-btn { width: 100%; }
.sched-app .btn:hover {
  background: rgba(255,255,255,0.08);
  color: var(--text-primary);
  border-color: rgba(255,255,255,0.14);
  transform: translateY(-1px);
}
.sched-app .btn:active { transform: scale(0.96); }
.sched-app .btn.active {
  background: var(--accent-soft);
  color: var(--accent);
  border-color: var(--accent-edge);
}
.sched-app .btn-primary,
.sched-app .sched-toolbar .btn-primary {
  background: var(--accent);
  color: var(--accent-fg);
  border: none;
}
.sched-app .btn-primary:hover {
  background: var(--accent-hover);
  box-shadow: 0 4px 12px var(--accent-glow);
  transform: translateY(-1px);
}
.sched-app .sched-toolbar {
  padding: var(--sp-3) var(--sp-3_5);
  margin-bottom: 14px;
  flex-direction: column;
  align-items: stretch;
  gap: var(--sp-3);
}
.sched-app .sched-toolbar-controls {
  width: 100%;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--sp-2);
}
.sched-app .sched-toolbar-controls > * { flex: 0 0 auto !important; width: auto !important; }
.sched-app .sched-toolbar-controls .btn,
.sched-app .sched-toolbar-controls a.btn {
  width: auto !important;
  flex: 0 0 auto !important;
  min-height: 34px;
  justify-content: center;
}
.sched-app .sched-nav { display: flex; gap: var(--sp-1_5); }
.sched-app .sched-nav .btn { width: auto !important; }
.sched-app .sched-toolbar-controls .sched-label {
  min-width: 140px;
  text-align: center;
  margin-right: auto;
  padding: 0 var(--sp-1_5);
  font-weight: 700;
  color: var(--text-primary);
}
.sched-app .sched-util-cluster {
  display: flex;
  align-items: center;
  gap: var(--sp-1);
}
.sched-app .sched-add-job { margin-left: var(--sp-1_5); }
@media (max-width: 900px) {
  .sched-app .sched-util-cluster { flex-wrap: wrap; }
}
html.sched-toolbar-v2 .sched-app .sched-toolbar { position: relative; z-index: 30; }
html.sched-toolbar-v2 .sched-app .sched-toolbar-head { display: none; }
html.sched-toolbar-v2 .sched-app .sched-toolbar { padding-top: var(--sp-2); padding-bottom: var(--sp-2); gap: 0; }
html.sched-toolbar-v2 .sched-app .sched-util-cluster:not([data-folded]) { visibility: hidden; }
html.sched-toolbar-v2 .sched-app .sched-tools { position: relative; display: inline-flex; }
html.sched-toolbar-v2 .sched-app .sched-tools-panel {
  position: absolute; top: calc(100% + var(--sp-1_5)); right: 0; z-index: 70;
  min-width: 210px;
  display: flex; flex-direction: column; gap: var(--sp-1);
  padding: var(--sp-2);
  background: var(--glass-bg-2);
  border: 1px solid var(--glass-border);
  border-radius: 12px;
  box-shadow: var(--glass-shadow);
}
html.sched-toolbar-v2 .sched-app .sched-tools-panel[hidden] { display: none; }
html.sched-toolbar-v2 .sched-app .sched-tools-panel .sched-util-cluster {
  display: flex; flex-direction: column; align-items: stretch; gap: var(--sp-1);
}
html.sched-toolbar-v2 .sched-app .sched-tools-panel .btn {
  justify-content: flex-start; min-height: 38px;
}
html.sched-toolbar-v2 .sched-app .sched-tools-panel .sched-req-badge {
  position: static; margin-left: auto; box-shadow: none;
}
html.sched-toolbar-v2 .sched-app .sched-tools-trigger { position: relative; }
html.sched-toolbar-v2 .sched-app .sched-tools-badge {
  position: absolute; top: calc(var(--sp-1_5) * -1); right: calc(var(--sp-1_5) * -1);
  min-width: 17px; height: 17px; padding: 0 var(--sp-1);
  display: inline-flex; align-items: center; justify-content: center;
  background: var(--hot); color: #fff;
  font-size: 10px; font-weight: 700; line-height: 1;
  font-family: var(--num, 'Inter', system-ui, sans-serif); font-variant-numeric: tabular-nums;
  border-radius: 999px; box-shadow: 0 0 0 2px var(--bg);
}
html.sched-toolbar-v2 .sched-app .sched-tools-badge[hidden] { display: none; }
html.sched-toolbar-v2 .sched-app .sched-label-btn {
  cursor: pointer; border-radius: 8px; border: 1px solid transparent;
  transition: background .14s, border-color .14s;
}
html.sched-toolbar-v2 .sched-app .sched-label-btn:hover { background: var(--bg-card-hover); border-color: var(--border); }
html.sched-toolbar-v2 .sched-app .sched-label-wrap { position: relative; display: inline-flex; margin-right: auto; }
html.sched-toolbar-v2 .sched-app .sched-label-wrap .sched-label { margin-right: 0; }
html.sched-toolbar-v2 .sched-app .sched-datepop {
  position: absolute; top: calc(100% + var(--sp-1_5)); left: 0; z-index: 70;
  width: 268px; padding: var(--sp-2_5);
  background: var(--glass-bg-2); border: 1px solid var(--glass-border);
  border-radius: 14px; box-shadow: var(--glass-shadow);
}
.sched-app .sched-dp-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: var(--sp-2); }
.sched-app .sched-dp-title { font-weight: 700; font-size: 13px; }
.sched-app .sched-dp-nav {
  width: 26px; height: 26px; border-radius: 7px; border: 1px solid var(--border);
  background: var(--card); color: var(--text-secondary); cursor: pointer; font-size: 15px; line-height: 1;
}
.sched-app .sched-dp-nav:hover { background: var(--bg-card-hover); color: var(--text-primary); }
.sched-app .sched-dp-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: var(--sp-0_5); }
.sched-app .sched-dp-dow span { text-align: center; font-size: 10px; font-weight: 700; color: var(--text-muted); padding-bottom: var(--sp-1); }
.sched-app .sched-dp-blank { aspect-ratio: 1; }
.sched-app .sched-dp-day {
  aspect-ratio: 1; display: inline-flex; align-items: center; justify-content: center;
  border: 0; background: transparent; color: var(--text-secondary);
  border-radius: 7px; font: inherit; font-size: 12px; cursor: pointer;
  font-family: var(--num, 'Inter', system-ui, sans-serif);
}
.sched-app .sched-dp-day:hover { background: var(--bg-card-hover); color: var(--text-primary); }
.sched-app .sched-dp-day.today { color: var(--accent); font-weight: 700; }
.sched-app .sched-dp-day.sel { background: var(--accent); color: var(--accent-fg, #04121d); font-weight: 700; }
.sched-app .sched-dp-day.has { position: relative; }
.sched-app .sched-dp-day.has::after { content: ""; position: absolute; bottom: var(--sp-1); width: 3px; height: 3px; border-radius: 50%; background: var(--accent); }
.sched-app .sched-dp-day.sel.has::after { background: var(--accent-fg, #04121d); }
.sched-app .sched-dp-today {
  width: 100%; margin-top: var(--sp-2); padding: var(--sp-1_5);
  border: 1px solid var(--border); background: var(--card); color: var(--text-secondary);
  border-radius: 8px; font: inherit; font-size: 12px; font-weight: 600; cursor: pointer;
}
.sched-app .sched-dp-today:hover { background: var(--bg-card-hover); color: var(--text-primary); }
.sched-app .section-title { font-weight: 700; }
.sched-app .section-subtitle { color: var(--text-muted); }
.sched-app .sched-viewswitch {
  position: relative;
  background: rgba(0,0,0,.25);
  border: 1px solid var(--border);
  border-radius: 9px;
  padding: var(--sp-1);
}
.sched-app .sched-view-ind {
  position: absolute;
  top: var(--sp-1); bottom: var(--sp-1); left: 0;
  border-radius: 6px;
  background: var(--accent);
  box-shadow: 0 2px 10px -3px var(--accent-glow);
  transition: transform .22s cubic-bezier(.4, 0, .2, 1), width .22s cubic-bezier(.4, 0, .2, 1), opacity .15s;
  pointer-events: none;
}
.sched-app .sched-viewbtn {
  position: relative;
  z-index: 1;
  color: var(--text-secondary);
  font-weight: 600;
  font-size: 12px;
  border-radius: 6px;
  padding: var(--sp-1_5) var(--sp-3);
  transition: color .15s;
}
.sched-app .sched-viewbtn:hover { color: var(--text-primary); }
.sched-app .sched-viewbtn.active { color: #fff; }
.sched-app .sched-layout {
  display: grid;
  grid-template-columns: 232px minmax(0, 1fr) 300px;
  gap: var(--sp-3_5);
  align-items: start;
}
.sched-railcol {
  padding: 0;
  position: sticky;
  top: calc(var(--topbar-h) + var(--float-gap) * 2 + var(--sp-1));
}

.sched-app .sched-main {
  padding: var(--sp-3);
  min-height: 60vh;
  overflow-x: auto;
}
html.sched-fullheight .sched-app .sched-sections[data-section="board"] .sched-layout {
  height: var(--sched-board-h, calc(100dvh - 210px));
  min-height: 440px;
  align-items: stretch;
}
html.sched-fullheight .sched-app .sched-sections[data-section="board"] .sched-railcol {
  position: static;
  min-height: 0;
  overflow-y: auto;
  overflow-x: hidden;
  padding-right: var(--sp-1);
}
html.sched-fullheight .sched-app .sched-sections[data-section="board"] .sched-main {
  min-height: 0;
  overflow: hidden;
  display: flex;
  flex-direction: column;
}
html.sched-fullheight .sched-main > .sched-tg { flex: 1; min-height: 0; }
html.sched-fullheight .sched-main .sched-tg-body { max-height: none; flex: 1; min-height: 0; }
html.sched-fullheight .sched-main > .sched-month,
html.sched-fullheight .sched-main > .sched-list,
html.sched-fullheight .sched-main > .sched-history { flex: 1; min-height: 0; overflow-y: auto; }
html.sched-fullheight .sched-main > .sched-swim { flex: 1; min-height: 0; overflow: auto; }
html.sched-fullheight .sched-main > .sched-empty { flex: 1; min-height: 0; }
html.sched-dock .sched-app .sched-railcol-right {
  display: flex; flex-direction: column; gap: 0;
  background: var(--glass-bg-2);
  border: 1px solid var(--glass-border);
  border-radius: 12px;
  box-shadow: var(--glass-shadow);
  overflow: hidden;
}
html.sched-dock .sched-app .sched-railcol-right > * {
  background: transparent; border: 0; box-shadow: none; border-radius: 0;
  margin: 0; padding: 0;
}
html.sched-dock .sched-app .sched-dock-tray {
  background: transparent; border: 0; box-shadow: none; border-radius: 0;
  margin: 0; padding: var(--sp-3);
}
html.sched-dock .sched-app .sched-dock-tabs {
  display: flex; gap: var(--sp-1);
  padding: var(--sp-2) var(--sp-2) 0;
  border-bottom: 1px solid var(--glass-border);
}
html.sched-dock .sched-app .sched-dtab {
  flex: 0 0 auto;
  display: inline-flex; align-items: center; justify-content: center; gap: var(--sp-1);
  padding: var(--sp-2) var(--sp-2); position: relative;
  background: transparent; border: 0; border-bottom: 2px solid transparent;
  color: var(--text-muted); font: inherit; font-size: 12px; font-weight: 600;
  cursor: pointer; white-space: nowrap;
  transition: color .14s, border-color .14s, background .14s;
}
html.sched-dock .sched-app .sched-dtab i { font-size: 16px; }
html.sched-dock .sched-app .sched-dtab .sched-dtab-lbl { display: none; }
html.sched-dock .sched-app .sched-dtab:hover { color: var(--text-secondary); }
html.sched-dock .sched-app .sched-dtab.active {
  color: var(--text-primary); border-bottom-color: var(--accent);
}
html.sched-dock .sched-app .sched-dtab.active .sched-dtab-lbl { display: inline; }
html.sched-dock .sched-app .sched-dtab-ct {
  background: var(--accent); color: var(--accent-fg, #04121d);
  font-size: 9.5px; font-weight: 700; border-radius: 8px; padding: 0 var(--sp-1); min-width: 15px;
  display: inline-flex; align-items: center; justify-content: center;
  font-family: var(--num, 'Inter', system-ui, sans-serif); font-variant-numeric: tabular-nums;
}
html.sched-dock .sched-app .sched-dtab:not(.active) .sched-dtab-ct {
  position: absolute; top: var(--sp-1); right: var(--sp-0_5);
  min-width: 0; width: 6px; height: 6px; padding: 0; font-size: 0; border-radius: 50%;
}
html.sched-dock .sched-app .sched-dtab-ct[hidden] { display: none; }
html.sched-toolbar-v2 .sched-app .sched-page-body {
  max-width: none; padding-left: 0; padding-right: 0;
}
html.sched-toolbar-v2 .sched-app #sec-scheduler { background: var(--app-bg); border: 0; border-radius: 0; padding: 0; }
html.sched-toolbar-v2 .sched-app #sec-scheduler > .sched-toolbar {
  background: var(--app-surface); border: 0; border-radius: 0; box-shadow: none;
  -webkit-backdrop-filter: none; backdrop-filter: none; margin: 0;
}
html.sched-toolbar-v2 .sched-app #schedulerLegend:not(:empty) {
  background: var(--app-surface); padding: var(--sp-2) var(--sp-3_5); margin: 0;
}
html.sched-toolbar-v2 .sched-app #schedAttention { margin: 0; }
html.sched-toolbar-v2 .sched-app .sched-layout { gap: 0; margin-top: 0; border-top: 1px solid var(--border); }
html.sched-toolbar-v2 .sched-app .sched-main {
  background: transparent; border: 0; border-radius: 0; box-shadow: none;
  -webkit-backdrop-filter: none; backdrop-filter: none;
}
html.sched-toolbar-v2 .sched-app .sched-railcol-left {
  background: var(--app-surface); border-right: 1px solid var(--border);
  padding: var(--sp-3) var(--sp-3);
}
html.sched-toolbar-v2.sched-dock .sched-app .sched-railcol-right {
  background: var(--app-surface); border: 0; border-left: 1px solid var(--border);
  border-radius: 0; box-shadow: none;
}
html.sched-toolbar-v2 .sched-app .sched-railcol-left > * {
  background: var(--app-card); border: 1px solid var(--border); border-radius: 12px;
  box-shadow: none; padding: var(--sp-3); margin: 0;
}
html.sched-toolbar-v2 .sched-app .sched-railcol-left > * + * { margin-top: var(--sp-2_5); }
html.sched-dock .sched-app .sched-dock-body { flex: 1; min-height: 0; overflow-y: auto; }
html.sched-dock .sched-app .sched-dock-tray { display: none !important; }
html.sched-dock .sched-app .sched-dock-tray.active { display: block !important; }
html.sched-dock .sched-app .sched-dock-tray.active:empty::after {
  content: "Nothing here right now."; display: block;
  padding: var(--sp-8) var(--sp-2); text-align: center;
  color: var(--text-muted); font-size: 12.5px;
}
html.sched-dock .sched-app .sched-dock-tray .sched-rail-head { margin-top: 0; }
html.sched-dock .sched-app .sched-dock-insp { flex: 1; min-height: 0; display: flex; flex-direction: column; }
html.sched-dock .sched-app .sched-dock-insp[hidden] { display: none; }
.sched-app .sched-insp-head { padding: var(--sp-3) var(--sp-3) var(--sp-2_5); border-bottom: 1px solid var(--glass-border); position: relative; }
.sched-app .sched-insp-close {
  position: absolute; top: var(--sp-2_5); right: var(--sp-2_5);
  width: 26px; height: 26px; border-radius: 7px; border: 0; background: transparent;
  color: var(--text-muted); cursor: pointer; font-size: 15px;
}
.sched-app .sched-insp-close:hover { background: var(--bg-card-hover); color: var(--text-primary); }
.sched-app .sched-insp-title {
  font-size: 15px; font-weight: 700; letter-spacing: -.01em; padding-right: 30px;
  border-left: 3px solid var(--jc, var(--accent)); padding-left: var(--sp-2); margin-bottom: var(--sp-2);
}
.sched-app .sched-insp-status-row { display: flex; align-items: center; gap: var(--sp-1_5); }
.sched-app .sched-insp-dot { width: 9px; height: 9px; border-radius: 50%; flex: 0 0 auto; }
.sched-app .sched-insp-status {
  flex: 1; background: var(--card); border: 1px solid var(--border); border-radius: 8px;
  padding: var(--sp-1_5) var(--sp-2); color: var(--text-primary); font: inherit; font-size: 12.5px; cursor: pointer;
}
.sched-app .sched-insp-body { flex: 1; min-height: 0; overflow-y: auto; padding: var(--sp-3); }
.sched-app .sched-insp-field { margin-bottom: var(--sp-3); }
.sched-app .sched-insp-field > label {
  display: block; font-size: 10px; text-transform: uppercase; letter-spacing: .04em;
  color: var(--text-muted); font-weight: 700; margin-bottom: var(--sp-1_5);
}
.sched-app .sched-insp-time { display: flex; align-items: center; gap: var(--sp-2); }
.sched-app .sched-insp-nudge {
  width: 30px; height: 34px; flex: 0 0 auto;
  border: 1px solid var(--border); background: var(--card); color: var(--text-secondary);
  border-radius: 8px; font-size: 15px; cursor: pointer;
}
.sched-app .sched-insp-nudge:hover:not(:disabled) { background: var(--bg-card-hover); color: var(--text-primary); }
.sched-app .sched-insp-nudge:disabled { opacity: .4; cursor: default; }
.sched-app .sched-insp-timeval {
  flex: 1; text-align: center; background: var(--card); border: 1px solid var(--border);
  border-radius: 8px; padding: var(--sp-2); font-size: 13px; font-weight: 600;
  font-family: var(--num, 'Inter', system-ui, sans-serif);
}
.sched-app .sched-insp-tech {
  width: 100%; background: var(--card); border: 1px solid var(--border); border-radius: 8px;
  padding: var(--sp-2); color: var(--text-primary); font: inherit; font-size: 13px; cursor: pointer;
}
.sched-app .sched-insp-val {
  display: block; background: var(--card); border: 1px solid var(--border); border-radius: 8px;
  padding: var(--sp-2); font-size: 13px; color: var(--text-primary);
}
.sched-app .sched-insp-notes {
  background: var(--card); border: 1px solid var(--border); border-radius: 8px;
  padding: var(--sp-2); font-size: 12.5px; color: var(--text-secondary); line-height: 1.5;
  white-space: pre-wrap; word-break: break-word;
}
.sched-app .sched-insp-docs { display: flex; flex-direction: column; gap: var(--sp-1_5); }
.sched-app .sched-insp-doc {
  display: flex; align-items: center; gap: var(--sp-2);
  padding: var(--sp-2) var(--sp-2_5); background: var(--card);
  border: 1px solid var(--border); border-radius: 8px;
  color: var(--text-primary); text-decoration: none; font-size: 13px;
  transition: border-color .14s, background .14s;
}
.sched-app .sched-insp-doc:hover { border-color: var(--accent-edge); background: var(--bg-card-hover); }
.sched-app .sched-insp-doc > i:first-child { color: var(--text-muted); font-size: 15px; flex: 0 0 auto; }
.sched-app .sched-insp-doc-main { flex: 1; min-width: 0; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sched-app .sched-insp-doc-status { font-size: 11px; font-weight: 600; color: var(--text-muted); flex: 0 0 auto; }
.sched-app .sched-insp-doc-status.is-good { color: var(--st-complete); }
.sched-app .sched-insp-doc-status.is-bad { color: var(--hot); }
.sched-app .sched-insp-doc-go { color: var(--text-muted); font-size: 14px; flex: 0 0 auto; }
.sched-app .sched-insp-bar { height: 6px; border-radius: 3px; background: var(--bg-secondary); overflow: hidden; }
.sched-app .sched-insp-bar i { display: block; height: 100%; background: var(--accent); }
.sched-app .sched-insp-foot {
  display: flex; gap: var(--sp-2); align-items: center;
  padding: var(--sp-2_5) var(--sp-3); border-top: 1px solid var(--glass-border);
}
.sched-app .sched-insp-btn {
  border: 1px solid var(--border-strong); background: var(--card); color: var(--text-primary);
  border-radius: 8px; padding: var(--sp-2) var(--sp-2_5); font: inherit; font-size: 12.5px; font-weight: 600; cursor: pointer;
  display: inline-flex; align-items: center; gap: var(--sp-1);
}
.sched-app .sched-insp-btn:hover { background: var(--bg-card-hover); }
.sched-app .sched-insp-complete { background: var(--st-complete); border-color: var(--st-complete); color: #04140a; }
.sched-app .sched-insp-edit { margin-left: auto; background: transparent; border: 0; color: var(--accent); text-decoration: underline; }
.sched-app .sched-qc-pop {
  position: fixed; z-index: 1000; width: 300px;
  background: var(--glass-bg, #1b1e25); border: 1px solid var(--glass-border, #2c313b);
  border-radius: var(--r-lg, 15px); box-shadow: 0 18px 48px rgba(0,0,0,.5);
  color: var(--text-primary, #f2f4f8); font-family: 'Sora', system-ui, sans-serif;
  overflow: hidden;
}
.sched-qc-pop .sched-qc-head {
  padding: var(--sp-3) var(--sp-3_5); border-bottom: 1px solid var(--border, #2c313b);
  font-size: 12px; color: var(--accent, #33b1ff); font-weight: 700;
  display: flex; align-items: center; gap: var(--sp-1_5);
}
.sched-qc-pop .sched-qc-body { padding: var(--sp-3) var(--sp-3_5); display: flex; flex-direction: column; gap: var(--sp-2_5); }
.sched-qc-pop .sched-qc-f > label {
  display: block; font-size: 10px; text-transform: uppercase; letter-spacing: .04em;
  color: var(--text-muted, #727b8b); font-weight: 700; margin-bottom: var(--sp-1_5);
}
.sched-qc-pop .sched-qc-more {
  background: transparent; border: 0; color: var(--accent, #33b1ff);
  font: inherit; font-size: 12.5px; font-weight: 600; cursor: pointer; text-align: left; padding: 0;
}
.sched-qc-pop .sched-qc-foot { display: flex; gap: var(--sp-2); padding: 0 var(--sp-3_5) var(--sp-3_5); }
@media (prefers-reduced-motion: no-preference) {
  .sched-app .sched-view-enter { animation: schedViewEnter .19s var(--ease-standard, cubic-bezier(.4,0,.2,1)); }
}
@keyframes schedViewEnter { from { opacity: 0; } to { opacity: 1; } }
.sched-app .sched-lift {
  box-shadow: 0 0 0 2px var(--accent), 0 8px 22px rgba(0,0,0,.45);
  transform: scale(1.03);
  transition: transform .12s var(--spring, cubic-bezier(.34,1.56,.64,1));
  z-index: 6;
}
@media (prefers-reduced-motion: reduce) {
  .sched-app .sched-lift { transform: none; }
}
.sched-app .sched-railcol > * {
  background: var(--glass-bg-2);
  border: 1px solid var(--glass-border);
  border-radius: 12px;
  box-shadow: var(--glass-shadow);
  padding: var(--sp-3);
  margin: 0;
}
.sched-app .sched-railcol > * + * { margin-top: var(--sp-2_5); }
.sched-app .sched-railcol .sched-rail {
  background: var(--glass-bg-2);
  border: 1px solid var(--glass-border);
}
.sched-app .sched-railcol .sched-rail-head {
  cursor: pointer;
  user-select: none;
  position: relative;
  padding-right: var(--sp-5);
  transition: margin-bottom .15s ease;
}
.sched-app .sched-railcol .sched-rail-head::after {
  content: "";
  position: absolute; right: var(--sp-0_5); top: 50%;
  width: 6px; height: 6px;
  border-right: 2px solid currentColor;
  border-bottom: 2px solid currentColor;
  transform: translateY(-60%) rotate(45deg);
  opacity: .5;
  transition: transform .18s ease, opacity .15s ease;
}
.sched-app .sched-railcol .sched-rail-head:hover::after { opacity: 1; }
.sched-app .sched-rail-collapsed > .sched-rail-head::after { transform: translateY(-30%) rotate(-135deg); }
.sched-app .sched-rail-collapsed > .sched-rail-head { margin-bottom: 0; }
.sched-app .sched-railcol .sched-rail-collapsed > :not(.sched-rail-head) { display: none; }
.sched-app .sched-chip,
.sched-app .sched-event,
.sched-app .sched-swim-event,
.sched-app .sched-swim-chip {
  background: color-mix(in srgb, var(--jc, var(--accent)) 15%, var(--card));
  border-left: 4px solid var(--st);
  color: var(--text-primary);
  border-radius: 6px;
  box-shadow: 0 1px 2px rgba(0,0,0,.28);
  transition: background .12s, transform .12s, box-shadow .12s;
}
.sched-app .sched-chip:hover,
.sched-app .sched-event:hover,
.sched-app .sched-swim-event:hover,
.sched-app .sched-swim-chip:hover {
  background: color-mix(in srgb, var(--jc, var(--accent)) 26%, var(--card));
  transform: translateY(-1px);
  box-shadow: 0 4px 12px -2px rgba(0,0,0,.42);
}
.sched-app .sched-chip b,
.sched-app .sched-event-time,
.sched-app .sched-swim-event b {
  font-variant-numeric: tabular-nums;
  color: color-mix(in srgb, var(--jc, var(--accent)) 55%, var(--text-primary));
}
.sched-app .sched-event-time { display: flex; align-items: center; gap: var(--sp-1); padding-right: var(--sp-3_5); }
.sched-app .sched-swim-sub { opacity: .7; font-weight: 400; }
.sched-app .sched-event:hover .sched-event-resize { background: color-mix(in srgb, var(--st) 55%, transparent); }
.sched-app .sched-event > .sched-event-title,
.sched-app .sched-swim-event { padding-right: var(--sp-3_5); }
.sched-app .sched-event::after,
.sched-app .sched-swim-event::after {
  content: ""; position: absolute; top: var(--sp-1_5); right: var(--sp-1_5);
  width: 7px; height: 7px; border-radius: 50%;
  background: var(--st);
  box-shadow: 0 0 0 2px color-mix(in srgb, var(--st) 26%, transparent);
}
@media (prefers-reduced-motion: no-preference) {
  .sched-app .sched-event[data-status="in_progress"]::after,
  .sched-app .sched-event[data-status="no_show"]::after,
  .sched-app .sched-swim-event[data-status="in_progress"]::after,
  .sched-app .sched-swim-event[data-status="no_show"]::after { animation: schedStatusPulse 2s ease-out infinite; }
}
@keyframes schedStatusPulse {
  0%   { box-shadow: 0 0 0 0 color-mix(in srgb, var(--st) 60%, transparent); }
  70%  { box-shadow: 0 0 0 6px color-mix(in srgb, var(--st) 0%, transparent); }
  100% { box-shadow: 0 0 0 0 color-mix(in srgb, var(--st) 0%, transparent); }
}
.sched-app .sched-chip.is-complete,
.sched-app .sched-event.is-complete,
.sched-app .sched-swim-event.is-complete,
.sched-app .sched-list-card.is-complete {
  opacity: .74;
  text-decoration: none;
}
.sched-app .sched-chip.is-complete:hover,
.sched-app .sched-event.is-complete:hover,
.sched-app .sched-swim-event.is-complete:hover,
.sched-app .sched-list-card.is-complete:hover { opacity: 1; }
.sched-app .sched-swim-track .sched-swim-leave {
  position: absolute; inset: 0; z-index: 1; pointer-events: none;
  display: flex; align-items: center; justify-content: center; gap: var(--sp-1);
  font-size: 12px; font-weight: 600; color: var(--text-muted);
  background: repeating-linear-gradient(45deg,
    color-mix(in srgb, var(--text-muted) 9%, transparent) 0, color-mix(in srgb, var(--text-muted) 9%, transparent) 8px,
    transparent 8px, transparent 16px);
}
.sched-app .sched-swim-row.is-onleave .sched-swim-tech { opacity: .6; }
.sched-app .sched-leave-tag {
  font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: .03em;
  color: var(--text-muted); background: color-mix(in srgb, var(--text-muted) 14%, transparent);
  padding: 1px 6px; border-radius: 5px; margin-left: var(--sp-1);
}
.sched-app .sched-timeoff-list { display: flex; flex-direction: column; gap: var(--sp-1); margin: var(--sp-2) 0; }
.sched-app .sched-timeoff-empty { font-size: 13px; color: var(--text-muted); }
.sched-app .sched-timeoff-item {
  display: flex; align-items: center; gap: var(--sp-2); font-size: 13px;
  padding: var(--sp-1) var(--sp-2); background: var(--surface-2, rgba(127,127,127,.06)); border-radius: 7px;
}
.sched-app .sched-timeoff-dates { font-weight: 600; color: var(--text-primary); }
.sched-app .sched-timeoff-reason { color: var(--text-muted); flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sched-app .sched-timeoff-del { margin-left: auto; border: 0; background: none; color: var(--text-muted); font-size: 18px; line-height: 1; cursor: pointer; padding: 0 var(--sp-1); }
.sched-app .sched-timeoff-del:hover { color: #ef4444; }
.sched-app .sched-timeoff-add { display: flex; align-items: center; gap: var(--sp-1); flex-wrap: wrap; }
.sched-app .sched-timeoff-add input[type="text"] { flex: 1; min-width: 120px; }
.sched-app .sched-timeoff-sep { color: var(--text-muted); }
.sched-app .sched-timesheet-head { display: flex; align-items: center; justify-content: space-between; gap: var(--sp-2); flex-wrap: wrap; margin-bottom: var(--sp-2); }
.sched-app .sched-timesheet-controls { display: flex; align-items: center; gap: var(--sp-1); flex-wrap: wrap; }
.sched-ev-av {
  display: inline-flex; align-items: center; justify-content: center;
  width: 14px; height: 14px;
  border-radius: 50%;
  background: var(--jc, var(--accent));
  color: #fff;
  font-size: 8px; font-weight: 800; letter-spacing: .02em;
  margin-left: auto;
  flex-shrink: 0;
}
.sched-tech-av {
  display: inline-flex; align-items: center; justify-content: center;
  width: 22px; height: 22px;
  border-radius: 50%;
  color: #fff;
  font-size: 9px; font-weight: 800;
  flex-shrink: 0;
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.14);
}
.sched-app .sched-nowline {
  background: var(--accent);
  box-shadow: 0 0 6px var(--accent-edge);
}
.sched-app .sched-nowline::before {
  background: var(--accent);
  box-shadow: 0 0 0 0 rgba(51,177,255,.55);
}
.sched-nowline-lbl {
  position: absolute;
  left: var(--sp-3);
  top: calc(var(--sp-2_5) * -1);
  background: var(--accent);
  color: #0b1020;
  font-size: 9px; font-weight: 800;
  font-variant-numeric: tabular-nums;
  padding: var(--sp-0_5) var(--sp-1_5);
  border-radius: 999px;
  pointer-events: none;
}
.sched-app .sched-tg-col.is-offday,
.sched-app .sched-month-cell.is-offday {
  background:
    repeating-linear-gradient(-45deg, rgba(120,135,170,0.055) 0 5px, transparent 5px 11px),
    rgba(0,0,0,0.22);
}
.sched-app .sched-tg-col.is-today { background: rgba(51,177,255,0.05); }
.sched-app .sched-tg-headcell.is-today { box-shadow: inset 0 -2px 0 var(--accent); }
.sched-app .modal-box {
  background: var(--card);
  border: 1px solid var(--border-strong);
  border-radius: 16px;
  box-shadow: 0 24px 60px rgba(0,0,0,.6), inset 0 1px 0 rgba(255,255,255,0.06);
}
.sched-app .sched-modal {
  display: flex;
  flex-direction: column;
  max-height: 90vh;
  padding: 0;
  overflow: hidden;
  width: 100%;
}
.sched-modal-head {
  display: flex;
  align-items: center;
  gap: var(--sp-3);
  padding: 16px 18px;
  border-bottom: 1px solid var(--border);
  background: linear-gradient(180deg, rgba(255,255,255,0.03), transparent);
  flex-shrink: 0;
}
.sched-modal-head h3 {
  margin: 0;
  font-size: 16px;
  font-weight: 700;
  display: flex;
  align-items: center;
  gap: var(--sp-2_5);
  color: var(--text-primary);
}
.sched-modal-ico {
  width: 32px; height: 32px;
  display: inline-flex; align-items: center; justify-content: center;
  border-radius: 9px;
  background: var(--accent-soft);
  border: 1px solid var(--accent-edge);
  color: var(--accent);
  font-size: 17px;
}
.sched-modal-x {
  margin-left: auto;
  width: 30px; height: 30px;
  display: inline-flex; align-items: center; justify-content: center;
  border-radius: 8px;
  border: 1px solid var(--border);
  background: rgba(255,255,255,0.02);
  color: var(--text-muted);
  cursor: pointer;
  font-size: 16px;
  transition: background .15s, color .15s, transform .12s;
}
.sched-modal-x:hover { background: rgba(255,255,255,0.08); color: var(--text-primary); }
.sched-modal-x:active { transform: scale(0.94); }
.sched-modal-ico-green {
  background: rgba(34,197,94,0.14);
  border-color: rgba(34,197,94,0.40);
  color: #22c55e;
}
.sched-modal-sub {
  font-size: 11px;
  font-weight: 500;
  color: var(--text-muted);
  padding: var(--sp-0_5) var(--sp-2);
  border: 1px solid var(--border);
  border-radius: 999px;
}
.sched-modal-status { font-size: 12px; color: var(--text-muted); margin-bottom: 10px; }
.sched-color-input {
  width: 100%; height: 40px;
  padding: 3px;
  background: var(--bg);
  border: 1px solid var(--border-strong);
  border-radius: 9px;
  cursor: pointer;
}
.sched-modal-body {
  padding: 16px 18px;
  overflow-y: auto;
  flex: 1;
}
.sched-app .sched-modal .sched-modal-footer {
  flex-direction: row;
  align-items: center;
  gap: var(--sp-2_5);
  flex-wrap: wrap;
  margin: 0;
  padding: 13px 18px;
  border-top: 1px solid var(--border);
  background: linear-gradient(0deg, rgba(0,0,0,0.18), transparent);
  flex-shrink: 0;
}
.sched-app .sched-modal .sched-primaryactions { margin-left: auto; }
.sset-sec + .sset-sec { margin-top: 18px; }
.sset-sec-head {
  display: flex;
  align-items: center;
  gap: var(--sp-2);
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .1em;
  color: var(--text-muted);
  margin-bottom: 11px;
  padding-bottom: 7px;
  border-bottom: 1px solid var(--border);
}
.sset-sec-head i { color: var(--accent); font-size: 14px; }
.sset-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--sp-3);
}
.sset-grid .span2 { grid-column: 1 / -1; }
.sset-grid .form-group { margin: 0; }
.sched-app .form-group label {
  display: block;
  font-size: 12px;
  font-weight: 600;
  color: var(--text-secondary);
  margin-bottom: 6px;
}
.sched-app .sched-modal-body input[type="text"],
.sched-app .sched-modal-body input[type="email"],
.sched-app .sched-modal-body input[type="tel"],
.sched-app .sched-modal-body input[type="time"],
.sched-app .sched-modal-body input[type="date"],
.sched-app .sched-modal-body input[type="number"],
.sched-app .sset-tabbody input[type="text"],
.sched-app .sset-tabbody input[type="email"],
.sched-app .sset-tabbody input[type="tel"],
.sched-app .sset-tabbody input[type="time"],
.sched-app .sset-tabbody input[type="date"],
.sched-app .sset-tabbody input[type="number"],
.sched-app .sched-modal .filter-select {
  width: 100%;
  box-sizing: border-box;
  padding: 9px 12px;
  font-size: 13px;
  font-family: inherit;
  color: var(--text-primary);
  background: var(--bg);
  border: 1px solid var(--border-strong);
  border-radius: 9px;
  transition: border-color .15s, box-shadow .15s;
}
.sched-app .sched-modal input:focus,
.sched-app .sched-modal .filter-select:focus {
  outline: none;
  border-color: var(--accent);
  box-shadow: 0 0 0 3px var(--accent-soft);
}
.sched-app .hint { color: var(--text-muted); font-weight: 400; font-size: 11px; }
.sched-app .hint-block { display: block; margin-top: 6px; line-height: 1.45; }
.sched-checklist-add, .sched-checklist-tpl, .sset-copyrow {
  display: flex; gap: var(--sp-2); align-items: center; margin-top: 8px; flex-wrap: wrap;
}
.sset-copyrow { margin-top: 0; }
.sset-copyrow input { flex: 1; min-width: 0; }
.sched-checklist-add input { flex: 1; }
.sset-toggle {
  display: flex;
  align-items: center;
  gap: var(--sp-3);
  padding: 11px 0;
  cursor: pointer;
  border-bottom: 1px solid var(--border);
}
.sset-toggle:last-child { border-bottom: none; }
.sched-app .form-group label.sset-toggle {
  display: flex;
  padding: 0;
  margin-bottom: 0;
  border-bottom: none;
}
.sset-toggle input { position: absolute; opacity: 0; width: 0; height: 0; }
.sset-switch {
  flex-shrink: 0;
  width: 38px; height: 22px;
  border-radius: 999px;
  background: rgba(255,255,255,0.10);
  border: 1px solid var(--border-strong);
  position: relative;
  transition: background .18s, border-color .18s;
}
.sset-switch::after {
  content: "";
  position: absolute;
  top: var(--sp-0_5); left: var(--sp-0_5);
  width: 16px; height: 16px;
  border-radius: 50%;
  background: #cfd6e4;
  transition: transform .18s, background .18s;
}
.sset-toggle input:checked + .sset-switch {
  background: var(--accent);
  border-color: var(--accent);
}
.sset-toggle input:checked + .sset-switch::after { transform: translateX(16px); background: #fff; }
.sset-toggle input:focus-visible + .sset-switch { box-shadow: 0 0 0 3px var(--accent-soft); }
.sset-toggle-label { font-size: 13px; color: var(--text-primary); }
.sset-tabwrap { display: flex; flex: 1; min-height: 0; }
.sset-tabs {
  flex-shrink: 0;
  width: 176px;
  padding: var(--sp-3) var(--sp-2_5);
  border-right: 1px solid var(--border);
  display: flex;
  flex-direction: column;
  gap: 3px;
  background: rgba(0,0,0,0.14);
  overflow-y: auto;
}
.sset-tab {
  display: flex;
  align-items: center;
  gap: var(--sp-2_5);
  padding: 9px 11px;
  border: none;
  background: transparent;
  color: var(--text-secondary);
  font-family: inherit;
  font-size: 13px;
  font-weight: 600;
  text-align: left;
  border-radius: 8px;
  cursor: pointer;
  transition: background .15s, color .15s;
}
.sset-tab i { font-size: 16px; color: var(--text-muted); transition: color .15s; }
.sset-tab:hover { background: rgba(255,255,255,0.05); color: var(--text-primary); }
.sset-tab.active { background: var(--accent-soft); color: var(--accent); }
.sset-tab.active i { color: var(--accent); }
.sset-tabbody { flex: 1; padding: 18px 20px; overflow-y: auto; }
.sset-panel { display: none; animation: ssetFade .18s ease; }
.sset-panel.active { display: block; }
@keyframes ssetFade { from { opacity: 0; transform: translateY(4px); } }
.sset-panel-lead {
  font-size: 12.5px;
  color: var(--text-muted);
  line-height: 1.5;
  margin-bottom: 16px;
}
.sched-app .sched-weekdays { display: flex; gap: var(--sp-1_5); flex-wrap: wrap; }
.sched-app .sched-wd {
  width: 34px; height: 34px;
  border-radius: 8px;
  border: 1px solid var(--border-strong);
  background: var(--bg);
  color: var(--text-secondary);
  font-weight: 700;
  font-size: 12px;
  cursor: pointer;
  transition: all .14s;
}
.sched-app .sched-wd:hover { border-color: var(--accent-edge); color: var(--text-primary); }
.sched-app .sched-wd.active {
  background: var(--accent);
  border-color: var(--accent);
  color: #fff;
}
.sched-mc-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 8px;
}
.sched-mc-title { font-size: 12.5px; font-weight: 700; color: var(--text-primary); }
.sched-mc-nav {
  width: 24px; height: 24px;
  display: inline-flex; align-items: center; justify-content: center;
  border: 1px solid var(--border); border-radius: 7px;
  background: rgba(255,255,255,0.02); color: var(--text-secondary);
  cursor: pointer; font-size: 14px;
  transition: background .15s, color .15s;
}
.sched-mc-nav:hover { background: var(--accent-soft); color: var(--accent); }
.sched-mc-grid {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: var(--sp-0_5);
}
.sched-mc-dow { margin-bottom: 3px; }
.sched-mc-wd {
  text-align: center;
  font-size: 9.5px;
  font-weight: 700;
  color: var(--text-muted);
  padding: var(--sp-0_5) 0;
}
.sched-mc-day {
  aspect-ratio: 1 / 1;
  min-height: 24px;
  display: inline-flex; align-items: center; justify-content: center;
  border: none; background: transparent;
  color: var(--text-secondary);
  font-family: inherit; font-size: 11.5px; font-weight: 500;
  border-radius: 7px; cursor: pointer;
  position: relative;
  transition: background .12s, color .12s;
}
.sched-mc-day:hover { background: rgba(255,255,255,0.07); color: var(--text-primary); }
.sched-mc-blank { pointer-events: none; }
.sched-mc-day.has::after {
  content: ""; position: absolute; bottom: 3px; left: 50%; transform: translateX(-50%);
  width: 4px; height: 4px; border-radius: 50%; background: var(--accent);
}
.sched-mc-day.today { color: var(--accent); font-weight: 700; }
.sched-mc-day.sel {
  background: var(--accent); color: #fff; font-weight: 700;
}
.sched-mc-day.sel.has::after { background: #fff; }
.sched-wx-place { display: inline-flex; align-items: center; gap: 3px; font-size: 10.5px; color: var(--text-muted); font-weight: 500; }
.sched-wx-place i { font-size: 12px; }
.sched-wx-list { display: flex; flex-direction: column; gap: 1px; }
.sched-wx-row {
  display: flex; align-items: center; gap: var(--sp-2);
  width: 100%;
  padding: 5px 6px;
  border: none; background: transparent;
  border-radius: 7px; cursor: pointer;
  font-family: inherit;
  transition: background .12s;
}
.sched-wx-row:hover { background: rgba(255,255,255,0.06); }
.sched-wx-day { flex: 1; text-align: left; font-size: 12px; font-weight: 600; color: var(--text-secondary); }
.sched-wx-ico { font-size: 16px; color: var(--accent); }
.sched-wx-temp { font-size: 12px; font-weight: 600; color: var(--text-primary); min-width: 52px; text-align: right; }
.sched-wx-lo { color: var(--text-muted); font-weight: 400; margin-left: 3px; }
.sched-today-date { margin-left: auto; font-size: 10.5px; color: var(--text-muted); font-weight: 600; }
.sched-today-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--sp-2);
  margin-top: 4px;
}
.sched-today-stat {
  display: flex; flex-direction: column; align-items: center; gap: 1px;
  padding: 9px 4px;
  background: rgba(255,255,255,0.03);
  border: 1px solid var(--border);
  border-radius: 9px;
}
.sched-today-stat .n { font-size: 18px; font-weight: 800; color: var(--text-primary); line-height: 1; }
.sched-today-stat .n.warn { color: #fbbf24; }
.sched-today-stat .l { font-size: 9.5px; text-transform: uppercase; letter-spacing: .05em; color: var(--text-muted); font-weight: 600; }
.sched-today-next {
  display: block; width: 100%; text-align: left;
  margin-top: 8px;
  padding: var(--sp-2) var(--sp-2_5);
  border: 1px solid var(--border);
  border-left: 3px solid var(--accent);
  border-radius: 9px;
  background: rgba(255,255,255,0.02);
  color: var(--text-secondary);
  font-family: inherit; font-size: 12px;
  cursor: pointer;
  transition: background .14s;
}
.sched-today-next:hover { background: rgba(255,255,255,0.06); }
.sched-today-next .lbl { color: var(--text-muted); font-size: 10.5px; text-transform: uppercase; letter-spacing: .05em; margin-right: 6px; }
.sched-today-next b { color: var(--text-primary); }
.sched-app .sched-tech-hrs {
  margin-left: auto;
  font-size: 10.5px; font-weight: 700;
  color: var(--text-secondary);
  background: rgba(255,255,255,0.06);
  border-radius: 999px;
  padding: 1px 7px;
}
.sched-app .sched-tech-item.active .sched-tech-hrs { color: var(--accent); background: var(--accent-soft); }
.sched-app .sched-tech-hrs + .sched-tech-edit { margin-left: 8px; }
.sched-signout-btn:hover { background: rgba(239,68,68,0.12); color: #ef4444; border-color: rgba(239,68,68,0.3); }
.sched-kbd-help {
  position: absolute;
  top: calc(100% + var(--sp-2));
  right: var(--sp-3);
  width: 300px;
  padding: var(--sp-3_5) var(--sp-4);
  border-radius: 14px;
  background: var(--glass-bg);
  border: 1px solid var(--glass-border);
  box-shadow: var(--glass-shadow);
  -webkit-backdrop-filter: var(--glass-blur);
  backdrop-filter: var(--glass-blur);
  z-index: 70;
}
.sched-kbd-help-title { font-size: 12px; font-weight: 700; color: var(--text-primary); margin-bottom: 10px; }
.sched-kbd-row {
  display: flex; align-items: center; gap: var(--sp-1_5);
  font-size: 12px; color: var(--text-secondary);
  padding: var(--sp-1) 0;
}
.sched-kbd-row span { margin-left: 6px; }
.sched-kbd-help kbd {
  min-width: 20px; height: 20px;
  display: inline-flex; align-items: center; justify-content: center;
  padding: 0 5px;
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 11px; font-weight: 600;
  color: var(--text-primary);
  background: rgba(255,255,255,0.07);
  border: 1px solid var(--border-strong);
  border-bottom-width: 2px;
  border-radius: 5px;
}
.sched-rail-count {
  margin-left: auto;
  font-size: 10.5px; font-weight: 700;
  color: var(--accent);
  background: var(--accent-soft);
  border: 1px solid var(--accent-edge);
  border-radius: 999px;
  padding: 1px 7px;
}
.sched-unsched-card {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: var(--sp-2) var(--sp-2_5);
  border-radius: 9px;
  border: 1px solid var(--border);
  border-left: 3px solid var(--accent);
  background: rgba(255,255,255,0.02);
  margin-top: 8px;
  transition: background .14s, transform .12s;
}
.sched-unsched-card:hover { background: rgba(255,255,255,0.06); transform: translateX(2px); }
.sched-qa-btn {
  flex: 0 0 auto;
  width: 28px; height: 28px;
  display: inline-flex; align-items: center; justify-content: center;
  border: 1px solid var(--border);
  border-radius: 7px;
  background: transparent;
  color: var(--text-2, #94a3b8);
  cursor: pointer;
  font-size: 15px;
  transition: background .14s, color .14s, border-color .14s;
}
.sched-qa-btn:hover { background: var(--accent); border-color: var(--accent); color: #fff; }

.sched-qa-pop {
  position: fixed;
  z-index: var(--z-modal, 1000);
  min-width: 180px;
  max-height: 60vh;
  overflow-y: auto;
  padding: 5px;
  border-radius: 11px;
  background: var(--panel, #1b1e25);
  border: 1px solid var(--border);
  box-shadow: 0 14px 34px -10px rgba(0,0,0,.6);
}
.sched-qa-row {
  display: flex; align-items: center; gap: 9px;
  width: 100%;
  padding: 8px 10px;
  border: 0; border-radius: 8px;
  background: transparent;
  color: var(--text, #e5e7eb);
  font: inherit; font-size: 13px;
  text-align: left; cursor: pointer;
}
.sched-qa-row:hover { background: rgba(255,255,255,0.07); }
.sched-qa-dot { flex: 0 0 auto; width: 9px; height: 9px; border-radius: 50%; }
.sched-qa-name { flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sched-qa-hrs { flex: 0 0 auto; font-size: 11px; color: var(--text-2, #94a3b8); font-variant-numeric: tabular-nums; }
html[data-theme="light"] .sched-qa-pop { background: #fff; }
html[data-theme="light"] .sched-qa-row { color: #1e293b; }
html[data-theme="light"] .sched-qa-row:hover { background: rgba(15,23,42,0.05); }
.sched-stage-overdue {
  font-size: 10px; font-weight: 700;
  color: #f59e0b;
  background: rgba(245,158,11,0.12);
  border: 1px solid rgba(245,158,11,0.4);
  border-radius: 999px;
  padding: var(--sp-px) var(--sp-1_5);
  margin-left: auto;
}
.sched-stage-overdue + .sched-rail-count { margin-left: 6px; }
.sched-stage-card {
  display: flex;
  align-items: center;
  gap: var(--sp-2);
  padding: var(--sp-2) var(--sp-2_5);
  border-radius: 9px;
  border: 1px solid var(--border);
  border-left: 3px solid #0ea5e9;
  background: rgba(14,165,233,0.05);
  margin-top: 8px;
  cursor: grab;
  touch-action: none;
  transition: background .14s, transform .12s, box-shadow .12s;
}
.sched-stage-card:hover { background: rgba(14,165,233,0.1); transform: translateX(2px); }
.sched-stage-card.is-overdue { border-left-color: #f59e0b; background: rgba(245,158,11,0.06); }
.sched-stage-card.sched-dragging { opacity: .4; }
.sched-stage-main { flex: 1 1 auto; min-width: 0; cursor: pointer; }
.sched-stage-cb { color: var(--accent); font-weight: 600; }
.sched-stage-card.is-overdue .sched-stage-cb { color: var(--st-in_progress); }
.sched-stage-grip {
  flex: 0 0 auto;
  display: inline-flex; align-items: center;
  color: var(--text-2, #94a3b8);
  font-size: 16px;
  opacity: .5;
}
.sched-stage-card:hover .sched-stage-grip { opacity: .85; }
.sched-stage-rail.sched-drop-active {
  outline: 2px dashed #0ea5e9;
  outline-offset: 2px;
  border-radius: 11px;
  background: rgba(14,165,233,0.06);
}
.sched-stage-pop {
  position: fixed;
  z-index: var(--z-modal, 1000);
  width: 268px; max-width: calc(100vw - 16px);
  padding: var(--sp-3);
  border-radius: 12px;
  background: var(--panel, #1b1e25);
  border: 1px solid var(--border);
  box-shadow: 0 14px 34px -10px rgba(0,0,0,.6);
}
.sched-stage-pop-head { font-weight: 700; font-size: 13px; margin-bottom: 8px; }
.sched-stage-pop-lbl {
  display: block;
  font-size: 11.5px; font-weight: 600;
  color: var(--text-2, #94a3b8);
  margin-bottom: 9px;
}
.sched-stage-pop-lbl .input {
  margin-top: var(--sp-1);
  width: 100%;
  padding: var(--sp-1_5) var(--sp-2);
  font: inherit; font-size: 13px; font-weight: 400;
  color: var(--text, #e5e7eb);
  background: var(--bg-elevated, rgba(255,255,255,0.04));
  border: 1px solid var(--border);
  border-radius: 8px;
  box-sizing: border-box;
}
.sched-stage-pop-lbl textarea.input { resize: vertical; min-height: 40px; }
.sched-stage-pop-lbl .input:focus { outline: none; border-color: var(--accent); }
html[data-theme="light"] .sched-stage-pop-lbl .input { color: #1e293b; background: #fff; }
.sched-stage-pop-opt { font-weight: 400; opacity: .7; }
.sched-stage-pop-actions { display: flex; justify-content: flex-end; gap: var(--sp-2); margin-top: var(--sp-0_5); }
.sched-stage-pop-actions .btn { width: auto; flex: 0 0 auto; }
html[data-theme="light"] .sched-stage-pop { background: #fff; }
html[data-theme="light"] .sched-stage-card { background: rgba(14,165,233,0.06); }
html[data-theme="light"] .sched-stage-card:hover { background: rgba(14,165,233,0.11); }
.sched-servicedue-card {
  padding: var(--sp-2) var(--sp-2_5);
  border-radius: 9px;
  border: 1px solid var(--border);
  border-left: 3px solid #f59e0b;
  background: rgba(255,255,255,0.02);
  margin-top: 8px;
}
.sched-servicedue-card.is-overdue { border-left-color: #ef4444; }
.sched-servicedue-when { text-transform: capitalize; color: var(--text-muted); }
.sched-servicedue-card.is-overdue .sched-servicedue-when { color: #ef4444; }
.sched-servicedue-book { margin-top: var(--sp-1_5); width: 100%; justify-content: center; }
.sched-attention {
  border: 1px solid rgba(239,68,68,0.35);
  background: rgba(239,68,68,0.08);
  border-radius: 12px;
  padding: var(--sp-3) var(--sp-3_5);
  margin-bottom: 14px;
}
.sched-att-head {
  display: flex; align-items: center; gap: var(--sp-2);
  font-size: 13px; font-weight: 700; color: #f87171;
  margin-bottom: 9px;
}
.sched-att-list { display: flex; flex-wrap: wrap; gap: 7px; align-items: center; }
.sched-att-chip {
  display: inline-flex; align-items: center; gap: var(--sp-1_5);
  padding: 5px 10px;
  border: 1px solid rgba(239,68,68,0.3);
  background: rgba(255,255,255,0.03);
  color: var(--text-primary);
  border-radius: 999px;
  font-family: inherit; font-size: 12px; font-weight: 500;
  cursor: pointer;
  transition: background .14s, border-color .14s;
}
.sched-att-chip:hover { background: rgba(239,68,68,0.14); border-color: rgba(239,68,68,0.5); }
.sched-att-date { color: var(--text-muted); font-size: 11px; }
.sched-att-more { font-size: 11px; color: var(--text-muted); align-self: center; }
.sched-att-x {
  margin-left: auto;
  width: 24px; height: 24px;
  display: inline-flex; align-items: center; justify-content: center;
  border: none; background: transparent;
  color: #f87171; cursor: pointer; border-radius: 7px; font-size: 15px;
  transition: background .14s;
}
.sched-att-x:hover { background: rgba(239,68,68,0.18); }
.sched-layout.sched-history-mode { grid-template-columns: 1fr; }
.sched-layout.sched-history-mode .sched-railcol { display: none; }

.sched-history-bar {
  display: flex;
  align-items: center;
  gap: var(--sp-3_5);
  flex-wrap: wrap;
  margin-bottom: 16px;
}
.sched-history-title {
  display: flex; align-items: center; gap: var(--sp-2);
  font-size: 15px; font-weight: 700; color: var(--text-primary);
}
.sched-history-title i { color: var(--accent); }
.sched-history-searchwrap {
  position: relative;
  margin-left: auto;
  flex: 1;
  max-width: 380px;
  min-width: 200px;
}
.sched-history-searchwrap > i {
  position: absolute; left: var(--sp-3); top: 50%; transform: translateY(-50%);
  color: var(--text-muted); font-size: 15px; pointer-events: none;
}
.sched-app input.sched-history-search {
  width: 100%;
  box-sizing: border-box;
  padding: 9px 12px 9px 34px;
  font-size: 13px; font-family: inherit;
  color: var(--text-primary);
  background: var(--bg);
  border: 1px solid var(--border-strong);
  border-radius: 10px;
  transition: border-color .15s, box-shadow .15s;
}
.sched-app input.sched-history-search:focus {
  outline: none;
  border-color: var(--accent);
  box-shadow: 0 0 0 3px var(--accent-soft);
}
.sched-hist-count {
  font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: .08em;
  color: var(--text-muted);
  margin-bottom: 12px;
}
.shist-group { margin-bottom: 22px; }
.sched-hist-more { display: flex; justify-content: center; padding: 8px 0 20px; }
.shist-date {
  font-size: 12px; font-weight: 700; color: var(--text-secondary);
  text-transform: uppercase; letter-spacing: .04em;
  padding-bottom: 7px; margin-bottom: 10px;
  border-bottom: 1px solid var(--border);
}
.shist-card {
  display: flex;
  align-items: center;
  gap: var(--sp-3);
  padding: var(--sp-3) var(--sp-3_5) var(--sp-3) var(--sp-4);
  border: 1px solid var(--border);
  border-radius: 11px;
  background: rgba(255,255,255,0.02);
  margin-bottom: 8px;
  position: relative;
  overflow: hidden;
  transition: background .14s, border-color .14s;
}
.shist-card:hover { background: rgba(255,255,255,0.055); border-color: var(--border-strong); }
.shist-stripe { position: absolute; left: 0; top: 0; bottom: 0; width: 4px; }
.shist-body { flex: 1; min-width: 0; cursor: pointer; }
.shist-top { display: flex; align-items: center; gap: var(--sp-2_5); flex-wrap: wrap; }
.shist-name { font-size: 14px; font-weight: 700; color: var(--text-primary); }
.shist-badge {
  font-size: 10.5px; font-weight: 700; text-transform: uppercase; letter-spacing: .04em;
  padding: var(--sp-0_5) var(--sp-2); border: 1px solid; border-radius: 999px;
}
.shist-time {
  display: inline-flex; align-items: center; gap: var(--sp-1);
  font-size: 12px; color: var(--text-muted);
}
.shist-time i { font-size: 13px; }
.shist-flags {
  display: inline-flex; align-items: center; gap: var(--sp-1);
  font-size: 11px; font-weight: 700;
  padding: var(--sp-0_5) var(--sp-2); border-radius: 999px;
  background: rgba(245,158,11,.14); color: #d97706;
}
.shist-flags i { font-size: 12px; }
.shist-review {
  display: inline-flex; align-items: center; gap: var(--sp-1);
  font-size: 11px; font-weight: 700;
  padding: var(--sp-0_5) var(--sp-2); border-radius: 999px;
  border: 1px solid color-mix(in srgb, var(--accent) 38%, transparent);
  color: var(--accent); background: transparent;
}
.shist-review.manual { background: color-mix(in srgb, var(--accent) 14%, transparent); }
.shist-review i { font-size: 12px; }
html[data-theme="light"] .shist-review { color: #0f76bf; }
.shist-repnum { color: var(--text-muted); font-family: ui-monospace, monospace; font-size: 11.5px; text-transform: none; }
.shist-meta {
  font-size: 12.5px; color: var(--text-secondary);
  margin-top: 4px;
  text-transform: capitalize;
}
.shist-sep { color: var(--text-muted); margin: 0 7px; }
.shist-type { color: var(--text-primary); font-weight: 600; }
.shist-addr {
  display: flex; align-items: center; gap: 5px;
  font-size: 12px; color: var(--text-muted);
  margin-top: 4px;
}
.shist-addr i { font-size: 13px; }
.shist-thumbs { margin-top: 8px; }
.shist-report { flex-shrink: 0; align-self: center; }
.sched-app .sched-legend-label {
  display: inline-flex; align-items: center; gap: var(--sp-1);
  color: var(--text-muted); font-size: 11px; font-weight: 700;
  text-transform: uppercase; letter-spacing: .04em;
  margin-right: var(--sp-0_5);
}
.sched-app .sched-legend-item {
  display: inline-flex; align-items: center; gap: var(--sp-1_5);
  border: 1px solid var(--border);
  background: rgba(255,255,255,0.03);
  color: var(--text-secondary);
  font-family: inherit; font-size: 12px;
  padding: var(--sp-0_5) var(--sp-2); border-radius: 999px;
  cursor: pointer;
  transition: background .14s, color .14s, opacity .14s, border-color .14s;
}
.sched-app .sched-legend-item:hover { background: rgba(255,255,255,0.08); color: var(--text-primary); border-color: var(--border-strong); }
.sched-app .sched-legend-item[aria-pressed="true"] { border-color: var(--accent-edge); }
.sched-app .sched-legend-item.off { opacity: .45; text-decoration: line-through; background: transparent; }
.sched-app .sched-legend-item.off .sched-legend-dot { box-shadow: inset 0 0 0 2px var(--surface); }
.sched-app .sched-req-badge {
  position: absolute; top: calc(var(--sp-1_5) * -1); right: calc(var(--sp-1_5) * -1);
  min-width: 17px; height: 17px; padding: 0 var(--sp-1);
  display: inline-flex; align-items: center; justify-content: center;
  background: var(--hot); color: #fff;
  font-size: 10px; font-weight: 700; line-height: 1;
  font-family: var(--num, 'Inter', system-ui, sans-serif); font-variant-numeric: tabular-nums;
  border-radius: 999px;
  box-shadow: 0 0 0 2px var(--bg);
  pointer-events: none;
}
.sched-app .sched-topbar-search input {
  width: 100%;
  box-sizing: border-box;
  height: 34px;
  padding: 0 46px 0 34px;
  font-size: 13px; font-family: inherit;
  color: var(--text-primary);
  background: rgba(0,0,0,0.25);
  border: 1px solid var(--border);
  border-radius: 9px;
  transition: border-color .15s, box-shadow .15s, background .15s;
}
.sched-app .sched-topbar-search input::placeholder { color: var(--text-muted); }
.sched-app .sched-topbar-search input:focus {
  outline: none;
  background: var(--bg);
  border-color: var(--accent);
  box-shadow: 0 0 0 3px var(--accent-soft);
}
.sched-daymap-tech {
  margin-left: auto;
  max-width: 170px;
  font-size: 13px;
  padding: 6px 10px;
}
.sched-daymap-optimize {
  display: inline-flex;
  align-items: center;
  gap: var(--sp-1_5);
  font-size: 13px;
  font-weight: 600;
  padding: var(--sp-1_5) var(--sp-3);
  border-radius: var(--sp-2);
  border: 1px solid var(--border);
  background: rgba(255,255,255,0.04);
  color: var(--text-primary);
  cursor: pointer;
  white-space: nowrap;
  transition: background .12s, border-color .12s, opacity .12s;
}
.sched-daymap-optimize:hover { background: rgba(255,255,255,0.08); border-color: var(--accent); }
.sched-daymap-optimize:active { transform: scale(0.97); }
.sched-daymap-optimize:disabled { opacity: 0.55; cursor: progress; }
.sched-mapview-bar .sched-daymap-optimize { margin-left: var(--sp-1); }
.sched-app .sched-map-modal .sched-modal-body { padding: var(--sp-2) var(--sp-3) var(--sp-3); }
.sched-app .sched-map-modal .day-map-body {
  grid-template-columns: minmax(0, 1fr) 340px;
  gap: var(--sp-3);
}
.sched-app .sched-map-modal #dayMap {
  height: 74vh;
  min-height: 440px;
  border: 1px solid var(--border);
  border-radius: 12px;
  box-shadow: var(--glass-shadow);
}
.sched-app .sched-map-modal #dayMapList {
  max-height: 74vh;
  padding-right: var(--sp-1);
  display: flex;
  flex-direction: column;
  gap: var(--sp-1_5);
}
@media (max-width: 820px) {
  .sched-app .sched-map-modal .day-map-body { grid-template-columns: 1fr; }
  .sched-app .sched-map-modal #dayMap { height: 52vh; min-height: 300px; }
  .sched-app .sched-map-modal #dayMapList { max-height: none; }
}
.sched-search-results {
  position: absolute;
  top: calc(100% + var(--sp-2));
  left: 0; right: 0;
  max-height: 60vh;
  overflow-y: auto;
  padding: var(--sp-1_5);
  border-radius: 14px;
  background: var(--glass-bg);
  border: 1px solid var(--glass-border);
  box-shadow: var(--glass-shadow);
  -webkit-backdrop-filter: var(--glass-blur);
  backdrop-filter: var(--glass-blur);
  z-index: 70;
}
.sched-search-item {
  display: flex; align-items: center; gap: var(--sp-2_5);
  width: 100%;
  padding: 9px 10px;
  border: none; background: transparent;
  border-radius: 9px; cursor: pointer;
  text-align: left;
  transition: background .12s;
}
.sched-search-item:hover { background: rgba(255,255,255,0.07); }
.sched-search-item .ss-dot { width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0; }
.sched-search-item .ss-body { display: flex; flex-direction: column; gap: var(--sp-0_5); min-width: 0; }
.sched-search-item .ss-cust { font-size: 13px; font-weight: 600; color: var(--text-primary); }
.sched-search-item .ss-meta { font-size: 11.5px; color: var(--text-muted); }
.sched-search-empty { padding: var(--sp-3_5); text-align: center; font-size: 12.5px; color: var(--text-muted); }
.sched-brief-cta {
  display: flex; align-items: center; justify-content: center; gap: var(--sp-1_5);
  width: 100%; padding: var(--sp-2_5);
  border: 1px solid var(--accent-edge);
  background: var(--accent-soft);
  color: var(--accent);
  border-radius: 10px; cursor: pointer;
  font-family: inherit; font-size: 13px; font-weight: 600;
  transition: background .15s;
}
.sched-brief-cta:hover { background: rgba(51,177,255,0.18); }
.sched-brief-cta i { font-size: 15px; }
.sched-brief-body {
  font-size: 12.5px; line-height: 1.55; color: var(--text-secondary);
  padding: var(--sp-0_5) var(--sp-1);
}
.sched-brief-refresh {
  margin-left: auto; width: 24px; height: 24px;
  display: inline-flex; align-items: center; justify-content: center;
  border: none; background: transparent; color: var(--text-muted);
  cursor: pointer; border-radius: 7px; font-size: 14px;
}
.sched-brief-refresh:hover { background: rgba(255,255,255,0.08); color: var(--accent); }
.sched-cmd-item.ai i { color: var(--accent); }
.sched-cmd-item.ai .sched-cmd-hint { color: var(--accent); border: 1px solid var(--accent-edge); border-radius: 999px; padding: var(--sp-0_5) var(--sp-1_5); font-size: 10px; font-weight: 700; }
.sched-cmd-overlay {
  position: fixed; inset: 0; z-index: 200;
  display: flex; align-items: flex-start; justify-content: center;
  padding-top: 12vh;
  background: rgba(0,0,0,.45);
  -webkit-backdrop-filter: blur(2px); backdrop-filter: blur(2px);
}
.sched-cmd {
  width: 560px; max-width: 92vw;
  background: var(--glass-bg); border: 1px solid var(--glass-border);
  border-radius: 16px; box-shadow: var(--glass-shadow);
  -webkit-backdrop-filter: var(--glass-blur); backdrop-filter: var(--glass-blur);
  overflow: hidden;
}
.sched-cmd-inp { display: flex; align-items: center; gap: var(--sp-2_5); padding: var(--sp-3_5) var(--sp-4); border-bottom: 1px solid var(--border); }
.sched-cmd-inp i { color: var(--text-muted); font-size: 18px; }
.sched-cmd-inp input { flex: 1; background: transparent; border: none; outline: none; color: var(--text-primary); font-family: inherit; font-size: 15px; }
.sched-cmd-list { max-height: 52vh; overflow-y: auto; padding: var(--sp-1_5); }
.sched-cmd-item { display: flex; align-items: center; gap: var(--sp-2_5); padding: var(--sp-2_5) var(--sp-3); border-radius: 9px; cursor: pointer; font-size: 14px; color: var(--text-secondary); }
.sched-cmd-item i { font-size: 17px; color: var(--text-muted); width: 20px; text-align: center; }
.sched-cmd-item.sel { background: var(--accent-soft); color: var(--accent); }
.sched-cmd-item.sel i { color: var(--accent); }
.sched-cmd-label { flex: 1; }
.sched-cmd-hint { font-size: 12px; color: var(--text-muted); }
.sched-cmd-empty { padding: var(--sp-5); text-align: center; color: var(--text-muted); font-size: 13px; }
.sched-ctx {
  position: fixed; z-index: 210; min-width: 176px; padding: var(--sp-1_5);
  border-radius: 12px; background: var(--glass-bg); border: 1px solid var(--glass-border);
  box-shadow: var(--glass-shadow); -webkit-backdrop-filter: var(--glass-blur); backdrop-filter: var(--glass-blur);
}
.sched-ctx-item {
  display: flex; align-items: center; gap: var(--sp-2_5); width: 100%;
  padding: var(--sp-2) var(--sp-2_5); border: none; background: transparent;
  color: var(--text-secondary); font-family: inherit; font-size: 13px; text-align: left;
  border-radius: 8px; cursor: pointer;
}
.sched-ctx-item i { font-size: 16px; }
.sched-ctx-item:hover { background: rgba(255,255,255,0.07); color: var(--text-primary); }
.sched-ctx-item.danger { color: #f87171; }
.sched-ctx-item.danger:hover { background: rgba(239,68,68,0.14); }
.sched-create-sel {
  position: absolute; left: var(--sp-0_5); right: var(--sp-0_5);
  background: var(--accent-soft); border: 1px dashed var(--accent);
  border-radius: 6px; pointer-events: none; z-index: 5;
}
.sched-app :focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 2px;
  border-radius: 5px;
}
.sched-app input:focus-visible,
.sched-app select:focus-visible,
.sched-app textarea:focus-visible { outline: none; }
.sched-skel { padding: var(--sp-1); }
.sched-skel-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: var(--sp-2); margin-top: var(--sp-3_5); }
@media (max-width: 860px) { .sched-skel-grid { grid-template-columns: repeat(4, 1fr); } }
@media (max-width: 1200px) {
  .sched-app .sched-layout { grid-template-columns: 200px minmax(0,1fr); }
}
@media (max-width: 860px) {
  .sched-app .sched-layout { grid-template-columns: 1fr; }
  .sched-railcol { position: static; }
  .sched-page-body { padding: var(--sp-1) var(--sp-3) var(--sp-8); }
  .sched-brand-name { display: none; }
  .sched-tab span { display: none; }
  .sched-tab { padding: var(--sp-1_5); }
  .cust-drawer { width: 100%; max-width: 100%; }
}
@media (max-width: 620px) {
  .sset-tabwrap { flex-direction: column; }
  .sset-tabs {
    width: auto;
    flex-direction: row;
    border-right: none;
    border-bottom: 1px solid var(--border);
    overflow-x: auto;
    padding: var(--sp-2);
  }
  .sset-tab { flex-shrink: 0; }
  .sset-tab span { display: none; }
  .sset-tab i { font-size: 18px; }
  .sset-tab.active span { display: inline; }
  .sset-grid { grid-template-columns: 1fr; }
  .sched-app .modal-overlay { align-items: flex-end; padding: 0; }
  .sched-app .modal-box,
  .sched-app .sched-modal {
    width: 100% !important;
    max-width: 100% !important;
    max-height: 92vh;
    border-radius: 18px 18px 0 0;
    animation: schedSheetUp .22s ease;
  }
  .sched-app .btn { min-height: 40px; }
  .sched-app .sched-viewbtn { padding: var(--sp-2_5) var(--sp-3_5); }
  .sched-app .sched-modal-x { width: 36px; height: 36px; }
  .sched-app .sched-modal-body input,
  .sched-app .sched-modal-body select,
  .sched-app .sched-modal-body textarea,
  .sched-app .sset-tabbody input,
  .sched-app .sset-tabbody select,
  .sched-app .sset-tabbody textarea,
  .sched-app .sched-modal .filter-select { font-size: 16px; }
  .sched-app .sched-modal .sched-modal-footer {
    padding-bottom: calc(13px + env(safe-area-inset-bottom));
  }
}
@keyframes schedSheetUp { from { transform: translateY(100%); opacity: .6; } }
@media (prefers-reduced-motion: reduce) {
  .sched-app .sched-modal, .sched-app .modal-box { animation: none; }
}
.sched-att-list + .sched-att-head { margin-top: var(--sp-3); }
.sched-att-chip.resched { border-color: rgba(245,158,11,0.35); }
.sched-att-chip.resched:hover { background: rgba(245,158,11,0.14); border-color: rgba(245,158,11,0.55); }
.sched-att-chip.resched i, .sched-att-chip.tight i { font-size: 13px; }
.sched-att-chip.tight { border-color: rgba(51,177,255,0.35); }
.sched-att-chip.tight:hover { background: rgba(51,177,255,0.14); border-color: rgba(51,177,255,0.55); }
.sched-confirm-flag {
  display: inline-flex; align-items: center; gap: var(--sp-2);
  font-size: 12px; font-weight: 600;
  padding: var(--sp-1_5) var(--sp-2_5);
  border-radius: 8px;
}
.sched-confirm-flag.ok { color: var(--st-complete); background: color-mix(in srgb, var(--st-complete) 10%, transparent); border: 1px solid color-mix(in srgb, var(--st-complete) 30%, transparent); }
.sched-confirm-flag.warn { color: var(--st-in_progress); background: color-mix(in srgb, var(--st-in_progress) 10%, transparent); border: 1px solid color-mix(in srgb, var(--st-in_progress) 30%, transparent); }
.sched-confirm-flag.info { color: var(--accent); background: color-mix(in srgb, var(--accent) 10%, transparent); border: 1px solid color-mix(in srgb, var(--accent) 30%, transparent); }
.day-map-total {
  display: flex; align-items: center; gap: var(--sp-2);
  font-size: 12px; font-weight: 600; color: var(--text-secondary);
  padding: var(--sp-1_5) var(--sp-2);
}
.day-map-leg {
  display: flex; align-items: center; gap: var(--sp-1_5);
  font-size: 11px; color: var(--text-muted);
  padding: var(--sp-0_5) var(--sp-2) var(--sp-0_5) var(--sp-6);
}
.day-map-leg.tight { color: #fbbf24; }
.day-map-stop { position: relative; }
.day-map-stop > div:not(.day-map-num) { flex: 1 1 auto; min-width: 0; }
.day-map-open {
  display: inline-flex; align-items: center; gap: var(--sp-1);
  margin-left: auto; flex: 0 0 auto;
  font-size: 11px; font-weight: 600; color: var(--accent);
  text-decoration: none; white-space: nowrap;
  padding: var(--sp-0_5) var(--sp-1_5); border-radius: 6px;
}
.day-map-open:hover { background: var(--accent-soft); text-decoration: underline; }
.day-map-stop .day-map-open { opacity: 0; transition: opacity .12s; }
.day-map-stop:hover .day-map-open, .day-map-stop:focus-within .day-map-open { opacity: 1; }
.day-map-total .day-map-open { opacity: 1; }
.day-map-unlocated { margin-top: var(--sp-2); border-top: 1px solid var(--border); padding-top: var(--sp-1_5); }
.day-map-unlocated-h {
  display: flex; align-items: center; gap: var(--sp-1_5);
  font-size: 11px; font-weight: 600; color: #fbbf24;
  padding: var(--sp-1) var(--sp-2);
}
.day-map-num-warn { background: rgba(251,191,36,0.18) !important; color: #fbbf24; }
.day-map-home { cursor: default; opacity: .82; }
.day-map-home:hover { background: transparent; }
.day-map-pin-home span { border-radius: var(--radius-sm); }
html[data-theme="light"] .day-map-unlocated-h,
html[data-theme="light"] .day-map-num-warn { color: #92400e; }
.day-map-tight-badge {
  display: inline-flex; align-items: center; gap: var(--sp-1);
  font-size: 10px; font-weight: 700; color: #ef4444;
  background: rgba(239,68,68,0.14); border-radius: 999px;
  padding: 1px var(--sp-1_5); margin-left: var(--sp-1);
}
.day-map-tight-leg { pointer-events: stroke; }
.sched-daymap-span {
  display: inline-flex; flex: 0 0 auto;
  border: 1px solid var(--border); border-radius: 8px; overflow: hidden;
}
.sched-daymap-span button {
  font: inherit; font-size: 12px; font-weight: 600;
  padding: var(--sp-1) var(--sp-3);
  background: transparent; border: 0; color: var(--text-muted); cursor: pointer;
}
.sched-daymap-span button + button { border-left: 1px solid var(--border); }
.sched-daymap-span button.is-on { background: var(--accent-soft); color: var(--accent); }
.day-map-weekpin span {
  display: block; width: 14px; height: 14px; border-radius: 50%;
  border: 2px solid #fff; box-shadow: 0 1px 3px rgba(0,0,0,.4);
}
.day-map-daydot {
  display: inline-block; width: 9px; height: 9px; border-radius: 50%;
  margin-right: var(--sp-1_5); flex: 0 0 auto;
}
.leaflet-tooltip.day-map-eta-tip {
  background: rgba(17,24,39,0.96); color: rgba(255,255,255,0.96);
  border: 1px solid rgba(255,255,255,0.18); border-radius: 999px;
  padding: var(--sp-px) var(--sp-1_5); font-size: 11px; font-weight: 700;
  box-shadow: 0 var(--sp-0_5) var(--sp-1_5) rgba(0,0,0,.45);
}
.leaflet-tooltip.day-map-eta-tip::before { display: none; }
.sched-slot-btn {
  display: inline-flex; align-items: center; gap: var(--sp-1_5);
  padding: var(--sp-1_5) var(--sp-3);
  border: 1px dashed rgba(51,177,255,0.45);
  background: rgba(51,177,255,0.06);
  color: #93c5fd;
  border-radius: 8px;
  font-family: inherit; font-size: 12px; font-weight: 600;
  cursor: pointer;
  transition: background .14s, border-color .14s;
}
.sched-slot-btn:hover { background: rgba(51,177,255,0.14); border-color: rgba(51,177,255,0.7); }
.sched-slot-list { display: flex; flex-direction: column; gap: var(--sp-1_5); margin-top: var(--sp-2); }
.sched-slot-busy { font-size: 12px; color: var(--text-muted); display: flex; align-items: center; gap: var(--sp-1_5); }
.sched-slot-opt {
  display: flex; align-items: center; gap: var(--sp-2);
  padding: var(--sp-1_5) var(--sp-2);
  border: 1px solid var(--border);
  background: rgba(255,255,255,0.03);
  color: var(--text-primary);
  border-radius: 10px;
  font-family: inherit; font-size: 12px;
  transition: background .14s, border-color .14s;
}
.sched-slot-opt:hover { border-color: rgba(51,177,255,0.5); }
.sched-slot-fill {
  flex: 1 1 auto; min-width: 0;
  display: flex; align-items: center; flex-wrap: wrap; gap: var(--sp-1_5);
  padding: var(--sp-1) var(--sp-1_5);
  background: transparent; border: 0; border-radius: 8px;
  color: inherit; font: inherit; text-align: left; cursor: pointer;
  transition: background .14s;
}
.sched-slot-fill:hover { background: rgba(51,177,255,0.1); }
.sched-slot-book {
  flex: 0 0 auto;
  display: inline-flex; align-items: center; gap: var(--sp-1);
  padding: var(--sp-1_5) var(--sp-2_5);
  background: var(--accent); color: var(--accent-fg, #04121d);
  border: 0; border-radius: 8px;
  font: inherit; font-size: 11.5px; font-weight: 700; cursor: pointer;
  transition: background .14s, transform .12s;
}
.sched-slot-book:hover { background: var(--accent-hover); }
.sched-slot-book:active { transform: translateY(1px); }
.sched-slot-when { font-weight: 700; }
.sched-slot-tech {
  font-size: 11px; font-weight: 600; color: #93c5fd;
  background: rgba(51,177,255,0.12);
  padding: var(--sp-0_5) var(--sp-2);
  border-radius: 999px;
}
.sched-slot-why { font-size: 11px; color: var(--text-muted); flex-basis: 100%; }
.sched-preview {
  position: fixed;
  z-index: 90;
  width: 264px;
  padding: var(--sp-3) var(--sp-3_5);
  border-radius: 12px;
  background: var(--glass-bg-2);
  border: 1px solid var(--glass-border);
  box-shadow: var(--glass-shadow);
  -webkit-backdrop-filter: var(--glass-blur);
  backdrop-filter: var(--glass-blur);
  pointer-events: none;
  font-size: 12px;
  color: var(--text-primary);
}
.sched-pv-head { display: flex; align-items: baseline; gap: var(--sp-2); margin-bottom: var(--sp-1_5); }
.sched-pv-cust { font-weight: 700; font-size: 13px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sched-pv-status { margin-left: auto; font-size: 11px; font-weight: 700; flex-shrink: 0; }
.sched-pv-row {
  display: flex; align-items: center; gap: var(--sp-2);
  color: var(--text-secondary);
  padding: var(--sp-0_5) 0;
  font-variant-numeric: tabular-nums;
}
.sched-pv-row i { color: var(--accent); font-size: 13px; width: 14px; text-align: center; flex-shrink: 0; }
.sched-pv-notes {
  margin-top: var(--sp-1_5);
  padding-top: var(--sp-1_5);
  border-top: 1px solid var(--border);
  color: var(--text-muted);
  font-size: 11px;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
@keyframes schedPulse { 0% { box-shadow: 0 0 0 0 rgba(51,177,255,.55); } 70% { box-shadow: 0 0 0 7px rgba(51,177,255,0); } 100% { box-shadow: 0 0 0 0 rgba(51,177,255,0); } }
@keyframes schedRise  { from { transform: translateY(8px); opacity: 0; } }
@keyframes schedFade  { from { opacity: .55; } }
@keyframes schedModalPop { from { transform: scale(.97) translateY(6px); opacity: .6; } }
@keyframes schedSpin { to { transform: rotate(360deg); } }
.sched-spin { display: inline-block; animation: schedSpin .7s linear infinite; }
.sched-ctx { max-height: min(70vh, 420px); overflow-y: auto; }
.sched-ctx-label {
  padding: var(--sp-1_5) var(--sp-2_5) var(--sp-1); font-size: 11px; letter-spacing: .04em;
  text-transform: uppercase; color: var(--text-muted); pointer-events: none;
}
.sched-ctx-item .sched-ctx-check { margin-left: auto; font-size: 15px; color: var(--accent); }
@media (prefers-reduced-motion: no-preference) {
  .sched-app .sched-nowline::before { animation: schedPulse 2.4s ease-out infinite; }
  .sched-railcol > div { animation: schedRise .35s cubic-bezier(.22, 1, .36, 1) backwards; }
  .sched-railcol > div:nth-child(2) { animation-delay: .05s; }
  .sched-railcol > div:nth-child(3) { animation-delay: .1s; }
  .sched-railcol > div:nth-child(4) { animation-delay: .15s; }
  .sched-railcol > div:nth-child(5) { animation-delay: .2s; }
  #schedulerCalendar > * { animation: schedFade .16s ease; }
}
@media (prefers-reduced-motion: no-preference) and (min-width: 621px) {
  .sched-app .modal-overlay .modal-box { animation: schedModalPop .18s cubic-bezier(.34, 1.4, .64, 1); }
}
html[data-theme="light"] body.sched-app {
  --accent-hover:  #0f76bf;
  --accent-soft:   rgba(20,147,230,0.10);
  --accent-edge:   rgba(20,147,230,0.35);
  --accent-glow:   rgba(20,147,230,0.22);
  --hot-soft:      rgba(226,59,59,0.10);
  --glass-bg:     rgba(255,255,255,0.94);
  --glass-bg-2:   rgba(255,255,255,0.97);
  --glass-border: rgba(15,23,42,0.08);
  --glass-shadow: 0 1px 2px rgba(28,26,22,.05), 0 12px 28px -16px rgba(28,26,22,.18);
  background-image:
    radial-gradient(120% 80% at 50% -10%, rgba(20,147,230,0.05), transparent 62%);
}
html[data-theme="light"] .sched-app .sched-viewswitch { background: rgba(15,23,42,0.05); }
html[data-theme="light"] .sched-app .sset-toggle input:not(:checked) + .sset-switch {
  background: rgba(15,23,42,0.09);
}
html[data-theme="light"] .sched-app .sset-switch::after {
  background: #fff;
  box-shadow: 0 1px 2px rgba(15,23,42,.3);
}
html[data-theme="light"] .sched-app .sched-chip,
html[data-theme="light"] .sched-app .sched-event,
html[data-theme="light"] .sched-app .sched-swim-event,
html[data-theme="light"] .sched-app .sched-swim-chip { box-shadow: 0 1px 2px rgba(15,23,42,.12); }
html[data-theme="light"] .sched-app .sched-chip:hover,
html[data-theme="light"] .sched-app .sched-event:hover,
html[data-theme="light"] .sched-app .sched-swim-event:hover,
html[data-theme="light"] .sched-app .sched-swim-chip:hover { box-shadow: 0 3px 8px rgba(15,23,42,.16); }
html[data-theme="light"] .sched-app .sched-tg-col.is-offday,
html[data-theme="light"] .sched-app .sched-month-cell.is-offday {
  background:
    repeating-linear-gradient(-45deg, rgba(15,23,42,0.045) 0 5px, transparent 5px 11px),
    rgba(15,23,42,0.02);
}
html[data-theme="light"] .sched-app .sched-tg-col.is-today { background: rgba(20,147,230,0.045); }
html[data-theme="light"] .sched-att-head { color: #dc2626; }
html[data-theme="light"] .sched-att-chip { background: rgba(15,23,42,0.02); }
html[data-theme="light"] .sched-confirm-flag.ok { color: #15803d; }
html[data-theme="light"] .sched-confirm-flag.warn { color: #92400e; }
html[data-theme="light"] .sched-confirm-flag.info { color: #0f76bf; }
html[data-theme="light"] .day-map-leg.tight { color: #92400e; }
html[data-theme="light"] .sched-slot-btn { color: #0f76bf; background: rgba(20,147,230,0.05); }
html[data-theme="light"] .sched-slot-btn:hover { background: rgba(20,147,230,0.1); }
html[data-theme="light"] .sched-slot-tech { color: #0f76bf; }
html[data-theme="light"] .sched-slot-opt { background: rgba(15,23,42,0.02); }
html[data-theme="light"] .sched-nowline-lbl { color: #fff; background: var(--accent); }
html[data-theme="light"] .sched-app .sched-nowline,
html[data-theme="light"] .sched-app .sched-nowline::before { background: var(--accent); }
html[data-theme="light"] .sched-unsched-card:hover { background: rgba(15,23,42,0.04); }

.sched-warr-ico { color:#f59e0b; }
.equip-list { display:flex; flex-direction:column; gap:var(--sp-2); margin-bottom:var(--sp-2_5); }
.equip-empty { font-size:12px; color:var(--text-muted); }
.equip-row { display:flex; align-items:flex-start; gap:var(--sp-2); padding:var(--sp-2) var(--sp-2_5); border:1px solid var(--border); border-radius:10px; background:var(--bg-card-hover); }
.equip-row-main { flex:1; min-width:0; display:flex; flex-direction:column; gap:var(--sp-0_5); }
.equip-row-actions { display:flex; gap:var(--sp-0_5); flex-shrink:0; }
.equip-title { font-size:13px; font-weight:600; color:var(--text); }
.equip-meta { font-size:12px; color:var(--text-muted); }
.equip-warr { display:inline-block; align-self:flex-start; margin-top:var(--sp-0_5); font-size:11px; font-weight:600; padding:var(--sp-0_5) var(--sp-2); border-radius:999px; }
.equip-warr.in { background:color-mix(in srgb, var(--st-complete) 14%, transparent); color:var(--st-complete); }
.equip-warr.expired { background:color-mix(in srgb, var(--st-no_show) 14%, transparent); color:var(--st-no_show); }
.equip-warr.unknown { background:color-mix(in srgb, var(--text-muted) 10%, transparent); color:var(--text-muted); }
/* What has been done to a unit (core/equipment-history.js, feature_equipment_history):
   one line under the unit with its visits behind it. Drawn in the job form, the
   customer drawer and the equipment list. */
.eqh { margin-top:var(--sp-1); font-size:12px; color:var(--text-muted); }
.eqh > summary { cursor:pointer; }
.eqh-line .ti { font-size:13px; vertical-align:-1px; }
.eqh-repeat { display:inline-block; margin-left:var(--sp-2); padding:0 var(--sp-2); border-radius:999px; font-size:11px; font-weight:600; white-space:nowrap; color:var(--c-on-wash-warn, var(--st-in_progress)); background:color-mix(in srgb, var(--st-in_progress) 14%, transparent); }
.eqh-visits { display:flex; flex-direction:column; gap:var(--sp-1); margin:var(--sp-1) 0 var(--sp-1) var(--sp-1); padding-left:var(--sp-2); border-left:1px solid var(--border); }
.eqh-visit { display:flex; flex-wrap:wrap; align-items:baseline; gap:0 var(--sp-2); }
.eqh-visit-main { color:var(--text); }
.eqh-open, .eqh-rep { padding:0; border:0; background:none; font:inherit; cursor:pointer; text-align:left; }
.eqh-open:hover, .eqh-rep:hover { text-decoration:underline; }
.eqh-rep { color:var(--c-on-wash-accent, var(--accent)); }
.eqh-why, .eqh-more { font-size:11px; color:var(--text-muted); }
.eqh-unplaced { margin-top:var(--sp-2); font-size:12px; color:var(--text-muted); }
/* In the drawer the block follows its unit's row, indented to the row's text. */
.c360-row + .eqh { margin:0 0 var(--sp-2) 52px; }
.rec-side .eqh-repeat { margin-left:0; }
/* Which unit a job is for (feature_job_units): the tick in the job form, and
   the drawer's "Which unit?" picker for a visit nothing else could place. */
.equip-pick { display:inline-flex; align-items:center; gap:var(--sp-1); align-self:flex-start; margin-top:var(--sp-0_5); font-size:12px; color:var(--text); cursor:pointer; }
.equip-pick input { margin:0; }
.eqh-loose { display:flex; flex-direction:column; gap:var(--sp-2); margin-top:var(--sp-2); }
.eqh-loose-row { display:flex; flex-direction:column; align-items:flex-start; gap:var(--sp-0_5); }
.eqh-place { width:100%; max-width:320px; padding:var(--sp-0_5) var(--sp-1); border:1px solid var(--border); border-radius:6px; background:var(--bg-card); color:var(--text); font:inherit; font-size:12px; }
.equip-thumbs { display:flex; flex-wrap:wrap; gap:var(--sp-1); margin-top:var(--sp-1); }
.equip-thumb { width:52px; height:52px; object-fit:cover; border-radius:8px; border:1px solid var(--border); display:block; cursor:zoom-in; }
.eqv-hero { display:flex; align-items:center; gap:var(--sp-3); margin-bottom:var(--sp-3); }
.eqv-hero-ico {
  flex-shrink:0; width:48px; height:48px; border-radius:12px; display:grid; place-items:center;
  background:var(--accent-soft, rgba(59,130,246,0.14)); color:var(--accent); font-size:24px;
}
.eqv-hero-main { flex:1; min-width:0; }
.eqv-hero-title { font-size:17px; font-weight:700; color:var(--text-primary); line-height:1.2; }
.eqv-hero-sub { font-size:12px; color:var(--text-muted); margin-top:2px; }
.eqv-specs {
  display:grid; grid-template-columns:repeat(2, minmax(0,1fr)); gap:1px;
  background:var(--border); border:1px solid var(--border); border-radius:12px; overflow:hidden; margin-bottom:var(--sp-3);
}
.eqv-spec { display:flex; flex-direction:column; gap:2px; padding:var(--sp-2) var(--sp-2_5); background:var(--surface, rgba(255,255,255,0.02)); }
.eqv-k { font-size:11px; font-weight:600; text-transform:uppercase; letter-spacing:0.03em; color:var(--text-muted); }
.eqv-v { font-size:14px; color:var(--text-primary); font-variant-numeric:tabular-nums; word-break:break-word; }
.eqv-block { margin-bottom:var(--sp-3); }
.eqv-block-h { display:flex; align-items:center; gap:var(--sp-1); font-size:11px; font-weight:600; text-transform:uppercase; letter-spacing:0.03em; color:var(--text-muted); margin-bottom:var(--sp-1_5); }
.eqv-notes { font-size:13px; color:var(--text-secondary); line-height:1.5; white-space:pre-wrap; }
.equip-addrow { display:flex; gap:var(--sp-2); flex-wrap:wrap; }
.equip-form { margin-top:var(--sp-3); padding:var(--sp-3); border:1px solid var(--border); border-radius:12px; background:var(--bg-card-hover); }
.equip-form-actions { display:flex; justify-content:flex-end; gap:var(--sp-2); margin-top:var(--sp-2_5); }

.rec-section { padding-top: var(--sp-1); }
.rec-toolbar {
  display: flex; align-items: flex-end; justify-content: space-between;
  gap: var(--sp-3); flex-wrap: wrap; margin-bottom: var(--sp-4);
}
.rec-toolbar-controls { display: flex; align-items: center; gap: var(--sp-2); flex-wrap: wrap; }
.rec-search {
  position: relative; display: inline-flex; align-items: center;
  min-width: 240px;
}
.rec-search > i {
  position: absolute; left: 11px; color: var(--text-muted); font-size: 15px; pointer-events: none;
}
.rec-search input {
  width: 100%; padding: var(--sp-2) var(--sp-3) var(--sp-2) 32px;
  border: 1px solid var(--border); border-radius: 10px;
  background: rgba(255,255,255,0.03); color: var(--text-primary);
  font-size: 13px;
}
.rec-search input::placeholder { color: var(--text-muted); }
.rec-search input:focus { outline: none; border-color: var(--accent); }

.rec-list { display: flex; flex-direction: column; gap: var(--sp-2); }
.rec-count { font-size: 12px; color: var(--text-muted); margin-bottom: var(--sp-2); }
.rec-card {
  display: flex; align-items: center; gap: var(--sp-3);
  padding: var(--sp-3) var(--sp-3_5);
  border: 1px solid var(--border); border-radius: 12px;
  background: var(--glass-bg, rgba(255,255,255,0.02));
  cursor: pointer; text-align: left; width: 100%;
  transition: border-color .12s, background .12s, transform .06s;
}
.rec-card:hover { border-color: var(--accent-border, rgba(59,130,246,0.4)); background: rgba(255,255,255,0.04); }
.rec-card:active { transform: translateY(1px); }
.rec-card--hl { border-color: var(--accent); animation: recPulse 1.3s ease 1; }
@keyframes recPulse {
  0% { box-shadow: 0 0 0 0 rgba(59,130,246,0.0); }
  30% { box-shadow: 0 0 0 3px rgba(59,130,246,0.32); }
  100% { box-shadow: 0 0 0 0 rgba(59,130,246,0.0); }
}
@media (prefers-reduced-motion: reduce) { .rec-card--hl { animation: none; } }
.rec-avatar {
  flex-shrink: 0; width: 38px; height: 38px; border-radius: 10px;
  display: grid; place-items: center;
  background: var(--accent-soft, rgba(59,130,246,0.14)); color: var(--accent);
  font-size: 15px; font-weight: 700;
}
.rec-avatar i { font-size: 18px; }
.rec-main { flex: 1; min-width: 0; }
.rec-title { font-size: 14px; font-weight: 600; color: var(--text-primary); }
.rec-sub { font-size: 12px; color: var(--text-muted); margin-top: var(--sp-0_5); display: flex; gap: var(--sp-2_5); flex-wrap: wrap; }
.rec-sub span { display: inline-flex; align-items: center; gap: var(--sp-1); }
.rec-side { display: flex; align-items: center; gap: var(--sp-2); flex-shrink: 0; }
.rec-chip {
  font-size: 11px; font-weight: 600; padding: 3px 8px; border-radius: 20px;
  border: 1px solid var(--border); color: var(--text-secondary); white-space: nowrap;
}
.rec-chip.warr-in,
.rec-chip.st-signed     { --_t: var(--st-complete); }
.rec-chip.warr-expired  { --_t: var(--st-no_show); }
.rec-chip.st-completed  { --_t: var(--accent); }
.rec-chip.st-sent       { --_t: var(--st-invoiced); }
.rec-chip.st-attention  { --_t: var(--st-in_progress); }
.rec-chip.st-draft,
.rec-chip.warr-unknown  { --_t: var(--st-cancelled); }
.rec-chip.warr-in, .rec-chip.warr-expired,
.rec-chip.st-completed, .rec-chip.st-signed,
.rec-chip.st-sent, .rec-chip.st-attention, .rec-chip.st-draft {
  color: var(--_t);
  border-color: color-mix(in srgb, var(--_t) 35%, transparent);
  background: color-mix(in srgb, var(--_t) 9%, transparent);
}
.rec-chip.warr-unknown { color: var(--text-muted); }
.rec-empty { padding: var(--sp-12) var(--sp-4); text-align: center; color: var(--text-muted); }
.rec-empty i { font-size: 34px; display: block; margin-bottom: var(--sp-2_5); opacity: .5; }
.cust-drawer-backdrop {
  position: fixed; inset: 0; z-index: 58;
  background: rgba(2,6,23,0.5);
  -webkit-backdrop-filter: blur(2px); backdrop-filter: blur(2px);
}
.cust-drawer {
  position: fixed; top: calc(var(--topbar-h) + var(--float-gap) * 2); right: 0; bottom: 0; z-index: 59;
  width: 440px; max-width: 94vw;
  display: flex; flex-direction: column;
  background: var(--bg-elevated, var(--bg));
  border-left: 1px solid var(--border);
  box-shadow: -18px 0 48px rgba(0,0,0,0.35);
  animation: custDrawerIn .22s cubic-bezier(.22,1,.36,1);
}
@keyframes custDrawerIn { from { transform: translateX(100%); } }
@media (prefers-reduced-motion: reduce) { .cust-drawer { animation: none; } }
.cust-drawer-head {
  display: flex; align-items: center; justify-content: space-between; gap: var(--sp-2);
  padding: 16px 16px 12px;
}
.cust-drawer-id { display: flex; align-items: center; gap: 12px; min-width: 0; }
.cust-drawer-avatar {
  width: 42px; height: 42px; border-radius: 12px; flex-shrink: 0;
  display: grid; place-items: center;
  background: var(--accent-soft, rgba(59,130,246,0.16)); color: var(--accent);
  font-size: 17px; font-weight: 700;
}
.cust-drawer-name { font-size: 16px; font-weight: 700; color: var(--text-primary); }
.cust-drawer-sub { font-size: 12px; color: var(--text-muted); margin-top: 2px; }
.cust-drawer-actions { display: flex; gap: var(--sp-2); padding: 0 16px 12px; flex-wrap: wrap; }
.cust-drawer-tabs {
  display: flex; gap: 2px; padding: 0 12px;
  border-bottom: 1px solid var(--border);
}
.cust-tab {
  padding: 9px 12px; border: none; background: transparent;
  color: var(--text-secondary); font-size: 13px; font-weight: 500;
  cursor: pointer; border-bottom: 2px solid transparent; margin-bottom: -1px;
}
.cust-tab:hover { color: var(--text-primary); }
.cust-tab.active { color: var(--accent); border-bottom-color: var(--accent); font-weight: 600; }
.cust-tab-n {
  font-size: 10px; font-weight: 700; padding: 1px 5px; border-radius: 8px;
  background: rgba(255,255,255,0.07); color: var(--text-muted);
}
.cust-tab.active .cust-tab-n { background: var(--accent-soft, rgba(59,130,246,0.16)); color: var(--accent); }
.cust-drawer-body { flex: 1; overflow-y: auto; padding: 16px; }
.cust-detail { display: flex; flex-direction: column; gap: 2px; margin-bottom: 14px; }
.cust-detail-label { font-size: 11px; text-transform: uppercase; letter-spacing: .04em; color: var(--text-muted); font-weight: 600; }
.cust-detail-val { font-size: 14px; color: var(--text-primary); }
.cust-detail-val a { color: var(--accent); text-decoration: none; }
.cust-detail-val a:hover { text-decoration: underline; }
.cust-drawer-body .rec-card { margin-bottom: 8px; }
.cust-mini-empty { padding: 30px 12px; text-align: center; color: var(--text-muted); font-size: 13px; }
.cust-plan-banner {
  display: flex; align-items: center; gap: var(--sp-2);
  padding: 10px 12px; border-radius: 10px; margin-bottom: var(--sp-4);
  font-size: 13px; font-weight: 600;
  color: var(--_t, var(--text-secondary));
  border: 1px solid color-mix(in srgb, var(--_t, var(--border)) 35%, transparent);
  background: color-mix(in srgb, var(--_t, var(--border)) 9%, transparent);
}
.cust-plan-banner i { font-size: 17px; flex-shrink: 0; }
.cust-plan-banner.ok   { --_t: var(--st-complete); }
.cust-plan-banner.warn { --_t: var(--st-in_progress); }
.cust-plan-banner.over { --_t: var(--st-no_show); }
html[data-theme="light"] .rec-card,
html[data-theme="light"] .cust-drawer { background: var(--surface, #fff); }
html[data-theme="light"] .rec-card:hover { background: var(--bg-card-hover, #eef2f7); }
#jobModal.qj-on .qj-acc-head { cursor: pointer; user-select: none; }
#jobModal.qj-on .qj-acc-head:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; border-radius: 6px; }
#jobModal.qj-on .qj-acc-cue {
  margin-left: auto; display: inline-flex; align-items: center; gap: var(--sp-2);
  text-transform: none; letter-spacing: 0;
}
#jobModal.qj-on .qj-acc-summary {
  display: none; font-size: 11px; font-weight: 500; color: var(--text-muted);
}
#jobModal.qj-on .qj-collapsed .qj-acc-summary { display: inline; }
#jobModal.qj-on .qj-acc-caret {
  color: var(--text-muted); font-size: 15px; transition: transform .18s var(--out, ease);
}
#jobModal.qj-on .qj-collapsed .qj-acc-caret { transform: rotate(-90deg); }
#jobModal.qj-on .qj-collapsed .sset-grid { display: none; }
#jobModal.qj-on .qj-collapsed .sset-sec-head { margin-bottom: 0; border-bottom-color: transparent; }
#jobModal.qj-on #jobCustNameGroup { display: none; }
.qj-combo-field { position: relative; }
.qj-combo-ico {
  position: absolute; left: var(--sp-3); top: 50%; transform: translateY(-50%);
  color: var(--text-muted); font-size: 15px; pointer-events: none;
}
.sched-app .sched-modal-body .qj-combo-field input[type="text"] { padding-left: 34px; padding-right: 34px; }
.qj-combo-clear {
  position: absolute; right: var(--sp-2); top: 50%; transform: translateY(-50%);
  display: inline-flex; align-items: center; justify-content: center;
  width: 22px; height: 22px; border: 0; border-radius: 6px; cursor: pointer;
  background: transparent; color: var(--text-muted);
}
.qj-combo-clear:hover { background: var(--accent-soft); color: var(--accent); }
.qj-combo-menu {
  position: absolute; top: calc(100% + var(--sp-1)); left: 0; right: 0; z-index: 40;
  max-height: 240px; overflow-y: auto;
  background: var(--surface); border: 1px solid var(--border-strong);
  border-radius: 10px; box-shadow: 0 12px 32px rgba(0,0,0,0.32); padding: var(--sp-1);
}
.qj-combo-opt {
  width: 100%; display: flex; align-items: center; gap: var(--sp-2);
  padding: var(--sp-2) var(--sp-2_5); border: 0; border-radius: 7px; cursor: pointer;
  background: transparent; color: var(--text-primary); font: inherit; text-align: left;
}
.qj-combo-opt:hover, .qj-combo-opt:focus-visible { background: var(--accent-soft); outline: none; }
.qj-combo-opt i { color: var(--text-muted); font-size: 15px; flex: none; }
.qj-combo-opt-main { display: flex; flex-direction: column; line-height: 1.25; min-width: 0; }
.qj-combo-opt-main { font-size: 13px; }
.qj-combo-opt-sub { font-size: 11px; color: var(--text-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.qj-combo-create { color: var(--accent); }
.qj-combo-create i { color: var(--accent); }
.qj-combo-empty { padding: var(--sp-2_5); font-size: 12px; color: var(--text-muted); }
.qj-combo-linked {
  display: flex; align-items: center; gap: var(--sp-1_5); margin-top: 7px;
  font-size: 12px; color: var(--st-complete);
  padding: var(--sp-1_5) var(--sp-2); border-radius: 7px;
  background: color-mix(in srgb, var(--st-complete) 10%, transparent);
  border: 1px solid color-mix(in srgb, var(--st-complete) 26%, transparent);
}
.qj-combo-linked strong { font-weight: 600; }
.qj-combo-linked[hidden] { display: none; }
#jobModal.qj-on:not(.qj-recur-custom) #jobRecurGroup,
#jobModal.qj-on:not(.qj-recur-custom) #jobRecurOpts { display: none !important; }
.rh-seg { display: flex; gap: var(--sp-1); margin-bottom: var(--sp-3); }
.rh-seg-btn {
  display: inline-flex; align-items: center; gap: var(--sp-1_5);
  padding: var(--sp-2) var(--sp-3_5); border: 1px solid var(--border-strong); border-radius: 9px;
  background: var(--bg); color: var(--text-secondary); font: inherit; font-size: 13px;
  font-weight: 600; cursor: pointer; transition: color .15s, border-color .15s, background .15s;
}
.rh-seg-btn i { font-size: 15px; }
.rh-seg-btn:hover { color: var(--text-primary); }
.rh-seg-btn.active { color: var(--accent); border-color: var(--accent); background: var(--accent-soft); }

.rh-analytics { display: none; }
#sec-reports.rh-analytics-on .rh-analytics { display: block; }
#sec-reports.rh-analytics-on #reportsList { display: none; }
#sec-reports.rh-analytics-on .rec-toolbar-controls { display: none; }

.rh-a-head { font-size: 15px; font-weight: 700; color: var(--text-primary); margin-bottom: var(--sp-3); }
.rh-a-sub { font-size: 12px; font-weight: 500; color: var(--text-muted); margin-left: var(--sp-2); }
.rh-kpi-link { cursor: pointer; transition: border-color .15s, transform .05s; }
.rh-kpi-link:hover { border-color: var(--accent); }
.rh-kpi-link:active { transform: translateY(1px); }
.rh-kpi-link:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.rh-kpi-sublink { cursor: pointer; text-decoration: underline dotted; text-underline-offset: 2px; }
.rh-kpi-sublink:hover { color: var(--bad, #ef4444); }
.sched-bulkbar .sched-btn-danger { color: var(--bad, #ef4444); }
.sched-app .sched-modal-body .sched-timesheet-controls input[type="date"],
.sched-app #sec-reports .sched-timesheet-controls input[type="date"] { width: auto; min-width: 148px; }
.sched-timesheet-head { row-gap: var(--sp-2); }
.sched-a-subhead,
.sched-app .sched-timesheet-head { border-top: 1px solid var(--border); padding-top: var(--sp-3); }
.sched-a-subhead {
  display: flex; align-items: center; gap: var(--sp-1_5);
  font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .08em;
  color: var(--text-muted); margin: 0 0 var(--sp-2);
}
.sched-a-subhead i,
.sched-app .sched-timesheet-head h4 i { color: var(--accent); font-size: 14px; }
.sched-app .sched-timesheet-head h4 {
  font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .08em;
  color: var(--text-muted); display: flex; align-items: center; gap: var(--sp-1_5);
}
.sched-app .stat-card,
.sched-app .chart-card,
.sched-app .table-card { box-shadow: none; }
.sched-app .stat-card { transition: none; }
.sched-app .stat-card:hover { transform: none; box-shadow: none; }
.sched-app .stat-card:hover .si-blue,
.sched-app .stat-card:hover .si-purple,
.sched-app .stat-card:hover .si-green,
.sched-app .stat-card:hover .si-amber,
.sched-app .stat-card:hover .si-red { box-shadow: none; }
.sched-conflict-banner {
  display: flex; align-items: center; gap: var(--sp-2); flex-wrap: wrap;
  padding: var(--sp-2_5) var(--sp-3); border-radius: 9px; font-size: 13px; line-height: 1.35;
}
.sched-conflict-banner strong { font-weight: 700; }
.sched-conflict-banner .scb-msg { flex: 1 1 auto; min-width: 150px; }
.sched-conflict-banner.is-warn  { color: var(--st-in_progress); background: color-mix(in srgb, var(--st-in_progress) 12%, transparent); border: 1px solid color-mix(in srgb, var(--st-in_progress) 34%, transparent); }
.sched-conflict-banner.is-block { color: var(--bad, #ef4444);     background: color-mix(in srgb, var(--bad, #ef4444) 12%, transparent);     border: 1px solid color-mix(in srgb, var(--bad, #ef4444) 36%, transparent); }
.sched-conflict-banner.is-ack   { color: var(--text-secondary);   background: var(--bg); border: 1px solid var(--border-strong); }
.scb-actions { display: flex; gap: var(--sp-1_5); flex: 0 0 auto; flex-wrap: wrap; }
.scb-btn {
  display: inline-flex; align-items: center; gap: var(--sp-1); padding: var(--sp-1_5) var(--sp-2_5);
  border-radius: 7px; border: 1px solid currentColor; background: transparent;
  color: inherit; font: inherit; font-size: 12px; font-weight: 600; cursor: pointer;
}
.scb-btn:hover { background: color-mix(in srgb, currentColor 14%, transparent); }
.scb-btn.scb-ghost { border-color: var(--border-strong); color: var(--text-secondary); }
.scb-btn.scb-ghost:hover { color: var(--text-primary); background: color-mix(in srgb, var(--text-primary) 8%, transparent); }
.sched-list-card .sched-st-btn { margin-left: auto; }
.sched-st-btn {
  flex: 0 0 auto; width: 30px; height: 30px; display: inline-flex; align-items: center;
  justify-content: center; border: 1px solid var(--border-strong); border-radius: 8px;
  background: var(--bg); color: var(--text-secondary); cursor: pointer;
}
.sched-st-btn:hover { border-color: var(--accent); color: var(--accent); }
.sched-st-btn i { font-size: 16px; }
.sched-st-pop .sched-st-row i { flex: 0 0 auto; width: 18px; text-align: center; font-size: 15px; }
.sched-app .sched-nr-glyph {
  cursor: pointer;
  display: inline-flex; align-items: center; justify-content: center;
  font-size: 12px; line-height: 1;
  color: color-mix(in srgb, var(--text-primary) 62%, transparent);
  transition: color .12s, transform .12s;
}
.sched-app .sched-nr-glyph:hover { color: var(--accent); transform: scale(1.12); }
.sched-app .sched-nr-glyph.is-report { color: color-mix(in srgb, var(--accent) 78%, var(--text-primary)); }
.sched-app .sched-nr-glyph.is-signed { color: var(--st-complete); }
.sched-app .sched-nr-glyph.is-sent { color: var(--accent); }
.sched-app .sched-nr-glyph.has-flags { color: var(--warn, #f59e0b); }
.sched-app .sched-chip > .sched-nr-glyph { margin-left: var(--sp-1); vertical-align: middle; }
.sched-app .sched-event > .sched-nr-glyph,
.sched-app .sched-swim-event > .sched-nr-glyph {
  position: absolute; bottom: var(--sp-0_5); right: var(--sp-1);
  background: color-mix(in srgb, var(--card) 72%, transparent);
  border-radius: 4px; padding: 0 var(--sp-0_5);
}
.sched-app .sched-swim-chip > .sched-nr-glyph,
.sched-app .sched-list-card > .sched-nr-glyph { margin-left: var(--sp-1); vertical-align: middle; }
.sched-app .sched-nr-flagdot {
  margin-left: var(--sp-0_5); font-size: 9px; font-weight: 800;
  color: var(--warn, #f59e0b);
}
.sched-nr-pop {
  position: fixed; z-index: 1200; width: min(320px, 92vw);
  background: var(--card); color: var(--text-primary);
  border: 1px solid var(--border); border-radius: 10px;
  box-shadow: 0 12px 34px -8px rgba(0,0,0,.5);
  padding: var(--sp-3) var(--sp-3_5); font-size: 13px;
  animation: schedNrPop .12s ease-out;
}
@keyframes schedNrPop { from { opacity: 0; transform: translateY(-4px); } to { opacity: 1; transform: none; } }
.sched-nr-pop-head {
  display: flex; align-items: center; gap: var(--sp-2);
  font-weight: 700; font-size: 13.5px; margin-bottom: var(--sp-2);
}
.sched-nr-live, .sched-nrf-live {
  font-size: 9.5px; font-weight: 800; text-transform: uppercase; letter-spacing: .04em;
  color: var(--ok, #16a34a);
  background: color-mix(in srgb, var(--ok, #16a34a) 14%, transparent);
  border-radius: 999px; padding: var(--sp-0_5) var(--sp-1_5);
}
.sched-nr-note {
  white-space: pre-wrap; line-height: 1.5;
  max-height: 220px; overflow: auto;
  color: color-mix(in srgb, var(--text-primary) 92%, transparent);
}
.sched-nr-empty { color: var(--text-muted); font-style: italic; }
.sched-nr-flags { display: flex; flex-wrap: wrap; gap: var(--sp-1); margin-top: var(--sp-2); }
.sched-nr-flag {
  display: inline-flex; align-items: center; gap: var(--sp-0_5);
  font-size: 11px; font-weight: 600;
  color: var(--warn, #f59e0b);
  background: color-mix(in srgb, var(--warn, #f59e0b) 12%, transparent);
  border-radius: 6px; padding: var(--sp-0_5) var(--sp-2);
}
.sched-nr-flag.more { color: var(--text-muted); background: var(--bg-soft, rgba(0,0,0,.05)); }
.sched-nr-pop-actions { margin-top: var(--sp-3); display: flex; }
.sched-nr-pop-actions .btn { flex: 1; justify-content: center; }
.sched-app .sched-nrf-card {
  cursor: pointer;
  border: 1px solid var(--border); border-radius: 8px;
  padding: var(--sp-2) var(--sp-2_5); margin-top: var(--sp-2);
  background: var(--card);
  transition: border-color .12s, transform .12s, box-shadow .12s;
}
.sched-app .sched-nrf-card:hover {
  border-color: var(--accent);
  transform: translateY(-1px);
  box-shadow: 0 4px 12px -4px rgba(0,0,0,.35);
}
.sched-nrf-top { display: flex; align-items: center; gap: var(--sp-1_5); }
.sched-nrf-cust { font-weight: 700; font-size: 13px; flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sched-nrf-flag {
  display: inline-flex; align-items: center; gap: var(--sp-0_5); flex: 0 0 auto;
  font-size: 10.5px; font-weight: 700; color: var(--warn, #f59e0b);
}
.sched-nrf-meta { font-size: 11px; color: var(--text-muted); margin-top: var(--sp-0_5); }
.sched-nrf-rep { font-weight: 700; color: color-mix(in srgb, var(--accent) 80%, var(--text-primary)); }
.sched-nrf-snip {
  font-size: 12px; line-height: 1.4; margin-top: var(--sp-1);
  color: color-mix(in srgb, var(--text-primary) 82%, transparent);
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.sched-nrf-snip.is-muted { color: var(--text-muted); font-style: italic; }
.sched-app .sched-travel,
.sched-app .sched-swim-travel {
  position: absolute; box-sizing: border-box;
  border-radius: 5px 5px 0 0;
  background: repeating-linear-gradient(
    135deg,
    color-mix(in srgb, var(--jc, var(--accent)) 22%, transparent) 0 4px,
    transparent 4px 9px
  );
  border: 1px dashed color-mix(in srgb, var(--jc, var(--accent)) 45%, transparent);
  border-bottom: 0;
  pointer-events: none;
  overflow: hidden;
}
.sched-app .sched-swim-travel { border-radius: 5px 0 0 5px; border-bottom: 1px dashed color-mix(in srgb, var(--jc, var(--accent)) 45%, transparent); border-right: 0; }
.sched-app .sched-travel span {
  display: flex; align-items: center; justify-content: center; gap: var(--sp-0_5);
  height: 100%; font-size: 9px; font-weight: 600;
  color: color-mix(in srgb, var(--text-primary) 62%, transparent);
}
.sched-app .sched-chip[data-priority="emergency"],
.sched-app .sched-event[data-priority="emergency"],
.sched-app .sched-swim-event[data-priority="emergency"] {
  outline: 2px solid color-mix(in srgb, #ef4444 78%, transparent);
  outline-offset: -2px;
}
.sched-app .sched-chip[data-priority="high"],
.sched-app .sched-event[data-priority="high"],
.sched-app .sched-swim-event[data-priority="high"] {
  outline: 1.5px solid color-mix(in srgb, #f59e0b 62%, transparent);
  outline-offset: -2px;
}
.sched-prio-ico, .sched-parts-ico { font-size: 11px; vertical-align: -1px; }
.sched-crew-ico {
  display: inline-flex; align-items: center; gap: var(--sp-px);
  font-size: 9.5px; font-weight: 700;
  color: color-mix(in srgb, var(--text-primary) 70%, transparent);
}
.sched-crew-ico i { font-size: 11px; }
.sched-app .sched-event-win {
  font-weight: 500; font-size: 9px; opacity: .72;
  overflow: hidden; white-space: nowrap; text-overflow: ellipsis;
}
.job-travel-row { display: flex; gap: var(--sp-1_5); align-items: center; }
.job-travel-row input { flex: 1; min-width: 0; }
.job-travel-row button { flex: 0 0 auto; }
.job-travel-hint { font-size: 11px; line-height: 1.35; margin-top: var(--sp-1); color: var(--text-muted); }
.job-travel-hint.ok   { color: color-mix(in srgb, #22c55e 78%, var(--text-primary)); }
.job-travel-hint.warn { color: color-mix(in srgb, #f59e0b 78%, var(--text-primary)); }
.job-window-row { display: flex; gap: var(--sp-1_5); align-items: center; }
.job-window-row input { flex: 1; min-width: 0; }
.job-window-row span { font-size: 12px; color: var(--text-muted); flex: 0 0 auto; }

.job-crew-chip {
  display: inline-flex; align-items: center; gap: var(--sp-1);
  font-size: 12px; font-weight: 600;
  border: 1px solid var(--border); border-radius: 999px;
  padding: var(--sp-0_5) var(--sp-1) var(--sp-0_5) var(--sp-2);
  margin: var(--sp-1) var(--sp-1) 0 0;
  background: var(--card);
}
.job-crew-dot { width: 8px; height: 8px; border-radius: 50%; flex: 0 0 auto; }
.job-crew-chip button {
  background: none; border: 0; cursor: pointer; padding: 0 var(--sp-0_5);
  color: var(--text-muted); display: inline-flex; line-height: 1;
}
.job-crew-chip button:hover { color: var(--danger, #ef4444); }

.job-parts-add { display: flex; gap: var(--sp-1_5); align-items: center; }
.job-parts-add input[type="number"] { width: 68px; flex: 0 0 auto; }
.job-parts-add input[type="text"] { flex: 1; min-width: 0; }
.job-parts-list { margin-top: var(--sp-1_5); display: flex; flex-direction: column; gap: var(--sp-1); }
.job-parts-empty { font-size: 12px; color: var(--text-muted); }
.job-parts-item { display: flex; align-items: center; gap: var(--sp-2); font-size: 13px; }
.job-parts-item > span:nth-child(2) { flex: 1; min-width: 0; }
.job-parts-qty {
  font-variant-numeric: tabular-nums; font-weight: 700; font-size: 12px;
  min-width: 28px; color: color-mix(in srgb, var(--accent) 70%, var(--text-primary));
}
.job-parts-x {
  background: none; border: 0; cursor: pointer; color: var(--text-muted);
  display: inline-flex; line-height: 1; padding: var(--sp-0_5);
}
.job-parts-x:hover { color: var(--danger, #ef4444); }
.job-mat-bar { display: flex; align-items: center; gap: var(--sp-2); flex-wrap: wrap; margin-bottom: var(--sp-2); }
.job-mat-bar .hint { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.job-mat-sum {
  display: inline-flex; align-items: center; gap: var(--sp-1); margin-left: auto;
  font-size: 11.5px; font-weight: 700; white-space: nowrap;
  color: var(--_t, var(--text-muted));
}
.job-mat-sum.is-needed  { --_t: #ef4444; }
.job-mat-sum.is-ordered { --_t: #f59e0b; }
.job-mat-sum.is-picked  { --_t: #22c55e; }
.job-mat-changed {
  display: flex; align-items: flex-start; gap: var(--sp-2); font-size: 12px;
  padding: var(--sp-2) var(--sp-2_5); margin-bottom: var(--sp-2); border-radius: 9px;
  color: var(--text-secondary, var(--text-primary));
  background: color-mix(in srgb, #f59e0b 10%, transparent);
  border: 1px solid color-mix(in srgb, #f59e0b 32%, transparent);
}
.job-mat-changed i { color: #f59e0b; flex: none; }
.job-mat-item { display: flex; align-items: center; gap: var(--sp-2); font-size: 13px; }
.job-mat-item.is-na { opacity: .5; }
.job-mat-item.is-na .nm { text-decoration: line-through; }
.job-mat-qty {
  font-variant-numeric: tabular-nums; font-weight: 700; font-size: 11.5px; flex: none;
  min-width: 42px; text-align: center; padding: var(--sp-0_5) var(--sp-1); border-radius: 6px;
  background: var(--bg-secondary, transparent); border: 1px solid var(--border-color, transparent);
  color: color-mix(in srgb, var(--accent) 70%, var(--text-primary));
}
.job-mat-name { flex: 1; min-width: 0; }
.job-mat-name .nm { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.job-mat-name .src { display: block; font-size: 10.5px; color: var(--text-muted); }
.job-mat-seg { display: inline-flex; flex: none; border-radius: 8px; padding: var(--sp-0_5); background: var(--bg-secondary, transparent); }
.job-mat-seg button {
  border: 0; background: none; cursor: pointer; font: inherit; font-size: 10.5px; font-weight: 700;
  color: var(--text-muted); padding: var(--sp-1) var(--sp-1_5); border-radius: 6px; min-height: 26px;
}
.job-mat-seg button:hover { color: var(--text-primary); }
.job-mat-seg button[aria-pressed="true"] { background: var(--bg-primary, transparent); color: var(--_t, var(--text-primary)); }
.job-mat-seg button.s-needed  { --_t: #ef4444; }
.job-mat-seg button.s-ordered { --_t: #f59e0b; }
.job-mat-seg button.s-picked  { --_t: #22c55e; }
.job-po-bar { display: flex; align-items: center; gap: var(--sp-2); flex-wrap: wrap; margin-bottom: var(--sp-2); }
.job-po-sum {
  display: inline-flex; align-items: center; gap: var(--sp-1); margin-left: auto;
  font-size: 11.5px; font-weight: 700; white-space: nowrap; color: var(--text-muted);
}
.job-po-sum.is-warn { color: #f59e0b; }
.job-po-item {
  display: flex; align-items: center; gap: var(--sp-2); width: 100%; text-align: left;
  font: inherit; font-size: 13px; color: var(--text-primary); cursor: pointer;
  background: none; border: 0; border-radius: 8px; padding: var(--sp-1) var(--sp-1_5); min-height: 40px;
}
.job-po-item:hover { background: var(--bg-secondary); }
.job-po-name { flex: 1; min-width: 0; }
.job-po-name .nm { display: block; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.job-po-name .src { display: block; font-size: 10.5px; color: var(--text-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.job-po-st {
  flex: none; font-size: 10.5px; font-weight: 700; white-space: nowrap;
  padding: var(--sp-0_5) var(--sp-1_5); border-radius: 6px;
  background: var(--bg-secondary); color: var(--text-muted);
}
.job-po-st.is-open { color: #3b82f6; }
.job-po-st.is-part { color: #f59e0b; }
.job-po-st.is-done { color: #22c55e; }
.job-po-amt { flex: none; font-variant-numeric: tabular-nums; font-size: 12.5px; font-weight: 600; }
.job-po-sec {
  font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .04em;
  color: var(--text-muted); padding: var(--sp-2_5) var(--sp-1_5) var(--sp-1);
}
#linkPoBody .job-po-item { min-height: 44px; }
.matgen-chips { display: flex; gap: var(--sp-2); flex-wrap: wrap; margin-bottom: var(--sp-2); }
.matgen-chip {
  border: 1px solid var(--border-color); background: var(--bg-secondary); color: var(--text-secondary);
  border-radius: 99px; padding: var(--sp-1_5) var(--sp-3); font: inherit; font-size: 12px; font-weight: 600; cursor: pointer;
}
.matgen-chip[aria-pressed="true"] {
  border-color: var(--accent); color: var(--accent);
  background: color-mix(in srgb, var(--accent) 10%, transparent);
}
.matgen-list { max-height: 46vh; overflow-y: auto; }
.matgen-h {
  font-size: 10.5px; font-weight: 700; text-transform: uppercase; letter-spacing: .06em;
  color: var(--text-muted); padding: var(--sp-2_5) var(--sp-1) var(--sp-1);
}
.matgen-row {
  display: flex; align-items: center; gap: var(--sp-2_5); padding: var(--sp-2) var(--sp-1);
  border-radius: 8px; cursor: pointer; min-height: 44px;
}
.matgen-row:hover { background: var(--bg-secondary); }
.matgen-row.is-dim { opacity: .55; }
.matgen-row input { width: 17px; height: 17px; flex: none; accent-color: var(--accent); }
.matgen-row .q {
  flex: none; width: 58px; font-size: 12px; font-variant-numeric: tabular-nums; color: var(--text-secondary);
}
.matgen-row .d { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 13px; }
.matgen-tag {
  flex: none; font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: .04em;
  color: var(--text-muted); border: 1px solid var(--border-color); border-radius: 5px; padding: var(--sp-0_5) var(--sp-1_5);
}
.sched-insp-prio {
  display: inline-flex; align-items: center; gap: var(--sp-1);
  font-weight: 700; color: var(--p, var(--text-primary));
}
.sched-insp-parts-st {
  display: flex; align-items: center; gap: var(--sp-1_5);
  font-size: 12px; font-weight: 600; color: var(--p, var(--text-primary));
  margin-bottom: var(--sp-1_5);
}
.sched-insp-part { display: flex; gap: var(--sp-2); font-size: 12.5px; padding: var(--sp-0_5) 0; }
.sched-insp-part .q {
  font-variant-numeric: tabular-nums; font-weight: 700;
  color: var(--text-muted); min-width: 26px;
}
.sched-insp-matbar {
  height: 4px; border-radius: 99px; overflow: hidden; margin-bottom: var(--sp-1_5);
  background: var(--bg-secondary, transparent);
}
.sched-insp-matbar i { display: block; height: 100%; border-radius: 99px; background: #22c55e; }
.sched-insp-matcount { font-size: 11px; font-weight: 600; color: var(--text-muted); margin-bottom: var(--sp-1); }
.sched-insp-mat { align-items: center; }
.sched-insp-mat .tick {
  flex: none; width: 15px; height: 15px; border-radius: 5px; display: grid; place-items: center;
  border: 1.5px solid var(--border-color); font-size: 10px; color: transparent;
}
.sched-insp-mat .nm { flex: 1; min-width: 0; }
.sched-insp-mat .st { flex: none; font-size: 10px; font-weight: 700; color: #f59e0b; }
.sched-insp-mat.on { color: var(--text-muted); }
.sched-insp-mat.on .tick { background: #22c55e; border-color: #22c55e; color: #fff; }
.sched-insp-mat.on .nm { text-decoration: line-through; }
.sched-insp-mat.is-na { opacity: .5; }
.sched-insp-mat.is-na .nm { text-decoration: line-through; }
.sched-app .sched-note {
  --nc: var(--sched-note-amber);
  position: relative;
  display: flex; align-items: center; gap: var(--sp-1);
  box-sizing: border-box; overflow: hidden;
  font-size: 10px; font-weight: 600; line-height: 1.25;
  padding: var(--sp-0_5) var(--sp-1_5);
  margin-top: var(--sp-0_5);
  border-radius: 4px;
  border: 1px dashed color-mix(in srgb, var(--nc) 62%, transparent);
  background: color-mix(in srgb, var(--nc) 17%, var(--card));
  color: color-mix(in srgb, var(--nc) 42%, var(--text-primary));
  cursor: pointer; touch-action: none;
  transition: background .12s, transform .12s, box-shadow .12s;
}
.sched-app .sched-note:hover {
  background: color-mix(in srgb, var(--nc) 30%, var(--card));
  transform: translateY(-1px);
  box-shadow: 0 4px 12px -4px rgba(0,0,0,.4);
}
.sched-app .sched-note i { flex: 0 0 auto; font-size: 11px; opacity: .8; }
.sched-app .sched-note.is-empty { font-style: italic; opacity: .72; }
.sched-app .sched-tg-col > .sched-note,
.sched-app .sched-swim-track > .sched-note { position: absolute; margin-top: 0; }
.sched-app .sched-note[data-note-color="amber"] { --nc: var(--sched-note-amber); }
.sched-app .sched-note[data-note-color="blue"]  { --nc: var(--sched-note-blue); }
.sched-app .sched-note[data-note-color="green"] { --nc: var(--sched-note-green); }
.sched-app .sched-note[data-note-color="red"]   { --nc: var(--sched-note-red); }
.sched-app .sched-note[data-note-color="grey"]  { --nc: var(--sched-note-grey); }
/* An appointment is booked time, not a sticky note: solid edge, a stronger wash,
   and the text wraps so a one-hour block can show its title. */
.sched-app .sched-note.is-appt {
  align-items: flex-start;
  border-style: solid;
  border-left: 3px solid var(--nc);
  background: color-mix(in srgb, var(--nc) 24%, var(--card));
  font-size: 11px;
}
.sched-app .sched-note.is-appt .sched-note-txt { min-width: 0; overflow: hidden; }
.sched-app .sched-note.is-appt b { font-weight: 700; }
.sched-app .sched-note.is-appt:hover .sched-event-resize { background: color-mix(in srgb, var(--nc) 55%, transparent); }
.sched-app .sched-list-card.is-appt .sched-list-cust .ti { font-size: 13px; opacity: .8; }
/* No checkbox to bulk-select, so the dot steps in to line up with the job rows. */
.sched-app .sched-list-card.is-appt .sched-list-dot { margin-left: 27px; }
body.sched-note-arm .sched-main { cursor: copy; }
body.sched-note-arm .sched-tg-cell:hover,
body.sched-note-arm .sched-month-cell:hover,
body.sched-note-arm .sched-allday-cell:hover,
body.sched-note-arm .sched-swim-track:hover {
  outline: 2px dashed color-mix(in srgb, var(--sched-note-amber) 70%, transparent);
  outline-offset: -2px;
}
#schedNoteBtn[aria-pressed="true"] {
  border-color: var(--sched-note-amber);
  color: var(--sched-note-amber);
}
.sched-note-pop {
  position: fixed; z-index: 60; width: 260px;
  display: flex; flex-direction: column; gap: var(--sp-2);
  padding: var(--sp-2_5);
  background: var(--card); border: 1px solid var(--border);
  border-radius: 10px; box-shadow: 0 12px 32px -8px rgba(0,0,0,.55);
}
.sched-note-pop[hidden] { display: none; }
.sched-note-kind { display: flex; gap: var(--sp-1); padding: var(--sp-0_5); border-radius: 8px; background: var(--bg-secondary); }
.sched-note-kind[hidden] { display: none; }
.sched-note-kind button {
  flex: 1; padding: var(--sp-1) var(--sp-2); border: 0; border-radius: 6px; background: transparent; cursor: pointer;
  color: var(--text-muted); font: inherit; font-size: 12px; font-weight: 600;
}
.sched-note-kind button.is-on { background: var(--card); color: var(--text-primary); box-shadow: 0 1px 2px rgba(0,0,0,.25); }
.sched-note-when { display: grid; grid-template-columns: 1fr 1fr; gap: var(--sp-1_5) var(--sp-2); }
.sched-note-when[hidden] { display: none; }
.sched-note-when label { display: flex; flex-direction: column; gap: var(--sp-0_5); font-size: 11px; font-weight: 600; color: var(--text-muted); }
.sched-note-when .is-wide { grid-column: 1 / -1; }
.sched-note-when small { font-size: 11px; color: var(--text-muted); }
.sched-note-when input, .sched-note-when select {
  width: 100%; min-width: 0; box-sizing: border-box; padding: var(--sp-1) var(--sp-1_5); border-radius: 6px;
  border: 1px solid var(--border); background: var(--bg); color: var(--text-primary); font: inherit; font-size: 12.5px; font-weight: 400;
}
.sched-note-pop textarea {
  width: 100%; resize: vertical; font: inherit; font-size: 13px;
  padding: var(--sp-2); border-radius: 6px;
  border: 1px solid var(--border); background: var(--bg); color: var(--text-primary);
}
.sched-note-sws { display: flex; gap: var(--sp-1_5); }
.sched-note-sw {
  width: 20px; height: 20px; border-radius: 50%; cursor: pointer; padding: 0;
  border: 2px solid transparent; background: var(--nc, var(--sched-note-amber));
}
.sched-note-sw[data-color="amber"] { --nc: var(--sched-note-amber); }
.sched-note-sw[data-color="blue"]  { --nc: var(--sched-note-blue); }
.sched-note-sw[data-color="green"] { --nc: var(--sched-note-green); }
.sched-note-sw[data-color="red"]   { --nc: var(--sched-note-red); }
.sched-note-sw[data-color="grey"]  { --nc: var(--sched-note-grey); }
.sched-note-sw.on { border-color: var(--text-primary); }
.sched-note-acts { display: flex; gap: var(--sp-2); justify-content: space-between; }

#jobModal .jm2-only { display: none; }
#jobModal.jm2 .jm2-only { display: block; }
#jobModal.jm2 .jm2-only.jm2-f { display: flex; }
#jobModal.jm2 .jm2-legacy { display: none; }

#jobModal .sched-modal { max-width: 600px; }
/* Fixed height (not just a cap) so switching rail sections doesn't resize the
   whole window — the shorter/taller panel scrolls inside .jm2-pane instead. */
#jobModal.jm2 .sched-modal { max-width: 1060px; height: min(680px, 90vh); }
#jobModal.jm2 .sched-modal-head { flex-wrap: wrap; padding-bottom: var(--sp-3); }
.jm2-jobno {
  font-size: 11px; font-weight: 700; color: var(--text-muted);
  font-variant-numeric: tabular-nums;
  background: var(--bg); border: 1px solid var(--border);
  padding: var(--sp-0_5) var(--sp-2); border-radius: 6px;
}
#jobModal.jm2 .sched-modal-head h3 { min-width: 0; }
#jobModal.jm2 .sched-modal-head h3 > span[data-term] {
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.jm2-meta {
  display: flex; align-items: center; gap: var(--sp-2); flex-wrap: wrap;
  width: 100%; margin-top: var(--sp-0_5);
  font-size: 12px; color: var(--text-secondary);
}
.jm2-meta i { color: var(--text-muted); font-size: 13px; margin-right: var(--sp-0_5); }
.jm2-meta .jm2-sep { color: var(--border-strong); }
.jm2-meta span:empty { display: none; }
.jm2-save {
  display: inline-flex; align-items: center; gap: var(--sp-1_5);
  font-size: 12px; font-weight: 500; color: var(--text-muted); white-space: nowrap;
}
.jm2-save i { font-size: 14px; }
.jm2-save.is-dirty { color: var(--st-in_progress); }
.jm2-save.is-saved i { color: var(--st-complete); }
.jm2-stepper {
  display: flex; gap: var(--sp-1); width: 100%; margin-top: var(--sp-2_5);
  background: var(--bg); border: 1px solid var(--border);
  padding: var(--sp-1); border-radius: 10px; overflow-x: auto;
}
.jm2-step {
  flex: 1; min-width: 86px;
  display: flex; align-items: center; justify-content: center; gap: var(--sp-1_5);
  padding: var(--sp-2) var(--sp-2); border: 0; background: transparent; border-radius: 7px;
  font-size: 12px; font-weight: 500; color: var(--text-muted);
  white-space: nowrap; cursor: pointer;
  transition: background .15s, color .15s;
}
.jm2-step:hover { background: var(--surface-hover); color: var(--text-secondary); }
.jm2-step i { font-size: 14px; }
.jm2-step.is-done { color: var(--st-complete); }
.jm2-step.is-cur { background: var(--accent-soft); color: var(--accent); font-weight: 700; }
#jobModal.jm2 .sched-modal-body {
  padding: 0; display: grid; grid-template-columns: 206px minmax(0, 1fr);
  overflow: hidden; min-height: 0;
}
.jm2-rail {
  border-right: 1px solid var(--border);
  background: var(--bg);
  padding: var(--sp-2_5) var(--sp-2); display: flex; flex-direction: column; gap: var(--sp-0_5);
  overflow-y: auto;
}
.jm2-railitem {
  display: flex; align-items: center; gap: var(--sp-2_5);
  width: 100%; padding: var(--sp-2) var(--sp-3); border: 0; background: transparent;
  border-radius: 9px; font-size: 13px; font-weight: 500;
  color: var(--text-secondary); text-align: left; cursor: pointer;
  transition: background .15s, color .15s;
}
.jm2-railitem:hover { background: var(--surface-hover); color: var(--text-primary); }
.jm2-railitem.is-active { background: var(--accent-soft); color: var(--accent); font-weight: 700; }
.jm2-railitem > i:first-child { font-size: 16px; flex: 0 0 auto; }
.jm2-railitem .jm2-cnt {
  margin-left: auto; font-size: 10px; font-weight: 700;
  font-variant-numeric: tabular-nums;
  min-width: 18px; height: 18px; padding: 0 var(--sp-1_5);
  display: none; place-items: center; border-radius: 999px;
  background: var(--elev-3, var(--surface-hover)); color: var(--text-muted);
}
.jm2-railitem .jm2-cnt.on { display: grid; }
.jm2-railitem.is-active .jm2-cnt { background: var(--accent); color: var(--app-accent-fg, #fff); }
.jm2-railitem .jm2-tick {
  margin-left: auto; color: var(--st-complete);
  font-size: 15px; display: none;
}
.jm2-railitem .jm2-tick.on { display: block; }
.jm2-railitem .jm2-cnt.on ~ .jm2-tick { display: none; }
.jm2-pane { display: contents; }
#jobModal.jm2 .jm2-pane {
  display: block; padding: var(--sp-5) var(--sp-6); overflow-y: auto; min-height: 0;
}
#jobModal.jm2 .jm2-panel { display: none; }
#jobModal.jm2 .jm2-panel.is-show { display: block; animation: jm2fade .2s ease-out; }
#jobModal.jm2 .jm2-panel + .jm2-panel.is-show { margin-top: var(--sp-4); }
#jobModal.jm2 .sset-sec-head { display: none; }
@keyframes jm2fade { from { opacity: 0; transform: translateY(4px); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) {
  #jobModal.jm2 .jm2-panel.is-show { animation: none; }
}
.jm2-panelhead { margin-bottom: var(--sp-4); }
.jm2-panelhead h4 { margin: 0; font-size: 15px; font-weight: 700; color: var(--text-primary); }
.jm2-panelhead p { margin: var(--sp-1) 0 0; font-size: 12px; color: var(--text-muted); line-height: 1.5; }
.jm2-seg {
  display: flex; gap: var(--sp-1);
  background: var(--bg); border: 1px solid var(--border);
  padding: var(--sp-1); border-radius: 10px;
}
.jm2-seg button {
  flex: 1; padding: var(--sp-2) var(--sp-1_5); border: 0; background: transparent; border-radius: 7px;
  font-size: 12px; font-weight: 500; color: var(--text-secondary);
  white-space: nowrap; cursor: pointer;
  transition: background .15s, color .15s;
}
.jm2-seg button:hover { background: var(--surface-hover); color: var(--text-primary); }
.jm2-seg button.on {
  background: var(--surface); color: var(--text-primary); font-weight: 700;
  box-shadow: var(--shadow-1, none);
}
.jm2-seg button.on[data-v="emergency"] {
  background: color-mix(in srgb, var(--st-no_show) 15%, transparent);
  color: var(--st-no_show);
}
.jm2-seg button.on[data-v="high"] {
  background: color-mix(in srgb, var(--st-in_progress) 15%, transparent);
  color: var(--st-in_progress);
}
.jm2-chips { display: flex; gap: var(--sp-1_5); flex-wrap: wrap; }
.jm2-chip {
  padding: var(--sp-2) var(--sp-3); background: var(--surface);
  border: 1px solid var(--border); border-radius: 999px;
  font-size: 12px; font-weight: 500; color: var(--text-secondary);
  font-variant-numeric: tabular-nums; cursor: pointer;
  transition: background .15s, border-color .15s, color .15s;
}
.jm2-chip:hover { border-color: var(--border-strong); color: var(--text-primary); }
.jm2-chip.on {
  background: var(--accent-soft); border-color: var(--accent-edge);
  color: var(--accent); font-weight: 700;
}
.jm2-more { margin-top: var(--sp-4); border-top: 1px dashed var(--border); padding-top: var(--sp-3); }
.jm2-more-btn {
  display: flex; align-items: center; gap: var(--sp-2);
  background: transparent; border: 0; padding: var(--sp-1) 0; cursor: pointer;
  font-size: 13px; font-weight: 700; color: var(--accent);
}
.jm2-more-btn i.jm2-caret { transition: transform .18s ease; }
.jm2-more.is-open .jm2-more-btn i.jm2-caret { transform: rotate(90deg); }
.jm2-more-btn .jm2-more-sum { font-weight: 500; color: var(--text-muted); font-size: 11px; }
#jobModal.jm2 .jm2-more .jm2-more-body { display: none; padding-top: var(--sp-3_5); }
#jobModal.jm2 .jm2-more.is-open .jm2-more-body { display: grid; }
#jobModal.jm2 .sched-editactions { display: none; }
.jm2-menuwrap { position: relative; }
.jm2-menu {
  position: absolute; bottom: calc(100% + var(--sp-2)); left: 0; width: 258px;
  background: var(--surface); border: 1px solid var(--border-strong);
  border-radius: 12px; box-shadow: var(--card-shadow-hover);
  padding: var(--sp-1_5); display: none; z-index: 40; max-height: 60vh; overflow-y: auto;
}
.jm2-menu.is-open { display: block; }
.jm2-menu-lbl {
  padding: var(--sp-2) var(--sp-2_5) var(--sp-1_5); font-size: 10px; font-weight: 700;
  letter-spacing: .07em; text-transform: uppercase; color: var(--text-muted);
}
.jm2-menu button {
  display: flex; align-items: center; gap: var(--sp-2_5); width: 100%;
  padding: var(--sp-2) var(--sp-2_5); border: 0; background: transparent; border-radius: 8px;
  font-size: 13px; text-align: left; color: var(--text-primary); cursor: pointer;
}
.jm2-menu button:hover { background: var(--surface-hover); }
.jm2-menu button i { font-size: 16px; color: var(--text-muted); }
.jm2-menu button.jm2-danger { color: var(--danger); }
.jm2-menu button.jm2-danger:hover { background: color-mix(in srgb, var(--st-no_show) 13%, transparent); }
.jm2-menu button.jm2-danger i { color: var(--danger); }
.jm2-menu-sep { height: 1px; background: var(--border); margin: var(--sp-1_5) var(--sp-1_5); }
@media (max-width: 860px) {
  #jobModal.jm2 .sched-modal-body { grid-template-columns: minmax(0, 1fr); }
  .jm2-rail {
    flex-direction: row; overflow-x: auto; border-right: 0;
    border-bottom: 1px solid var(--border); padding: var(--sp-2) var(--sp-2_5); gap: var(--sp-1_5);
  }
  .jm2-railitem { width: auto; flex: 0 0 auto; white-space: nowrap; }
  .jm2-railitem .jm2-cnt.on, .jm2-railitem .jm2-tick.on { margin-left: var(--sp-1); }
  #jobModal.jm2 .jm2-pane { padding: var(--sp-4) var(--sp-3_5); }
  #jobModal.jm2 .sset-grid { grid-template-columns: minmax(0, 1fr); }
  .jm2-stepper { margin-top: var(--sp-2); }
  #jobModal.jm2 .sched-modal-body input[type="text"],
  #jobModal.jm2 .sched-modal-body input[type="email"],
  #jobModal.jm2 .sched-modal-body input[type="tel"],
  #jobModal.jm2 .sched-modal-body input[type="time"],
  #jobModal.jm2 .sched-modal-body input[type="date"],
  #jobModal.jm2 .sched-modal-body input[type="number"],
  #jobModal.jm2 .sched-modal .filter-select { min-height: 44px; }
  .jm2-chip { padding: var(--sp-2_5) var(--sp-3_5); }
}

#jobModal .sc-sub-only { display: none; }
#jobModal.sc-sub .sc-sub-only { display: inline; }
#jobModal.sc-sub .sc-dir-only { display: none; }
#jobModal.sc-sub .form-group.sc-sub-only { display: block; }
#jobModal.sc-sub .sc-note {
  display: block;
  margin-top: var(--sp-1_5);
  font-size: 0.78rem;
  line-height: 1.45;
  color: var(--text-muted);
}
#jobModal.sc-sub .sc-note i { color: var(--accent); margin-right: var(--sp-1); }
.jpi-pick { display: flex; align-items: center; gap: var(--sp-2); flex-wrap: wrap; }
.jpi-chip {
  display: inline-flex; align-items: center; gap: var(--sp-1_5);
  padding: var(--sp-1) var(--sp-2);
  border: 1px solid var(--border); border-radius: var(--radius-sm);
  background: var(--surface-2, rgba(127, 127, 127, 0.06)); min-width: 0;
}
.jpi-chip b { font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.jpi-chip i { color: var(--accent); }
.jpi-chip.is-missing { color: var(--text-muted); }
.jpi-chip.is-missing i { color: var(--warn); }
.jpi-price { font-size: 0.78rem; color: var(--text-muted); white-space: nowrap; }
.jpi-hint { flex-basis: 100%; font-size: 0.78rem; line-height: 1.45; color: var(--text-muted); }
/* Contractor job missing their WO number and PO (subcontract.js _paintRefWarn). */
#jobModal .sc-warn { margin-top: var(--sp-1_5); font-size: 0.78rem; line-height: 1.45; color: var(--text-secondary); }
#jobModal .sc-warn i { color: var(--c-warn, var(--warn)); margin-right: var(--sp-1); }
/* A principal's schedule as one tap — same chip anatomy as the duration chips. */
.jpi-sched { display: flex; gap: var(--sp-1_5); flex-wrap: wrap; flex-basis: 100%; }
.jpi-opt {
  display: inline-flex; align-items: baseline; gap: var(--sp-1_5); max-width: 100%;
  padding: var(--sp-2) var(--sp-3); background: var(--surface);
  border: 1px solid var(--border); border-radius: 999px;
  font-size: 12px; font-weight: 500; color: var(--text-secondary);
  font-variant-numeric: tabular-nums; cursor: pointer;
  transition: background .15s, border-color .15s, color .15s;
}
.jpi-opt b { font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }
.jpi-opt:hover { border-color: var(--border-strong); color: var(--text-primary); }
.jpi-opt.on { background: var(--accent-soft); border-color: var(--accent-edge); color: var(--accent); }
.jpi-opt.on b { font-weight: 700; }
.jpi-opt.on .jpi-price { color: var(--accent); }
.jpi-other { align-self: center; }
@media (max-width: 640px) { .jpi-opt { padding: var(--sp-2_5) var(--sp-3_5); } }
#jobModal.sc-sub #jobCustNameGroup { border-left: 2px solid var(--accent); padding-left: var(--sp-2_5); }
.sched-qc {
  position: fixed;
  z-index: var(--z-modal, 1000);
  width: 392px; max-width: calc(100vw - 16px);
  max-height: calc(100vh - 24px);
  display: flex; flex-direction: column;
  border-radius: 13px;
  background: var(--surface);
  border: 1px solid var(--border-strong);
  box-shadow: 0 18px 40px -10px rgba(0,0,0,.55), 0 40px 70px -30px rgba(0,0,0,.6);
  color: var(--text-primary);
  font-size: 13px;
}
.sched-qc-head {
  display: flex; align-items: center; gap: var(--sp-2);
  padding: var(--sp-3) var(--sp-3) var(--sp-2);
}
.sched-qc-head h3 { margin: 0; font-size: 13.5px; font-weight: 600; }
.sched-qc-kind { display: flex; gap: 2px; padding: 2px; border-radius: 8px; background: var(--bg-secondary); }
.sched-qc-kind button {
  padding: var(--sp-0_5) var(--sp-2); border: 0; border-radius: 6px; background: transparent; cursor: pointer;
  color: var(--text-muted); font: inherit; font-size: 11.5px; font-weight: 600;
}
.sched-qc-kind button:hover { color: var(--text-primary); }
.sched-qc-kind button.is-on { background: var(--surface); color: var(--text-primary); box-shadow: 0 1px 2px rgba(0,0,0,.25); }
.sched-qc [data-qc-only][hidden] { display: none; }
.sched-qc-apptwhen { display: grid; grid-template-columns: 1fr 1fr; gap: var(--sp-2); }
.sched-qc-x {
  margin-left: auto;
  width: 28px; height: 28px; display: grid; place-items: center;
  border: 0; border-radius: 8px; background: transparent; cursor: pointer;
  color: var(--text-muted); font-size: 16px;
}
.sched-qc-x:hover { background: var(--surface-hover, rgba(255,255,255,.06)); color: var(--text-primary); }
.sched-qc-slot {
  display: flex; align-items: center; gap: var(--sp-1_5);
  margin: 0 var(--sp-3) var(--sp-2);
  padding: var(--sp-1_5) var(--sp-2);
  border-radius: 8px;
  background: var(--bg-secondary);
  border: 1px solid var(--border);
  font-size: 11.5px; font-weight: 500;
  color: var(--text-secondary);
  font-variant-numeric: tabular-nums;
}
.sched-qc-slot i { color: var(--accent); font-size: 14px; }
.sched-qc-slot span { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sched-qc-edit {
  margin-left: auto; padding: 0; border: 0; background: transparent; cursor: pointer;
  color: var(--accent); font: inherit; font-size: 11.5px; font-weight: 600;
}

.sched-qc-body {
  flex: 1; min-height: 0; overflow-y: auto;
  padding: 0 var(--sp-3);
  display: flex; flex-direction: column; gap: var(--sp-3);
}
.sched-qc-f { display: flex; flex-direction: column; gap: var(--sp-1_5); position: relative; }
.sched-qc-f > label {
  font-size: 11.5px; font-weight: 600;
  color: var(--text-secondary);
}
.sched-qc-hint { font-weight: 400; color: var(--text-muted); }
.sched-qc-f input[type="text"] {
  width: 100%; box-sizing: border-box;
  padding: var(--sp-2) var(--sp-2_5);
  font: inherit; font-size: 13px;
  color: var(--text-primary); background: var(--bg-secondary);
  border: 1px solid var(--border); border-radius: 9px;
}
.sched-qc-f input[type="text"]:focus { outline: none; border-color: var(--accent); }
.sched-qc-f input[type="date"], .sched-qc-f input[type="time"] {
  width: 100%; min-width: 0; box-sizing: border-box; padding: var(--sp-2);
  border-radius: 8px; border: 1px solid var(--border); background: var(--bg-secondary);
  color: var(--text-primary); font: inherit; font-size: 13px;
}
.sched-qc-f input[type="date"]:focus, .sched-qc-f input[type="time"]:focus { outline: none; border-color: var(--accent); }
html[data-theme="light"] .sched-qc-f input[type="date"], html[data-theme="light"] .sched-qc-f input[type="time"] { background: #fff; }
.sched-qc-f input.is-bad { border-color: var(--hot, #ef4444); }
html[data-theme="light"] .sched-qc-f input[type="text"] { background: #fff; }
.sched-qc-nl {
  display: flex; align-items: center; gap: var(--sp-2);
  padding: var(--sp-2) var(--sp-2_5);
  border: 1px solid var(--accent); border-radius: 10px;
  background: color-mix(in srgb, var(--accent) 10%, transparent);
}
.sched-qc-nl > i { flex: none; color: var(--accent); font-size: 16px; }
.sched-qc-nl input {
  flex: 1; min-width: 0; padding: 0; border: 0; background: transparent;
  font: inherit; font-size: 13px; color: var(--text-primary);
}
.sched-qc-nl input:focus { outline: none; }
.sched-qc-nl.is-busy { opacity: .6; pointer-events: none; }
.sched-qc-nlgo {
  flex: none; padding: var(--sp-0_5) var(--sp-1_5);
  border: 1px solid var(--border-strong); border-radius: 5px;
  background: transparent; cursor: pointer;
  color: var(--text-muted); font: inherit; font-size: 10px; font-weight: 600;
}
.sched-qc-nlgo:hover { color: var(--accent); border-color: var(--accent); }
.sched-qc-combo {
  display: flex; align-items: center; gap: var(--sp-2);
  padding: 0 var(--sp-2_5);
  border: 1px solid var(--border); border-radius: 9px;
  background: var(--bg-secondary);
}
html[data-theme="light"] .sched-qc-combo { background: #fff; }
.sched-qc-combo > i { flex: none; color: var(--text-muted); font-size: 15px; }
.sched-qc-combo input {
  flex: 1; min-width: 0;
  padding: var(--sp-2) 0;
  border: 0; background: transparent;
  font: inherit; font-size: 13px; color: var(--text-primary);
}
.sched-qc-combo input:focus { outline: none; }
.sched-qc-combo.is-linked { border-color: var(--st-complete); }
.sched-qc-combo.is-linked > i { color: var(--st-complete); }
.sched-qc-clear {
  flex: none; padding: 0; border: 0; background: transparent; cursor: pointer;
  color: var(--text-muted); font-size: 15px; display: grid; place-items: center;
}
.sched-qc-linked {
  display: flex; align-items: center; gap: var(--sp-1);
  font-size: 11.5px; font-weight: 500; color: var(--st-complete);
}
.sched-qc-linked i { font-size: 13px; }
.sched-qc-menu {
  position: fixed; z-index: calc(var(--z-modal, 1000) + 2);
  max-height: 260px; overflow-y: auto;
  padding: var(--sp-1);
  border-radius: 10px;
  background: var(--surface);
  border: 1px solid var(--border-strong);
  box-shadow: 0 12px 32px rgba(0,0,0,.32);
}
.sched-qc-menu-tech { max-height: 340px; }
.sched-qc-pickwrap { position: relative; }
.sched-qc-opt {
  width: 100%; box-sizing: border-box;
  display: flex; align-items: center; gap: var(--sp-2);
  padding: var(--sp-2) var(--sp-2);
  border: 0; border-radius: 8px; cursor: pointer;
  background: transparent; color: var(--text-primary);
  font: inherit; text-align: left;
}
.sched-qc-opt:hover, .sched-qc-opt:focus-visible, .sched-qc-opt.is-hi { background: var(--accent-soft); outline: none; }
.sched-qc-opt > i { flex: none; color: var(--text-muted); font-size: 16px; }
.sched-qc-opt.is-off { opacity: .55; }
.sched-qc-opt-main { display: flex; flex-direction: column; min-width: 0; line-height: 1.3; }
.sched-qc-opt-main b { font-size: 12.5px; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sched-qc-opt-main small { font-size: 11px; color: var(--text-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sched-qc-opt-new b { color: var(--accent); }
.sched-qc-opt-new > i { color: var(--accent); }
.sched-qc-empty { padding: var(--sp-2_5); font-size: 12px; color: var(--text-muted); }
.sched-qc-menu-lbl {
  padding: var(--sp-1_5) var(--sp-2) var(--sp-1);
  font-size: 10.5px; font-weight: 600; letter-spacing: .05em; text-transform: uppercase;
  color: var(--text-muted);
}
.sched-qc-menu-sep { height: 1px; margin: var(--sp-1) var(--sp-0_5); background: var(--border); }
.sched-qc-chips { display: flex; flex-wrap: wrap; gap: var(--sp-1_5); }
.sched-qc-chip {
  padding: var(--sp-1_5) var(--sp-2_5);
  border: 1px solid var(--border); border-radius: 8px; cursor: pointer;
  background: var(--bg-secondary);
  color: var(--text-secondary);
  font: inherit; font-size: 12px; font-weight: 500; white-space: nowrap;
}
.sched-qc-chip:hover { border-color: var(--border-strong); color: var(--text-primary); }
.sched-qc-chip.is-on { background: var(--accent-soft); border-color: var(--accent); color: var(--accent); }
.sched-qc-pick {
  width: 100%; box-sizing: border-box;
  display: flex; align-items: center; gap: var(--sp-2);
  padding: var(--sp-2);
  border: 1px solid var(--border); border-radius: 9px; cursor: pointer;
  background: var(--bg-secondary);
  color: var(--text-primary); font: inherit; text-align: left;
}
.sched-qc-pick:hover { border-color: var(--border-strong); }
.sched-qc-pick.is-busy { border-color: var(--st-in_progress, #f59e0b); }
.sched-qc-pick-main { display: flex; flex-direction: column; min-width: 0; flex: 1; line-height: 1.3; }
.sched-qc-pick-main b { font-size: 12.5px; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sched-qc-pick-main small { font-size: 11px; color: var(--text-muted); font-variant-numeric: tabular-nums; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sched-qc-chg { flex: none; color: var(--accent); font-size: 12px; font-weight: 600; }
.sched-qc-av {
  flex: none; width: 24px; height: 24px; border-radius: 7px;
  display: grid; place-items: center;
  font-size: 10px; font-weight: 700; color: #0e0f12;
}
.sched-qc-av-none { background: #565f6e; color: #fff; font-size: 12px; }
.sched-qc-load { margin-left: auto; flex: none; display: flex; flex-direction: column; align-items: flex-end; gap: var(--sp-0_5); }
.sched-qc-load small { font-size: 11px; color: var(--text-muted); font-variant-numeric: tabular-nums; }
.sched-qc-bar { display: block; width: 52px; height: 4px; border-radius: 3px; overflow: hidden; background: var(--border); }
.sched-qc-bar i { display: block; height: 100%; background: var(--st-complete); }
.sched-qc-bar.is-high i { background: var(--st-in_progress, #f59e0b); }
.sched-qc-bar.is-over i { background: var(--hot, #ef4444); }
.sched-qc-clash {
  display: flex; flex-direction: column; gap: var(--sp-2);
  padding: var(--sp-2) var(--sp-2_5);
  border-radius: 10px;
  background: color-mix(in srgb, var(--st-in_progress, #f59e0b) 14%, transparent);
  border: 1px solid color-mix(in srgb, var(--st-in_progress, #f59e0b) 45%, transparent);
  font-size: 12px; line-height: 1.45;
}
.sched-qc-clash.is-ack {
  flex-direction: row; align-items: center; gap: var(--sp-1_5);
  background: var(--accent-soft); border-color: var(--accent);
  color: var(--text-secondary);
}
.sched-qc-clash-msg { display: flex; gap: var(--sp-2); }
.sched-qc-clash-msg i { flex: none; color: var(--st-in_progress, #f59e0b); font-size: 15px; }
.sched-qc-clash-acts { display: flex; flex-wrap: wrap; gap: var(--sp-1_5); padding-left: var(--sp-4); }
.sched-qc-cbtn {
  padding: var(--sp-1) var(--sp-2_5);
  border: 1px solid var(--border-strong); border-radius: 7px; cursor: pointer;
  background: var(--surface); color: var(--text-primary);
  font: inherit; font-size: 11.5px; font-weight: 600;
}
.sched-qc-cbtn:hover { border-color: var(--accent); color: var(--accent); }
.sched-qc-cbtn.is-ghost { background: transparent; border-color: transparent; color: var(--text-muted); }
.sched-qc-cbtn.is-ghost:hover { color: var(--text-primary); border-color: var(--border); }

.sched-qc-foot {
  display: flex; align-items: center; gap: var(--sp-2);
  margin-top: var(--sp-3);
  padding: var(--sp-2_5) var(--sp-3);
  border-top: 1px solid var(--border);
}
.sched-qc-more {
  display: inline-flex; align-items: center; gap: var(--sp-1_5);
  padding: var(--sp-1_5) 0;
  border: 0; background: transparent; cursor: pointer;
  color: var(--text-secondary); font: inherit; font-size: 12.5px; font-weight: 600;
}
.sched-qc-more:hover { color: var(--accent); }
.sched-qc-book {
  margin-left: auto;
  display: inline-flex; align-items: center; gap: var(--sp-1_5);
  padding: var(--sp-2) var(--sp-3);
  border: 0; border-radius: 9px; cursor: pointer;
  background: var(--accent); color: #fff;
  font: inherit; font-size: 13px; font-weight: 600;
}
.sched-qc-book:hover { background: var(--accent-hover, var(--accent)); }
.sched-qc-book:disabled { opacity: .7; cursor: default; }

@media (max-width: 480px) {
  .sched-qc { width: calc(100vw - 16px); }
}
html[data-theme="light"] .sched-qc-f input[type="text"],
html[data-theme="light"] .sched-qc-combo input { color: #1e293b; }
html[data-theme="light"] .sched-qc-linked,
html[data-theme="light"] .sched-qc-combo.is-linked > i { color: #15803d; }
html[data-theme="light"] .sched-qc-clash-msg i { color: #92400e; }
.sched-app .sm8-lead {
  font-size: 13px; line-height: 1.55; color: var(--text-secondary);
  margin-bottom: var(--sp-4); max-width: 58ch;
}
.sched-app .sm8-connect { padding: var(--sp-2) 0; }
.sched-app .sm8-acct {
  display: flex; align-items: center; justify-content: space-between;
  gap: var(--sp-3); flex-wrap: wrap;
  padding: var(--sp-3) var(--sp-3_5); margin-bottom: var(--sp-4);
  background: var(--sunken); border: 1px solid var(--border); border-radius: 10px;
}
.sched-app .sm8-acct-l { display: flex; align-items: center; gap: var(--sp-3); min-width: 0; }
.sched-app .sm8-acct-r { display: flex; align-items: center; gap: var(--sp-2); flex-shrink: 0; }
.sched-app .sm8-acct-name { font-size: 13px; font-weight: 600; color: var(--text-primary); }
.sched-app .sm8-acct-sub  { font-size: 11px; color: var(--text-muted); margin-top: 2px; line-height: 1.45; }
.sched-app .sm8-dot {
  width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0;
  background: var(--text-muted);
}
.sched-app .sm8-dot.ok   { background: var(--success, #10b981); }
.sched-app .sm8-dot.warn { background: var(--warn, #f59e0b); }
.sched-app .sm8-window {
  display: flex; align-items: flex-end; gap: var(--sp-3); flex-wrap: wrap;
}
.sched-app .sm8-window .form-group { flex: 1 1 150px; min-width: 0; margin: 0; }
.sched-app .sm8-summary {
  display: flex; gap: var(--sp-3); flex-wrap: wrap; margin: var(--sp-4) 0 var(--sp-3);
}
.sched-app .sm8-stat {
  flex: 1 1 90px; padding: var(--sp-2_5) var(--sp-3);
  background: var(--sunken); border: 1px solid var(--border); border-radius: 10px;
}
.sched-app .sm8-stat b {
  display: block; font-size: 20px; font-weight: 650; color: var(--text-primary);
  line-height: 1.1; font-variant-numeric: tabular-nums;
}
.sched-app .sm8-stat span { display: block; font-size: 11px; color: var(--text-muted); margin-top: 3px; }

.sched-app .sm8-caveat {
  display: flex; gap: var(--sp-2); align-items: flex-start;
  padding: var(--sp-2_5) var(--sp-3); margin-bottom: var(--sp-3);
  font-size: 11.5px; line-height: 1.5; color: var(--text-secondary);
  background: var(--warn-soft, rgba(245, 158, 11, .08));
  border: 1px solid var(--warn-border, rgba(245, 158, 11, .25));
  border-radius: 9px;
}
.sched-app .sm8-caveat i { color: var(--warn, #f59e0b); flex-shrink: 0; margin-top: 1px; }
.sched-app .sm8-caveat > div > div + div { margin-top: 4px; }
.sched-app .sm8-tablewrap {
  overflow-x: auto; border: 1px solid var(--border); border-radius: 10px;
  max-height: 300px; overflow-y: auto;
}
.sched-app .sm8-table { width: 100%; border-collapse: collapse; font-size: 12px; }
.sched-app .sm8-table th {
  position: sticky; top: 0; z-index: 1;
  text-align: left; padding: var(--sp-2) var(--sp-2_5); white-space: nowrap;
  font-size: 10.5px; font-weight: 600; letter-spacing: .04em; text-transform: uppercase;
  color: var(--text-muted); background: var(--sunken);
  border-bottom: 1px solid var(--border);
}
.sched-app .sm8-table td {
  padding: var(--sp-2) var(--sp-2_5); border-bottom: 1px solid var(--border);
  color: var(--text-secondary); vertical-align: top;
}
.sched-app .sm8-table tr:last-child td { border-bottom: none; }
.sched-app .sm8-t { color: var(--text-muted); }

.sched-app .sm8-tag {
  display: inline-block; padding: var(--sp-0_5) var(--sp-1_5); border-radius: 999px;
  font-size: 10px; font-weight: 600; white-space: nowrap;
}
.sched-app .sm8-tag.new { color: var(--success, #10b981); background: rgba(16, 185, 129, .12); }
.sched-app .sm8-tag.upd { color: var(--text-muted);      background: var(--sunken); }

.sched-app .sm8-actions { margin-top: var(--sp-4); }
.sched-app .sm8-empty, .sched-app .sm8-err {
  padding: var(--sp-3_5); margin-top: var(--sp-3); border-radius: 10px;
  font-size: 12.5px; line-height: 1.5;
  background: var(--sunken); border: 1px solid var(--border); color: var(--text-secondary);
}
.sched-app .sm8-err { color: var(--danger, #ef4444); }
.sched-app .sm8-err i { margin-right: 6px; }

@keyframes sm8-spin { to { transform: rotate(360deg); } }
.sched-app .sm8-spin { display: inline-block; animation: sm8-spin 1s linear infinite; }
@media (prefers-reduced-motion: reduce) {
  .sched-app .sm8-spin { animation: none; }
}
.sched-app .sched-sendupd { display: inline-flex; align-items: center; gap: var(--sp-1); }
.sched-app .sched-sendupd[hidden] { display: none; }
.sched-app .sched-sendupd-go,
.sched-app .sched-sendupd-x {
  color: var(--app-warn, #f59e0b);
  background: color-mix(in srgb, var(--app-warn, #f59e0b) 13%, transparent);
  border: 1px solid color-mix(in srgb, var(--app-warn, #f59e0b) 38%, transparent);
}
.sched-app .sched-sendupd-go:hover,
.sched-app .sched-sendupd-x:hover {
  background: color-mix(in srgb, var(--app-warn, #f59e0b) 22%, transparent);
  border-color: color-mix(in srgb, var(--app-warn, #f59e0b) 55%, transparent);
}
.sched-app .sched-sendupd-go[disabled] { opacity: .6; pointer-events: none; }
.sched-app .sched-sendupd-n {
  min-width: 17px; padding: 0 var(--sp-1);
  display: inline-flex; align-items: center; justify-content: center;
  background: color-mix(in srgb, var(--app-warn, #f59e0b) 26%, transparent);
  border-radius: 999px;
  font-size: var(--text-2xs, 10px); font-weight: 700; line-height: 17px;
  font-variant-numeric: tabular-nums;
}
.jv-head { display: flex; align-items: flex-start; justify-content: space-between; gap: var(--sp-3); margin-bottom: var(--sp-2); }
.jv-head b { display: block; font-size: var(--t-sm); }
.jv-head .hint { display: block; margin-top: var(--sp-1); max-width: 60ch; }
.jv-empty { padding: var(--sp-3) 0; font-size: var(--t-sm); color: var(--text-muted); }
.jv-row { display: flex; align-items: center; gap: var(--sp-3); padding: var(--sp-2) 0; border-top: 1px solid var(--border); }
.jv-main { flex: 1; min-width: 0; }
.jv-title { font-size: var(--t-sm); }
.jv-trail { font-size: var(--t-xs); color: var(--text-muted); margin-top: var(--sp-1); }
.jv-trail.jv-ok { color: var(--ok); }
.jv-trail.jv-bad { color: var(--danger); }
.jv-amt { font-variant-numeric: tabular-nums; font-weight: 600; white-space: nowrap; }
.jv-acts { display: flex; gap: var(--sp-1); flex-shrink: 0; }
#jvModal {
  position: fixed; inset: 0;
  z-index: calc(var(--z-modal, 1000) + 4);
  display: none;
  align-items: center; justify-content: center;
  padding: var(--sp-4);
  background: rgba(0,0,0,.5);
  -webkit-backdrop-filter: blur(2px); backdrop-filter: blur(2px);
}
#jvModal .bk-modal {
  width: 100%; max-height: 88vh; overflow-y: auto;
  padding: var(--sp-5);
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--r-lg, 14px);
  box-shadow: var(--glass-shadow);
  color: var(--text-primary);
}
#jvModal h3 { margin: 0 0 var(--sp-4); font-size: var(--t-lg); display: flex; align-items: center; gap: var(--sp-2); }
#jvModal h3 i { color: var(--accent); }
#jvModal .lbl { display: block; margin: var(--sp-3) 0 var(--sp-1); font-size: var(--t-sm); font-weight: 600; }
#jvModal .lbl .hint { font-weight: 400; color: var(--text-muted); }
#jvModal input,
#jvModal textarea {
  width: 100%; box-sizing: border-box;
  padding: var(--sp-2) var(--sp-3);
  font-family: inherit; font-size: var(--t-sm);
  color: var(--text-primary);
  background: var(--bg);
  border: 1px solid var(--border-strong);
  border-radius: 9px;
}
#jvModal textarea { resize: vertical; }
#jvModal input:focus,
#jvModal textarea:focus { outline: none; border-color: var(--accent); }
#jvModal .link {
  display: inline-block; margin-top: var(--sp-2);
  padding: 0; background: none; border: 0;
  font-family: inherit; font-size: var(--t-sm); color: var(--accent);
  cursor: pointer;
}
#jvModal .link:hover { text-decoration: underline; }
#jvModal .bk-modal-actions { display: flex; margin-top: var(--sp-4); }
#jvModal .bk-right { display: flex; gap: var(--sp-2); margin-left: auto; }
.jv-modal { max-width: 40rem; }
.jv-ehead, .jv-erow { display: grid; grid-template-columns: 1fr 4.5rem 4.5rem 6rem 2rem; gap: var(--sp-1); align-items: center; }
.jv-ehead { margin-top: var(--sp-3); font-size: var(--t-xs); text-transform: uppercase; letter-spacing: .04em; color: var(--text-muted); }
.jv-erow { margin-top: var(--sp-1); }
.jv-erow input { min-width: 0; }
.jv-etotal { display: flex; justify-content: space-between; align-items: baseline; margin-top: var(--sp-3); padding-top: var(--sp-2); border-top: 1px solid var(--border); font-size: var(--t-sm); }
.jv-etotal b { font-size: var(--t-lg); font-variant-numeric: tabular-nums; }
@media (max-width: 560px) {
  .jv-ehead { display: none; }
  .jv-erow { grid-template-columns: 1fr 1fr; }
  .jv-erow .jv-desc { grid-column: 1 / -1; }
  .jv-row { flex-wrap: wrap; }
  .jv-main { flex: 1 1 100%; }
}
.sched-app .sched-sig-comms,
.sched-app .sched-sig-unassigned { font-size: 11px; vertical-align: -1px; }
.sched-app .sched-sig-comms.is-ok   { color: var(--st-complete); }
.sched-app .sched-sig-comms.is-wait { color: color-mix(in srgb, var(--text-primary) 55%, transparent); }
.sched-app .sched-sig-comms.is-ask  { color: var(--st-in_progress); }
.sched-app .sched-sig-unassigned    { color: var(--sc-unassigned, var(--st-in_progress)); }
.sched-app .sched-sig-comms-row { display: inline-flex; align-items: center; gap: var(--sp-1); }
.sched-app .sched-sig-comms-row.is-ok   { color: var(--st-complete); }
.sched-app .sched-sig-comms-row.is-wait { color: color-mix(in srgb, var(--text-primary) 70%, transparent); }
.sched-app .sched-sig-comms-row.is-ask  { color: var(--st-in_progress); }
.sched-app .sched-unsched-age {
  margin-left: auto;
  font-size: 10px; font-weight: 700; line-height: 1.4;
  padding: 0 var(--sp-1_5); border-radius: 999px;
  background: color-mix(in srgb, var(--sc-unassigned, var(--st-in_progress)) 18%, transparent);
  color: var(--sc-unassigned, var(--st-in_progress));
  font-variant-numeric: tabular-nums;
}
.sched-app .sched-att-chip.parts i { color: var(--st-in_progress); }
.sched-app .sched-attention.sched-dayflow {
  display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between;
  gap: var(--sp-2) var(--sp-3);
}
.sched-app .sched-df-rows { display: flex; flex-wrap: wrap; gap: var(--sp-1_5); align-items: center; }
.sched-app .sched-df-row {
  display: inline-flex; align-items: stretch;
  border: 1px solid var(--border); border-radius: var(--radius-sm, 6px);
  background: var(--card); overflow: hidden;
}
.sched-app .sched-df-row.is-on { border-color: var(--app-accent); box-shadow: 0 0 0 1px var(--app-accent); }
.sched-app .sched-df-main {
  display: inline-flex; align-items: center; gap: var(--sp-1_5);
  padding: var(--sp-1) var(--sp-2); border: 0; background: transparent;
  color: var(--text-primary); font-size: 12.5px; cursor: pointer;
}
.sched-app .sched-df-main:hover { background: color-mix(in srgb, var(--app-accent) 10%, transparent); }
.sched-app .sched-df-main i { font-size: 14px; color: var(--app-danger); }
.sched-app .sched-df-n { font-weight: 700; font-variant-numeric: tabular-nums; }
.sched-app .sched-df-lbl { color: var(--text-secondary); }
.sched-app .sched-df-x {
  display: inline-flex; align-items: center; padding: 0 var(--sp-1_5);
  border: 0; border-left: 1px solid var(--border); background: transparent;
  color: var(--text-muted); cursor: pointer; font-size: 12px;
}
.sched-app .sched-df-x:hover { background: color-mix(in srgb, var(--app-danger) 14%, transparent); color: var(--text-primary); }
.sched-app .sched-df-more {
  border: 1px dashed var(--border); border-radius: var(--radius-sm, 6px);
  background: transparent; color: var(--text-muted);
  padding: var(--sp-1) var(--sp-2); font-size: 12px; cursor: pointer;
}
.sched-app .sched-df-clear { display: flex; align-items: center; gap: var(--sp-1_5); font-size: 12.5px; color: var(--text-secondary); }
.sched-app .sched-df-clear i { color: var(--st-complete); font-size: 15px; }
.sched-app .sched-attention.sched-dayflow.is-clear { border-color: var(--border); }
.sched-app .sched-df-acts { display: flex; gap: var(--sp-1_5); margin-left: auto; }
.sched-app .sched-df-act {
  display: inline-flex; align-items: center; gap: var(--sp-1);
  border: 1px solid var(--app-accent); border-radius: var(--radius-sm, 6px);
  background: color-mix(in srgb, var(--app-accent) 12%, transparent);
  color: var(--text-primary); padding: var(--sp-1) var(--sp-2_5, 10px);
  font-size: 12.5px; font-weight: 600; cursor: pointer;
}
.sched-app .sched-df-act:hover { background: color-mix(in srgb, var(--app-accent) 22%, transparent); }
.sched-app .sched-df-act.is-done { border-color: var(--st-complete); background: color-mix(in srgb, var(--st-complete) 12%, transparent); }
.sched-app .sched-df-act.is-done i { color: var(--st-complete); }
.sched-df-body { display: flex; flex-direction: column; gap: var(--sp-3); }
.sched-df-lead { margin: 0; color: var(--text-secondary); font-size: 13.5px; }
.sched-df-check { display: flex; flex-direction: column; gap: var(--sp-1); }
.sched-df-check-row {
  display: flex; align-items: center; gap: var(--sp-2);
  padding: var(--sp-2); border-radius: var(--radius-sm, 6px);
  background: var(--card); font-size: 13px; color: var(--text-secondary);
}
.sched-df-check-row i { font-size: 15px; color: var(--text-muted); }
.sched-df-check-row.is-warn i { color: var(--app-danger); }
.sched-df-check-row.is-ok i { color: var(--st-complete); }
.sched-df-sec { display: flex; flex-direction: column; gap: var(--sp-1); }
.sched-df-sec-t {
  display: flex; align-items: center; gap: var(--sp-1_5);
  font-size: 12px; font-weight: 700; letter-spacing: .02em;
  text-transform: uppercase; color: var(--text-muted);
}
.sched-df-job {
  display: flex; align-items: center; justify-content: space-between; gap: var(--sp-2);
  padding: var(--sp-2); border: 1px solid var(--border);
  border-radius: var(--radius-sm, 6px); background: var(--card); flex-wrap: wrap;
}
.sched-df-job-name {
  border: 0; background: transparent; padding: 0; cursor: pointer;
  color: var(--text-primary); font-size: 13.5px; font-weight: 600; text-align: left;
}
.sched-df-job-name:hover { color: var(--app-accent); }
.sched-df-job-acts { display: flex; gap: var(--sp-1); }
.sched-df-foot { display: flex; justify-content: flex-end; gap: var(--sp-2); }
.sched-app .sched-tg-bytech .sched-td-head {
  display: flex; flex-direction: column; align-items: center; gap: var(--sp-px);
  padding: var(--sp-1_5) var(--sp-1);
}
.sched-app .sched-td-av {
  width: 24px; height: 24px; border-radius: 50%; display: inline-grid; place-items: center;
  font-size: 10px; font-weight: 700; color: #fff;
}
.sched-app .sched-td-name {
  font-size: 11.5px; font-weight: 600; color: var(--text-primary);
  max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.sched-app .sched-td-load { font-size: 10px; color: var(--text-muted); font-variant-numeric: tabular-nums; }
.sched-app .sched-tg-bytech .sched-td-head.is-unassigned .sched-td-name { color: var(--sc-unassigned, var(--text-primary)); }
.sched-app .sched-tg-bytech .sched-td-head.is-onleave { opacity: .7; }
.sched-app .sched-tg-bytech .sched-tg-col.is-onleave {
  background-image: repeating-linear-gradient(45deg, transparent 0 10px,
    color-mix(in srgb, var(--text-muted) 12%, transparent) 10px 12px);
}
.sched-app .sched-td-leave {
  position: absolute; top: var(--sp-2); left: 50%; transform: translateX(-50%);
  display: inline-flex; align-items: center; gap: var(--sp-1);
  font-size: 11px; font-weight: 600; color: var(--text-muted);
  background: var(--card); border: 1px solid var(--border);
  border-radius: 999px; padding: var(--sp-px) var(--sp-2); pointer-events: none; z-index: 3;
}
.sched-app .sched-cap-bar {
  position: relative; display: block; height: 3px; width: 70px;
  background: var(--border); border-radius: 2px; overflow: hidden;
}
.sched-app .sched-cap-fill { position: absolute; inset: 0 auto 0 0; background: var(--app-accent); }
.sched-app .sched-cap-reserve {
  position: absolute; top: 0; right: 0; bottom: 0;
  background: repeating-linear-gradient(45deg, transparent 0 2px,
    color-mix(in srgb, var(--text-muted) 45%, transparent) 2px 4px);
}
.sched-app .sched-cap.is-high  .sched-cap-fill { background: var(--st-in_progress); }
.sched-app .sched-cap.is-reserve .sched-cap-fill { background: var(--st-in_progress); }
.sched-app .sched-cap.is-reserve .sched-swim-pct { color: var(--st-in_progress); }
.sched-app .sched-cap.is-over  .sched-cap-fill { background: var(--app-danger); }
.sched-app .sched-cap.is-over  .sched-swim-pct { color: var(--app-danger); }
.sched-app .sched-tg-bytech .sched-cap {
  display: flex; flex-direction: column; align-items: center; gap: var(--sp-px);
}
.sched-app .sched-tg-bytech .sched-cap .sched-swim-pct { font-size: 10px; }
.sched-app .sched-tg-bytech .sched-cap-bar { width: 54px; }
.sched-app .sched-cap-offshift {
  position: absolute; left: 0; right: 0; pointer-events: none; z-index: 1;
  background: color-mix(in srgb, var(--text-muted) 9%, transparent);
}
.sched-app #schedulerCalendar [data-job-id].is-picked {
  outline: 2px solid var(--app-accent);
  outline-offset: 1px;
  box-shadow: 0 0 0 4px color-mix(in srgb, var(--app-accent) 22%, transparent);
}
.sched-app .sched-selbar {
  position: fixed; left: 50%; bottom: var(--sp-4); transform: translateX(-50%);
  z-index: 60; display: flex; flex-direction: column; gap: var(--sp-1_5);
  padding: var(--sp-2) var(--sp-3);
  background: var(--elev-3, var(--card)); border: 1px solid var(--border);
  border-radius: var(--radius-md); box-shadow: var(--shadow-3, 0 18px 46px -12px rgba(0,0,0,.66));
  max-width: min(94vw, 940px);
}
.sched-app .sched-selbar .sched-bulkbar {
  margin: 0; padding: 0; border: 0; background: transparent;
  display: flex; flex-wrap: wrap; align-items: center; gap: var(--sp-1_5);
}
.sched-app .sched-selbar-keys {
  font-size: 10.5px; color: var(--text-muted); text-align: center;
}
.sched-app .sched-selbar-keys kbd {
  font-size: 9.5px; padding: 0 var(--sp-1); border: 1px solid var(--border);
  border-radius: var(--radius-sm); background: var(--card);
}
@media (max-width: 720px) {
  .sched-app .sched-selbar { left: var(--sp-2); right: var(--sp-2); transform: none; max-width: none; }
  .sched-app .sched-selbar-keys { display: none; }
}
.sched-app .sched-qa-pop-ranked { min-width: 250px; max-width: 320px; }
.sched-app .sched-qa-ranked {
  align-items: flex-start; gap: var(--sp-2); padding: var(--sp-1_5) var(--sp-2);
}
.sched-app .sched-qa-ranked .sched-qa-dot { margin-top: var(--sp-1); flex: none; }
.sched-app .sched-qa-main { display: flex; flex-direction: column; gap: var(--sp-px); min-width: 0; text-align: left; }
.sched-app .sched-qa-why {
  font-size: 10.5px; color: var(--text-muted); line-height: 1.35;
  overflow: hidden; text-overflow: ellipsis;
}
.sched-app .sched-qa-best {
  font-size: 9px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase;
  color: var(--app-accent); border: 1px solid color-mix(in srgb, var(--app-accent) 45%, transparent);
  border-radius: 999px; padding: 0 var(--sp-1); vertical-align: 1px;
}
.sched-app .sched-qa-ranked.is-top { background: color-mix(in srgb, var(--app-accent) 7%, transparent); }
.sched-app .sched-qa-ranked.is-out { opacity: .55; }
.sched-app .sched-qa-ranked.is-out .sched-qa-why { color: var(--app-danger); }
.sched-app .sched-lane-state {
  display: inline-flex; align-items: center; gap: var(--sp-1);
  font-size: 10px; color: var(--text-muted); line-height: 1.4;
  overflow: hidden; white-space: nowrap; text-overflow: ellipsis; max-width: 100%;
}
.sched-app .sched-lane-state i { font-size: 11px; }
.sched-app .sched-lane-state.is-onsite i { color: var(--st-in_progress); }
.sched-app .sched-lane-state.is-driving i { color: var(--st-en_route); }
.sched-app .sched-tg-bytech .sched-lane-state { justify-content: center; }
.sched-app .sched-lane-live {
  display: inline-block; width: 7px; height: 7px; border-radius: 50%;
  margin-right: var(--sp-1); background: var(--st-complete);
  vertical-align: middle; flex: none; line-height: 1;
}
@media (prefers-reduced-motion: no-preference) {
  .sched-app .sched-lane-live { animation: schedLanePulse 2.4s ease-in-out infinite; }
  @keyframes schedLanePulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.45; } }
}
.sched-app .sched-tech-txt {
  flex: 1; min-width: 0; display: flex; flex-direction: column; justify-content: center;
}
.sched-app .sched-tech-txt .sched-tech-name { flex: none; }
.sched-app .sched-tech-sub { display: block; min-width: 0; }
.sched-app .sched-tech-sub:empty { display: none; }
.sched-app .sched-tech-av { position: relative; overflow: visible; }
.sched-app .sched-tech-live {
  position: absolute; inset-inline-end: -1px; inset-block-end: -1px;
  display: none; width: 8px; height: 8px; border-radius: 50%;
  background: var(--st-complete);
  box-shadow: 0 0 0 2px var(--card);
}
.sched-app .sched-tech-live.is-on { display: block; }
@media (prefers-reduced-motion: no-preference) {
  .sched-app .sched-tech-live.is-on { animation: schedLanePulse 2.4s ease-in-out infinite; }
}
.sched-app .sched-drop-warn {
  box-shadow: inset 0 0 0 2px color-mix(in srgb, var(--st-in_progress) 70%, transparent);
}
.sched-app .sched-drop-block {
  box-shadow: inset 0 0 0 2px color-mix(in srgb, var(--app-danger) 70%, transparent);
  background-image: repeating-linear-gradient(45deg, transparent 0 6px,
    color-mix(in srgb, var(--app-danger) 12%, transparent) 6px 12px);
}
.sched-app .sched-bf-btn.is-on { border-color: var(--app-accent); color: var(--app-accent); }
.sched-app .sched-bf-n {
  display: inline-grid; place-items: center; min-width: 15px; height: 15px;
  margin-left: var(--sp-1); padding: 0 var(--sp-1); border-radius: 999px;
  background: var(--app-accent); color: var(--btn-primary-ink, #fff);
  font-size: 9.5px; font-weight: 700;
}
.sched-app .sched-bf-pop, .sched-bf-pop {
  position: fixed; z-index: 70; min-width: 250px; max-width: 340px;
  display: flex; flex-direction: column; gap: var(--sp-2_5);
  padding: var(--sp-3); background: var(--elev-3, var(--card));
  border: 1px solid var(--border); border-radius: var(--radius-md);
  box-shadow: var(--shadow-3, 0 18px 46px -12px rgba(0,0,0,.66));
  max-height: 70vh; overflow-y: auto;
}
.sched-bf-group { display: flex; flex-direction: column; gap: var(--sp-1_5); }
.sched-bf-t {
  font-size: 10px; font-weight: 700; letter-spacing: .07em;
  text-transform: uppercase; color: var(--text-muted);
}
.sched-bf-chips { display: flex; flex-wrap: wrap; gap: var(--sp-1); }
.sched-bf-chip {
  border: 1px solid var(--border); border-radius: 999px; background: var(--card);
  color: var(--text-secondary); font-size: 12px; padding: var(--sp-1) var(--sp-2);
  cursor: pointer;
}
.sched-bf-chip:hover { color: var(--text-primary); border-color: var(--app-accent); }
.sched-bf-chip.is-on { background: var(--app-accent); border-color: var(--app-accent); color: var(--btn-primary-ink, #fff); }
.sched-bf-foot {
  display: flex; align-items: center; justify-content: space-between; gap: var(--sp-2);
  border-top: 1px solid var(--border); padding-top: var(--sp-2);
}
.sched-bf-sum { font-size: 11.5px; color: var(--text-muted); min-width: 0; overflow: hidden; text-overflow: ellipsis; }
.sched-app .sched-attention.sched-dayflow {
  border-color: var(--border);
  background: var(--card);
  border-radius: var(--radius-md);
  padding: var(--sp-2) var(--sp-2_5);
}
.sched-app .sched-attention.sched-dayflow.is-clear {
  border-color: transparent;
  background: transparent;
  padding: var(--sp-1) 0;
  margin-bottom: var(--sp-2);
}
.sched-app .sched-dayflow.is-clear .sched-df-clear { font-size: 12px; }
.sched-app .sched-dayflow.is-clear .sched-df-clear i { font-size: 14px; }
.sched-app .sched-legend-item.is-key,
.sched-app .sched-legend-item.is-key:hover {
  cursor: default; border-color: transparent; background: transparent;
  color: var(--text-muted); padding-left: 0; padding-right: var(--sp-2);
}
.sched-peers { display: inline-flex; align-items: center; margin-inline-end: var(--sp-2); }
.sched-peers:empty { display: none; }
.sched-peer-av {
  width: 24px; height: 24px; border-radius: 50%;
  display: grid; place-items: center;
  font-size: 10px; font-weight: 700; color: #fff;
  background: var(--peer, #64748b);
  box-shadow: 0 0 0 2px rgba(0,0,0,.35);
  margin-inline-start: calc(-1 * var(--sp-1_5));
}
.sched-peer-av:first-child { margin-inline-start: var(--sp-0); }
.sched-peer-av.is-more { background: #64748b; }
.sched-app .sched-peer-moving { opacity: .38; }
.sched-app .sched-peer-claimed { box-shadow: inset 0 0 0 2px var(--peer, #38bdf8); }
.sched-peer-badge {
  display: inline-grid; place-items: center; flex: 0 0 auto;
  width: 15px; height: 15px; border-radius: 50%;
  margin-inline-start: var(--sp-1);
  font-size: 8px; font-weight: 700; color: #fff;
  background: var(--peer, #64748b);
  vertical-align: middle; pointer-events: none;
}
.sched-peer-ghost {
  pointer-events: none; z-index: 6;
  display: flex; align-items: center; gap: var(--sp-1);
  padding: var(--sp-0_5) var(--sp-1_5);
  border: 1px dashed var(--peer, #38bdf8);
  border-radius: 6px;
  background: color-mix(in srgb, var(--peer, #38bdf8) 18%, transparent);
  font-size: 11px; font-weight: 600;
  overflow: hidden; white-space: nowrap;
}
.sched-peer-ghost.is-abs { position: absolute; left: var(--sp-1); right: var(--sp-1); }
.sched-peer-ghost.is-swim { right: auto; top: var(--sp-1); }
.sched-peer-ghost-who {
  flex: 0 0 auto;
  width: 14px; height: 14px; border-radius: 50%;
  display: inline-grid; place-items: center;
  font-size: 8px; color: #fff; background: var(--peer, #38bdf8);
}
.sched-peer-ghost-name { overflow: hidden; text-overflow: ellipsis; }

/* ── legacy/hub/css/dispatch.css ── */
.sched-app {
  --sc-ink: var(--app-text); --sc-ink2: var(--app-text-2); --sc-muted: var(--app-muted);
  --sc-faint: color-mix(in srgb, var(--app-muted) 62%, var(--app-bg));
  --sc-line: var(--app-border); --sc-line2: var(--app-border-2);
  --sc-surface: var(--app-surface); --sc-sunken: var(--app-sunken); --sc-rail: var(--app-bg);
  --sc-accent: var(--app-accent); --sc-accent-ink: var(--app-accent-fg);
  --sc-unassigned: #fb923c; --sc-scheduled: var(--app-accent); --sc-enroute: #a78bfa;
  --sc-onsite: #f59e0b; --sc-done: #22c55e; --sc-late: var(--app-danger); --sc-now: var(--app-danger);
  --sc-r-xs: 7px; --sc-r: 11px; --sc-r-lg: 15px;
  --sc-num: 'Inter', system-ui, sans-serif; --sc-out: cubic-bezier(.22,.61,.36,1);
  --sc-sh1: 0 1px 2px rgba(0,0,0,.42);
  --sc-sh2: 0 1px 2px rgba(0,0,0,.42), 0 12px 28px -8px rgba(0,0,0,.55), 0 28px 50px -22px rgba(0,0,0,.6);
}
:root[data-theme="light"] .sched-app {
  --sc-sh1: 0 1px 1.5px rgba(28,26,22,.05), 0 1px 2px rgba(28,26,22,.03);
  --sc-sh2: 0 1px 2px rgba(28,26,22,.06), 0 10px 24px -10px rgba(28,26,22,.14), 0 24px 48px -24px rgba(28,26,22,.16);
  --sc-unassigned: #d97706; --sc-enroute: #7c5cf0; --sc-onsite: #c47a09; --sc-done: #1a9d4c;
}
body.sched-app { height: 100dvh; overflow: hidden; }
.sched-app .sched-page { height: 100dvh; display: flex; flex-direction: column; overflow: hidden; }
.sched-app .sched-page-body { flex: 1; min-height: 0; overflow: hidden; padding: 0; }
.sched-app .sched-sections { height: 100%; }
.sched-sections[data-section="board"] #sec-scheduler { display: flex; flex-direction: column; min-height: 0; height: 100%; }
.sched-sections[data-section="customers"] #sec-customers,
.sched-sections[data-section="equipment"] #sec-equipment,
.sched-sections[data-section="reports"]   #sec-reports { display: flex; flex-direction: column; min-height: 0; height: 100%; }
#sec-customers .rec-list, #sec-equipment .rec-list, #sec-reports .rec-list { flex: 1; min-height: 0; overflow-y: auto; }
.sched-app [hidden] { display: none !important; }
.scmd { display: flex; align-items: center; gap: 14px; height: 52px; padding: 0 16px; flex: none;
  background: var(--sc-surface); border-bottom: 1px solid var(--sc-line); z-index: 40; }
.scmd-back { width: 34px; height: 34px; border-radius: 9px; display: grid; place-items: center;
  color: var(--sc-ink2); font-size: 18px; }
.scmd-back:hover { background: var(--sc-sunken); color: var(--sc-ink); }
.scmd-brand { display: flex; align-items: center; gap: 8px; font-weight: 700; font-size: 15px; letter-spacing: -.02em; white-space: nowrap; }
.scmd-brand img { width: 26px; height: 26px; border-radius: 7px; }
.scmd-brand b { font-weight: 500; color: var(--sc-ink2); }
.scmd-tabs { display: flex; gap: 2px; margin-left: 6px; }
.scmd-tab { display: flex; align-items: center; gap: 6px; padding: 7px 12px; border-radius: 8px; border: none;
  background: none; font-weight: 500; color: var(--sc-muted); font-size: 12.5px; cursor: pointer; transition: color .14s var(--sc-out), background .14s var(--sc-out); }
.scmd-tab i { font-size: 16px; }
.scmd-tab:hover { color: var(--sc-ink); background: var(--sc-sunken); }
.scmd-tab.active { color: var(--sc-ink); background: color-mix(in srgb, var(--sc-accent) 12%, transparent); }
.scmd-tab.active i { color: var(--sc-accent); }
.scmd-sp { flex: 1; }
.scmd-search { position: relative; display: flex; align-items: center; gap: 8px; width: 260px; height: 34px; padding: 0 11px;
  background: var(--sc-sunken); border: 1px solid var(--sc-line); border-radius: 9px; color: var(--sc-muted); }
.scmd-search > i { font-size: 16px; }
.scmd-search input { flex: 1; min-width: 0; border: none; background: none; color: var(--sc-ink); font-size: 12.5px; outline: none; }
.scmd-search input::placeholder { color: var(--sc-faint); }
.scmd-cmdk { border: none; background: none; cursor: pointer; padding: 0; }
.scmd-search kbd, .scmd-cmdk kbd { font-family: var(--sc-num); font-size: 10px; padding: 1px 5px; border-radius: 5px;
  background: var(--sc-surface); border: 1px solid var(--sc-line); color: var(--sc-muted); }
.scmd-icon { position: relative; width: 34px; height: 34px; border-radius: 9px; display: grid; place-items: center;
  border: none; background: none; color: var(--sc-ink2); font-size: 18px; cursor: pointer; transition: .14s var(--sc-out); }
.scmd-icon:hover { background: var(--sc-sunken); color: var(--sc-ink); }
.scmd-clock { font-family: var(--sc-num); font-variant-numeric: tabular-nums; font-size: 13px; font-weight: 600; color: var(--sc-ink2); }
.scmd .sched-add-job { margin-left: 2px; }
.scmd-search-mob { display: none; }
@media (max-width: 900px) { .scmd-tabs { display: none; } .scmd-search { display: none; } .scmd-search-mob { display: grid; } }
.stoolbar { display: flex; align-items: center; gap: 14px; padding: 10px 16px; flex: none; flex-wrap: wrap;
  background: var(--sc-surface); border-bottom: 1px solid var(--sc-line); }
.stoolbar-head .section-title { font-size: 16px; font-weight: 700; letter-spacing: -.02em; line-height: 1.1; }
.skpis { display: flex; gap: 6px; margin-top: 6px; flex-wrap: wrap; }
.skpi { display: inline-flex; align-items: center; gap: 6px; padding: 3px 9px; border-radius: 20px; font-size: 11.5px;
  font-weight: 600; border: 1px solid var(--sc-line); background: var(--sc-sunken); color: var(--sc-ink2); cursor: pointer; }
.skpi .n { font-family: var(--sc-num); font-weight: 700; }
.skpi .sw { width: 7px; height: 7px; border-radius: 50%; background: var(--sc-scheduled); }
.skpi.k-unassigned { color: var(--sc-unassigned); } .skpi.k-unassigned .sw { background: var(--sc-unassigned); }
.skpi.k-enroute { color: var(--sc-enroute); } .skpi.k-enroute .sw { background: var(--sc-enroute); }
.skpi.k-onsite { color: var(--sc-onsite); } .skpi.k-onsite .sw { background: var(--sc-onsite); }
.skpi.k-late { color: var(--sc-late); border-color: color-mix(in srgb, var(--sc-late) 40%, transparent); } .skpi.k-late .sw { background: var(--sc-late); }
.stoolbar-sp { flex: 1; }
.sviews { display: flex; background: var(--sc-sunken); border: 1px solid var(--sc-line); border-radius: 10px; padding: 3px; gap: 2px; }
.sviews button { display: flex; align-items: center; gap: 5px; padding: 6px 10px; border-radius: 7px; border: none; background: none;
  font-size: 12px; font-weight: 600; color: var(--sc-muted); cursor: pointer; transition: .14s var(--sc-out); }
.sviews button i { font-size: 15px; }
.sviews button:hover { color: var(--sc-ink); }
.sched-app .sviews button.active { background: var(--sc-surface); color: var(--sc-ink); box-shadow: var(--sc-sh1); }
.sched-app .sviews button.active i { color: var(--sc-accent); }
.sdatenav { display: flex; align-items: center; gap: 2px; background: var(--sc-sunken); border: 1px solid var(--sc-line);
  border-radius: 10px; padding: 3px; }
.sdatenav button { border: none; background: none; cursor: pointer; color: var(--sc-ink2); }
.sdatenav .nav { width: 30px; height: 28px; border-radius: 7px; display: grid; place-items: center; font-size: 17px; }
.sdatenav .nav:hover { background: var(--sc-surface); color: var(--sc-ink); }
.sdatenav .today { padding: 0 12px; height: 28px; border-radius: 7px; font-weight: 600; font-size: 12.5px; color: var(--sc-ink);
  display: flex; align-items: center; gap: 7px; }
.sdatenav .today .d { font-family: var(--sc-num); color: var(--sc-muted); font-weight: 500; }
.sched-td-tools { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.sched-td-tools[hidden] { display: none; }
.sched-td-seg { display: flex; align-items: center; background: var(--sc-sunken); border: 1px solid var(--sc-line);
  border-radius: 10px; padding: 3px; gap: 2px; }
.sched-td-seg button { display: flex; align-items: center; padding: 6px 10px; border-radius: 7px; border: none; background: none;
  font-size: 12px; font-weight: 600; color: var(--sc-muted); cursor: pointer; transition: .14s var(--sc-out); }
.sched-td-seg button:hover { color: var(--sc-ink); }
.sched-td-seg button.is-on { background: var(--sc-surface); color: var(--sc-ink); box-shadow: var(--sc-sh1); }
.sched-td-lbl-ico { display: grid; place-items: center; width: 24px; height: 28px; color: var(--sc-muted); font-size: 15px; flex: none; }

.sutil { display: flex; align-items: center; gap: 6px; }
.sboard { flex: 1; min-height: 0; display: grid; grid-template-columns: 262px minmax(0,1fr) 316px; overflow: hidden; }
.spane { min-height: 0; min-width: 0; overflow-y: auto; display: flex; flex-direction: column; }
.spane-left { background: var(--sc-rail); border-right: 1px solid var(--sc-line); gap: 10px; padding: 12px; }
.spane-right { background: var(--sc-rail); border-left: 1px solid var(--sc-line); }
.sched-app #schedulerCalendar.sched-main { min-height: 0; overflow: auto; background: var(--sc-surface); }
@media (max-width: 1280px) { .sboard { grid-template-columns: minmax(0,1fr) 316px; } }
@media (max-width: 960px)  { .sboard { grid-template-columns: minmax(0,1fr); } .spane-right { display: none; } }
.sched-app .sched-swim { background: var(--sc-surface); }
.sched-app .sched-swim-actions { padding: 8px 14px; border-bottom: 1px solid var(--sc-line); display: flex; justify-content: flex-end; }
.sched-app .sched-swim-scroll { overflow: auto; }
.sched-app .sched-swim-head { display: flex; position: sticky; top: 0; z-index: 6; background: var(--sc-surface); border-bottom: 1px solid var(--sc-line2); }
.sched-app .sched-swim-corner { width: 200px; flex: none; border-right: 1px solid var(--sc-line); }
.sched-app .sched-swim-hours { display: flex; }
.sched-app .sched-swim-hour { font-family: var(--sc-num); font-size: 11px; color: var(--sc-muted); padding: 9px 0 8px 8px; border-left: 1px solid var(--sc-line); box-sizing: border-box; }
.sched-app .sched-swim-row { display: flex; border-bottom: 1px solid var(--sc-line); }
.sched-app .sched-swim-row:hover { background: color-mix(in srgb, var(--sc-sunken) 55%, transparent); }
.sched-app .sched-swim-label { width: 200px; flex: none; box-sizing: border-box; padding: 10px 12px; border-right: 1px solid var(--sc-line); display: flex; flex-direction: column; gap: 6px; justify-content: center; }
.sched-app .sched-swim-tech { display: flex; align-items: center; gap: 9px; min-width: 0; }
.sched-app .sched-lane-av { width: 30px; height: 30px; border-radius: 9px; flex: none; display: grid; place-items: center; color: #fff; font-weight: 700; font-size: 11px; }
.sched-app .sched-lane-name { font-weight: 600; font-size: 13px; letter-spacing: -.01em; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.sched-app .sched-swim-util { display: flex; flex-direction: column; gap: 3px; }
.sched-app .sched-swim-bar { display: block; height: 4px; border-radius: 3px; background: var(--sc-line); overflow: hidden; }
.sched-app .sched-swim-bar > span { display: block; height: 100%; border-radius: 3px; background: var(--sc-onsite); }
.sched-app .sched-swim-util.is-over .sched-swim-bar > span { background: var(--sc-late); }
.sched-app .sched-swim-pct { font-family: var(--sc-num); font-size: 10.5px; color: var(--sc-muted); }
.sched-app .sched-swim-util.is-over .sched-swim-pct { color: var(--sc-late); font-weight: 700; }
.sched-app .sched-swim-util.is-unassigned .sched-swim-pct { color: var(--sc-unassigned); }
.sched-app .sched-swim-untimed { display: flex; flex-wrap: wrap; gap: 4px; }
.sched-app .sched-swim-chip { font-size: 10.5px; padding: 2px 7px; border-radius: 6px; color: var(--sc-ink); cursor: pointer; white-space: nowrap;
  background: color-mix(in srgb, var(--jc, var(--sc-scheduled)) 14%, var(--sc-surface));
  border: 1px solid color-mix(in srgb, var(--jc, var(--sc-scheduled)) 30%, transparent); }
.sched-app .sched-swim-track { position: relative; }
.sched-app .sched-swim-gridline { position: absolute; top: 0; bottom: 0; width: 1px; background: var(--sc-line); }
.sched-app .sched-swim-now { position: absolute; top: 0; bottom: 0; width: 2px; background: var(--sc-now); z-index: 4; pointer-events: none; }
.sched-app .sched-swim-now::before { content: ""; position: absolute; top: -1px; left: -3px; width: 8px; height: 8px; border-radius: 50%; background: var(--sc-now); box-shadow: 0 0 0 3px color-mix(in srgb, var(--sc-now) 22%, transparent); }
.sched-app .sched-swim-event { position: absolute; border-radius: 8px; padding: 3px 8px; overflow: hidden; cursor: pointer;
  display: flex; align-items: center; gap: 4px; white-space: nowrap; box-shadow: var(--sc-sh1);
  font-size: 11.5px; font-weight: 600; color: var(--sc-ink);
  background: color-mix(in srgb, var(--jc, var(--sc-scheduled)) 13%, var(--sc-surface));
  border: 1px solid color-mix(in srgb, var(--jc, var(--sc-scheduled)) 30%, transparent);
  border-left: 3px solid var(--st, var(--jc, var(--sc-scheduled))); transition: filter .12s, box-shadow .12s; }
.sched-app .sched-swim-event:hover { filter: brightness(1.04); box-shadow: var(--sc-sh2); z-index: 5; }
.sched-app .sched-swim-event b { font-family: var(--sc-num); font-weight: 600; color: var(--sc-ink2); }
.sched-app .sched-swim-event.is-complete { opacity: .72; }
.sched-app .sched-swim-sub { color: var(--sc-muted); font-weight: 500; overflow: hidden; text-overflow: ellipsis; }
.sched-app .sched-swim-leave { position: absolute; inset: 0; display: flex; align-items: center; gap: 6px; padding-left: 12px; font-size: 12px; font-weight: 600; color: var(--sc-muted);
  background: repeating-linear-gradient(45deg, transparent, transparent 9px, color-mix(in srgb, var(--sc-muted) 7%, transparent) 9px, color-mix(in srgb, var(--sc-muted) 7%, transparent) 18px); }
.sched-app .sched-leave-tag { font-size: 10px; color: var(--sc-muted); font-weight: 600; }
.sched-app .sched-tg { background: var(--sc-surface); }
.sched-app .sched-tg-head,
.sched-app .sched-allday-row,
.sched-app .sched-tg-body { grid-template-columns: 56px repeat(var(--tg-cols, 7), 1fr); }
.sched-app .sched-tg-head { display: grid; position: sticky; top: 0; z-index: 6; background: var(--sc-surface); border-bottom: 1px solid var(--sc-line2); }
.sched-app .sched-tg-corner { border-right: 1px solid var(--sc-line); }
.sched-app .sched-tg-headcell { padding: 8px 6px 9px; text-align: center; border-left: 1px solid var(--sc-line); }
.sched-app .sched-tg-dow { display: block; font-size: 10.5px; font-weight: 600; color: var(--sc-muted); text-transform: uppercase; letter-spacing: .05em; }
.sched-app .sched-tg-dnum { display: block; font-family: var(--sc-num); font-size: 16px; font-weight: 700; margin-top: 3px; color: var(--sc-ink); }
.sched-app .sched-tg-headcell.is-today .sched-tg-dow { color: var(--sc-accent); }
.sched-app .sched-tg-headcell.is-today .sched-tg-dnum { background: var(--sc-accent); color: var(--sc-accent-ink); width: 26px; height: 26px; border-radius: 50%; display: inline-grid; place-items: center; margin: 2px auto 0; }
.sched-app .sched-tg-headcell.is-offday { background: color-mix(in srgb, var(--sc-muted) 6%, transparent); }
.sched-app .sched-allday-row { display: grid; border-bottom: 1px solid var(--sc-line); background: var(--sc-surface); }
.sched-app .sched-allday-label { font-size: 9.5px; font-weight: 600; color: var(--sc-muted); text-transform: uppercase; letter-spacing: .05em; padding: 6px; align-self: center; }
.sched-app .sched-allday-cell { border-left: 1px solid var(--sc-line); padding: 4px; display: flex; flex-direction: column; gap: 3px; min-height: 30px; }
.sched-app .sched-tg-body { display: grid; }
.sched-app .sched-tg-gutter { border-right: 1px solid var(--sc-line); }
.sched-app .sched-tg-hour { position: relative; }
.sched-app .sched-tg-hour span { position: absolute; top: -7px; right: 8px; font-family: var(--sc-num); font-size: 10px; color: var(--sc-muted); }
.sched-app .sched-tg-col { position: relative; border-left: 1px solid var(--sc-line); }
.sched-app .sched-tg-col.is-today { background: color-mix(in srgb, var(--sc-accent) 5%, transparent); }
.sched-app .sched-tg-col.is-offday { background: color-mix(in srgb, var(--sc-muted) 6%, transparent); }
.sched-app .sched-tg-cell { border-top: 1px solid var(--sc-line); cursor: pointer; }
.sched-app .sched-tg-cell:hover { background: color-mix(in srgb, var(--sc-accent) 7%, transparent); }
.sched-app .sched-event { position: absolute; left: 0; border-radius: 8px; padding: 4px 7px; overflow: hidden; cursor: pointer;
  display: flex; flex-direction: column; gap: 1px; box-shadow: var(--sc-sh1);
  background: color-mix(in srgb, var(--jc, var(--sc-scheduled)) 13%, var(--sc-surface));
  border: 1px solid color-mix(in srgb, var(--jc, var(--sc-scheduled)) 30%, transparent);
  border-left: 3px solid var(--st, var(--jc, var(--sc-scheduled))); transition: filter .12s, box-shadow .12s; }
.sched-app .sched-event:hover { filter: brightness(1.04); box-shadow: var(--sc-sh2); z-index: 5; }
.sched-app .sched-event.is-complete { opacity: .72; }
.sched-app .sched-event-time { display: flex; align-items: center; gap: 5px; font-family: var(--sc-num); font-size: 10px; font-weight: 600; color: var(--sc-ink2); }
.sched-app .sched-event-title { font-size: 11.5px; font-weight: 600; color: var(--sc-ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.sched-app .sched-event-sub { font-size: 10px; color: var(--sc-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
/* Contractor work: who sent it + their WO number, ahead of the detail line. */
.sched-pr-tag {
  display: inline-block; vertical-align: baseline; max-width: 100%;
  padding: 0 4px; border: 1px solid var(--sc-line, var(--border)); border-radius: 3px;
  font-size: 9.5px; font-weight: 600; line-height: 1.45; letter-spacing: 0;
  color: var(--sc-ink2, var(--text-secondary)); background: var(--sc-surface, var(--surface));
  font-variant-numeric: tabular-nums; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.sched-list-meta .sched-pr-tag { font-size: 10.5px; }
.sched-app .sched-ev-av { width: 15px; height: 15px; border-radius: 4px; display: inline-grid; place-items: center; font-size: 8px; font-weight: 700; background: var(--jc, var(--sc-scheduled)); color: #fff; }
.sched-app .sched-nowline { position: absolute; left: 0; right: 0; height: 2px; background: var(--sc-now); z-index: 4; pointer-events: none; }
.sched-app .sched-nowline::before { content: ""; position: absolute; left: -3px; top: -3px; width: 8px; height: 8px; border-radius: 50%; background: var(--sc-now); }
.sched-app .sched-nowline-lbl { position: absolute; left: 6px; top: -8px; font-family: var(--sc-num); font-size: 9.5px; font-weight: 700; color: #fff; background: var(--sc-now); border-radius: 4px; padding: 0 4px; }
.sched-app .sched-month { display: flex; flex-direction: column; height: 100%; }
.sched-app .sched-month-head { display: grid; grid-template-columns: repeat(7, 1fr); border-bottom: 1px solid var(--sc-line2); background: var(--sc-surface); }
.sched-app .sched-month-head > div { padding: 8px 0; text-align: center; font-size: 10.5px; font-weight: 600; color: var(--sc-muted); text-transform: uppercase; letter-spacing: .05em; border-left: 1px solid var(--sc-line); }
.sched-app .sched-month-head > div:first-child { border-left: none; }
.sched-app .sched-month-grid { display: grid; grid-template-columns: repeat(7, 1fr); flex: 1; min-height: 0; }
.sched-app .sched-month-cell { border-left: 1px solid var(--sc-line); border-top: 1px solid var(--sc-line); padding: 5px 6px 7px; cursor: pointer; display: flex; flex-direction: column; gap: 2px; overflow: hidden; }
.sched-app .sched-month-cell:nth-child(7n+1) { border-left: none; }
.sched-app .sched-month-cell:hover { background: color-mix(in srgb, var(--sc-accent) 5%, transparent); }
.sched-app .sched-month-cell.is-blank { background: color-mix(in srgb, var(--sc-muted) 4%, transparent); cursor: default; }
.sched-app .sched-month-cell.is-offday { background: color-mix(in srgb, var(--sc-muted) 5%, transparent); }
.sched-app .sched-daynum { font-family: var(--sc-num); font-variant-numeric: tabular-nums; font-size: 12.5px; font-weight: 600; color: var(--sc-ink2); align-self: flex-start; }
.sched-app .sched-month-cell.is-today .sched-daynum { background: var(--sc-accent); color: var(--sc-accent-ink); width: 22px; height: 22px; border-radius: 50%; display: grid; place-items: center; }
.sched-app .sched-more { font-size: 10px; color: var(--sc-muted); font-weight: 600; margin-top: 1px; }
.sched-app .sched-chip { display: flex; align-items: center; gap: 4px; font-size: 10.5px; font-weight: 600; padding: 2px 6px; border-radius: 6px; cursor: pointer;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis; color: var(--sc-ink);
  background: color-mix(in srgb, var(--jc, var(--sc-scheduled)) 14%, var(--sc-surface));
  border-left: 3px solid var(--st, var(--jc, var(--sc-scheduled))); }
.sched-app .sched-chip b { font-family: var(--sc-num); font-weight: 600; color: var(--sc-ink2); }
.sched-app .sched-chip.is-complete { opacity: .7; }
.sched-app .sched-chip[data-status="invoiced"],
.sched-app .sched-event[data-status="invoiced"],
.sched-app .sched-swim-event[data-status="invoiced"],
.sched-app .sched-swim-chip[data-status="invoiced"] {
  background: color-mix(in srgb, var(--st-invoiced) 30%, var(--sc-surface));
  border-color: color-mix(in srgb, var(--st-invoiced) 48%, transparent);
  border-left-color: var(--st-invoiced);
}
.sched-app .sched-list { padding: 12px 16px; overflow-y: auto; }
.sched-app .sched-list-group { margin-bottom: 14px; }
.sched-app .sched-list-date { font-size: 11px; font-weight: 700; color: var(--sc-muted); text-transform: uppercase; letter-spacing: .05em; padding: 4px 2px 8px; }
.sched-app .sched-list-card { display: flex; align-items: center; gap: 11px; padding: 10px 12px; border: 1px solid var(--sc-line); border-radius: var(--sc-r); background: var(--sc-surface); cursor: pointer; margin-bottom: 6px; transition: border-color .12s, box-shadow .12s; }
.sched-app .sched-list-card:hover { border-color: var(--sc-line2); box-shadow: var(--sc-sh1); }
.sched-app .sched-list-card.is-selected { border-color: var(--sc-accent); background: color-mix(in srgb, var(--sc-accent) 8%, var(--sc-surface)); }
.sched-app .sched-list-card.is-complete { opacity: .72; }
.sched-app .sched-list-dot { width: 9px; height: 9px; border-radius: 50%; flex: none; }
.sched-app .sched-list-main { flex: 1; min-width: 0; }
.sched-app .sched-list-cust { font-size: 13px; font-weight: 600; color: var(--sc-ink); }
.sched-app .sched-list-meta { font-size: 11.5px; color: var(--sc-muted); margin-top: 1px; }
.sched-app .sched-status-tag { font-weight: 600; }
.sched-app .sched-insp { display: flex; flex-direction: column; min-height: 0; height: 100%; }
.sched-app .sched-insp-empty { flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 8px; text-align: center; color: var(--sc-muted); padding: 30px; }
.sched-app .sched-insp-empty i { font-size: 30px; color: var(--sc-faint); }
.sched-app .sched-insp-empty p { font-size: 12.5px; max-width: 200px; }
.sched-app .sched-insp-top { padding: 14px 16px 12px; border-bottom: 1px solid var(--sc-line); }
.sched-app .sched-insp-eyebrow { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; }
.sched-app .sched-insp-pill { display: inline-flex; align-items: center; gap: 5px; font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .03em; padding: 3px 9px; border-radius: 20px;
  color: var(--s, var(--sc-scheduled)); background: color-mix(in srgb, var(--s, var(--sc-scheduled)) 16%, transparent); }
.sched-app .sched-insp-pill i { font-size: 13px; }
.sched-app .sched-insp-wo { margin-left: auto; font-family: var(--sc-num); font-size: 11px; color: var(--sc-muted); font-weight: 600; }
.sched-app .sched-insp-title { font-size: 16px; font-weight: 700; letter-spacing: -.02em; line-height: 1.2; color: var(--sc-ink); }
.sched-app .sched-insp-cust { display: flex; align-items: center; gap: 5px; font-size: 12.5px; color: var(--sc-ink2); margin-top: 3px; }
.sched-app .sched-insp-cust i { font-size: 15px; color: var(--sc-muted); }
.sched-app .sched-insp-stepper { display: flex; padding: 16px 12px 6px; }
.sched-app .sched-insp-step { flex: 1; display: flex; flex-direction: column; align-items: center; gap: 6px; position: relative; border: none; background: none; cursor: pointer; padding: 0; }
.sched-app .sched-insp-step::before { content: ""; position: absolute; top: 9px; left: -50%; width: 100%; height: 2px; background: var(--sc-line); }
.sched-app .sched-insp-step:first-child::before { display: none; }
.sched-app .sched-insp-step.is-done::before, .sched-app .sched-insp-step.is-cur::before { background: var(--st, var(--sc-scheduled)); }
.sched-app .sched-insp-step .dot { width: 20px; height: 20px; border-radius: 50%; background: var(--sc-surface); border: 2px solid var(--sc-line); display: grid; place-items: center; font-size: 11px; color: var(--sc-muted); z-index: 1; }
.sched-app .sched-insp-step.is-done .dot { background: var(--st, var(--sc-scheduled)); border-color: var(--st, var(--sc-scheduled)); color: #fff; }
.sched-app .sched-insp-step.is-cur .dot { border-color: var(--st, var(--sc-scheduled)); color: var(--st, var(--sc-scheduled)); box-shadow: 0 0 0 4px color-mix(in srgb, var(--st, var(--sc-scheduled)) 18%, transparent); }
.sched-app .sched-insp-step .lbl { font-size: 10px; font-weight: 600; color: var(--sc-muted); }
.sched-app .sched-insp-step.is-done .lbl, .sched-app .sched-insp-step.is-cur .lbl { color: var(--sc-ink); }
.sched-app button.sched-insp-step:hover .dot { border-color: var(--sc-accent); }
.sched-app .sched-insp-step.is-locked { cursor: default; }
.sched-app .sched-insp-locknote { display: flex; align-items: center; gap: 6px; margin: 2px 16px 0; padding: 8px 10px; border-radius: var(--sc-r-xs); font-size: 11.5px; color: var(--sc-muted); background: var(--sc-sunken); border: 1px solid var(--sc-line); }
.sched-app .sched-insp-locknote i { font-size: 14px; }
.sched-app .sched-insp .sched-insp-sec { padding: 14px 16px; border-top: 1px solid var(--sc-line); }
.sched-app .sched-insp-t { font-size: 10.5px; font-weight: 700; color: var(--sc-muted); text-transform: uppercase; letter-spacing: .06em; margin-bottom: 10px; }
.sched-app .sched-insp-dl { display: grid; grid-template-columns: auto 1fr; gap: 8px 12px; font-size: 12.5px; margin: 0; }
.sched-app .sched-insp-dl dt { color: var(--sc-muted); }
.sched-app .sched-insp-dl dd { color: var(--sc-ink); font-weight: 600; text-align: right; margin: 0; }
.sched-app .sched-insp-dl dd a { color: var(--sc-accent); }
.sched-app .sched-insp-muted { color: var(--sc-muted); font-weight: 500; }
.sched-app .sched-insp-mav { display: inline-flex; align-items: center; gap: 6px; justify-content: flex-end; }
.sched-app .sched-insp-mav .a { width: 20px; height: 20px; border-radius: 6px; display: grid; place-items: center; font-size: 10px; font-weight: 700; color: #fff; }
.sched-app .sched-insp-ckh { display: flex; align-items: center; justify-content: space-between; margin-bottom: 9px; }
.sched-app .sched-insp-ckh .sched-insp-t { margin: 0; }
.sched-app .sched-insp-prog { font-family: var(--sc-num); font-size: 11px; font-weight: 700; color: var(--sc-onsite); }
.sched-app .sched-insp-ck { display: flex; align-items: center; gap: 9px; padding: 6px 0; font-size: 12.5px; color: var(--sc-ink); }
.sched-app .sched-insp-ck + .sched-insp-ck { border-top: 1px solid var(--sc-line); }
.sched-app .sched-insp-ck .box { width: 17px; height: 17px; border-radius: 5px; border: 1.5px solid var(--sc-line2); display: grid; place-items: center; font-size: 12px; color: transparent; flex: none; }
.sched-app .sched-insp-ck.on .box { background: var(--sc-onsite); border-color: var(--sc-onsite); color: #fff; }
.sched-app .sched-insp-ck.on span { color: var(--sc-muted); text-decoration: line-through; }
.sched-app .sched-insp-trail { display: flex; flex-direction: column; gap: 6px; }
.sched-app .sched-insp-tr { display: flex; align-items: center; gap: 9px; width: 100%; padding: 9px 10px; border: 1px solid var(--sc-line); border-radius: var(--sc-r); background: var(--sc-surface); color: var(--sc-ink); font: inherit; font-size: 12px; text-align: left; text-decoration: none; }
.sched-app a.sched-insp-tr:hover, .sched-app button.sched-insp-tr:hover { border-color: var(--sc-line2); background: var(--sc-sunken); }
.sched-app a.sched-insp-tr:focus-visible, .sched-app button.sched-insp-tr:focus-visible { outline: 2px solid var(--sc-accent); outline-offset: 1px; }
.sched-app button.sched-insp-tr { cursor: pointer; }
.sched-app .sched-insp-tr > i { font-size: 16px; color: var(--sc-muted); flex: none; }
.sched-app .sched-insp-tr-main { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.sched-app .sched-insp-tr-lbl { font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sched-app .sched-insp-tr-sub { font-size: 11px; color: var(--sc-muted); font-weight: 500; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sched-app .sched-insp-tr-right { flex: none; display: flex; flex-direction: column; align-items: flex-end; gap: 3px; }
.sched-app .sched-insp-tr-amt { font-family: var(--sc-num); font-variant-numeric: tabular-nums; font-weight: 700; flex: none; }
.sched-app .sched-insp-tr-st { flex: none; font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: .03em; padding: 2px 7px; border-radius: 20px; white-space: nowrap; }
.sched-app .sched-insp-tr-st.is-ok { color: var(--sc-done); background: color-mix(in srgb, var(--sc-done) 15%, transparent); }
.sched-app .sched-insp-tr-st.is-wait { color: var(--sc-onsite); background: color-mix(in srgb, var(--sc-onsite) 15%, transparent); }
.sched-app .sched-insp-tr-st.is-bad { color: var(--sc-late); background: color-mix(in srgb, var(--sc-late) 15%, transparent); }
.sched-app .sched-insp-tr-st.is-muted { color: var(--sc-muted); background: var(--sc-sunken); }
.sched-app .sched-insp-tr-go { font-size: 14px; color: var(--sc-faint); flex: none; }
.sched-app .sched-insp-tr.is-todo { border-style: dashed; color: var(--sc-muted); }
.sched-app .sched-insp-tr.is-todo .sched-insp-tr-lbl { font-weight: 600; }
.sched-app .sched-insp-tr.is-loading { color: var(--sc-muted); opacity: .6; }
.sched-app .sched-insp-trw { display: flex; align-items: stretch; gap: 4px; }
.sched-app .sched-insp-trw .sched-insp-tr { flex: 1; min-width: 0; }
.sched-app .sched-insp-tr-unlink { flex: none; width: 30px; display: grid; place-items: center; border: 1px solid var(--sc-line); border-radius: var(--sc-r); background: var(--sc-surface); color: var(--sc-muted); cursor: pointer; font-size: 15px; }
.sched-app .sched-insp-tr-unlink:hover { border-color: var(--sc-late); color: var(--sc-late); background: color-mix(in srgb, var(--sc-late) 10%, transparent); }
.sched-app .sched-insp-tr-unlink:focus-visible { outline: 2px solid var(--sc-accent); outline-offset: 1px; }

.sched-app .sched-insp-docs { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.sched-app .sched-insp-doc { display: flex; align-items: center; gap: 8px; padding: 9px 10px; border: 1px solid var(--sc-line); border-radius: var(--sc-r); background: var(--sc-surface); color: var(--sc-ink2); cursor: pointer; font-size: 12px; font-weight: 600; text-align: left; }
.sched-app .sched-insp-doc i { font-size: 16px; color: var(--sc-muted); }
.sched-app .sched-insp-doc:hover { border-color: var(--sc-line2); background: var(--sc-sunken); color: var(--sc-ink); }
.sched-app .sched-insp-actions { margin-top: auto; position: sticky; bottom: 0; background: var(--sc-surface); border-top: 1px solid var(--sc-line); padding: 12px 16px; display: flex; gap: 8px; }
.sched-app .sched-insp-actions .btn { flex: 1; justify-content: center; }
.sched-app .sched-insp-actions .btn-secondary { flex: none; }
.sched-app #schedulerCalendar [data-job-id].is-inspecting { outline: 2px solid var(--sc-accent); outline-offset: 1px; }
.sched-app .spane-left .sched-rail { background: none; border: none; padding: 0; margin: 0; }
.sched-app .spane-left .sched-rail-head { display: flex; align-items: center; gap: 8px; padding: 6px 2px 8px; font-size: 11px; font-weight: 700; color: var(--sc-muted); text-transform: uppercase; letter-spacing: .05em; }
.sched-app .spane-left .sched-rail-count { margin-left: auto; font-family: var(--sc-num); font-size: 11px; font-weight: 700; padding: 1px 7px; border-radius: 9px; background: color-mix(in srgb, var(--sc-unassigned) 16%, transparent); color: var(--sc-unassigned); }
.sched-app .sched-unsched-card { background: var(--sc-surface); border: 1px solid var(--sc-line); border-radius: var(--sc-r); padding: 10px 11px; margin-bottom: 8px; transition: border-color .12s, box-shadow .12s, transform .12s; }
.sched-app .sched-unsched-card:hover { border-color: var(--sc-line2); box-shadow: var(--sc-sh2); transform: translateY(-1px); }
.sched-app .sched-unsched-top { display: flex; align-items: center; gap: 6px; margin-bottom: 5px; }
.sched-app .sched-trade-tag { font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: .03em; padding: 2px 7px; border-radius: 6px; }
.sched-app .sched-trade-tag.tag-install { background: color-mix(in srgb, var(--sc-accent) 14%, transparent); color: var(--sc-accent); }
.sched-app .sched-trade-tag.tag-service { background: color-mix(in srgb, var(--sc-muted) 18%, transparent); color: var(--sc-ink2); }
.sched-app .sched-trade-tag.tag-repair { background: color-mix(in srgb, var(--sc-unassigned) 16%, transparent); color: var(--sc-unassigned); }
.sched-app .sched-trade-tag.tag-quote { background: color-mix(in srgb, var(--sc-enroute) 15%, transparent); color: var(--sc-enroute); }
.sched-app .sched-unsched-card .sched-warr-ico { margin-left: auto; color: var(--sc-onsite); font-size: 14px; }
.sched-app .sched-unsched-name { font-size: 13px; font-weight: 600; letter-spacing: -.01em; color: var(--sc-ink); cursor: pointer; }
.sched-app .sched-unsched-name:hover { color: var(--sc-accent); }
.sched-app .sched-unsched-addr { display: flex; align-items: center; gap: 5px; font-size: 11.5px; color: var(--sc-muted); margin-top: 2px; }
.sched-app .sched-unsched-addr i { font-size: 13px; }
.sched-app .sched-unsched-foot { display: flex; align-items: center; gap: 8px; margin-top: 8px; }
.sched-app .sched-unsched-chip { display: inline-flex; align-items: center; gap: 4px; font-size: 11px; color: var(--sc-ink2); background: var(--sc-sunken); border: 1px solid var(--sc-line); border-radius: 6px; padding: 2px 7px; }
.sched-app .sched-unsched-chip i { font-size: 12px; }
.sched-app .sched-unsched-foot .sched-qa-btn { margin-left: auto; width: 26px; height: 26px; border-radius: 7px; border: 1px solid var(--sc-line); background: var(--sc-surface); color: var(--sc-ink2); display: grid; place-items: center; cursor: pointer; }
.sched-app .sched-unsched-foot .sched-qa-btn:hover { border-color: var(--sc-accent); color: var(--sc-accent); }
.sched-app .sched-unsched-sug { font-size: 11px; font-weight: 600; color: var(--sc-accent); display: inline-flex; align-items: center; gap: 3px; cursor: pointer; }
.sched-app .sched-unsched-sug i { font-size: 14px; }
.sched-app .spane-left .sched-brief { margin: 0; padding: 0; }
.sched-app .sched-brief-cta { display: flex; align-items: center; gap: 6px; width: 100%; justify-content: center; padding: 10px; border-radius: var(--sc-r); cursor: pointer; font-weight: 600; font-size: 12.5px;
  border: 1px solid color-mix(in srgb, var(--sc-accent) 30%, var(--sc-line)); background: color-mix(in srgb, var(--sc-accent) 8%, var(--sc-surface)); color: var(--sc-accent); }
.sched-app .sched-brief-cta:hover { background: color-mix(in srgb, var(--sc-accent) 14%, var(--sc-surface)); }
.sched-app .sviews .sched-view-ind { display: none; }
.sched-app .skpi { cursor: default; }
.sched-app .sdatenav-wrap { position: relative; }
.sched-app .sched-calpop { position: absolute; top: calc(100% + 6px); left: 0; z-index: 50; width: 240px; padding: 10px; border-radius: var(--sc-r); background: var(--sc-surface); border: 1px solid var(--sc-line); box-shadow: var(--sc-sh2); }
.sched-app .sched-mc-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 6px; }
.sched-app .sched-mc-title { font-size: 12.5px; font-weight: 700; color: var(--sc-ink); }
.sched-app .sched-mc-nav { width: 24px; height: 24px; border: none; background: none; border-radius: 6px; color: var(--sc-ink2); cursor: pointer; display: grid; place-items: center; }
.sched-app .sched-mc-nav:hover { background: var(--sc-sunken); }
.sched-app .sched-mc-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 2px; }
.sched-app .sched-mc-wd { text-align: center; font-size: 9.5px; font-weight: 700; color: var(--sc-muted); padding: 2px 0; }
.sched-app .sched-mc-day { aspect-ratio: 1; border: none; background: none; border-radius: 7px; font-family: var(--sc-num); font-size: 11.5px; color: var(--sc-ink2); cursor: pointer; position: relative; }
.sched-app .sched-mc-day:hover { background: var(--sc-sunken); color: var(--sc-ink); }
.sched-app .sched-mc-day.sched-mc-blank { cursor: default; }
.sched-app .sched-mc-day.today { color: var(--sc-accent); font-weight: 700; }
.sched-app .sched-mc-day.sel { background: var(--sc-accent); color: var(--sc-accent-ink); font-weight: 700; }
.sched-app .sched-mc-day.has::after { content: ""; position: absolute; bottom: 3px; left: 50%; transform: translateX(-50%); width: 4px; height: 4px; border-radius: 50%; background: var(--sc-accent); }
.sched-app .sched-mc-day.sel.has::after { background: var(--sc-accent-ink); }
.sched-app .spane-left #schedServiceDue { margin-top: 4px; }
.sched-app .sched-mapview { display: flex; flex-direction: column; height: 100%; min-height: 0; background: var(--sc-surface); }
.sched-app .sched-mapview-bar { display: flex; align-items: center; gap: 10px; padding: 9px 14px; border-bottom: 1px solid var(--sc-line); flex: none; flex-wrap: wrap; }
.sched-app .sched-mapview-bar #dayMapTechSel { max-width: 220px; }
.sched-app .sched-mapview-bar #dayMapStatus { font-size: 11.5px; color: var(--sc-muted); }
.sched-app .sched-mapview .day-map-body { flex: 1; min-height: 0; display: grid; grid-template-columns: minmax(0,1fr) 300px; }
.sched-app .sched-mapview #dayMap { height: 100%; min-height: 0; }
.sched-app .sched-mapview #dayMapList { overflow-y: auto; border-left: 1px solid var(--sc-line); padding: 10px; background: var(--sc-rail); }
@media (max-width: 900px) { .sched-app .sched-mapview .day-map-body { grid-template-columns: minmax(0,1fr); } .sched-app .sched-mapview #dayMapList { display: none; } }
.sched-app #schedulerCalendar.sched-main { display: flex; flex-direction: column; overflow: hidden; }
.sched-app #schedulerCalendar.sched-main > .sched-tg,
.sched-app #schedulerCalendar.sched-main > .sched-swim,
.sched-app #schedulerCalendar.sched-main > .sched-month,
.sched-app #schedulerCalendar.sched-main > .sched-list,
.sched-app #schedulerCalendar.sched-main > .sched-history,
.sched-app #schedulerCalendar.sched-main > .sched-mapview,
.sched-app #schedulerCalendar.sched-main > .sched-empty { flex: 1; min-height: 0; }
.sched-app .sched-tg { display: flex; flex-direction: column; }
.sched-app .sched-tg-body { flex: 1; min-height: 0; max-height: none; overflow-y: auto; }
.sched-app .sched-swim { display: flex; flex-direction: column; }
.sched-app .sched-swim-scroll { flex: 1; min-height: 0; }
.sched-app .sched-list { overflow-y: auto; }
.sched-app .sched-history { overflow-y: auto; }
.sched-app .sched-page-body { max-width: none; margin: 0; padding: 0; }
.sched-sections[data-section="board"] #sec-scheduler { padding: 0; border: 0; }
.sched-app .sched-unsched-card { display: block; }
.sched-app .sched-unsched-name { display: block; white-space: normal; overflow: visible; }
.rec-avatar.is-color,
.cust-drawer-avatar.is-color { color: #fff; }
.rec-tag {
  display: inline-flex; align-items: center; vertical-align: middle;
  font-size: 9.5px; font-weight: 700; letter-spacing: .03em; text-transform: uppercase;
  padding: 2px 6px; border-radius: 5px; margin-left: 6px; line-height: 1.4;
}
.rec-tag.portal { background: color-mix(in srgb, var(--sc-accent) 16%, transparent); color: var(--sc-accent); }
.rec-tag.ndis   { background: color-mix(in srgb, var(--sc-done) 16%, transparent);   color: var(--sc-done); }
.cust-drawer {
  --c-surface: var(--sc-surface); --c-surface-2: var(--sc-sunken, var(--sc-surface));
  --c-hair: var(--sc-line); --c-hair-2: var(--sc-line2);
  --c-ink: var(--sc-ink); --c-ink-2: var(--sc-ink2); --c-ink-3: var(--sc-muted);
  --c-accent: var(--sc-accent); --c-hover: color-mix(in srgb, var(--sc-muted) 12%, transparent);
  --c-pos: var(--sc-done); --c-neg: var(--app-danger); --c-amber: #f59e0b;
}
.cust-drawer .c360-metrics {
  grid-template-columns: repeat(2, 1fr); gap: 1px;
  background: var(--c-hair-2); border: 1px solid var(--c-hair-2);
  border-radius: 12px; overflow: hidden;
}
.cust-drawer .c360-metric { background: var(--c-surface-2); border: 0; border-radius: 0; padding: 13px 16px; }
.cust-drawer .c360-metric:last-child:nth-child(odd) { grid-column: 1 / -1; }
.cust-drawer .c360-metric .mk { font-size: 10.5px; letter-spacing: .06em; }
.cust-drawer .c360-metric .mv { font-family: 'JetBrains Mono', ui-monospace, "SF Mono", Menlo, monospace; font-size: 19px; margin-top: 7px; }
.cust-drawer .c360-metric .md { font-size: 11px; margin-top: 4px; }
.sinsp-sheet-head {
  display: none;
  position: relative; flex: none;
  align-items: center; justify-content: center;
  min-height: 44px;
  padding: 8px 12px 4px;
}
.sinsp-grab { width: 38px; height: 4px; border-radius: 2px; background: var(--sc-line2); }
.sinsp-sheet-x {
  position: absolute; right: 4px; top: 50%; transform: translateY(-50%);
  width: 44px; height: 44px; display: grid; place-items: center;
  border: none; background: none; color: var(--sc-muted); font-size: 20px; cursor: pointer;
}
.sinsp-backdrop {
  display: none;
  position: fixed; inset: 0; z-index: 119;
  background: rgba(0, 0, 0, .45);
}
.squeue-btn { display: none; }
@media (max-width: 1280px) {
  .sched-app .squeue-btn { display: inline-flex; }
  .sched-app #schedQueueBackdrop:not([hidden]) { display: block; }
  .sched-app .spane-left {
    display: flex;
    position: fixed;
    left: 50%; right: auto; bottom: 0; top: auto;
    width: min(560px, 100%);
    z-index: 120;
    max-height: 82dvh;
    padding-bottom: calc(12px + env(safe-area-inset-bottom));
    border-right: none;
    border-top: 1px solid var(--sc-line2);
    border-radius: var(--sc-r-lg) var(--sc-r-lg) 0 0;
    background: var(--sc-surface);
    box-shadow: var(--sc-sh2);
    overflow-y: auto;
    overscroll-behavior: contain;
    transform: translate(-50%, 101%);
    visibility: hidden;
    transition: transform .24s var(--sc-out), visibility 0s linear .24s;
  }
  .sched-app .spane-left.is-open {
    transform: translate(-50%, 0); visibility: visible;
    transition: transform .24s var(--sc-out);
  }
  .sched-app .spane-left .sinsp-sheet-head {
    display: flex; position: sticky; top: 0; z-index: 1;
    margin: -12px -12px 0;
    background: var(--sc-surface);
  }
  .sched-app .dash-section { animation: none; }
}

@media (max-width: 960px) {
  .sched-app .spane-right {
    display: flex;
    position: fixed;
    left: 50%; right: auto; bottom: 0; top: auto;
    width: min(560px, 100%);
    z-index: 120;
    max-height: 82dvh;
    padding-bottom: env(safe-area-inset-bottom);
    border-left: none;
    border-top: 1px solid var(--sc-line2);
    border-radius: var(--sc-r-lg) var(--sc-r-lg) 0 0;
    background: var(--sc-surface);
    box-shadow: var(--sc-sh2);
    overflow: hidden;
    transform: translate(-50%, 101%);
    visibility: hidden;
    transition: transform .24s var(--sc-out), visibility 0s linear .24s;
  }
  .sched-app .spane-right.is-open {
    transform: translate(-50%, 0);
    visibility: visible;
    transition: transform .24s var(--sc-out);
  }
  .sched-app .spane-right > #schedInspector { flex: 1; min-height: 0; overflow-y: auto; }
  .sched-app .spane-right .sinsp-sheet-head { display: flex; }
  .sched-app #schedInspBackdrop:not([hidden]) { display: block; }
  .sched-app .sched-insp-actions { padding-bottom: 12px; }
  .sched-app .stoolbar { gap: 8px; padding: 8px 10px; align-items: center; }
  .sched-app .stoolbar-sp { display: none; }
  .sched-app .sdatenav-wrap { order: 1; flex: 1 1 auto; min-width: 0; }
  .sched-app .sched-add-job { order: 2; flex: none; margin-left: 0; }
  .sched-app #schedulerViewSwitch { order: 3; flex: 1 1 100%; width: 100%; }
  .sched-app .sutil { order: 4; flex: none; }
  .sched-app .stoolbar-head { order: 5; flex: 1 1 100%; width: 100%; min-width: 0; }
  .sched-app .stoolbar-head .section-title { display: none; }
  .sched-app .sviews {
    flex-wrap: nowrap; overflow-x: auto; overscroll-behavior-x: contain;
    scrollbar-width: none; -ms-overflow-style: none;
  }
  .sched-app .sviews::-webkit-scrollbar { display: none; }
  .sched-app .sviews button { flex: none; min-height: 44px; min-width: 44px; padding: 0 8px; justify-content: center; }
  .sched-app .sviews button .sview-lbl { display: none; }
  .sched-app .sviews button.active .sview-lbl { display: inline; }
  .sched-app .sviews button i { font-size: 17px; }
  .sched-app .sutil .btn { min-height: 44px; min-width: 44px; justify-content: center; }
  .sched-app .sutil .sbtn-lbl { display: none; }
  .sched-app .sched-sendupd .btn { min-height: 44px; }
  .sched-app .skpis {
    margin-top: 0; flex-wrap: nowrap; overflow-x: auto;
    scrollbar-width: none; -ms-overflow-style: none;
  }
  .sched-app .skpis::-webkit-scrollbar { display: none; }
  .sched-app .skpi { flex: none; }
  .sched-app .sched-tg-week { overflow-x: auto; overflow-y: hidden; overscroll-behavior-x: contain; }
  .sched-app .sched-tg-week > .sched-tg-head,
  .sched-app .sched-tg-week > .sched-allday-row,
  .sched-app .sched-tg-week > .sched-tg-body {
    grid-template-columns: 48px repeat(var(--tg-cols, 7), 112px);
    min-width: max-content;
  }
  .sched-app .sched-month { overflow-y: auto; }
  .sched-app .sched-month-grid { flex: none; grid-auto-rows: minmax(88px, auto); }
  .sched-app .sched-swim-corner,
  .sched-app .sched-swim-label { width: 124px; }
  .sched-app .sched-mapview .day-map-body { grid-template-columns: minmax(0, 1fr); grid-template-rows: minmax(0, 1fr) auto; }
  .sched-app .sched-mapview #dayMapList {
    display: block; max-height: 34dvh;
    border-left: none; border-top: 1px solid var(--sc-line);
  }
  .sched-app .scmd-icon, .sched-app .scmd-back { flex: none; width: 44px; height: 44px; }
  .sched-app .sdatenav .nav { flex: none; width: 44px; height: 40px; }
  .sched-app .sdatenav .today { flex: none; height: 40px; }
  .sched-app .sched-mc-day { min-height: 34px; }
  .sched-app .sboard { min-height: 340px; padding-bottom: env(safe-area-inset-bottom); }
  .sched-app .rec-toolbar { gap: 8px; padding: 10px 12px; }
  .sched-app .rec-toolbar .section-subtitle { display: none; }
  .sched-app .rec-toolbar-controls { width: 100%; flex-wrap: wrap; }
  .sched-app .rec-search { flex: 1 1 100%; }
}
@media (max-width: 520px) {
  .sched-app .sched-add-job { min-width: 44px; padding-left: 12px; padding-right: 12px; }
  .sched-app .sched-add-job [data-term] { display: none; }
}

/* ── legacy/hub/css/customer360.css ── */
.c360{
  --c-surface:   var(--inv-card,       var(--bg-card,        var(--card, #17191f)));
  --c-surface-2: var(--inv-surface,    var(--bg-secondary,   #1c2027));
  --c-hair:      var(--inv-border,     var(--border,         #2a2e37));
  --c-hair-2:    var(--inv-border-2,   var(--border-strong,  var(--border, #363b45)));
  --c-ink:       var(--inv-text,       var(--text,           #e8eaed));
  --c-ink-2:     var(--inv-text-2,     var(--text-secondary, #a2a9b4));
  --c-ink-3:     var(--inv-muted,      var(--text-muted,     #7a828d));
  --c-accent:    var(--inv-accent,     var(--accent,         #0ea5e9));
  --c-hover:     var(--inv-card-hover, var(--bg-card-hover,  rgba(125,135,155,.10)));
  --c-pos:#22c55e; --c-neg:#ef4444; --c-amber:#f59e0b;
  color: var(--c-ink);
  font-family: inherit;
}
.c360 > .c360-card, .c360 > .c360-metrics{ margin-top:16px; }
.c360 > .c360-back{ margin-top:0; }
.c360-metrics{ display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:14px; }
.c360-metric{ background:var(--c-surface-2); border:1px solid var(--c-hair); border-radius:12px; padding:16px 18px; }
.c360-metric .mk{ font-size:9.5px; letter-spacing:.09em; text-transform:uppercase; color:var(--c-ink-3); font-weight:600; }
.c360-metric .mv{ font-size:23px; font-weight:600; margin-top:8px; letter-spacing:-.02em; font-variant-numeric:tabular-nums; color:var(--c-ink); }
.c360-metric .md{ font-size:12px; color:var(--c-ink-3); margin-top:4px; }
.c360-metric .md.pos{ color:var(--c-pos); } .c360-metric .md.neg{ color:var(--c-neg); } .c360-metric .md.amber{ color:var(--c-amber); }
.c360-row{ display:flex; align-items:center; gap:12px; padding:12px 0; border-top:1px solid var(--c-hair); }
.c360-row:first-child{ border-top:none; }
.c360-row .av{
  width:34px; height:34px; border-radius:10px; flex-shrink:0; display:grid; place-items:center;
  font-size:12px; font-weight:600; background:var(--c-surface-2); color:var(--c-ink-2); border:1px solid var(--c-hair);
}
.c360-row .lr-main{ min-width:0; flex:1; }
.c360-row .lr-main b{ font-size:13px; font-weight:600; display:block; color:var(--c-ink); }
.c360-row .lr-main span{ font-size:12px; color:var(--c-ink-3); }
.c360-row .lr-actions{ display:flex; align-items:center; gap:6px; flex-shrink:0; }
.c360-row .lr-when{ font-size:11.5px; color:var(--c-ink-3); white-space:nowrap; }
.c360-tlrow .lr-main{ display:flex; flex-direction:column; min-width:0; }
.c360-tlrow .lr-main b{ font-size:13px; font-weight:500; color:var(--c-ink); }
.c360-tlrow .lr-main span{ font-size:12px; color:var(--c-ink-3); }
.c360-badge{ display:inline-flex; align-items:center; height:20px; padding:0 9px; border-radius:6px;
  font-size:10.5px; font-weight:700; letter-spacing:.01em; }
.c360-badge.owner{ background:color-mix(in srgb,var(--c-accent) 15%,var(--c-surface)); color:var(--c-accent); }
.c360-badge.member{ background:transparent; color:var(--c-ink-3); border:1px solid var(--c-hair-2); }
.c360-badge.warn{ background:color-mix(in srgb,var(--c-neg) 13%,var(--c-surface)); color:var(--c-neg); }
.c360-badge.amber{ background:color-mix(in srgb,var(--c-amber) 15%,var(--c-surface)); color:var(--c-amber); }
.c360-iconbtn.danger:hover{ border-color:var(--c-neg); color:var(--c-neg); background:color-mix(in srgb,var(--c-neg) 8%,var(--c-surface)); }
.c360-btn{ display:inline-flex; align-items:center; gap:7px; height:34px; padding:0 14px; border-radius:9px;
  font-size:13px; font-weight:600; cursor:pointer; border:1px solid var(--c-hair-2); background:var(--c-surface);
  color:var(--c-ink); text-decoration:none; transition:border-color .12s, background .12s; }
.c360-btn:hover{ border-color:var(--c-ink-3); }
.c360-btn.primary{ background:var(--c-accent); border-color:var(--c-accent); color:#fff; }
.c360-btn.primary:hover{ filter:brightness(1.06); }
.c360-empty{ padding:20px 2px; font-size:12px; color:var(--c-ink-3); text-align:left; }
.c360-empty.big{ padding:40px 18px; text-align:center; display:flex; flex-direction:column; align-items:center; gap:6px; }
.c360-empty.big .ei{ font-size:26px; color:var(--c-ink-3); opacity:.7; }
.c360-empty.big b{ font-size:14px; color:var(--c-ink-2); font-weight:600; }
.c360-thumbs{ display:flex; gap:6px; margin-top:6px; flex-wrap:wrap; }
.c360-thumb{ width:44px; height:44px; border-radius:8px; object-fit:cover; border:1px solid var(--c-hair); }
}
