/* Scan terminal KPI, list tabs, table rows, v4 analysis, and AI workspace. Kept separate from the shell/filter CSS so dense decision-board styles can evolve independently. */ .root :global(.scan-list-section) { display: flex; flex-direction: column; flex: 1; min-height: 0; overflow: hidden; } .root :global(.scan-list-header) { display: flex; justify-content: space-between; align-items: center; gap: 12px; margin-bottom: 10px; } .root :global(.scan-list-tabs) { display: flex; gap: 24px; } .root :global(.scan-list-tabs button) { border: none; background: transparent; font-size: 16px; font-weight: 700; color: #91a7c4; cursor: pointer; } .root :global(.scan-list-tabs button:disabled) { opacity: 0.42; cursor: not-allowed; } .root :global(.scan-list-tabs button.active) { color: #fff; } .root :global(.scan-list-status) { display: flex; gap: 10px; align-items: center; } .root :global(.scan-status-chip) { display: inline-flex; align-items: center; gap: 8px; height: 34px; padding: 0 12px; border-radius: 999px; border: 1px solid rgba(98, 126, 167, 0.22); background: rgba(10, 22, 38, 0.92); color: #c4d4e9; font-size: 12px; font-weight: 800; letter-spacing: 0.02em; } .root :global(.scan-status-chip.live) { border-color: rgba(55, 214, 255, 0.28); background: rgba(55, 214, 255, 0.1); color: #71e6ff; } .root :global(.scan-status-chip.stale) { border-color: rgba(255, 184, 79, 0.24); background: rgba(255, 184, 79, 0.1); color: #ffc765; } .root :global(.scan-status-chip.ai) { border-color: rgba(94, 234, 212, 0.28); background: rgba(20, 184, 166, 0.12); color: #87fff1; } .root :global(.scan-status-chip.focus) { border-color: rgba(255, 176, 32, 0.3); background: rgba(255, 176, 32, 0.12); color: #ffd078; } .root :global(button.scan-status-chip.refresh) { cursor: pointer; } .root :global(button.scan-status-chip.refresh:disabled) { cursor: wait; opacity: 0.68; } .root :global(.scan-status-chip .spin) { animation: spin 1s linear infinite; } .root :global(.scan-table-shell) { display: flex; flex-direction: column; flex: 1; min-height: 0; border: 1px solid rgba(90, 123, 166, 0.12); border-radius: 18px; background: rgba(8, 17, 30, 0.8); overflow: hidden; } .root :global(.scan-table-shell.empty) { min-height: 340px; } .root :global(.scan-table-banner) { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; padding: 12px 16px; border-bottom: 1px solid rgba(95, 124, 168, 0.12); background: linear-gradient(180deg, rgba(255, 184, 79, 0.08), rgba(255, 184, 79, 0.03)); } .root :global(.scan-table-banner strong) { font-size: 13px; font-weight: 800; color: #ffd27f; } .root :global(.scan-table-banner span) { font-size: 13px; color: #c7d4e7; } .root :global(.scan-table-header) { display: grid; grid-template-columns: minmax(220px, 1.1fr) minmax(128px, 0.68fr) minmax(230px, 1.08fr) minmax(150px, 0.78fr) 92px; gap: 10px; align-items: center; padding: 14px 18px; background: rgba(11, 23, 40, 0.98); border-bottom: 1px solid rgba(90, 123, 166, 0.12); color: #92a8c5; font-size: 13px; font-weight: 600; text-transform: none; letter-spacing: 0; } .root :global(.scan-table-body) { flex: 1; min-height: 0; overflow-y: auto; overflow-x: hidden; scrollbar-width: none; -ms-overflow-style: none; } .root :global(.scan-v4-analysis) { grid-column: auto; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; margin: 0 14px 14px; padding: 14px; border-color: rgba(56, 189, 248, 0.18); border-radius: 14px; background: linear-gradient(180deg, rgba(7, 20, 36, 0.96), rgba(5, 15, 28, 0.98)), radial-gradient(circle at 4% 0%, rgba(45, 212, 191, 0.11), transparent 28%); } .root :global(.scan-v4-analysis section) { padding: 13px; border-color: rgba(92, 132, 188, 0.14); background: rgba(10, 25, 43, 0.7); } .root :global(.scan-v4-analysis p), .root :global(.scan-v4-analysis ul) { color: #b8c9e3; } .root :global(.scan-v4-analysis .scan-v4-evidence) { grid-column: 1 / -1; } .root :global(.scan-v4-analysis .scan-v4-decision) { grid-column: 1 / -1; border-color: rgba(45, 212, 191, 0.24); background: linear-gradient(180deg, rgba(6, 31, 43, 0.86), rgba(8, 23, 38, 0.86)), radial-gradient(circle at 0 0, rgba(20, 184, 166, 0.12), transparent 32%); } .root :global(.scan-v4-analysis .scan-v4-decision.downgrade), .root :global(.scan-v4-analysis .scan-v4-decision.watchlist) { border-color: rgba(245, 158, 11, 0.24); } .root :global(.scan-v4-analysis .scan-v4-decision.veto) { border-color: rgba(248, 113, 113, 0.28); } .root :global(.scan-v4-decision p b) { color: #ecfeff; font-weight: 800; } .root :global(.scan-v4-metar-summary) { margin-top: 9px; color: #8fb3d8; font-size: 12px; font-weight: 800; line-height: 1.45; } .root :global(.scan-v4-evidence > div), .root :global(.scan-v4-model-sources) { gap: 8px; } .root :global(.scan-v4-analysis) { display: flex; flex-direction: column; gap: 13px; margin: 0 14px 14px; padding: 15px 16px 16px; border: 1px solid rgba(56, 189, 248, 0.16); border-radius: 12px; background: linear-gradient(180deg, rgba(7, 20, 36, 0.96), rgba(5, 15, 28, 0.98)), radial-gradient(circle at 4% 0%, rgba(45, 212, 191, 0.08), transparent 30%); } .root :global(.scan-v4-analysis section), .root :global(.scan-v4-analysis section:first-child), .root :global(.scan-v4-analysis .scan-v4-evidence) { grid-column: auto; min-width: 0; padding: 0; border: 0; border-radius: 0; background: transparent; } .root :global(.scan-v4-heading) { display: flex; align-items: flex-start; justify-content: space-between; gap: 18px; padding-bottom: 12px; border-bottom: 1px solid rgba(90, 123, 166, 0.14); } .root :global(.scan-v4-heading > div) { display: grid; gap: 7px; min-width: 0; } .root :global(.scan-v4-heading strong), .root :global(.scan-v4-current b), .root :global(.scan-v4-brief-grid strong) { color: var(--color-accent-secondary); font-size: 12px; font-weight: 800; letter-spacing: 0.02em; } .root :global(.scan-v4-heading p) { margin: 0; color: #d2e1f4; font-size: 14px; font-weight: 800; line-height: 1.55; } .root :global(.scan-v4-decision-pill) { display: inline-flex; flex: 0 0 auto; align-items: center; justify-content: center; min-height: 30px; padding: 0 12px; border: 1px solid rgba(45, 212, 191, 0.3); border-radius: 999px; background: rgba(20, 184, 166, 0.12); color: #7dfbe7; font-size: 12px; font-weight: 800; white-space: nowrap; } .root :global(.scan-v4-decision-pill.downgrade), .root :global(.scan-v4-decision-pill.watchlist) { border-color: rgba(245, 158, 11, 0.34); background: rgba(245, 158, 11, 0.12); color: #ffd166; } .root :global(.scan-v4-decision-pill.veto) { border-color: rgba(248, 113, 113, 0.34); background: rgba(248, 113, 113, 0.12); color: #ff8585; } .root :global(.scan-v4-current) { display: grid; gap: 6px; padding-bottom: 12px; border-bottom: 1px solid rgba(90, 123, 166, 0.12); } .root :global(.scan-v4-current span) { color: #c8d8ec; font-size: 13px; font-weight: 800; line-height: 1.5; } .root :global(.scan-v4-current small) { color: #8fb3d8; font-size: 12px; font-weight: 800; line-height: 1.45; } .root :global(.scan-v4-brief-grid) { display: grid; grid-template-columns: minmax(0, 1.45fr) minmax(260px, 0.85fr); gap: 26px; } .root :global(.scan-v4-brief-grid section:first-child) { grid-column: auto; } .root :global(.scan-v4-brief-grid ul) { display: grid; gap: 8px; margin: 8px 0 0; padding: 0; list-style: none; } .root :global(.scan-v4-brief-grid li) { position: relative; padding-left: 16px; color: #aebfd8; font-size: 12px; font-weight: 800; line-height: 1.48; } .root :global(.scan-v4-brief-grid li::before) { content: ""; position: absolute; top: 0.65em; left: 0; width: 5px; height: 5px; border-radius: 999px; background: var(--color-accent-primary); box-shadow: 0 0 10px rgba(45, 212, 191, 0.45); } .root :global(.scan-v4-brief-grid section:nth-child(2) li::before) { background: #f59e0b; box-shadow: 0 0 10px rgba(245, 158, 11, 0.35); } .root :global(details.scan-v4-evidence) { padding-top: 11px; border-top: 1px solid rgba(90, 123, 166, 0.12); } .root :global(details.scan-v4-evidence summary) { display: inline-flex; align-items: center; gap: 8px; min-height: 30px; padding: 0 11px; border: 1px solid rgba(65, 118, 216, 0.28); border-radius: 8px; background: rgba(10, 30, 58, 0.52); color: #8fbdff; font-size: 12px; font-weight: 800; cursor: pointer; list-style: none; } .root :global(details.scan-v4-evidence summary::-webkit-details-marker) { display: none; } .root :global(details.scan-v4-evidence summary::after) { content: "v"; color: #8fbdff; font-size: 12px; } .root :global(details.scan-v4-evidence[open] summary::after) { content: "^"; } .root :global(details.scan-v4-evidence > div) { margin-top: 10px; } .root :global(.scan-forecast-desk) { gap: 16px; padding: 16px 18px 20px; } .root :global(.scan-ai-workspace) { flex: 1; min-height: 0; max-height: 100%; overflow-y: auto; overscroll-behavior: contain; scroll-padding-top: 64px; border: 1px solid rgba(77, 163, 255, 0.16); border-radius: 18px; background: var(--color-bg-base); padding: 14px; } .root :global(.scan-ai-workspace::-webkit-scrollbar) { width: 8px; } .root :global(.scan-ai-workspace::-webkit-scrollbar-thumb) { border-radius: 999px; background: rgba(77, 163, 255, 0.28); } .root :global(.scan-ai-workspace.empty) { display: grid; place-items: center; } .root :global(.scan-ai-workspace-head) { display: flex; justify-content: space-between; gap: 18px; align-items: flex-end; margin-bottom: 10px; padding: 0 2px; } .root :global(.scan-ai-workspace-head span) { display: block; color: var(--color-accent-primary); font-size: 12px; font-weight: 800; letter-spacing: 0; } .root :global(.scan-ai-workspace-head strong) { display: block; color: var(--color-text-primary); font-size: 20px; line-height: 1.2; margin-top: 4px; } .root :global(.scan-ai-workspace-head p) { max-width: 560px; margin: 0; color: var(--color-text-secondary); font-size: 13px; line-height: 1.55; text-align: right; } .root :global(.scan-city-jumpbar) { display: flex; gap: 8px; margin: 0 0 12px; padding: 8px; overflow-x: auto; border: 1px solid rgba(77, 163, 255, 0.14); border-radius: 14px; background: rgba(11, 18, 32, 0.92); box-shadow: 0 12px 28px rgba(0, 0, 0, 0.22); scrollbar-width: none; } .root :global(.scan-city-jumpbar::-webkit-scrollbar) { display: none; } .root :global(.scan-city-jumpbar button) { flex: 0 0 auto; min-height: 32px; padding: 0 12px; border: 1px solid rgba(77, 163, 255, 0.26); border-radius: 999px; background: rgba(77, 163, 255, 0.1); color: #cfe5ff; font-size: 12px; font-weight: 900; cursor: pointer; white-space: nowrap; } .root :global(.scan-city-jumpbar button:hover) { border-color: rgba(111, 183, 255, 0.62); background: rgba(77, 163, 255, 0.18); } .root :global(.scan-city-card:not(.collapsed)) { overflow: visible; } @keyframes spin { to { transform: rotate(360deg); } } /* ── City Jumpbar Light Mode Overrides ── */ :global(html.light) .root :global(.scan-city-jumpbar) { background: #ffffff; border-color: #d8e0ec; box-shadow: var(--shadow-elevation-1); } :global(html.light) .root :global(.scan-city-jumpbar button) { background: var(--color-bg-input); border-color: var(--color-border-default); color: var(--color-text-secondary); } :global(html.light) .root :global(.scan-city-jumpbar button:hover) { background: #e2e8f0; border-color: var(--color-border-hover); color: var(--color-text-primary); }