| @import url("https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@400;500;600;700&family=Space+Grotesk:wght@500;600;700&display=swap"); |
|
|
| :root { |
| --map-50: #f6f9fc; |
| --map-75: #f0f5fa; |
| --map-100: #e7eef6; |
| --map-150: #dce6f1; |
| --map-200: #cbd9e8; |
| --map-300: #9fb5ce; |
| --map-400: #7f99ba; |
| --map-500: #5f7faa; |
| --map-600: #46648d; |
| --map-700: #304b78; |
| --map-800: #243a5c; |
| --map-900: #172338; |
| --panel-bg: rgba(249, 252, 255, 0.88); |
| --panel-bg-strong: rgba(255, 255, 255, 0.94); |
| --panel-bg-soft: rgba(234, 241, 249, 0.72); |
| --panel-border: rgba(68, 96, 133, 0.18); |
| --panel-border-strong: rgba(68, 96, 133, 0.28); |
| --panel-shadow: 0 24px 70px rgba(32, 50, 77, 0.18); |
| --panel-shadow-soft: 0 14px 38px rgba(32, 50, 77, 0.12); |
| --text-strong: #172338; |
| --text: #30445f; |
| --text-muted: #6f7f94; |
| --text-soft: #8796aa; |
| } |
|
|
| * { |
| box-sizing: border-box; |
| } |
|
|
| html, |
| body, |
| #root { |
| width: 100%; |
| height: 100%; |
| margin: 0; |
| } |
|
|
| body { |
| overflow: hidden; |
| background: var(--map-100); |
| color: var(--text); |
| font-family: "IBM Plex Sans", system-ui, sans-serif; |
| } |
|
|
| button, |
| textarea { |
| font: inherit; |
| } |
|
|
| button { |
| border: 0; |
| } |
|
|
| button:focus-visible, |
| textarea:focus-visible { |
| outline: 2px solid rgba(70, 100, 141, 0.72); |
| outline-offset: 2px; |
| } |
|
|
| @keyframes scan-sweep { |
| 0% { |
| transform: translateX(-18vw); |
| opacity: 0; |
| } |
| 10%, |
| 88% { |
| opacity: 1; |
| } |
| 100% { |
| transform: translateX(116vw); |
| opacity: 0; |
| } |
| } |
|
|
| @keyframes radar-spin { |
| to { |
| transform: rotate(360deg); |
| } |
| } |
|
|
| @keyframes pulse { |
| 0%, |
| 100% { |
| opacity: 0.4; |
| transform: scale(0.96); |
| } |
| 50% { |
| opacity: 1; |
| transform: scale(1); |
| } |
| } |
|
|
| @keyframes shimmer { |
| 0% { |
| background-position: -260px 0; |
| } |
| 100% { |
| background-position: 260px 0; |
| } |
| } |
|
|
| @keyframes spin { |
| to { |
| transform: rotate(360deg); |
| } |
| } |
|
|
| .sr-only { |
| position: absolute; |
| width: 1px; |
| height: 1px; |
| margin: -1px; |
| overflow: hidden; |
| clip: rect(0, 0, 0, 0); |
| white-space: nowrap; |
| } |
|
|
| .app-shell { |
| position: relative; |
| width: 100%; |
| height: 100%; |
| overflow: hidden; |
| background: var(--map-100); |
| } |
|
|
| .map-canvas, |
| .mapbox-host { |
| position: absolute; |
| inset: 0; |
| } |
|
|
| .map-canvas { |
| z-index: 0; |
| background: var(--map-100); |
| isolation: isolate; |
| } |
|
|
| .map-canvas::before { |
| content: ""; |
| position: absolute; |
| inset: 0; |
| z-index: 4; |
| pointer-events: none; |
| background: rgba(95, 127, 170, 0.18); |
| mix-blend-mode: multiply; |
| } |
|
|
| .map-canvas::after { |
| content: ""; |
| position: absolute; |
| inset: 0; |
| z-index: 5; |
| pointer-events: none; |
| background: |
| linear-gradient(90deg, rgba(246, 249, 252, 0.16), transparent 18%, transparent 78%, rgba(246, 249, 252, 0.16)), |
| linear-gradient(180deg, rgba(246, 249, 252, 0.12), transparent 24%, transparent 78%, rgba(246, 249, 252, 0.16)); |
| } |
|
|
| .map-canvas .mapboxgl-canvas { |
| filter: sepia(0.12) saturate(1.34) hue-rotate(174deg) brightness(0.98) contrast(1.04); |
| } |
|
|
| .map-canvas.is-bright .mapboxgl-canvas, |
| .map-canvas.is-bright canvas { |
| filter: brightness(1.04) saturate(1.16); |
| } |
|
|
| .map-token-missing { |
| position: absolute; |
| left: 50%; |
| top: 50%; |
| z-index: 70; |
| display: flex; |
| width: min(420px, calc(100vw - 32px)); |
| transform: translate(-50%, -50%); |
| flex-direction: column; |
| gap: 7px; |
| border: 1px solid var(--panel-border); |
| border-radius: 12px; |
| padding: 18px; |
| background: var(--panel-bg-strong); |
| box-shadow: var(--panel-shadow); |
| color: var(--text); |
| } |
|
|
| .map-token-missing strong { |
| font-family: "Space Grotesk", system-ui, sans-serif; |
| font-size: 18px; |
| } |
|
|
| .map-token-missing span { |
| color: var(--text-muted); |
| font-size: 13px; |
| } |
|
|
| .mapboxgl-ctrl-bottom-right { |
| right: 90px; |
| bottom: 20px; |
| } |
|
|
| .map-token-note { |
| position: absolute; |
| right: 16px; |
| bottom: 82px; |
| z-index: 25; |
| padding: 7px 10px; |
| border: 1px solid var(--panel-border); |
| border-radius: 8px; |
| background: rgba(255, 255, 255, 0.78); |
| color: var(--text-muted); |
| font-size: 11px; |
| backdrop-filter: blur(12px); |
| } |
|
|
| .map-controls { |
| position: absolute; |
| right: 16px; |
| bottom: 24px; |
| z-index: 32; |
| display: flex; |
| gap: 8px; |
| } |
|
|
| .map-controls button, |
| .top-actions button, |
| .secondary-action { |
| display: inline-flex; |
| align-items: center; |
| justify-content: center; |
| gap: 8px; |
| min-width: 42px; |
| height: 42px; |
| border: 1px solid var(--panel-border); |
| border-radius: 9px; |
| background: rgba(255, 255, 255, 0.84); |
| color: var(--map-700); |
| cursor: pointer; |
| backdrop-filter: blur(14px); |
| } |
|
|
| .map-controls button:hover, |
| .top-actions button:hover, |
| .secondary-action:hover { |
| border-color: var(--panel-border-strong); |
| color: var(--map-900); |
| } |
|
|
| .secondary-action.is-playing { |
| color: #ffffff; |
| border-color: var(--map-700); |
| background: var(--map-700); |
| animation: speak-pulse 1.4s ease-in-out infinite; |
| } |
|
|
| .secondary-action.is-generating, |
| .secondary-action:disabled { |
| cursor: default; |
| opacity: 0.78; |
| } |
|
|
| @keyframes speak-pulse { |
| 0%, 100% { box-shadow: 0 0 0 0 rgba(48, 75, 120, 0.35); } |
| 50% { box-shadow: 0 0 0 5px rgba(48, 75, 120, 0); } |
| } |
|
|
| .secondary-action .spin { |
| animation: tts-spin 0.9s linear infinite; |
| } |
|
|
| @keyframes tts-spin { |
| to { transform: rotate(360deg); } |
| } |
|
|
| .map-scan-fx { |
| position: absolute; |
| inset: 0; |
| z-index: 20; |
| pointer-events: none; |
| overflow: hidden; |
| } |
|
|
| .map-scan-fx.cascade span { |
| position: absolute; |
| top: 9%; |
| left: 0; |
| width: 12vw; |
| height: 82%; |
| background: linear-gradient(90deg, transparent, rgba(95, 127, 170, 0.28), transparent); |
| filter: blur(5px); |
| animation: scan-sweep 2.6s linear infinite; |
| } |
|
|
| .map-scan-fx.cascade i { |
| position: absolute; |
| top: 9%; |
| left: 0; |
| width: 2px; |
| height: 82%; |
| background: linear-gradient(180deg, transparent, rgba(214, 226, 241, 0.95), transparent); |
| box-shadow: 0 0 24px 6px rgba(95, 127, 170, 0.45); |
| animation: scan-sweep 2.6s linear infinite; |
| } |
|
|
| .map-scan-fx.radar span { |
| position: absolute; |
| left: 50%; |
| top: 50%; |
| width: 94vmin; |
| height: 94vmin; |
| margin: -47vmin 0 0 -47vmin; |
| border-radius: 50%; |
| background: conic-gradient( |
| from 0deg, |
| rgba(95, 127, 170, 0), |
| rgba(95, 127, 170, 0.34), |
| rgba(159, 181, 206, 0.12), |
| rgba(95, 127, 170, 0) |
| ); |
| animation: radar-spin 2.15s linear infinite; |
| } |
|
|
| .map-scan-fx.radar i { |
| position: absolute; |
| left: 50%; |
| top: 50%; |
| width: 28vmin; |
| height: 28vmin; |
| margin: -14vmin 0 0 -14vmin; |
| border: 1px solid rgba(95, 127, 170, 0.42); |
| border-radius: 50%; |
| box-shadow: 0 0 40px rgba(95, 127, 170, 0.18); |
| animation: pulse 1.2s ease-in-out infinite; |
| } |
|
|
| .glass-panel { |
| z-index: 40; |
| border: 1px solid var(--panel-border); |
| background: linear-gradient(180deg, var(--panel-bg-strong), var(--panel-bg)); |
| box-shadow: var(--panel-shadow), inset 0 1px 0 rgba(255, 255, 255, 0.74); |
| backdrop-filter: blur(18px); |
| } |
|
|
| .brand-lockup { |
| position: absolute; |
| left: 24px; |
| top: 22px; |
| z-index: 55; |
| display: flex; |
| align-items: center; |
| gap: 12px; |
| } |
|
|
| .brand-mark { |
| display: grid; |
| width: 42px; |
| height: 42px; |
| place-items: center; |
| border: 1px solid var(--panel-border); |
| border-radius: 10px; |
| background: rgba(255, 255, 255, 0.78); |
| color: var(--map-700); |
| box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.74), 0 12px 30px rgba(32, 50, 77, 0.1); |
| backdrop-filter: blur(12px); |
| } |
|
|
| .tower-logo { |
| width: 38px; |
| height: 31px; |
| overflow: visible; |
| } |
|
|
| .heartbeat-logo path { |
| fill: none; |
| stroke: currentColor; |
| stroke-linecap: round; |
| stroke-linejoin: round; |
| } |
|
|
| .heartbeat-logo .heartbeat-wing { |
| stroke: var(--map-500); |
| stroke-width: 4.1; |
| } |
|
|
| .heartbeat-logo .heartbeat-tower-stem, |
| .heartbeat-logo .heartbeat-tower-side { |
| stroke: var(--map-800); |
| stroke-width: 4.35; |
| } |
|
|
| .heartbeat-logo .heartbeat-tower-deck, |
| .heartbeat-logo .heartbeat-tower-pod { |
| stroke: var(--map-800); |
| stroke-width: 3.4; |
| } |
|
|
| .heartbeat-logo .heartbeat-tower-base { |
| stroke: var(--map-600); |
| stroke-width: 3.2; |
| } |
|
|
| .heartbeat-logo .heartbeat-tower-pod { |
| fill: rgba(95, 127, 170, 0.16); |
| } |
|
|
| .brand-lockup strong { |
| display: block; |
| color: var(--text-strong); |
| font-family: "Space Grotesk", system-ui, sans-serif; |
| font-size: 23px; |
| line-height: 1; |
| } |
|
|
| .brand-lockup small { |
| display: block; |
| margin-top: 5px; |
| color: var(--text-muted); |
| font-size: 12px; |
| } |
|
|
| .command-bar { |
| position: absolute; |
| left: 50%; |
| bottom: 22px; |
| z-index: 56; |
| display: flex; |
| width: min(620px, calc(100vw - 680px)); |
| min-width: 500px; |
| min-height: 88px; |
| transform: translateX(-50%); |
| flex-direction: column; |
| align-items: stretch; |
| gap: 7px; |
| padding: 10px; |
| border: 1px solid var(--panel-border); |
| border-radius: 26px; |
| background: rgba(255, 255, 255, 0.92); |
| box-shadow: 0 20px 54px rgba(32, 50, 77, 0.18), inset 0 1px 0 rgba(255, 255, 255, 0.78); |
| backdrop-filter: blur(18px); |
| } |
|
|
| .composer-label { |
| display: inline-flex; |
| width: fit-content; |
| align-items: center; |
| gap: 7px; |
| padding: 0 6px; |
| color: var(--map-700); |
| font-size: 12px; |
| font-weight: 700; |
| } |
|
|
| .command-avatar { |
| display: grid; |
| flex: 0 0 auto; |
| width: 24px; |
| height: 24px; |
| place-items: center; |
| border: 1px solid rgba(68, 96, 133, 0.14); |
| border-radius: 50%; |
| background: rgba(231, 238, 246, 0.74); |
| color: var(--map-700); |
| } |
|
|
| .composer-suggestions { |
| display: flex; |
| flex-wrap: wrap; |
| gap: 6px; |
| margin-bottom: 2px; |
| } |
|
|
| .suggestion-chip { |
| display: inline-flex; |
| align-items: center; |
| gap: 5px; |
| padding: 5px 10px; |
| border: 1px solid rgba(68, 96, 133, 0.18); |
| border-radius: 999px; |
| background: rgba(231, 238, 246, 0.6); |
| color: var(--map-700); |
| font-size: 11.5px; |
| font-weight: 600; |
| cursor: pointer; |
| transition: background 0.15s ease, border-color 0.15s ease; |
| } |
|
|
| .suggestion-chip:hover:not(:disabled) { |
| border-color: var(--map-600); |
| background: rgba(231, 238, 246, 0.95); |
| } |
|
|
| .suggestion-chip:disabled { |
| opacity: 0.5; |
| cursor: default; |
| } |
|
|
| .composer-input-row { |
| display: flex; |
| align-items: flex-end; |
| gap: 10px; |
| } |
|
|
| .command-bar textarea { |
| flex: 1; |
| min-width: 0; |
| min-height: 42px; |
| padding: 2px 4px 3px 6px; |
| resize: none; |
| border: 0; |
| outline: 0; |
| background: transparent; |
| color: var(--text-strong); |
| font-size: 14px; |
| line-height: 1.42; |
| } |
|
|
| .command-bar textarea::placeholder { |
| color: var(--text-soft); |
| } |
|
|
| .primary-action { |
| display: inline-flex; |
| align-items: center; |
| justify-content: center; |
| gap: 8px; |
| min-width: 128px; |
| height: 48px; |
| padding: 0 18px; |
| border-radius: 9px; |
| background: var(--map-800); |
| color: #ffffff; |
| font-family: "Space Grotesk", system-ui, sans-serif; |
| font-weight: 700; |
| cursor: pointer; |
| box-shadow: 0 14px 28px rgba(36, 58, 92, 0.2); |
| } |
|
|
| .command-bar .primary-action { |
| min-width: 44px; |
| width: 44px; |
| height: 44px; |
| border-radius: 999px; |
| background: var(--map-800); |
| padding: 0; |
| box-shadow: none; |
| } |
|
|
| .send-action svg { |
| margin-left: 1px; |
| } |
|
|
| .send-action.is-running svg { |
| margin-left: 0; |
| animation: spin 0.9s linear infinite; |
| } |
|
|
| .primary-action:hover:not(:disabled) { |
| background: var(--map-700); |
| } |
|
|
| .primary-action:disabled { |
| cursor: default; |
| opacity: 0.7; |
| } |
|
|
| .active-layer-chip { |
| position: absolute; |
| left: 50%; |
| top: 24px; |
| z-index: 52; |
| display: flex; |
| align-items: center; |
| gap: 8px; |
| max-width: min(460px, calc(100vw - 420px)); |
| transform: translateX(-50%); |
| padding: 7px 13px; |
| border: 1px solid var(--panel-border); |
| border-radius: 999px; |
| background: rgba(255, 255, 255, 0.72); |
| color: var(--text-muted); |
| font-size: 12px; |
| backdrop-filter: blur(12px); |
| } |
|
|
| .active-layer-chip.running { |
| background: rgba(255, 255, 255, 0.82); |
| box-shadow: 0 14px 34px rgba(32, 50, 77, 0.12); |
| } |
|
|
| .active-layer-chip span { |
| flex: 0 0 auto; |
| width: 7px; |
| height: 7px; |
| border-radius: 50%; |
| background: var(--map-700); |
| box-shadow: 0 0 12px rgba(48, 75, 120, 0.55); |
| } |
|
|
| .active-layer-chip small { |
| min-width: 0; |
| overflow: hidden; |
| color: var(--text-muted); |
| font-size: 12px; |
| text-overflow: ellipsis; |
| white-space: nowrap; |
| } |
|
|
| .active-layer-chip strong { |
| min-width: 0; |
| overflow: hidden; |
| color: var(--text-strong); |
| text-overflow: ellipsis; |
| white-space: nowrap; |
| } |
|
|
| .top-actions { |
| position: absolute; |
| right: 18px; |
| top: 24px; |
| z-index: 55; |
| display: flex; |
| gap: 10px; |
| } |
|
|
| .top-actions button { |
| min-width: 0; |
| padding: 0 14px; |
| font-size: 13px; |
| font-weight: 600; |
| } |
|
|
| .top-actions b { |
| display: inline-flex; |
| min-width: 20px; |
| height: 20px; |
| align-items: center; |
| justify-content: center; |
| border-radius: 7px; |
| background: rgba(95, 127, 170, 0.14); |
| color: var(--map-700); |
| font-size: 11px; |
| } |
|
|
| .collapsed-panel-tab { |
| position: absolute; |
| top: 112px; |
| z-index: 54; |
| display: inline-flex; |
| align-items: center; |
| gap: 8px; |
| max-width: 178px; |
| height: 42px; |
| padding: 0 12px; |
| border: 1px solid var(--panel-border); |
| border-radius: 999px; |
| background: rgba(255, 255, 255, 0.82); |
| color: var(--map-800); |
| cursor: pointer; |
| box-shadow: 0 14px 34px rgba(32, 50, 77, 0.14), inset 0 1px 0 rgba(255, 255, 255, 0.78); |
| backdrop-filter: blur(16px); |
| } |
|
|
| .collapsed-panel-tab:hover { |
| border-color: var(--panel-border-strong); |
| background: rgba(255, 255, 255, 0.94); |
| } |
|
|
| .collapsed-panel-tab.left { |
| left: 16px; |
| } |
|
|
| .collapsed-panel-tab.right { |
| right: 16px; |
| } |
|
|
| .collapsed-panel-tab span { |
| overflow: hidden; |
| font-size: 12px; |
| font-weight: 800; |
| text-overflow: ellipsis; |
| white-space: nowrap; |
| } |
|
|
| .app-shell.map-focus .active-layer-chip { |
| background: rgba(255, 255, 255, 0.6); |
| } |
|
|
| .results-panel { |
| position: absolute; |
| left: 16px; |
| top: 104px; |
| display: flex; |
| width: 304px; |
| max-height: calc(100vh - 214px); |
| flex-direction: column; |
| border-radius: 12px; |
| padding: 14px; |
| } |
|
|
| .panel-title { |
| display: flex; |
| align-items: center; |
| justify-content: space-between; |
| gap: 12px; |
| margin-bottom: 12px; |
| } |
|
|
| .panel-title.compact { |
| margin-bottom: 10px; |
| } |
|
|
| .panel-title h2 { |
| margin: 0; |
| color: var(--text-strong); |
| font-family: "Space Grotesk", system-ui, sans-serif; |
| font-size: 15px; |
| line-height: 1.15; |
| } |
|
|
| .mode-switcher { |
| display: grid; |
| grid-template-columns: repeat(6, 1fr); |
| gap: 5px; |
| margin: -2px 0 12px; |
| padding: 4px; |
| border: 1px solid rgba(68, 96, 133, 0.12); |
| border-radius: 10px; |
| background: rgba(231, 238, 246, 0.72); |
| } |
|
|
| .mode-switcher button { |
| display: grid; |
| height: 30px; |
| place-items: center; |
| border-radius: 8px; |
| background: transparent; |
| color: var(--map-500); |
| cursor: pointer; |
| } |
|
|
| .mode-switcher button:hover { |
| color: var(--map-900); |
| background: rgba(255, 255, 255, 0.68); |
| } |
|
|
| .mode-switcher button.active { |
| color: #ffffff; |
| background: var(--map-700); |
| } |
|
|
| .panel-title span, |
| .panel-title svg { |
| color: var(--text-muted); |
| font-size: 11px; |
| } |
|
|
| .result-list { |
| display: flex; |
| min-height: 0; |
| flex-direction: column; |
| gap: 8px; |
| overflow-y: auto; |
| padding-right: 2px; |
| } |
|
|
| .result-row { |
| display: flex; |
| width: 100%; |
| flex-direction: column; |
| gap: 7px; |
| padding: 11px 10px; |
| border: 1px solid rgba(68, 96, 133, 0.1); |
| border-radius: 8px; |
| background: rgba(255, 255, 255, 0.58); |
| color: var(--text); |
| text-align: left; |
| cursor: pointer; |
| } |
|
|
| .result-row:hover, |
| .result-row.hovered { |
| border-color: rgba(70, 100, 141, 0.3); |
| background: rgba(244, 248, 252, 0.9); |
| } |
|
|
| .result-row.selected { |
| border-color: rgba(48, 75, 120, 0.36); |
| background: rgba(231, 238, 246, 0.94); |
| box-shadow: inset 0 0 0 1px rgba(48, 75, 120, 0.08); |
| } |
|
|
| .result-main, |
| .result-meta, |
| .result-bottom { |
| display: flex; |
| min-width: 0; |
| align-items: center; |
| gap: 9px; |
| } |
|
|
| .result-main b { |
| width: 16px; |
| color: var(--text-soft); |
| font-family: "Space Grotesk", system-ui, sans-serif; |
| font-size: 12px; |
| } |
|
|
| .result-main strong { |
| flex: 1; |
| min-width: 0; |
| overflow: hidden; |
| color: var(--text-strong); |
| font-family: "Space Grotesk", system-ui, sans-serif; |
| font-size: 14px; |
| text-overflow: ellipsis; |
| white-space: nowrap; |
| } |
|
|
| .score-badge { |
| display: inline-flex; |
| min-width: 34px; |
| height: 24px; |
| align-items: center; |
| justify-content: center; |
| border-radius: 7px; |
| color: #ffffff; |
| font-family: "Space Grotesk", system-ui, sans-serif; |
| font-size: 13px; |
| font-weight: 700; |
| } |
|
|
| .trust-badge { |
| display: inline-flex; |
| min-width: 76px; |
| height: 24px; |
| align-items: center; |
| justify-content: center; |
| border: 1px solid rgba(68, 96, 133, 0.18); |
| border-radius: 7px; |
| padding: 0 8px; |
| background: rgba(255, 255, 255, 0.62); |
| color: var(--text-muted); |
| font-size: 10.5px; |
| font-weight: 800; |
| } |
|
|
| .trust-badge.sourced { |
| border-color: rgba(48, 75, 120, 0.28); |
| background: rgba(231, 238, 246, 0.8); |
| color: var(--map-800); |
| } |
|
|
| .compare-grid .trust-badge { |
| min-width: 58px; |
| padding: 0 4px; |
| font-size: 9.5px; |
| } |
|
|
| .result-meta { |
| flex-wrap: wrap; |
| padding-left: 25px; |
| } |
|
|
| .result-meta small { |
| display: inline-flex; |
| min-width: 0; |
| align-items: center; |
| gap: 5px; |
| color: var(--text-muted); |
| font-size: 12px; |
| line-height: 1.25; |
| overflow-wrap: anywhere; |
| } |
|
|
| .result-bottom { |
| flex-wrap: wrap; |
| padding-left: 25px; |
| } |
|
|
| .result-bottom em, |
| .detail-head span, |
| .priority-block span { |
| display: inline-flex; |
| align-items: center; |
| border: 1px solid; |
| border-radius: 7px; |
| padding: 3px 8px; |
| font-size: 10.5px; |
| font-style: normal; |
| font-weight: 700; |
| } |
|
|
| .result-bottom em, |
| .priority-block span { |
| max-width: 100%; |
| overflow-wrap: anywhere; |
| } |
|
|
| .mini-metric { |
| display: flex; |
| min-width: 0; |
| flex: 1; |
| align-items: center; |
| gap: 7px; |
| color: var(--text-muted); |
| font-size: 10.5px; |
| } |
|
|
| .source-needed { |
| color: var(--text-soft); |
| font-size: 10.5px; |
| font-style: normal; |
| font-weight: 700; |
| overflow-wrap: anywhere; |
| } |
|
|
| .mini-metric i, |
| .compare-bar i { |
| display: block; |
| height: 5px; |
| flex: 1; |
| overflow: hidden; |
| border-radius: 999px; |
| background: rgba(68, 96, 133, 0.1); |
| } |
|
|
| .mini-metric span, |
| .compare-bar span { |
| display: block; |
| height: 100%; |
| border-radius: inherit; |
| } |
|
|
| .secondary-action { |
| width: 100%; |
| margin-top: 12px; |
| color: var(--map-700); |
| font-size: 13px; |
| font-weight: 700; |
| } |
|
|
| .loading-stack { |
| display: flex; |
| flex-direction: column; |
| gap: 10px; |
| color: var(--text-muted); |
| font-size: 12px; |
| } |
|
|
| .loading-stack > span:not(.loading-line) { |
| height: 62px; |
| border-radius: 10px; |
| background: linear-gradient( |
| 90deg, |
| rgba(95, 127, 170, 0.08), |
| rgba(95, 127, 170, 0.18), |
| rgba(95, 127, 170, 0.08) |
| ); |
| background-size: 260px 100%; |
| animation: shimmer 1.2s linear infinite; |
| } |
|
|
| .loading-line { |
| display: inline-flex; |
| align-items: center; |
| gap: 8px; |
| } |
|
|
| .loading-line i, |
| .pulse-dot { |
| width: 8px; |
| height: 8px; |
| border-radius: 50%; |
| background: var(--map-700); |
| } |
|
|
| .loading-line i, |
| .pulse-dot.active { |
| animation: pulse 1s ease-in-out infinite; |
| } |
|
|
| .layers-panel { |
| position: absolute; |
| left: 336px; |
| bottom: 92px; |
| width: 220px; |
| border-radius: 12px; |
| padding: 14px; |
| } |
|
|
| .layer-toggle { |
| display: flex; |
| width: 100%; |
| align-items: center; |
| justify-content: space-between; |
| padding: 8px 0; |
| background: transparent; |
| color: var(--text); |
| cursor: pointer; |
| font-size: 12.5px; |
| } |
|
|
| .layer-toggle i { |
| position: relative; |
| display: block; |
| width: 38px; |
| height: 22px; |
| border-radius: 999px; |
| background: rgba(68, 96, 133, 0.16); |
| } |
|
|
| .layer-toggle i.active { |
| background: var(--map-700); |
| } |
|
|
| .layer-toggle b { |
| position: absolute; |
| left: 3px; |
| top: 3px; |
| width: 16px; |
| height: 16px; |
| border-radius: 50%; |
| background: #ffffff; |
| transition: transform 0.2s ease; |
| } |
|
|
| .layer-toggle i.active b { |
| transform: translateX(16px); |
| } |
|
|
| .run-style { |
| margin-top: 12px; |
| padding-top: 12px; |
| border-top: 1px solid rgba(68, 96, 133, 0.14); |
| } |
|
|
| .run-style > span { |
| display: block; |
| margin-bottom: 8px; |
| color: var(--text-muted); |
| font-size: 10.5px; |
| font-weight: 700; |
| text-transform: uppercase; |
| } |
|
|
| .run-style div { |
| display: grid; |
| grid-template-columns: 1fr 1fr; |
| gap: 4px; |
| padding: 3px; |
| border-radius: 10px; |
| background: rgba(231, 238, 246, 0.74); |
| } |
|
|
| .run-style button { |
| height: 30px; |
| border-radius: 8px; |
| background: transparent; |
| color: var(--text-muted); |
| cursor: pointer; |
| font-size: 12px; |
| font-weight: 700; |
| } |
|
|
| .run-style button.active { |
| background: var(--map-700); |
| color: #ffffff; |
| } |
|
|
| .detail-stack, |
| .agent-rail { |
| position: absolute; |
| right: 16px; |
| top: 104px; |
| z-index: 42; |
| width: 318px; |
| } |
|
|
| .detail-stack { |
| display: flex; |
| |
| max-height: calc(100vh - 196px); |
| flex-direction: column; |
| gap: 12px; |
| overflow-x: hidden; |
| overflow-y: auto; |
| |
| padding-block: 18px 22px; |
| -webkit-mask-image: linear-gradient( |
| to bottom, |
| transparent 0, |
| #000 18px, |
| #000 calc(100% - 22px), |
| transparent 100% |
| ); |
| mask-image: linear-gradient( |
| to bottom, |
| transparent 0, |
| #000 18px, |
| #000 calc(100% - 22px), |
| transparent 100% |
| ); |
| } |
|
|
| .safety-panel, |
| .detail-panel, |
| .research-panel, |
| .agent-rail { |
| border-radius: 12px; |
| padding: 15px; |
| } |
|
|
| .safety-panel p, |
| .tradeoff, |
| .agent-card p, |
| .priority-block p { |
| margin: 0; |
| color: var(--text-muted); |
| font-size: 11.5px; |
| line-height: 1.45; |
| } |
|
|
| .safety-bar { |
| position: relative; |
| height: 9px; |
| margin-top: 5px; |
| overflow: hidden; |
| border-radius: 999px; |
| background: linear-gradient(90deg, var(--map-150), var(--map-400) 52%, var(--map-800)); |
| } |
|
|
| .safety-bar span { |
| position: absolute; |
| top: -4px; |
| width: 4px; |
| height: 17px; |
| border-radius: 5px; |
| background: #ffffff; |
| box-shadow: 0 0 0 1px rgba(36, 58, 92, 0.18), 0 0 12px rgba(255, 255, 255, 0.8); |
| } |
|
|
| .safety-labels { |
| display: flex; |
| justify-content: space-between; |
| margin: 7px 0 10px; |
| color: var(--text-soft); |
| font-size: 10.5px; |
| } |
|
|
| .safety-fact { |
| display: flex; |
| align-items: baseline; |
| gap: 8px; |
| margin: 3px 0 9px; |
| } |
|
|
| .safety-fact strong { |
| color: var(--text-strong); |
| font-family: "Space Grotesk", system-ui, sans-serif; |
| font-size: 26px; |
| line-height: 1; |
| } |
|
|
| .safety-fact span { |
| color: var(--text-muted); |
| font-size: 10.5px; |
| line-height: 1.3; |
| } |
|
|
| .data-gap { |
| display: flex; |
| min-width: 0; |
| align-items: flex-start; |
| gap: 8px; |
| border: 1px solid rgba(68, 96, 133, 0.13); |
| border-radius: 8px; |
| padding: 9px; |
| background: rgba(255, 255, 255, 0.48); |
| color: var(--text-muted); |
| font-size: 11.5px; |
| line-height: 1.4; |
| } |
|
|
| .data-gap svg { |
| flex: 0 0 auto; |
| margin-top: 1px; |
| color: var(--map-700); |
| } |
|
|
| .data-gap span { |
| min-width: 0; |
| overflow-wrap: anywhere; |
| } |
|
|
| .research-panel { |
| display: flex; |
| flex-direction: column; |
| gap: 10px; |
| } |
|
|
| .research-meta { |
| display: flex; |
| min-width: 0; |
| flex-wrap: wrap; |
| gap: 6px; |
| } |
|
|
| .research-meta span { |
| max-width: 100%; |
| overflow: hidden; |
| border: 1px solid rgba(68, 96, 133, 0.14); |
| border-radius: 999px; |
| padding: 4px 8px; |
| background: rgba(231, 238, 246, 0.64); |
| color: var(--text-muted); |
| font-size: 10.5px; |
| text-overflow: ellipsis; |
| white-space: nowrap; |
| } |
|
|
| .fact-list { |
| display: grid; |
| gap: 7px; |
| } |
|
|
| .fact-list span { |
| display: grid; |
| grid-template-columns: 1fr auto; |
| gap: 2px 10px; |
| border: 1px solid rgba(68, 96, 133, 0.1); |
| border-radius: 8px; |
| padding: 8px; |
| background: rgba(255, 255, 255, 0.52); |
| } |
|
|
| .fact-list strong, |
| .fact-list b { |
| color: var(--text-strong); |
| font-size: 12px; |
| } |
|
|
| .fact-list b { |
| font-family: "Space Grotesk", system-ui, sans-serif; |
| } |
|
|
| .fact-list small { |
| grid-column: 1 / -1; |
| color: var(--text-muted); |
| font-size: 10.5px; |
| } |
|
|
| .research-source-list { |
| display: flex; |
| flex-direction: column; |
| gap: 7px; |
| } |
|
|
| .research-source-list a { |
| display: grid; |
| grid-template-columns: 28px 1fr; |
| gap: 8px; |
| align-items: start; |
| border: 1px solid rgba(68, 96, 133, 0.1); |
| border-radius: 8px; |
| padding: 8px; |
| background: rgba(255, 255, 255, 0.56); |
| color: inherit; |
| text-decoration: none; |
| } |
|
|
| .research-source-list a:hover { |
| border-color: var(--panel-border-strong); |
| background: rgba(255, 255, 255, 0.76); |
| } |
|
|
| .research-source-list b { |
| display: grid; |
| width: 26px; |
| height: 24px; |
| place-items: center; |
| border-radius: 7px; |
| background: rgba(95, 127, 170, 0.13); |
| color: var(--map-700); |
| font-family: "Space Grotesk", system-ui, sans-serif; |
| font-size: 10px; |
| } |
|
|
| .research-source-list strong { |
| display: -webkit-box; |
| overflow: hidden; |
| color: var(--text-strong); |
| font-size: 12px; |
| line-height: 1.25; |
| -webkit-box-orient: vertical; |
| -webkit-line-clamp: 2; |
| } |
|
|
| .research-source-list small { |
| display: block; |
| overflow: hidden; |
| margin-top: 4px; |
| color: var(--text-muted); |
| font-size: 10.5px; |
| text-overflow: ellipsis; |
| white-space: nowrap; |
| } |
|
|
| .detail-head { |
| display: flex; |
| min-width: 0; |
| align-items: flex-start; |
| justify-content: space-between; |
| gap: 12px; |
| margin-bottom: 16px; |
| } |
|
|
| .detail-head > div { |
| min-width: 0; |
| } |
|
|
| .detail-head h2, |
| .agent-head h2, |
| .compare-head h2 { |
| min-width: 0; |
| overflow-wrap: anywhere; |
| margin: 0; |
| color: var(--text-strong); |
| font-family: "Space Grotesk", system-ui, sans-serif; |
| font-size: 22px; |
| line-height: 1.05; |
| } |
|
|
| .detail-head span { |
| max-width: 100%; |
| margin-top: 8px; |
| overflow-wrap: anywhere; |
| } |
|
|
| .detail-panel h3 { |
| margin: 0 0 10px; |
| color: var(--text); |
| font-size: 12.5px; |
| } |
|
|
| .why-list { |
| display: flex; |
| flex-direction: column; |
| gap: 9px; |
| } |
|
|
| .why-list span { |
| display: flex; |
| min-width: 0; |
| align-items: flex-start; |
| gap: 8px; |
| color: var(--text); |
| font-size: 12.5px; |
| line-height: 1.35; |
| overflow-wrap: anywhere; |
| } |
|
|
| .why-list span.good svg { |
| color: var(--map-700); |
| } |
|
|
| .why-list span.warn { |
| color: var(--text-muted); |
| } |
|
|
| .detail-split { |
| display: grid; |
| grid-template-columns: 1fr; |
| gap: 9px; |
| margin: 16px 0 12px; |
| } |
|
|
| .evidence-metric { |
| display: flex; |
| min-width: 0; |
| flex-direction: column; |
| gap: 7px; |
| border: 1px solid rgba(68, 96, 133, 0.12); |
| border-radius: 8px; |
| padding: 10px; |
| background: rgba(255, 255, 255, 0.56); |
| } |
|
|
| .evidence-metric.sourced { |
| border-color: rgba(48, 75, 120, 0.18); |
| background: rgba(255, 255, 255, 0.68); |
| } |
|
|
| .evidence-metric > div { |
| display: grid; |
| min-width: 0; |
| grid-template-columns: minmax(0, 1fr) auto; |
| gap: 8px; |
| align-items: baseline; |
| } |
|
|
| .evidence-metric small { |
| min-width: 0; |
| overflow: hidden; |
| color: var(--text-muted); |
| font-size: 10.5px; |
| font-weight: 700; |
| text-overflow: ellipsis; |
| text-transform: uppercase; |
| white-space: nowrap; |
| } |
|
|
| .evidence-metric strong { |
| min-width: 0; |
| max-width: 128px; |
| overflow-wrap: anywhere; |
| color: var(--text-strong); |
| font-family: "Space Grotesk", system-ui, sans-serif; |
| font-size: 14.5px; |
| line-height: 1.15; |
| text-align: right; |
| } |
|
|
| .evidence-metric p { |
| margin: 0; |
| color: var(--text-muted); |
| font-size: 11.5px; |
| line-height: 1.4; |
| overflow-wrap: anywhere; |
| } |
|
|
| .metric-graphic { |
| min-width: 0; |
| } |
|
|
| .metric-graphic svg { |
| width: 100%; |
| height: 56px; |
| } |
|
|
| .tradeoff { |
| display: flex; |
| min-width: 0; |
| gap: 8px; |
| color: var(--text-muted); |
| overflow-wrap: anywhere; |
| } |
|
|
| .tradeoff svg { |
| flex: 0 0 auto; |
| margin-top: 1px; |
| } |
|
|
| .detail-actions { |
| display: grid; |
| grid-template-columns: repeat(2, minmax(0, 1fr)); |
| gap: 9px; |
| margin-top: 14px; |
| } |
|
|
| .detail-actions .primary-action, |
| .detail-actions .secondary-action { |
| width: 100%; |
| min-width: 0; |
| height: 48px; |
| margin: 0; |
| padding: 0 12px; |
| overflow: hidden; |
| font-size: 12px; |
| white-space: nowrap; |
| } |
|
|
| .agent-rail { |
| display: flex; |
| |
| max-height: calc(100vh - 196px); |
| flex-direction: column; |
| padding: 0; |
| overflow: hidden; |
| } |
|
|
| .agent-head { |
| display: flex; |
| align-items: flex-start; |
| justify-content: space-between; |
| gap: 12px; |
| padding: 15px; |
| border-bottom: 1px solid rgba(68, 96, 133, 0.14); |
| } |
|
|
| .agent-head h2 { |
| display: flex; |
| align-items: center; |
| gap: 9px; |
| font-size: 16px; |
| } |
|
|
| .agent-head p { |
| margin: 5px 0 0; |
| color: var(--text-muted); |
| font-size: 12px; |
| } |
|
|
| .agent-head button, |
| .compare-head button { |
| display: grid; |
| width: 32px; |
| height: 32px; |
| place-items: center; |
| border: 1px solid rgba(68, 96, 133, 0.16); |
| border-radius: 9px; |
| background: rgba(255, 255, 255, 0.56); |
| color: var(--map-700); |
| cursor: pointer; |
| } |
|
|
| .agent-list { |
| display: flex; |
| min-height: 0; |
| flex: 1; |
| flex-direction: column; |
| gap: 9px; |
| overflow-y: auto; |
| padding: 14px 12px; |
| |
| -webkit-mask-image: linear-gradient( |
| to bottom, |
| transparent 0, |
| #000 14px, |
| #000 calc(100% - 16px), |
| transparent 100% |
| ); |
| mask-image: linear-gradient( |
| to bottom, |
| transparent 0, |
| #000 14px, |
| #000 calc(100% - 16px), |
| transparent 100% |
| ); |
| } |
|
|
| .agent-card { |
| min-width: 0; |
| border: 1px solid rgba(68, 96, 133, 0.12); |
| border-radius: 8px; |
| padding: 11px; |
| background: rgba(255, 255, 255, 0.58); |
| } |
|
|
| .agent-row { |
| display: grid; |
| min-width: 0; |
| grid-template-columns: 34px minmax(0, 1fr) minmax(58px, auto) 28px; |
| align-items: center; |
| gap: 9px; |
| } |
|
|
| .agent-row > span { |
| display: grid; |
| width: 32px; |
| height: 32px; |
| place-items: center; |
| border: 1px solid; |
| border-radius: 8px; |
| } |
|
|
| .agent-row strong { |
| overflow: hidden; |
| color: var(--text-strong); |
| font-size: 13px; |
| text-overflow: ellipsis; |
| white-space: nowrap; |
| } |
|
|
| .agent-row em { |
| min-width: 0; |
| overflow: hidden; |
| border-radius: 7px; |
| padding: 3px 7px; |
| font-size: 10px; |
| font-style: normal; |
| font-weight: 700; |
| text-align: center; |
| text-overflow: ellipsis; |
| white-space: nowrap; |
| } |
|
|
| .agent-row em.queued { |
| background: rgba(68, 96, 133, 0.1); |
| color: var(--text-muted); |
| } |
|
|
| .agent-row em.scanning { |
| background: rgba(95, 127, 170, 0.12); |
| color: var(--map-600); |
| } |
|
|
| .agent-row em.scoring { |
| background: rgba(70, 100, 141, 0.13); |
| color: var(--map-700); |
| } |
|
|
| .agent-row em.done { |
| background: rgba(36, 58, 92, 0.12); |
| color: var(--map-800); |
| } |
|
|
| .agent-row b { |
| min-width: 0; |
| overflow: hidden; |
| font-family: "Space Grotesk", system-ui, sans-serif; |
| font-size: 14px; |
| text-align: right; |
| text-overflow: ellipsis; |
| } |
|
|
| .agent-source-count { |
| display: inline-flex; |
| width: fit-content; |
| max-width: calc(100% - 43px); |
| margin: 8px 0 0 43px; |
| border: 1px solid rgba(68, 96, 133, 0.12); |
| border-radius: 999px; |
| padding: 3px 8px; |
| background: rgba(231, 238, 246, 0.52); |
| color: var(--text-muted); |
| font-size: 10px; |
| font-weight: 800; |
| overflow-wrap: anywhere; |
| } |
|
|
| .agent-lines { |
| display: flex; |
| flex-direction: column; |
| gap: 4px; |
| margin-top: 9px; |
| padding-left: 43px; |
| } |
|
|
| .agent-lines small { |
| min-width: 0; |
| color: var(--text-muted); |
| font-family: ui-monospace, SFMono-Regular, Menlo, monospace; |
| font-size: 10.5px; |
| overflow-wrap: anywhere; |
| } |
|
|
| .agent-card p { |
| margin-top: 9px; |
| padding-left: 43px; |
| overflow-wrap: anywhere; |
| } |
|
|
| .agent-progress { |
| display: block; |
| height: 3px; |
| margin-top: 10px; |
| overflow: hidden; |
| border-radius: 999px; |
| background: rgba(68, 96, 133, 0.1); |
| } |
|
|
| .agent-progress span { |
| display: block; |
| height: 100%; |
| border-radius: inherit; |
| transition: width 0.35s ease; |
| } |
|
|
| .priority-block { |
| padding: 12px 14px 14px; |
| border-top: 1px solid rgba(68, 96, 133, 0.14); |
| } |
|
|
| .priority-block > small { |
| display: block; |
| margin-bottom: 8px; |
| color: var(--text-muted); |
| font-size: 10px; |
| font-weight: 700; |
| text-transform: uppercase; |
| } |
|
|
| .priority-block div { |
| display: flex; |
| flex-wrap: wrap; |
| gap: 6px; |
| } |
|
|
| .priority-block p { |
| margin-top: 10px; |
| color: var(--text-muted); |
| font-size: 10.5px; |
| } |
|
|
| .empty-priority { |
| color: var(--text-muted); |
| } |
|
|
| .modal-backdrop { |
| position: fixed; |
| inset: 0; |
| z-index: 80; |
| display: grid; |
| place-items: center; |
| padding: 24px; |
| background: rgba(23, 35, 56, 0.52); |
| backdrop-filter: blur(10px); |
| } |
|
|
| .compare-modal { |
| display: flex; |
| width: min(1060px, 100%); |
| max-height: min(820px, calc(100vh - 48px)); |
| flex-direction: column; |
| overflow: hidden; |
| border-radius: 12px; |
| } |
|
|
| .compare-head { |
| display: flex; |
| align-items: flex-start; |
| justify-content: space-between; |
| gap: 18px; |
| padding: 18px 20px; |
| border-bottom: 1px solid rgba(68, 96, 133, 0.14); |
| } |
|
|
| .compare-head h2 { |
| font-size: 19px; |
| } |
|
|
| .compare-head p { |
| margin: 4px 0 0; |
| color: var(--text-muted); |
| font-size: 12px; |
| } |
|
|
| .compare-grid { |
| display: grid; |
| grid-template-columns: 210px repeat(7, minmax(76px, 1fr)) 58px; |
| gap: 10px; |
| align-items: center; |
| } |
|
|
| .compare-header { |
| padding: 10px 20px; |
| border-bottom: 1px solid rgba(68, 96, 133, 0.1); |
| color: var(--text-muted); |
| font-size: 10px; |
| font-weight: 700; |
| text-transform: uppercase; |
| } |
|
|
| .compare-rows { |
| overflow: auto; |
| padding: 8px 14px 16px; |
| } |
|
|
| .compare-rows button { |
| width: 100%; |
| min-width: 920px; |
| padding: 9px 6px; |
| border-radius: 8px; |
| background: transparent; |
| color: var(--text); |
| cursor: pointer; |
| text-align: left; |
| } |
|
|
| .compare-rows button:hover, |
| .compare-rows button.selected { |
| background: rgba(95, 127, 170, 0.1); |
| } |
|
|
| .compare-name { |
| display: flex; |
| align-items: center; |
| gap: 9px; |
| color: var(--text-strong); |
| font-family: "Space Grotesk", system-ui, sans-serif; |
| font-size: 13px; |
| font-weight: 700; |
| } |
|
|
| .compare-name b { |
| width: 18px; |
| color: var(--text-soft); |
| font-size: 11px; |
| } |
|
|
| .compare-bar { |
| display: flex; |
| align-items: center; |
| gap: 7px; |
| } |
|
|
| .compare-bar small { |
| width: 42px; |
| color: var(--text-muted); |
| font-size: 10.5px; |
| text-align: right; |
| } |
|
|
| @media (max-width: 1220px) { |
| .command-bar { |
| width: min(620px, calc(100vw - 420px)); |
| min-width: 390px; |
| } |
|
|
| .detail-stack, |
| .agent-rail { |
| width: 300px; |
| } |
| } |
|
|
| @media (max-width: 760px) { |
| body { |
| overflow: hidden; |
| } |
|
|
| .brand-lockup { |
| left: 14px; |
| top: 12px; |
| } |
|
|
| .brand-lockup small, |
| .top-actions { |
| display: none; |
| } |
|
|
| .command-bar { |
| left: 12px; |
| right: 12px; |
| bottom: 12px; |
| width: auto; |
| min-width: 0; |
| transform: none; |
| } |
|
|
| .active-layer-chip { |
| top: 68px; |
| max-width: calc(100vw - 24px); |
| } |
|
|
| .collapsed-panel-tab { |
| top: 118px; |
| } |
|
|
| .collapsed-panel-tab.left { |
| left: 12px; |
| } |
|
|
| .collapsed-panel-tab.right { |
| right: 12px; |
| } |
|
|
| .results-panel { |
| left: 12px; |
| right: 12px; |
| top: auto; |
| bottom: 104px; |
| width: auto; |
| max-height: 260px; |
| } |
|
|
| .layers-panel, |
| .detail-stack, |
| .agent-rail, |
| .map-token-note { |
| display: none; |
| } |
|
|
| .map-controls { |
| right: 12px; |
| bottom: 166px; |
| flex-direction: column; |
| } |
| } |
|
|