:root{--bg: #11141a;--surface: #181c24;--surface-2: #1f2430;--surface-3: #262c3a;--border: #2b3140;--border-strong: #3a4155;--text: #e8eaf0;--text-soft: #a6adbb;--text-faint: #767d8c;--accent: #5c86f0;--accent-ink: #c8d6fb;--accent-soft: #1e2a4d;--good: #4fbe7c;--good-soft: #173625;--warn: #e0b23a;--warn-soft: #332705;--bad: #e2685f;--bad-soft: #3a1917;--radius: 10px;--shadow: 0 1px 2px rgba(0, 0, 0, .4), 0 8px 24px rgba(0, 0, 0, .35);--font-ui: "Manrope", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono: "IBM Plex Mono", ui-monospace, monospace}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font-ui);font-size:15px;line-height:1.5}button,input,select,textarea{font-family:inherit;font-size:inherit;color:inherit}button{cursor:pointer}a{color:var(--accent-ink)}h1,h2,h3{margin:0}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}@media (prefers-reduced-motion: reduce){*{animation-duration:.001ms!important;transition-duration:.001ms!important}}.app-shell{display:grid;grid-template-rows:56px 1fr;height:100vh}.topbar{display:flex;align-items:center;gap:16px;padding:0 18px;background:var(--surface);border-bottom:1px solid var(--border)}.logo{display:flex;align-items:center;gap:8px;font-weight:800;letter-spacing:-.01em;white-space:nowrap}.logo-dot{width:9px;height:9px;border-radius:3px;background:var(--accent)}.topbar-spacer{flex:1}.user-chip{display:flex;align-items:center;gap:8px;padding:5px 10px;border-radius:8px;background:var(--surface-2);border:1px solid var(--border);font-size:.85rem;white-space:nowrap}.avatar{width:24px;height:24px;border-radius:50%;background:var(--accent);color:#fff;display:flex;align-items:center;justify-content:center;font-size:.68rem;font-weight:700;font-family:var(--font-mono)}.shell-body{display:grid;grid-template-columns:212px 1fr;min-height:0}.sidebar{background:var(--surface-2);border-right:1px solid var(--border);padding:14px 10px;overflow-y:auto}.primary-nav{display:flex;flex-direction:column;gap:2px}.nav-item{display:block;padding:9px 11px;border-radius:8px;text-decoration:none;color:var(--text-soft);font-weight:600;font-size:.88rem}.nav-item:hover{background:var(--surface-3);color:var(--text)}.nav-item.active{background:var(--accent-soft);color:var(--accent-ink)}.main{overflow-y:auto;padding:22px 26px 48px;min-width:0}.ctx-lock{position:relative}.ctx-badge{display:flex;align-items:center;gap:9px;padding:6px 12px 6px 8px;border-radius:8px;border:1px solid var(--border-strong);background:var(--surface-2);color:var(--text)}.ctx-badge[aria-disabled=true]{cursor:default}.ctx-badge:not([aria-disabled=true]):hover{box-shadow:var(--shadow)}.ctx-monogram{width:26px;height:26px;border-radius:7px;display:flex;align-items:center;justify-content:center;font-family:var(--font-mono);font-weight:700;font-size:.72rem;color:#fff;flex:none}.ctx-monogram.sm{width:20px;height:20px;font-size:.62rem}.ctx-text{display:flex;flex-direction:column;line-height:1.15;text-align:left}.ctx-name{font-weight:700;font-size:.86rem}.ctx-sub{font-size:.68rem;color:var(--text-faint);text-transform:uppercase;letter-spacing:.04em;min-height:1em}.ctx-chev{color:var(--text-faint);font-size:.7rem;margin-left:2px}.ctx-picker{position:absolute;top:52px;left:0;margin:0;padding:6px;list-style:none;background:var(--surface);border:1px solid var(--border-strong);border-radius:11px;box-shadow:var(--shadow);width:260px;z-index:40}.ctx-picker-item{display:flex;align-items:center;gap:10px;width:100%;border:none;background:none;padding:9px 10px;border-radius:8px;text-align:left;color:var(--text);font-size:.85rem}.ctx-picker-item:hover{background:var(--surface-2)}.ctx-picker-item[aria-selected=true]{background:var(--accent-soft);color:var(--accent-ink)}.btn{border:1px solid var(--border-strong);background:var(--surface);color:var(--text);font-weight:700;font-size:.85rem;padding:8px 14px;border-radius:8px}.btn:hover{background:var(--surface-2)}.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn-primary:hover{background:#4a72d6}.btn-danger{background:var(--bad);border-color:var(--bad);color:#fff}.btn-danger:hover{background:#c95850}.btn-ghost{background:none;border-color:transparent}.btn-ghost:hover{background:var(--surface-2)}.btn:disabled{opacity:.55;cursor:default}.btn-link{background:none;border:none;padding:4px 0;color:var(--accent-ink);font-weight:700;text-decoration:none}.btn-link:hover{text-decoration:underline}label{display:block;font-size:.82rem;font-weight:600;color:var(--text-soft);margin:14px 0 6px}input[type=email],input[type=password],input[type=text],input[type=datetime-local]{width:100%;padding:10px 12px;border-radius:8px;border:1px solid var(--border-strong);background:var(--surface-2);color:var(--text)}.form-error{color:var(--bad);font-size:.85rem;margin-top:12px}.login-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}.login-card{width:100%;max-width:360px;background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:32px 28px;box-shadow:var(--shadow)}.login-logo{display:flex;align-items:center;gap:8px;font-weight:800;letter-spacing:-.01em;margin-bottom:22px}.login-card h1{font-size:1.3rem;margin-bottom:4px}.login-card .btn-primary{width:100%;margin-top:22px}.full-screen-center{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:24px;text-align:center;color:var(--text-soft)}.loading-spinner{width:18px;height:18px;border-radius:50%;border:2px solid var(--border-strong);border-top-color:var(--accent);animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.tenant-picker-card{width:100%;max-width:420px;background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:28px;box-shadow:var(--shadow);text-align:left}.tenant-picker-list{list-style:none;margin:16px 0 0;padding:0;display:flex;flex-direction:column;gap:8px}.tenant-picker-item{display:flex;align-items:center;gap:12px;padding:12px 14px;border:1px solid var(--border);border-radius:10px;text-decoration:none;color:var(--text);font-weight:600}.tenant-picker-item:hover{background:var(--surface-2)}.page-header{display:flex;align-items:baseline;justify-content:space-between;gap:16px;margin-bottom:18px;flex-wrap:wrap}.page-header h1{font-size:1.3rem;font-weight:800;letter-spacing:-.01em}.page-subtitle{color:var(--text-soft);font-size:.85rem;margin:2px 0 0}.empty-state{text-align:center;padding:50px 20px;color:var(--text-faint)}.empty-state-title{font-weight:700;color:var(--text);margin:0 0 6px}.empty-state-detail{margin:0;font-size:.88rem}.error-state{text-align:center;padding:30px 20px;color:var(--bad);display:flex;flex-direction:column;gap:12px;align-items:center}.skeleton-list{display:flex;flex-direction:column;gap:8px}.skeleton-row{height:44px;border-radius:9px;background:linear-gradient(90deg,var(--surface-2) 25%,var(--surface-3) 37%,var(--surface-2) 63%);background-size:400% 100%;animation:shimmer 1.4s ease infinite}@keyframes shimmer{0%{background-position:100% 50%}to{background-position:0 50%}}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#06080c8c;display:flex;align-items:center;justify-content:center;z-index:80}.modal{background:var(--surface);border-radius:14px;padding:22px 24px;max-width:420px;width:92%;box-shadow:var(--shadow);border:1px solid var(--border)}.modal h2{font-size:1.02rem;margin-bottom:8px}.modal p{font-size:.87rem;color:var(--text-soft);margin:0 0 18px}.modal-actions{display:flex;justify-content:flex-end;gap:8px}.modal-wide{max-width:640px}.toast-region{position:fixed;top:16px;left:50%;transform:translate(-50%);z-index:90}.toast{background:var(--text);color:var(--bg);padding:9px 18px;border-radius:9px;font-size:.83rem;font-weight:600;box-shadow:var(--shadow)}select,textarea{width:100%;padding:10px 12px;border-radius:8px;border:1px solid var(--border-strong);background:var(--surface-2);color:var(--text);resize:vertical}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.wq-filters{display:flex;flex-wrap:wrap;align-items:center;gap:10px 16px;margin-bottom:16px;padding:10px 14px;background:var(--surface);border:1px solid var(--border);border-radius:10px}.wq-filter-chip{display:flex;align-items:center;gap:6px;font-size:.82rem;font-weight:600;color:var(--text-soft);margin:0}.wq-filter-label{font-size:.78rem;font-weight:700;color:var(--text-faint);text-transform:uppercase;letter-spacing:.03em;margin:0}.wq-filters select{width:auto;padding:6px 10px}.wq-truncation-notice{background:var(--warn-soft);color:var(--warn);border:1px solid var(--warn);border-radius:8px;padding:9px 14px;font-size:.84rem;font-weight:600;margin-bottom:14px}.wq-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.wq-row{display:grid;grid-template-columns:auto 1fr auto;align-items:start;gap:14px;padding:13px 16px;background:var(--surface);border:1px solid var(--border);border-radius:10px;border-left:3px solid var(--border-strong)}.wq-row.wq-urgency-critical{border-left-color:var(--bad)}.wq-row.wq-urgency-high{border-left-color:var(--warn)}.wq-row.wq-urgency-medium{border-left-color:var(--accent)}.wq-row.wq-urgency-low{border-left-color:var(--border-strong)}.wq-main{min-width:0;display:flex;flex-direction:column;gap:3px}.wq-row-top{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.wq-item-type{font-weight:700;font-size:.88rem}.wq-tenant-chip{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:var(--accent-ink);background:var(--accent-soft);padding:2px 8px;border-radius:6px}.wq-reason{margin:0;font-size:.86rem;color:var(--text)}.wq-relates-to{margin:0;font-size:.82rem;color:var(--text-soft);overflow-wrap:anywhere}.wq-elapsed{margin:0;font-size:.76rem;color:var(--text-faint)}.wq-action{display:flex;align-items:center}.wq-readonly-note{font-size:.78rem;color:var(--text-faint);font-style:italic;white-space:nowrap}.urgency-badge{display:inline-flex;align-items:center;gap:5px;font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.03em;padding:4px 9px;border-radius:999px;white-space:nowrap}.urgency-glyph{font-size:.7rem}.urgency-critical{background:var(--bad-soft);color:var(--bad)}.urgency-high{background:var(--warn-soft);color:var(--warn)}.urgency-medium{background:var(--accent-soft);color:var(--accent-ink)}.urgency-low{background:var(--surface-3);color:var(--text-soft)}.urgency-neutral{background:var(--surface-3);color:var(--text-faint)}@media (max-width: 720px){.wq-row{grid-template-columns:1fr}.wq-action{justify-content:flex-start}}.jw-tabs{display:flex;gap:4px;border-bottom:1px solid var(--border);margin-bottom:18px}.jw-tab{background:none;border:none;border-bottom:2px solid transparent;padding:10px 4px;margin-right:18px;font-weight:700;font-size:.88rem;color:var(--text-soft);border-radius:0}.jw-tab:hover{color:var(--text)}.jw-tab-active{color:var(--accent-ink);border-bottom-color:var(--accent)}.jw-overview{display:flex;flex-direction:column;gap:18px}.jw-overview-actions{display:flex;gap:10px}.jw-field-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px 20px}.jw-field{display:flex;flex-direction:column;gap:2px}.jw-field-label{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:var(--text-faint)}.jw-field-value{font-size:.9rem;color:var(--text);overflow-wrap:anywhere}.jw-timeline{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}.jw-timeline-entry{display:flex;flex-direction:column;gap:2px;padding:10px 14px;background:var(--surface);border:1px solid var(--border);border-radius:9px}.jw-timeline-at{font-size:.72rem;color:var(--text-faint)}.jw-timeline-text{font-size:.88rem;font-weight:600}.jw-timeline-detail{font-size:.82rem;color:var(--text-soft)}.jw-financials{display:flex;flex-direction:column;gap:22px}.jw-financials section h3{font-size:.92rem;margin-bottom:10px}.jw-financials-restricted{display:flex;flex-direction:column;gap:12px;align-items:flex-start;padding:20px 0}.jw-collection-status{font-size:.86rem;color:var(--text-soft);margin:0 0 10px}.jw-collection-list,.jw-issue-list{list-style:none;margin:0 0 12px;padding:0;display:flex;flex-direction:column;gap:6px;font-size:.86rem}.jw-conversation-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.jw-conversation-list li{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 14px;background:var(--surface);border:1px solid var(--border);border-radius:9px}.jw-conversation-status{font-size:.78rem;color:var(--text-faint);text-transform:capitalize}.conversation-meta{font-size:.82rem;color:var(--text-faint)}.conversation-feed{list-style:none;margin:0 0 16px;padding:0;display:flex;flex-direction:column;gap:8px;max-height:320px;overflow-y:auto}.conversation-entry{padding:9px 12px;border-radius:9px;background:var(--surface-2);border:1px solid var(--border)}.conversation-entry p{margin:4px 0 0;color:var(--text)}.conversation-entry-meta{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:var(--text-faint)}.conversation-inbound{border-left:3px solid var(--accent)}.conversation-outbound{border-left:3px solid var(--border-strong)}.conversation-call{border-left:3px solid var(--warn)}.conversation-feed-empty{color:var(--text-faint);font-size:.85rem;padding:8px 0}.conversation-reply-form{border-top:1px solid var(--border);padding-top:14px}.dispatch-state-tabs{display:flex;gap:4px;border-bottom:1px solid var(--border);margin-bottom:14px}.dispatch-state-tab{background:none;border:none;border-bottom:2px solid transparent;padding:9px 4px;margin-right:18px;font-weight:700;font-size:.86rem;color:var(--text-soft);border-radius:0}.dispatch-state-tab:hover{color:var(--text)}.dispatch-state-tab-active{color:var(--accent-ink);border-bottom-color:var(--accent)}.dispatch-filters{display:flex;flex-wrap:wrap;align-items:center;gap:10px 16px;margin-bottom:16px;padding:10px 14px;background:var(--surface);border:1px solid var(--border);border-radius:10px}.dispatch-filters input[type=text]{width:auto;min-width:220px}.dispatch-filters select{width:auto;padding:6px 10px}.dispatch-filter-label{font-size:.78rem;font-weight:700;color:var(--text-faint);text-transform:uppercase;letter-spacing:.03em;margin:0}.dispatch-filter-chip{display:flex;align-items:center;gap:6px;font-size:.82rem;font-weight:600;color:var(--text-soft);margin:0}.dispatch-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.dispatch-row{display:grid;grid-template-columns:1fr auto;align-items:start;gap:14px;padding:13px 16px;background:var(--surface);border:1px solid var(--border);border-radius:10px;border-left:3px solid var(--border-strong)}.dispatch-row-emergency{border-left-color:var(--bad)}.dispatch-row-main{min-width:0;display:flex;flex-direction:column;gap:3px}.dispatch-row-top{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.dispatch-job-number{font-weight:700;font-size:.88rem}.dispatch-stage-badge{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:var(--text-soft);background:var(--surface-3);padding:2px 8px;border-radius:6px}.dispatch-emergency-badge{font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.03em;color:var(--bad);background:var(--bad-soft);padding:2px 8px;border-radius:6px}.dispatch-customer{margin:0;font-size:.86rem;color:var(--text)}.dispatch-address{margin:0;font-size:.82rem;color:var(--text-soft);overflow-wrap:anywhere}.dispatch-meta{margin:0;font-size:.76rem;color:var(--text-faint)}.dispatch-row-actions{display:flex;flex-direction:column;align-items:flex-end;gap:6px}@media (max-width: 720px){.dispatch-row{grid-template-columns:1fr}.dispatch-row-actions{align-items:flex-start}}.collection-context{background:var(--surface-2);border:1px solid var(--border);border-radius:9px;padding:10px 12px;margin-bottom:14px}.collection-context-line{margin:0;font-size:.85rem;color:var(--text)}.collection-context-status{margin:4px 0 0;font-size:.78rem;color:var(--text-soft)}.collection-warning{margin:6px 0 0;font-size:.82rem;color:var(--warn)}.finance-tabs{display:flex;gap:4px;border-bottom:1px solid var(--border);margin-bottom:18px}.finance-tab{background:none;border:none;border-bottom:2px solid transparent;padding:10px 4px;margin-right:18px;font-weight:700;font-size:.88rem;color:var(--text-soft);border-radius:0}.finance-tab:hover{color:var(--text)}.finance-tab-active{color:var(--accent-ink);border-bottom-color:var(--accent)}.finance-section{display:flex;flex-direction:column;gap:14px}.finance-section-actions{display:flex;justify-content:flex-end}.finance-truncation-notice{background:var(--warn-soft);color:var(--warn);border:1px solid var(--warn);border-radius:8px;padding:9px 14px;font-size:.84rem;font-weight:600;margin:0}.finance-filters{display:flex;flex-wrap:wrap;align-items:center;gap:10px 16px;padding:10px 14px;background:var(--surface);border:1px solid var(--border);border-radius:10px}.finance-filters input[type=text]{width:auto;min-width:200px}.finance-filters select{width:auto;padding:6px 10px}.finance-filter-label{font-size:.78rem;font-weight:700;color:var(--text-faint);text-transform:uppercase;letter-spacing:.03em;margin:0}.finance-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.finance-row{display:grid;grid-template-columns:1fr auto;align-items:center;gap:14px;padding:13px 16px;background:var(--surface);border:1px solid var(--border);border-radius:10px}.finance-row-main{min-width:0;display:flex;flex-direction:column;gap:3px}.finance-row-top{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.finance-amount{font-weight:700;font-size:.92rem;font-variant-numeric:tabular-nums}.finance-party-name{font-weight:700;font-size:.9rem}.finance-badge{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:var(--text-soft);background:var(--surface-3);padding:2px 8px;border-radius:6px}.finance-badge-muted{color:var(--text-faint)}.finance-badge-open{color:var(--warn);background:var(--warn-soft)}.finance-row-detail{margin:0;font-size:.85rem;color:var(--text);overflow-wrap:anywhere}.finance-row-timestamp{margin:0;font-size:.76rem;color:var(--text-faint)}.finance-row-actions{display:flex;align-items:center}.finance-balance-value{font-weight:700;font-size:.95rem;font-variant-numeric:tabular-nums;text-align:right}@media (max-width: 720px){.finance-row{grid-template-columns:1fr}}
