2026-09-03 19:45:55 +02:00
|
|
|
:root {
|
|
|
|
|
--ink: #172536;
|
|
|
|
|
--ink-strong: #0d1b2a;
|
|
|
|
|
--muted: #647487;
|
|
|
|
|
--muted-soft: #8b99a8;
|
|
|
|
|
--line: #dbe3e9;
|
|
|
|
|
--line-strong: #c7d3dc;
|
|
|
|
|
--surface: #fffdf9;
|
|
|
|
|
--surface-alt: #f7f5ef;
|
|
|
|
|
--bg: #f1f3f2;
|
|
|
|
|
--navy: #102a43;
|
|
|
|
|
--navy-2: #173b5d;
|
|
|
|
|
--navy-3: #234f73;
|
|
|
|
|
--accent: #d97732;
|
|
|
|
|
--accent-dark: #aa4d17;
|
|
|
|
|
--accent-soft: #fff0e4;
|
|
|
|
|
--teal: #127a78;
|
|
|
|
|
--teal-soft: #e4f4f1;
|
|
|
|
|
--green: #157347;
|
|
|
|
|
--green-soft: #e5f4ea;
|
|
|
|
|
--amber: #99620b;
|
|
|
|
|
--amber-soft: #fff3d9;
|
|
|
|
|
--red: #b43b48;
|
|
|
|
|
--red-soft: #ffebed;
|
|
|
|
|
--blue: #276a9c;
|
|
|
|
|
--blue-soft: #e6f0f8;
|
|
|
|
|
--shadow-sm: 0 2px 8px rgba(16,42,67,.05);
|
|
|
|
|
--shadow: 0 14px 34px rgba(16,42,67,.08);
|
|
|
|
|
--radius: 14px;
|
|
|
|
|
}
|
|
|
|
|
* { box-sizing: border-box; }
|
|
|
|
|
html { scroll-behavior: smooth; }
|
|
|
|
|
body { margin: 0; background: var(--bg); color: var(--ink); font: 14px/1.5 Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; }
|
|
|
|
|
button, input, select, textarea { font: inherit; }
|
|
|
|
|
button, a, select, input, textarea { outline-color: var(--accent); outline-offset: 3px; }
|
|
|
|
|
button { cursor: pointer; }
|
|
|
|
|
button:disabled { cursor: not-allowed; opacity: .52; }
|
|
|
|
|
[hidden] { display: none !important; }
|
|
|
|
|
|
|
|
|
|
/* Authentication */
|
|
|
|
|
.login-screen { min-height: 100vh; display: grid; place-items: center; padding: 28px; background: radial-gradient(circle at 12% 10%, #234f73 0, transparent 34%), linear-gradient(135deg, #102a43, #173b5d 56%, #0d1b2a); }
|
|
|
|
|
.login-card { width: min(100%, 450px); padding: 42px; border: 1px solid rgba(255,255,255,.15); border-radius: 22px; background: rgba(255,253,249,.98); box-shadow: 0 24px 70px rgba(7,18,30,.3); }
|
|
|
|
|
.login-brand { padding: 0 0 34px; color: var(--navy); }
|
|
|
|
|
.login-card h1 { margin: 4px 0 10px; color: var(--ink-strong); font-size: clamp(30px, 5vw, 42px); letter-spacing: -.055em; }
|
|
|
|
|
.login-subtitle { margin: 0 0 28px; color: var(--muted); font-size: 15px; }
|
|
|
|
|
.login-note { margin: 20px 0 0; color: var(--muted-soft); font-size: 12px; text-align: center; }
|
|
|
|
|
|
|
|
|
|
/* Shell and navigation */
|
|
|
|
|
.app-shell { min-height: 100vh; display: flex; }
|
|
|
|
|
.sidebar { position: fixed; z-index: 20; inset: 0 auto 0 0; width: 254px; display: flex; flex-direction: column; padding: 28px 16px 18px; color: #dce9f0; background: var(--navy); box-shadow: 10px 0 30px rgba(16,42,67,.08); }
|
|
|
|
|
.brand { display: flex; align-items: center; gap: 11px; padding: 0 14px 38px; color: #fff; text-decoration: none; font-size: 21px; font-weight: 800; letter-spacing: -.055em; }
|
|
|
|
|
.brand-mark { width: 30px; height: 30px; display: grid; place-items: center; border-radius: 9px; color: var(--navy); background: var(--accent); font-size: 17px; box-shadow: 0 5px 16px rgba(217,119,50,.32); }
|
|
|
|
|
.brand-light { color: #99b1bf; font-weight: 450; }
|
|
|
|
|
.sidebar nav { display: grid; gap: 4px; }
|
|
|
|
|
.nav-item { display: flex; align-items: center; gap: 12px; padding: 11px 13px; border: 1px solid transparent; border-radius: 10px; color: #a9bdc9; text-decoration: none; font-size: 13px; font-weight: 600; transition: .18s ease; }
|
|
|
|
|
.nav-item span { width: 19px; color: #86a6b8; font-size: 18px; text-align: center; }
|
|
|
|
|
.nav-item:hover, .nav-item.active { color: #fff; background: rgba(255,255,255,.1); border-color: rgba(255,255,255,.1); }
|
|
|
|
|
.nav-item.active { box-shadow: inset 3px 0 var(--accent); }
|
|
|
|
|
.nav-item.active span { color: var(--accent); }
|
|
|
|
|
.sidebar-foot { display: flex; gap: 10px; align-items: flex-start; margin-top: auto; padding: 18px 12px 2px; border-top: 1px solid rgba(255,255,255,.12); font-size: 12px; }
|
|
|
|
|
.sidebar-foot small { display: block; margin-top: 3px; color: #8aa4b2; }
|
|
|
|
|
.live-dot { width: 8px; height: 8px; margin-top: 6px; border-radius: 50%; background: #51c89b; box-shadow: 0 0 0 4px rgba(81,200,155,.16); }
|
|
|
|
|
.main { min-width: 0; flex: 1; margin-left: 254px; }
|
|
|
|
|
.topbar { position: sticky; z-index: 10; top: 0; height: 72px; display: flex; align-items: center; justify-content: space-between; gap: 20px; padding: 0 clamp(22px, 4vw, 58px); border-bottom: 1px solid var(--line); background: rgba(255,253,249,.92); backdrop-filter: blur(12px); }
|
|
|
|
|
.crumb { color: var(--muted); font-size: 13px; font-weight: 600; }
|
|
|
|
|
.crumb span { margin: 0 10px; color: var(--line-strong); }
|
|
|
|
|
.top-actions { display: flex; align-items: center; gap: 16px; }
|
|
|
|
|
.api-status { color: var(--muted); font-size: 12px; font-weight: 650; }
|
|
|
|
|
.api-status.live { color: var(--green); }
|
|
|
|
|
.user-identity { max-width: 210px; overflow: hidden; color: var(--ink); font-size: 12px; font-weight: 650; text-overflow: ellipsis; white-space: nowrap; }
|
|
|
|
|
.icon-button { width: 34px; height: 34px; padding: 0; border: 1px solid var(--line); border-radius: 9px; color: var(--muted); background: var(--surface); font-size: 19px; }
|
|
|
|
|
.logout-button { border: 0; color: var(--muted); background: transparent; font-size: 12px; font-weight: 700; }
|
|
|
|
|
.avatar { width: 34px; height: 34px; display: grid; place-items: center; border-radius: 50%; color: #fff; background: var(--navy-2); font-size: 12px; font-weight: 800; }
|
|
|
|
|
.mobile-menu { display: none; border: 0; color: var(--navy); background: transparent; font-size: 22px; }
|
|
|
|
|
.content { width: min(100%, 1510px); margin: 0 auto; padding: 42px clamp(22px, 4vw, 58px) 28px; }
|
|
|
|
|
|
|
|
|
|
/* Typography and shared panels */
|
|
|
|
|
.eyebrow { margin: 0 0 7px; color: var(--teal); font-size: 10px; font-weight: 850; letter-spacing: .14em; text-transform: uppercase; }
|
|
|
|
|
h1, h2, h3, h4, h5, p { overflow-wrap: anywhere; }
|
|
|
|
|
h1, h2, h3, h4, h5 { color: var(--ink-strong); line-height: 1.15; letter-spacing: -.035em; }
|
|
|
|
|
h2 { font-size: 23px; }
|
|
|
|
|
h3 { font-size: 17px; }
|
|
|
|
|
h4 { font-size: 14px; }
|
|
|
|
|
.muted, .small-label { color: var(--muted); }
|
|
|
|
|
.small-label { font-size: 11px; }
|
|
|
|
|
.optional { color: var(--muted-soft); font-size: 11px; font-weight: 500; }
|
|
|
|
|
.panel { border: 1px solid var(--line); border-radius: var(--radius); background: var(--surface); box-shadow: var(--shadow-sm); }
|
|
|
|
|
.panel-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: 18px; }
|
|
|
|
|
.panel-heading h2, .panel-heading h3 { margin: 2px 0 0; }
|
|
|
|
|
.button { min-height: 38px; display: inline-flex; align-items: center; justify-content: center; gap: 7px; padding: 9px 14px; border: 1px solid var(--line-strong); border-radius: 9px; color: var(--ink); background: var(--surface); font-size: 12px; font-weight: 750; transition: .18s ease; }
|
|
|
|
|
.button:hover { transform: translateY(-1px); border-color: var(--navy-3); box-shadow: var(--shadow-sm); }
|
|
|
|
|
.button.primary { border-color: var(--accent); color: #fff; background: var(--accent); }
|
|
|
|
|
.button.primary:hover { border-color: var(--accent-dark); background: var(--accent-dark); }
|
|
|
|
|
.button.ghost { background: transparent; }
|
|
|
|
|
.button.danger { border-color: #e5abb2; color: var(--red); background: var(--red-soft); }
|
|
|
|
|
.button.compact { min-height: 30px; padding: 6px 10px; border-radius: 7px; font-size: 11px; }
|
|
|
|
|
.form-message { min-height: 18px; margin: 8px 0; color: var(--green); font-size: 12px; }
|
|
|
|
|
.form-message.error, .detail-error { color: var(--red); }
|
|
|
|
|
|
|
|
|
|
/* Dashboard hierarchy */
|
|
|
|
|
.hero { display: flex; align-items: flex-end; justify-content: space-between; gap: 28px; margin-bottom: 28px; }
|
|
|
|
|
.hero h1 { margin: 0; font-size: clamp(30px, 4vw, 46px); }
|
|
|
|
|
.hero h1 span { color: var(--accent); font-size: .7em; }
|
|
|
|
|
.hero-sub { margin: 11px 0 0; color: var(--muted); font-size: 15px; }
|
|
|
|
|
.hero-sub strong { color: var(--ink); }
|
|
|
|
|
.metrics { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 12px; }
|
|
|
|
|
.metric-card { min-width: 0; display: flex; gap: 13px; align-items: flex-start; padding: 17px; border: 1px solid var(--line); border-radius: var(--radius); background: var(--surface); box-shadow: var(--shadow-sm); transition: .18s ease; }
|
|
|
|
|
.metric-card:hover { transform: translateY(-2px); border-color: #b5c9d5; box-shadow: var(--shadow); }
|
|
|
|
|
.metric-icon { width: 35px; height: 35px; display: grid; place-items: center; flex: 0 0 auto; border-radius: 10px; color: var(--navy); background: var(--blue-soft); font-size: 19px; }
|
|
|
|
|
.metric-icon.violet, .metric-icon.blue { color: var(--navy-2); background: var(--blue-soft); }
|
|
|
|
|
.metric-icon.amber { color: var(--amber); background: var(--amber-soft); }
|
|
|
|
|
.metric-icon.green { color: var(--green); background: var(--green-soft); }
|
|
|
|
|
.metric-card p { margin: 0 0 3px; color: var(--muted); font-size: 11px; font-weight: 650; }
|
|
|
|
|
.metric-card h2 { margin: 0 0 5px; font-size: 27px; }
|
|
|
|
|
.trend { font-size: 10px; font-weight: 650; }
|
|
|
|
|
.score-overview { margin-top: 18px; }
|
|
|
|
|
.score-distribution-panel, .score-rules-section .panel { padding: 20px; }
|
|
|
|
|
.score-distribution-list { display: grid; gap: 13px; margin-top: 18px; }
|
|
|
|
|
.distribution-row { display: grid; grid-template-columns: minmax(120px, 1fr) 42px minmax(120px, 2fr); gap: 12px; align-items: center; color: var(--muted); font-size: 12px; }
|
|
|
|
|
.distribution-row strong { color: var(--ink); text-align: right; }
|
|
|
|
|
.distribution-track, .progress-track { height: 8px; overflow: hidden; border-radius: 99px; background: #e9eef0; }
|
|
|
|
|
.distribution-track i, .progress-track span { display: block; height: 100%; border-radius: inherit; background: linear-gradient(90deg, var(--teal), var(--accent)); }
|
|
|
|
|
.score-safety, .score-config-note, .crm-safety, .outreach-safety, .outreach-settings-safety, .contact-extraction-safety, .website-scan-safety, .domain-safety { border: 1px solid #c8e2de; border-radius: 9px; color: #216765; background: var(--teal-soft); padding: 10px 12px; font-size: 12px; }
|
|
|
|
|
|
|
|
|
|
/* Forms, filters, tables */
|
|
|
|
|
.workspace-grid { display: grid; grid-template-columns: minmax(0, 1.5fr) minmax(330px, .8fr); gap: 18px; margin-top: 18px; scroll-margin-top: 90px; }
|
|
|
|
|
.explorer-panel { min-width: 0; padding: 20px; }
|
|
|
|
|
.filters { display: grid; grid-template-columns: minmax(210px, 1.5fr) repeat(4, minmax(120px, 1fr)); gap: 8px; margin: 20px 0 12px; }
|
|
|
|
|
.search-wrap { position: relative; display: flex; align-items: center; }
|
|
|
|
|
.search-wrap span { position: absolute; left: 11px; color: var(--muted-soft); font-size: 18px; }
|
|
|
|
|
.search-wrap input { padding-left: 34px !important; }
|
|
|
|
|
input, select, textarea { width: 100%; min-height: 39px; border: 1px solid var(--line-strong); border-radius: 8px; padding: 9px 11px; color: var(--ink); background: #fff; }
|
|
|
|
|
input::placeholder, textarea::placeholder { color: #9aa7b0; }
|
|
|
|
|
label { display: grid; gap: 6px; color: var(--ink); font-size: 12px; font-weight: 700; }
|
|
|
|
|
.form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
|
|
|
|
|
.form-footer { display: flex; align-items: center; justify-content: space-between; gap: 14px; margin-top: 17px; }
|
|
|
|
|
.form-footer .form-message { flex: 1; }
|
|
|
|
|
.saved-view-controls { display: grid; grid-template-columns: minmax(220px, 1fr) 180px auto; gap: 8px; align-items: center; padding: 12px 0; border-top: 1px solid var(--line); }
|
|
|
|
|
.saved-view-controls .form-message { grid-column: 1 / -1; margin: 0; }
|
|
|
|
|
.inline-form, .compact-form { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
|
|
|
|
|
.inline-form input, .inline-form select, .compact-form input, .compact-form textarea { flex: 1; min-width: 130px; }
|
|
|
|
|
.review-queue { margin: 6px 0 16px; padding: 15px; border: 1px solid #d7e5e5; border-radius: 11px; background: #f7fbfa; }
|
|
|
|
|
.queue-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; }
|
|
|
|
|
.queue-heading h3 { margin: 0; }
|
|
|
|
|
.queue-list { display: grid; gap: 6px; max-height: 300px; margin-top: 10px; overflow: auto; }
|
|
|
|
|
.queue-row { display: flex; align-items: center; gap: 10px; padding: 9px; border: 1px solid var(--line); border-radius: 8px; background: var(--surface); }
|
|
|
|
|
.queue-row input { width: auto; min-height: 0; }
|
|
|
|
|
.queue-row > span:nth-child(2) { display: flex; flex: 1; min-width: 0; flex-direction: column; }
|
|
|
|
|
.queue-row small, .company-sub { overflow: hidden; color: var(--muted); font-size: 11px; text-overflow: ellipsis; white-space: nowrap; }
|
|
|
|
|
.bulk-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-top: 12px; padding-top: 11px; border-top: 1px solid var(--line); }
|
|
|
|
|
.checkbox-label { display: flex; flex-direction: row; align-items: center; gap: 8px; margin-top: 12px; }
|
|
|
|
|
.checkbox-label input { width: auto; min-height: 0; }
|
|
|
|
|
.table-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 13px; margin: 13px 0; color: var(--muted); font-size: 11px; }
|
|
|
|
|
.table-meta > span:first-child { margin-right: auto; color: var(--ink); font-weight: 700; }
|
|
|
|
|
.legend { display: inline-flex; align-items: center; gap: 5px; }
|
|
|
|
|
.legend-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--teal); }
|
|
|
|
|
.review-dot { background: var(--amber); }
|
|
|
|
|
.page-size { display: flex; align-items: center; gap: 5px; color: var(--muted); }
|
|
|
|
|
.page-size select { width: auto; min-height: 29px; padding: 4px 7px; }
|
|
|
|
|
.table-scroll { width: 100%; overflow-x: auto; }
|
|
|
|
|
table { width: 100%; border-collapse: collapse; text-align: left; }
|
|
|
|
|
th { padding: 11px 9px; color: var(--muted); background: var(--surface-alt); font-size: 10px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
|
|
|
|
|
td { padding: 13px 9px; border-top: 1px solid var(--line); vertical-align: middle; }
|
|
|
|
|
tbody tr { transition: .15s ease; }
|
|
|
|
|
tbody tr:hover, tbody tr.selected { background: #f4f9f8; }
|
|
|
|
|
td:first-child { color: var(--ink-strong); font-weight: 750; }
|
|
|
|
|
.row-arrow { color: var(--muted-soft); font-size: 22px; text-align: right; }
|
|
|
|
|
.score, .status, .fresh, .match-confidence, .outcome-chip, .website-status, .job-row-state, .source-status, .provider-status, .ai-status, .outreach-status, .domain-state { display: inline-flex; align-items: center; width: fit-content; border-radius: 999px; padding: 4px 8px; font-size: 11px; font-weight: 800; white-space: nowrap; }
|
|
|
|
|
.score { color: var(--navy-2); background: var(--blue-soft); }
|
|
|
|
|
.score.high { color: var(--green); background: var(--green-soft); }
|
|
|
|
|
.score.medium, .status.review, .fresh.stale, .job-row-state.queued, .job-row-state.cancelled, .domain-state { color: var(--amber); background: var(--amber-soft); }
|
|
|
|
|
.score.low, .status.suppressed, .source-status.disabled, .job-row-state.failed, .ai-status.rejected, .ai-status.error, .ai-status.suppressed, .outreach-status.blocked, .outreach-status.suppressed { color: var(--red); background: var(--red-soft); }
|
|
|
|
|
.status.reviewed, .fresh.good, .source-status.enabled, .job-row-state.succeeded, .ai-status.approved, .outreach-status.approved { color: var(--green); background: var(--green-soft); }
|
|
|
|
|
|
|
|
|
|
/* Detail and intelligence cards */
|
|
|
|
|
.detail-panel { min-width: 0; min-height: 430px; padding: 20px; }
|
|
|
|
|
.empty-detail { display: grid; place-items: center; min-height: 380px; padding: 20px; color: var(--muted); text-align: center; }
|
|
|
|
|
.empty-detail h3 { margin: 12px 0 5px; }
|
|
|
|
|
.empty-icon { width: 50px; height: 50px; display: grid; place-items: center; border-radius: 15px; color: var(--teal); background: var(--teal-soft); font-size: 26px; }
|
|
|
|
|
.detail-head, .job-detail-head, .domain-panel-heading, .website-scan-heading, .contact-extraction-heading, .ai-panel-heading, .outreach-panel-heading, .dedup-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; }
|
|
|
|
|
.detail-head h3, .job-detail-head h3 { margin: 2px 0 3px; font-size: 21px; }
|
|
|
|
|
.detail-domain { margin: 0; color: var(--muted); font-size: 12px; }
|
|
|
|
|
.detail-score { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin: 18px 0; padding: 15px; border: 1px solid var(--line); border-radius: 10px; background: var(--surface-alt); }
|
|
|
|
|
.detail-score small { display: block; color: var(--muted); font-size: 10px; }
|
|
|
|
|
.detail-score b { display: block; margin-top: 3px; color: var(--ink-strong); font-size: 30px; }
|
|
|
|
|
.detail-score b small { display: inline; margin-left: 3px; font-size: 12px; }
|
|
|
|
|
.detail-block { padding: 17px 0; border-top: 1px solid var(--line); }
|
|
|
|
|
.detail-block h4 { margin: 0 0 10px; }
|
|
|
|
|
.detail-list { margin: 7px 0 13px; padding-left: 18px; }
|
|
|
|
|
.detail-list li { margin: 5px 0; }
|
|
|
|
|
.score-breakdown-panel, .ai-assistance-panel, .outreach-panel { padding: 15px; border-radius: 10px; background: #f8fbfa; }
|
|
|
|
|
.score-breakdown-summary { display: grid; grid-template-columns: 1.4fr 1fr 1fr; gap: 8px; margin: 13px 0; }
|
|
|
|
|
.score-breakdown-summary > div, .score-meta div, .source-facts div, .extracted-contact-facts div, .dns-capabilities div, .website-scan-grid > div, .provider-policy-row dl div { padding: 9px; border: 1px solid var(--line); border-radius: 8px; background: #fff; }
|
|
|
|
|
.score-breakdown-summary small, .score-meta dt, .source-facts dt, .extracted-contact-facts dt, .dns-capabilities dt, .website-scan-grid dt, .provider-policy-row dt { color: var(--muted); font-size: 10px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; }
|
|
|
|
|
.score-total { display: block; margin-top: 4px; font-size: 27px; }
|
|
|
|
|
.score-total small { display: inline; margin-left: 3px; font-size: 12px; }
|
|
|
|
|
.score-meta { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin: 0; }
|
|
|
|
|
.score-meta dd, .source-facts dd, .extracted-contact-facts dd, .dns-capabilities dd, .website-scan-grid dd { margin: 4px 0 0; overflow-wrap: anywhere; }
|
|
|
|
|
.score-rules-explanation { margin-top: 14px; }
|
|
|
|
|
.score-rules-explanation h5 { margin: 0 0 7px; }
|
|
|
|
|
.score-rule-row { display: grid; grid-template-columns: minmax(0,1fr) auto; gap: 3px 8px; padding: 10px 0; border-top: 1px solid var(--line); }
|
|
|
|
|
.score-rule-row strong { color: var(--teal); font-size: 12px; }
|
|
|
|
|
.score-rule-row small { grid-column: 1 / -1; color: var(--muted); }
|
|
|
|
|
.score-config-row { display: grid; grid-template-columns: minmax(140px,1.4fr) .8fr .7fr .7fr auto; gap: 10px; align-items: center; padding: 11px 0; border-bottom: 1px solid var(--line); }
|
|
|
|
|
.score-config-row span:nth-child(2) { color: var(--green); font-weight: 750; }
|
|
|
|
|
.detail-loading { padding: 28px 4px; color: var(--muted); }
|
|
|
|
|
.detail-error { padding: 18px 4px; }
|
|
|
|
|
|
|
|
|
|
/* Operations */
|
|
|
|
|
.jobs-section, .sources-section, .crm-section, .lower-grid, .score-rules-section { margin-top: 28px; scroll-margin-top: 90px; }
|
|
|
|
|
.jobs-header, .sources-header, .crm-header { display: flex; align-items: flex-start; justify-content: space-between; gap: 22px; padding: 20px; }
|
|
|
|
|
.jobs-header h2, .sources-header h2, .crm-header h2, .add-panel h2, .csv-panel h2 { margin: 2px 0 5px; }
|
|
|
|
|
.jobs-header p, .sources-header p, .crm-header p { margin: 4px 0 0; }
|
|
|
|
|
.jobs-actions, .crm-actions, .discovery-actions, .website-scan-actions, .contact-extraction-actions, .ai-actions { display: flex; flex-wrap: wrap; gap: 8px; }
|
|
|
|
|
.jobs-message, .sources-message, .crm-message { min-height: 24px; padding: 8px 2px; color: var(--green); font-size: 12px; }
|
|
|
|
|
.jobs-message.error, .sources-message.error, .crm-message.error { color: var(--red); }
|
|
|
|
|
.job-counts { display: grid; grid-template-columns: repeat(5, 1fr); gap: 10px; margin-bottom: 14px; }
|
|
|
|
|
.job-count { padding: 14px; border: 1px solid var(--line); border-top: 3px solid var(--navy-3); border-radius: 10px; background: var(--surface); box-shadow: var(--shadow-sm); }
|
|
|
|
|
.job-count span { display: block; color: var(--muted); font-size: 11px; }
|
|
|
|
|
.job-count strong { display: block; margin-top: 4px; font-size: 25px; }
|
|
|
|
|
.job-count.queued { border-top-color: var(--amber); }.job-count.running { border-top-color: var(--blue); }.job-count.succeeded { border-top-color: var(--green); }.job-count.failed { border-top-color: var(--red); }.job-count.cancelled { border-top-color: var(--muted-soft); }
|
|
|
|
|
.jobs-grid, .sources-grid, .crm-two-col { display: grid; grid-template-columns: minmax(0, 1.08fr) minmax(300px, .92fr); gap: 18px; }
|
|
|
|
|
.jobs-list, .job-detail, .sources-list, .source-records, .source-config-panel, .discovery-panel, .add-panel, .csv-panel, .interaction-panel, .reports-grid > article { min-width: 0; padding: 20px; }
|
|
|
|
|
.jobs-list-body, .sources-list-body, .source-records-body { margin-top: 17px; border-top: 1px solid var(--line); }
|
|
|
|
|
.job-row { width: 100%; display: grid; grid-template-columns: minmax(0,1fr) auto 42px; gap: 12px; align-items: center; padding: 13px 0; border: 0; border-bottom: 1px solid var(--line); color: inherit; background: transparent; text-align: left; }
|
|
|
|
|
.job-row:hover, .job-row.selected { background: #f4f9f8; }
|
|
|
|
|
.job-row-main { display: flex; min-width: 0; flex-direction: column; gap: 3px; }.job-row-main strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }.job-row-main small, .job-row-progress { color: var(--muted); font-size: 11px; }
|
|
|
|
|
.job-row-state.running { color: var(--blue); background: var(--blue-soft); }.job-row-state { color: var(--navy-2); background: var(--blue-soft); }
|
|
|
|
|
.job-empty, .source-empty, .crm-empty { padding: 34px 16px; color: var(--muted); text-align: center; }
|
|
|
|
|
.job-detail { min-height: 320px; }.job-progress { margin: 20px 0; }.job-progress-meta { display: flex; justify-content: space-between; gap: 10px; margin-bottom: 8px; color: var(--muted); font-size: 11px; }.job-progress-meta strong { color: var(--ink); }
|
|
|
|
|
.event-timeline, .crm-timeline { margin-top: 20px; }.event-timeline h4 { margin-bottom: 10px; }.event-timeline ol, .crm-timeline { display: grid; gap: 15px; margin: 0; padding: 0; list-style: none; }.event-timeline li, .crm-timeline li { display: flex; gap: 10px; }.timeline-dot { width: 8px; height: 8px; flex: 0 0 auto; margin-top: 6px; border-radius: 50%; background: var(--teal); box-shadow: 0 0 0 4px var(--teal-soft); }.event-timeline small, .crm-timeline small { display: block; color: var(--muted); font-size: 11px; }
|
|
|
|
|
.source-safety, .suppression-warning { margin: 14px 0; padding: 12px 15px; border: 1px solid #ead6a9; border-radius: 9px; color: #77500c; background: var(--amber-soft); font-size: 12px; }.source-row { display: grid; grid-template-columns: minmax(170px,1fr) auto; gap: 12px 18px; padding: 16px 0; border-top: 1px solid var(--line); }.source-row-main { display: flex; min-width: 0; flex-direction: column; gap: 3px; }.source-row-main strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }.source-row-main small { color: var(--muted); font-size: 11px; }.source-facts { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; margin: 0; }.source-actions { grid-column: 1 / -1; display: flex; gap: 7px; }.csv-panel .panel-heading { align-items: center; }.upload-label { cursor: pointer; }.csv-empty { display: grid; place-items: center; min-height: 160px; margin-top: 17px; border: 1px dashed var(--line-strong); border-radius: 10px; color: var(--muted); text-align: center; }.csv-empty span { font-size: 28px; color: var(--teal); }.csv-empty p { margin: 6px 0; }.csv-empty small { font-size: 11px; }.csv-table { margin-top: 17px; overflow: auto; }.csv-table table { min-width: 480px; }
|
|
|
|
|
|
|
|
|
|
/* CRM and evidence modules */
|
|
|
|
|
.pipeline-board { display: grid; grid-template-columns: repeat(4, minmax(190px, 1fr)); gap: 11px; overflow-x: auto; align-items: start; }.pipeline-column { min-height: 180px; padding: 11px; border: 1px solid var(--line); border-radius: 11px; background: #e9eeed; }.pipeline-column-head { display: flex; align-items: center; justify-content: space-between; }.pipeline-column-head h3 { margin: 0; font-size: 13px; }.pipeline-card { margin: 8px 0; padding: 11px; border: 1px solid var(--line); border-radius: 9px; background: var(--surface); box-shadow: var(--shadow-sm); }.pipeline-card.is-suppressed { border-color: #e2a9b0; background: #fff7f7; }.pipeline-card-link { display: grid; width: 100%; gap: 4px; padding: 0; border: 0; color: inherit; background: none; text-align: left; }.pipeline-card-link small, .pipeline-card-link .score { font-size: 11px; color: var(--muted); }.pipeline-card-actions { display: flex; gap: 6px; margin-top: 9px; }.pipeline-card-actions select { min-width: 0; padding: 6px; font-size: 11px; }.pipeline-list { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 10px; }.pipeline-list-view { display: block; }.crm-column-empty { padding: 20px 8px; color: var(--muted); font-size: 11px; text-align: center; }.crm-timeline .outcome-chip { margin-left: 7px; color: var(--navy-2); background: var(--blue-soft); }.crm-timeline p { margin: 5px 0; }.reports-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; }.report-panel { min-height: 190px; }.report-rows { display: grid; gap: 7px; margin-top: 15px; }.report-rows > div { display: flex; justify-content: space-between; gap: 10px; padding: 8px 0; border-bottom: 1px solid var(--line); }.report-rows strong { color: var(--teal); }.report-note { color: var(--muted); font-size: 11px; }.suppression-list { display: grid; gap: 8px; }.suppression-row { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 10px; border: 1px solid var(--line); border-radius: 8px; }.suppression-row .checkbox-label { flex: 1; margin: 0; }.suppression-row .checkbox-label > span { display: flex; min-width: 0; flex-direction: column; }.suppression-row small { color: var(--muted); }.provider-policy-panel { display: grid; gap: 10px; }.provider-policy-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 12px; padding: 14px; border: 1px solid var(--line); border-radius: 10px; background: var(--surface); }.provider-policy-row strong { display: block; }.provider-policy-row small { color: var(--muted); }.provider-policy-row dl { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; margin: 0; }.provider-policy-row dd { margin: 3px 0 0; }.provider-state { padding: 20px 4px; color: var(--muted); }.provider-state strong { color: var(--ink); }.provider-state.error strong { color: var(--red); }
|
|
|
|
|
.website-scan-panel, .domain-intelligence, .contact-extraction-panel { margin-top: 14px; padding: 15px; border: 1px solid var(--line); border-radius: 10px; background: #f8fbfa; }.website-scan-meta, .domain-check-meta { display: flex; flex-wrap: wrap; gap: 9px; align-items: center; margin: 12px 0; color: var(--muted); font-size: 11px; }.website-scan-meta > span { display: flex; align-items: center; gap: 6px; }.website-scan-grid { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 8px; }.website-contact-signals { margin-top: 13px; }.website-contact-signals h5 { margin: 0 0 8px; }.signal-list { display: grid; grid-template-columns: repeat(3, 1fr); gap: 7px; }.signal { display: grid; gap: 2px; padding: 8px; border: 1px solid var(--line); border-radius: 8px; color: var(--muted); background: #fff; font-size: 11px; }.signal b { color: var(--ink); font-size: 10px; }.signal.present b { color: var(--green); }.signal.absent b { color: var(--red); }.website-scan-error, .structured-error { margin: 10px 0; padding: 10px; border: 1px solid #e9b8bd; border-radius: 8px; color: var(--red); background: var(--red-soft); font-size: 12px; }.dns-capabilities { display: grid; grid-template-columns: repeat(5, 1fr); gap: 7px; margin: 0; }.candidate-domain-panel, .merge-history { margin-top: 15px; padding-top: 15px; border-top: 1px solid var(--line); }.candidate-list, .match-list, .extracted-contact-list { display: grid; gap: 9px; margin-top: 10px; }.candidate-card, .match-card, .extracted-contact { padding: 11px; border: 1px solid var(--line); border-radius: 9px; background: #fff; }.candidate-head, .match-card-head, .extracted-contact-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; }.match-confidence, .contact-confidence { color: var(--teal); background: var(--teal-soft); }.match-reasons { margin: 8px 0; padding-left: 17px; color: var(--muted); font-size: 12px; }.extracted-contact-facts { display: grid; grid-template-columns: repeat(4, 1fr); gap: 7px; margin: 10px 0 0; }.contact-source { grid-column: 1 / -1; }.extracted-contact-facts a { color: var(--teal); }.dedup-panel { margin-top: 14px; padding: 15px; border: 1px solid var(--line); border-radius: 10px; background: #f8fbfa; }.merge-dialog { position: fixed; z-index: 50; inset: 0; display: grid; place-items: center; padding: 22px; background: rgba(13,27,42,.62); }.merge-dialog-card { width: min(100%, 540px); padding: 22px; border: 1px solid var(--line); border-radius: 15px; background: var(--surface); box-shadow: 0 25px 80px rgba(13,27,42,.3); }.merge-dialog-card h2 { margin: 2px 0; }.merge-warning { margin: 15px 0; padding: 12px; border: 1px solid #ead6a9; border-radius: 9px; color: #77500c; background: var(--amber-soft); font-size: 12px; }.merge-dialog-actions { display: flex; justify-content: flex-end; gap: 8px; margin-top: 18px; }
|
|
|
|
|
.lower-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 18px; }.add-panel, .csv-panel { padding: 20px; }
|
|
|
|
|
footer { display: flex; justify-content: space-between; gap: 16px; margin-top: 34px; padding: 20px 0 5px; border-top: 1px solid var(--line); color: var(--muted); font-size: 12px; } footer a { color: var(--teal); font-weight: 700; }
|
|
|
|
|
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }
|
|
|
|
|
|
|
|
|
|
@media (max-width: 1100px) { .metrics { grid-template-columns: repeat(3, 1fr); } .filters { grid-template-columns: repeat(3, 1fr); } .filters .search-wrap { grid-column: 1 / -1; } .workspace-grid { grid-template-columns: 1fr; } .detail-panel { min-height: 0; } .reports-grid { grid-template-columns: 1fr 1fr; } }
|
|
|
|
|
@media (max-width: 820px) { .sidebar { width: 224px; } .main { margin-left: 224px; } .top-actions { gap: 9px; } .user-identity { display: none; } .jobs-grid, .sources-grid, .crm-two-col, .lower-grid { grid-template-columns: 1fr; } .pipeline-board { grid-template-columns: repeat(4, minmax(180px, 1fr)); } }
|
|
|
|
|
@media(max-width:700px) { .sidebar { width: min(286px, 86vw); transform: translateX(-105%); transition: transform .2s ease; } .sidebar.open { transform: translateX(0); } .main { margin-left: 0; } .mobile-menu { display: block; } .topbar { padding: 0 18px; } .crumb { display: none; } .top-actions { margin-left: auto; } .api-status { display: none; } .content { padding: 28px 16px 20px; } .hero { align-items: flex-start; flex-direction: column; margin-bottom: 22px; } .hero .button { width: 100%; } .metrics { grid-template-columns: repeat(2, minmax(0,1fr)); gap: 8px; } .metric-card { padding: 13px; gap: 9px; } .metric-icon { width: 30px; height: 30px; font-size: 16px; } .metric-card h2 { font-size: 23px; } .filters { grid-template-columns: 1fr; } .filters .search-wrap { grid-column: auto; } .saved-view-controls { grid-template-columns: 1fr; } .saved-view-controls .inline-form { display: flex; } .saved-view-controls .inline-form input { flex: 1; } .form-grid, .score-breakdown-summary, .score-meta { grid-template-columns: 1fr; } .form-footer, .jobs-header, .sources-header, .crm-header, .panel-heading { align-items: stretch; flex-direction: column; } .form-footer .button, .jobs-actions .button, .crm-actions .button, .website-scan-actions .button, .contact-extraction-actions .button { width: 100%; } .table-meta { align-items: flex-start; flex-direction: column; } .table-meta > span:first-child { margin-right: 0; } .source-facts, .provider-policy-row dl { grid-template-columns: repeat(2, 1fr); } .provider-policy-row { grid-template-columns: 1fr; } .provider-policy-row .provider-status { justify-self: start; } .reports-grid { grid-template-columns: 1fr; } .website-scan-grid { grid-template-columns: 1fr; } .signal-list { grid-template-columns: repeat(2, 1fr); } .dns-capabilities { grid-template-columns: repeat(2, 1fr); } .dns-capabilities div:last-child { grid-column: 1 / -1; } .extracted-contact-facts { grid-template-columns: repeat(2, 1fr); } .contact-source { grid-column: 1 / -1; } .score-config-row { grid-template-columns: 1fr 1fr; } .score-config-row strong { grid-column: 1 / -1; } .pipeline-board { grid-template-columns: repeat(4, minmax(210px, 1fr)); } footer { align-items: flex-start; flex-direction: column; } .login-card { padding: 30px 24px; } }
|
|
|
|
|
@media (prefers-reduced-motion: reduce) { *, *::before, *::after { scroll-behavior: auto !important; transition: none !important; } }
|