updated_mongodb_p / frontend /src /styles /analytics.css
ape-dev
Add domain scope selector to analytics dashboard
e9167cb
Raw
History Blame Contribute Delete
48.5 kB
/* =========================================================================
APE Analytics — Claude Desktop palette (matches /chat and /admin)
Color semantics:
--primary (orange) → brand · used for emphasis, score bars, primary CTA
--pos (green) → HIGH confidence, contact-ready, eligible offers
--neg (red) → friction, ineligible, low rewards
--muted (gray) → LOW confidence, cold-start, no-data states
========================================================================= */
.analytics-body {
min-height: 100vh;
background: var(--bg);
color: var(--text);
font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}
/* ─────────────────────────────────────────────────────────────────────
* Analytics-specific header overrides
* (Shared chrome — .app-header, .app-brand, .app-tabs, .btn-text — lives
* in app-shell.css. This block only adds analytics-only toolbar bits.)
* ──────────────────────────────────────────────────────────────────── */
/* Toolbar row: date filter + user search + freshness */
.analytics-toolbar .date-filter { flex-shrink: 0; }
.analytics-toolbar .domain-filter { flex-shrink: 0; }
/* Domain scope selector — mirrors the date-filter chrome */
.domain-filter {
display: inline-flex;
align-items: center;
gap: 6px;
background: var(--surface);
border: 1px solid var(--border);
border-radius: var(--radius-sm);
padding: 2px 6px 2px 8px;
}
.domain-filter-label {
color: var(--muted);
font-size: 9.5px;
text-transform: uppercase;
letter-spacing: 0.08em;
font-weight: 600;
}
.domain-filter-select {
border: none;
background: transparent;
font-family: inherit;
font-size: 12.5px;
font-weight: 500;
color: var(--text);
cursor: pointer;
padding: 4px 2px;
outline: none;
}
.analytics-toolbar .user-search-wrap {
flex: 1;
max-width: 480px;
}
.analytics-meta {
margin-left: auto;
font-size: 11.5px;
color: var(--muted);
font-variant-numeric: tabular-nums;
white-space: nowrap;
flex-shrink: 0;
}
.analytics-meta .last-refresh,
.analytics-meta .last-recompute { font-size: 11.5px; }
/* Backward-compat for legacy classnames in older templates */
.btn-secondary.btn-tiny {
background: var(--surface);
color: var(--text);
border: 1px solid var(--border-strong);
border-radius: var(--radius-sm);
padding: 6px 12px;
font-size: 12px;
font-weight: 500;
cursor: pointer;
font-family: inherit;
line-height: 1.2;
transition: background 0.12s, border-color 0.12s, color 0.12s;
white-space: nowrap;
}
.btn-secondary.btn-tiny:hover:not(:disabled) {
background: var(--primary);
border-color: var(--primary);
color: var(--primary-fg);
}
.btn-secondary.btn-tiny:disabled { opacity: 0.5; cursor: not-allowed; }
/* ---------- Content quality section (Content tab) ---------- */
.section-content-quality .content-quality-stack {
display: flex;
flex-direction: column;
gap: 18px;
margin-top: 10px;
}
/* Add a subtle visual differentiator between the two stacked panels */
.section-content-quality .content-quality-stack > div {
background: var(--surface);
border-radius: var(--radius-md);
box-shadow: var(--shadow-sm);
}
.section-content-quality .iq-panel {
border-left-width: 4px;
}
/* Tab styling moved to app-shell.css (.app-tabs / .app-tab) */
/* Smooth fade-in when switching tabs */
.analytics-main > * {
animation: tabfade 0.18s ease-out;
}
@keyframes tabfade {
from { opacity: 0; transform: translateY(4px); }
to { opacity: 1; transform: translateY(0); }
}
/* ---------- Date filter (compact, lives in header toolbar) ---------- */
.filter-row { margin-top: 14px; }
.date-filter {
display: inline-flex;
align-items: center;
gap: 2px;
background: var(--surface);
border: 1px solid var(--border);
border-radius: var(--radius-sm);
padding: 2px;
flex-shrink: 0;
}
.date-filter-label {
color: var(--muted);
font-size: 9.5px;
text-transform: uppercase;
letter-spacing: 0.08em;
font-weight: 600;
padding: 0 8px 0 6px;
}
.date-pill {
background: transparent;
color: var(--text-secondary);
border: none;
padding: 4px 10px;
border-radius: 4px;
font-size: 12px;
font-weight: 500;
cursor: pointer;
font-family: inherit;
line-height: 1.2;
transition: background 0.12s, color 0.12s;
}
.date-pill:hover {
color: var(--text);
background: var(--bg);
}
.date-pill.active {
background: var(--primary);
color: var(--primary-fg);
font-weight: 600;
}
/* ---------- InfoHint (ⓘ tooltip helper) ---------- */
.info-hint {
position: relative;
display: inline-flex;
align-items: center;
margin-left: 4px;
vertical-align: baseline;
}
.info-hint-icon {
display: inline-flex;
align-items: center;
justify-content: center;
width: 14px;
height: 14px;
border: 1px solid var(--muted);
color: var(--muted);
background: transparent;
border-radius: 50%;
font-size: 9.5px;
font-weight: 700;
font-family: "Georgia", serif;
font-style: italic;
cursor: help;
padding: 0;
line-height: 1;
transition: border-color 0.15s, color 0.15s, background 0.15s;
}
.info-hint-icon:hover,
.info-hint-icon[aria-expanded="true"] {
background: var(--primary);
border-color: var(--primary);
color: var(--primary-fg);
}
.info-hint-bubble {
position: absolute;
top: calc(100% + 6px);
background: var(--text);
color: var(--bg);
padding: 10px 12px;
border-radius: var(--radius-md);
font-size: 12px;
line-height: 1.5;
font-weight: 400;
letter-spacing: 0;
text-transform: none;
box-shadow: var(--shadow-md);
z-index: 100;
font-family: "Inter", sans-serif;
}
.info-hint-bubble.align-left { left: 0; }
.info-hint-bubble.align-right { right: 0; }
.info-hint-bubble code {
background: rgba(255, 255, 255, 0.1);
color: #f4e0c7;
padding: 0 4px;
border-radius: 3px;
font-size: 11px;
font-family: "JetBrains Mono", monospace;
}
.info-hint-bubble strong {
color: #fff;
}
/* ---------- Inspect row (search input + freshness timestamps) ---------- */
.inspect-row {
display: flex;
align-items: center;
gap: 12px;
margin-top: 12px;
font-size: 13px;
color: var(--text-secondary);
flex-wrap: wrap;
}
.user-search {
position: relative; /* dropdown anchors to this */
display: inline-flex;
align-items: center;
gap: 6px;
background: var(--surface);
border: 1px solid var(--border);
border-radius: var(--radius-sm);
padding: 3px 6px 3px 10px;
min-width: 280px;
max-width: 420px;
flex: 1;
transition: border-color 0.12s, box-shadow 0.12s;
}
.user-search:focus-within {
border-color: var(--primary);
box-shadow: 0 0 0 3px var(--accent-soft);
}
.user-search.is-global {
background: linear-gradient(180deg, #f4efe8, var(--surface));
border-color: #e6ddd0;
}
.user-search-icon {
color: var(--muted);
font-size: 12px;
line-height: 1;
user-select: none;
}
.user-search-input {
flex: 1;
background: transparent;
border: none;
outline: none;
color: var(--text);
font-size: 13px;
font-family: inherit;
min-width: 0;
padding: 4px 0;
}
.user-search-input::placeholder {
color: var(--muted);
}
.user-search-name {
background: var(--accent-soft);
color: var(--primary);
border-radius: var(--radius-pill);
padding: 2px 10px;
font-weight: 600;
font-size: 12px;
white-space: nowrap;
}
.user-search-scope {
color: var(--muted);
font-size: 10.5px;
text-transform: uppercase;
letter-spacing: 0.06em;
font-weight: 600;
white-space: nowrap;
padding-left: 4px;
border-left: 1px solid var(--border);
margin-left: 2px;
}
.user-search.is-global .user-search-scope {
color: var(--pos);
}
/* Apply / clear buttons inside the search */
.user-search-apply {
background: var(--primary);
color: var(--primary-fg);
border: none;
border-radius: var(--radius-sm);
padding: 5px 12px;
font-size: 12.5px;
font-weight: 600;
font-family: inherit;
cursor: pointer;
transition: background 0.15s;
}
.user-search-apply:hover {
background: var(--primary-hover);
}
.user-search-clear {
background: transparent;
color: var(--muted);
border: 1px solid transparent;
border-radius: 50%;
width: 22px;
height: 22px;
font-size: 18px;
line-height: 1;
cursor: pointer;
font-family: inherit;
display: inline-flex;
align-items: center;
justify-content: center;
padding: 0;
transition: background 0.15s, color 0.15s;
}
.user-search-clear:hover {
background: var(--secondary);
color: var(--danger);
}
/* ---- Autocomplete dropdown ---- */
.user-search-dropdown {
position: absolute;
top: calc(100% + 4px);
left: 0;
right: 0;
background: var(--surface);
border: 1px solid var(--border-strong);
border-radius: var(--radius-md);
box-shadow: var(--shadow-md);
list-style: none;
margin: 0;
padding: 4px 0;
max-height: 320px;
overflow-y: auto;
z-index: 50;
}
.user-search-option {
display: grid;
grid-template-columns: minmax(0, 1fr) auto auto auto;
align-items: center;
gap: 10px;
padding: 8px 12px;
cursor: pointer;
font-size: 13px;
transition: background 0.1s;
}
.user-search-option.active,
.user-search-option:hover {
background: var(--accent-soft);
}
.opt-name {
color: var(--text);
font-weight: 600;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.opt-hash {
background: var(--code-bg);
color: var(--muted);
padding: 1px 6px;
border-radius: 4px;
font-family: "JetBrains Mono", monospace;
font-size: 10.5px;
font-weight: 400;
white-space: nowrap;
}
.opt-topic {
color: var(--text-secondary);
font-size: 11.5px;
white-space: nowrap;
}
.opt-ready {
color: var(--pos);
font-size: 14px;
line-height: 1;
}
/* Freshness timestamps */
.last-refresh,
.last-recompute {
font-size: 11.5px;
color: var(--muted);
white-space: nowrap;
}
.last-recompute {
color: var(--pos);
}
.freshness-row {
margin-left: auto;
display: inline-flex;
align-items: center;
gap: 4px;
}
/* "Select a user" empty-state panel for per-user sections */
.section-pick-user {
background: linear-gradient(180deg, var(--surface), var(--bg));
border: 1px dashed var(--border-strong);
padding: 32px 28px;
text-align: center;
}
.pick-user-eyebrow {
color: var(--muted);
font-size: 11px;
text-transform: uppercase;
letter-spacing: 0.08em;
margin-bottom: 8px;
font-weight: 600;
}
.pick-user-headline {
color: var(--text);
font-size: 18px;
font-weight: 600;
margin-bottom: 6px;
}
.pick-user-sub {
color: var(--text-secondary);
font-size: 13px;
line-height: 1.5;
max-width: 540px;
margin: 0 auto;
}
.pick-user-sub code {
background: var(--code-bg);
padding: 1px 6px;
border-radius: 3px;
font-size: 11.5px;
color: var(--primary);
}
/* ---------- Consent toggle inside Offers section ---------- */
/* ---------- Main ---------- */
.analytics-main {
max-width: 1280px;
margin: 0 auto;
padding: 28px 36px 60px;
}
/* ---------- Summary tiles ---------- */
.summary-row {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
gap: 14px;
margin-bottom: 28px;
}
.summary-card {
background: var(--surface);
border: 1px solid var(--border);
border-radius: var(--radius-md);
padding: 16px 18px;
box-shadow: var(--shadow-sm);
transition: border-color 0.15s, box-shadow 0.15s;
}
.summary-card:hover {
border-color: var(--border-strong);
box-shadow: var(--shadow-md);
}
.summary-card .label {
color: var(--text-secondary);
font-size: 12px;
text-transform: uppercase;
letter-spacing: 0.04em;
}
.summary-card .value {
font-size: 28px;
font-weight: 600;
margin-top: 4px;
color: var(--text);
font-variant-numeric: tabular-nums;
}
.summary-card .sub {
color: var(--text-secondary);
font-size: 12px;
margin-top: 4px;
}
.summary-card.accent {
background: linear-gradient(180deg, var(--accent-soft), var(--surface));
border-color: var(--primary);
}
.summary-card.accent .value { color: var(--primary); }
/* ---------- Sections ---------- */
.section {
background: var(--surface);
border: 1px solid var(--border);
border-radius: var(--radius-lg);
padding: 22px 24px;
margin-bottom: 22px;
box-shadow: var(--shadow-sm);
}
.section.section-hero {
background: linear-gradient(180deg, var(--surface), var(--bg));
}
.section.section-outreach {
background: linear-gradient(180deg, #f4efe8, var(--surface));
border-color: #e6ddd0;
}
.section.privacy-section {
background: var(--accent-soft);
border-color: var(--border-strong);
}
.section h2 {
font-size: 16px;
font-weight: 600;
margin: 0 0 4px;
color: var(--text);
letter-spacing: -0.005em;
}
.section .section-sub {
color: var(--text-secondary);
font-size: 12.5px;
margin: 0 0 14px;
line-height: 1.5;
}
.section .section-sub code,
.section h2 code {
background: var(--code-bg);
border-radius: 3px;
padding: 0 4px;
font-size: 0.9em;
color: var(--primary);
}
.section-head {
display: flex;
justify-content: space-between;
align-items: flex-start;
gap: 12px;
}
.user-pill {
background: var(--accent-soft);
color: var(--primary);
border-radius: var(--radius-sm);
padding: 2px 8px;
font-size: 12px;
font-family: "Inter", sans-serif !important;
font-weight: 500;
letter-spacing: 0;
}
.window-tag {
background: #e7efe6;
color: var(--pos);
border-radius: var(--radius-sm);
padding: 2px 8px;
font-size: 12px;
font-weight: 500;
letter-spacing: 0;
margin-left: 6px;
}
/* "cumulative — window does not apply" — tells the admin that this section
intentionally ignores the date filter, so they don't think it's broken
when the cards stay identical after switching 7d/30d/today. */
.cumulative-tag {
display: inline-block;
background: var(--bg);
color: var(--muted);
border: 1px dashed var(--border-strong);
border-radius: var(--radius-sm);
padding: 1px 8px;
font-size: 11px;
font-weight: 500;
font-style: italic;
letter-spacing: 0;
margin-left: 8px;
vertical-align: middle;
cursor: help;
}
.loading-tag {
color: var(--muted);
font-size: 12px;
font-style: italic;
}
/* Inline pill: "N users" — only shown in global facets, sits next to title */
.users-pill {
display: inline-flex;
align-items: center;
gap: 4px;
background: #e7efe6;
color: var(--pos);
border: 1px solid transparent;
border-radius: var(--radius-pill);
padding: 2px 10px;
font-size: 10.5px;
font-weight: 600;
letter-spacing: 0.03em;
white-space: nowrap;
flex-shrink: 0;
font-family: inherit;
}
.users-pill-button {
cursor: pointer;
transition: background 0.15s, border-color 0.15s;
}
.users-pill-button:hover:not(:disabled) {
background: #d9ebd7;
border-color: var(--pos);
}
.users-pill-button:disabled {
cursor: default;
}
.users-pill-button.open {
background: var(--pos);
color: var(--primary-fg);
}
.users-pill-caret {
font-size: 8px;
line-height: 1;
}
/* Contributor panel — revealed when "N users" pill is clicked */
.contributors {
margin-top: 14px;
background: var(--surface);
border: 1px solid var(--border);
border-radius: var(--radius-md);
padding: 12px 14px;
}
.contributors-head {
font-size: 11.5px;
color: var(--text-secondary);
text-transform: uppercase;
letter-spacing: 0.05em;
font-weight: 600;
margin-bottom: 8px;
}
.contributors-tbl {
width: 100%;
border-collapse: collapse;
font-size: 12.5px;
}
.contributors-tbl th, .contributors-tbl td {
text-align: left;
padding: 6px 8px;
border-bottom: 1px solid var(--border);
}
.contributors-tbl th {
color: var(--text-secondary);
font-weight: 500;
font-size: 10.5px;
text-transform: uppercase;
letter-spacing: 0.05em;
}
.contributors-tbl tr:last-child td { border-bottom: none; }
.contributors-tbl .num {
text-align: right;
font-variant-numeric: tabular-nums;
}
.contrib-name {
color: var(--text);
font-weight: 600;
margin-right: 6px;
}
.contrib-hash {
background: var(--code-bg);
color: var(--muted);
padding: 1px 6px;
border-radius: 4px;
font-size: 10.5px;
font-family: "JetBrains Mono", monospace;
}
.contrib-last {
color: var(--text-secondary);
font-size: 11.5px;
}
.contrib-inspect {
background: transparent;
border: 1px solid var(--border-strong);
color: var(--primary);
border-radius: var(--radius-sm);
padding: 3px 10px;
font-size: 11.5px;
font-weight: 500;
font-family: inherit;
cursor: pointer;
transition: background 0.15s, border-color 0.15s, color 0.15s;
}
.contrib-inspect:hover {
background: var(--primary);
border-color: var(--primary);
color: var(--primary-fg);
}
.facet-title-text {
flex: 0 1 auto;
min-width: 0;
overflow-wrap: anywhere;
}
/* ---------- Errors / empty states ---------- */
.error-banner {
background: #fbeded;
border: 1px solid #e6b8b8;
color: var(--neg);
border-radius: var(--radius-md);
padding: 12px 14px;
font-size: 13px;
}
.error-banner code {
background: #f3d8d8;
color: var(--neg);
padding: 1px 6px;
border-radius: 4px;
font-size: 12px;
margin-left: 6px;
font-family: "JetBrains Mono", monospace;
}
.error-banner .error-detail {
color: var(--text-secondary);
font-size: 12px;
margin-top: 4px;
}
.empty-state {
background: var(--bg);
border: 1px dashed var(--border-strong);
border-radius: var(--radius-md);
padding: 18px;
color: var(--text-secondary);
font-size: 13px;
text-align: center;
}
/* =========================================================================
PLATFORM OVERVIEW CARD (cross-user macro view)
========================================================================= */
.platform-card {
background:
radial-gradient(700px 220px at 0% 0%, rgba(200, 122, 76, 0.06), transparent 60%),
var(--surface);
border: 1px solid var(--border);
border-radius: var(--radius-lg);
padding: 22px 24px 18px;
margin-bottom: 22px;
box-shadow: var(--shadow-sm);
}
.platform-head {
display: flex;
justify-content: space-between;
align-items: flex-start;
gap: 16px;
margin-bottom: 20px;
flex-wrap: wrap;
}
.platform-head h2 {
font-size: 20px;
margin: 0;
font-weight: 600;
color: var(--text);
letter-spacing: -0.01em;
}
.platform-numbers {
display: flex;
gap: 18px;
}
.platform-num {
display: flex;
flex-direction: column;
gap: 2px;
text-align: right;
}
.platform-num-value {
font-size: 22px;
font-weight: 600;
color: var(--text);
font-variant-numeric: tabular-nums;
line-height: 1.1;
}
.platform-num-label {
color: var(--muted);
font-size: 10.5px;
text-transform: uppercase;
letter-spacing: 0.06em;
}
.platform-cols-2 {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 14px;
margin-bottom: 16px;
}
.platform-block {
background: var(--bg);
border: 1px solid var(--border);
border-radius: var(--radius-md);
padding: 14px 16px;
}
.platform-block-head {
color: var(--text-secondary);
font-size: 11px;
text-transform: uppercase;
letter-spacing: 0.06em;
margin-bottom: 10px;
font-weight: 600;
}
/* Top-N rank lists (topics, strategies) */
.platform-ranklist {
list-style: none;
padding: 0;
margin: 0;
display: flex;
flex-direction: column;
gap: 10px;
}
.platform-ranklist li {
border-bottom: 1px solid var(--border);
padding-bottom: 8px;
}
.platform-ranklist li:last-child {
border-bottom: none;
padding-bottom: 0;
}
.rank-row {
display: grid;
grid-template-columns: minmax(0, 1fr) 100px auto;
gap: 10px;
align-items: center;
font-size: 13px;
}
.rank-name {
font-weight: 500;
color: var(--text);
text-transform: capitalize;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.rank-bar-wrap {
background: var(--border);
height: 6px;
border-radius: 3px;
overflow: hidden;
}
.rank-bar {
display: block;
height: 100%;
background: var(--primary);
border-radius: 3px;
transition: width 0.4s;
}
.rank-bar-strategy {
background: var(--pos);
}
.rank-num {
font-variant-numeric: tabular-nums;
font-weight: 600;
color: var(--text);
font-size: 13px;
text-align: right;
white-space: nowrap;
}
.rank-num-unit {
color: var(--muted);
font-size: 10.5px;
font-weight: 400;
margin-left: 2px;
}
.rank-sub {
color: var(--muted);
font-size: 11px;
margin-top: 3px;
margin-left: 0;
}
.rank-empty {
color: var(--muted);
font-size: 12px;
text-align: center;
padding: 12px;
border: none !important;
}
/* Funnel-style bars (stages + readiness tiers) */
.platform-funnel {
list-style: none;
padding: 0;
margin: 0;
display: flex;
flex-direction: column;
gap: 7px;
}
.platform-funnel li {
display: grid;
grid-template-columns: 110px minmax(0, 1fr) auto;
gap: 10px;
align-items: center;
font-size: 12.5px;
}
.platform-funnel li.dim {
opacity: 0.4;
}
.funnel-label {
color: var(--text);
font-weight: 500;
}
.funnel-bar-wrap {
background: var(--border);
height: 14px;
border-radius: 3px;
overflow: hidden;
}
.funnel-bar {
display: block;
height: 100%;
background: var(--primary);
border-radius: 3px;
transition: width 0.4s;
}
/* Stage colors */
.funnel-action-ready { background: var(--pos); }
.funnel-evaluation { background: var(--primary); }
.funnel-exploration { background: #d4a83a; }
.funnel-awareness { background: var(--muted); }
.funnel-support-needed { background: var(--neg); }
.funnel-unknown { background: var(--border-strong); }
/* Readiness tiers */
.funnel-tier-ready { background: var(--pos); }
.funnel-tier-likely { background: var(--primary); }
.funnel-tier-nurture { background: #d4a83a; }
.funnel-tier-too-early { background: var(--muted); }
.funnel-count {
font-variant-numeric: tabular-nums;
font-weight: 600;
color: var(--text);
font-size: 13px;
}
/* Percent pills (intent / signal mix) */
.pct-row {
display: flex;
flex-wrap: wrap;
gap: 6px;
}
.pct-pill {
display: inline-flex;
align-items: center;
gap: 6px;
background: var(--surface);
border: 1px solid var(--border);
border-radius: var(--radius-pill);
padding: 4px 10px;
font-size: 12px;
}
.pct-name {
color: var(--text);
font-weight: 500;
text-transform: capitalize;
}
.pct-num {
color: var(--text-secondary);
font-variant-numeric: tabular-nums;
font-size: 11px;
}
.signal-pos {
background: #f4efe8;
border-color: #e6ddd0;
}
.signal-pos .pct-name { color: var(--pos); }
.signal-neg {
background: #fbeded;
border-color: #e6b8b8;
}
.signal-neg .pct-name { color: var(--neg); }
.signal-composite {
background: #f3ecf5;
border-color: #d9c5e0;
}
.signal-composite .pct-name { color: #6b3d7e; }
@media (max-width: 900px) {
.platform-cols-2 { grid-template-columns: 1fr; }
.platform-numbers { flex-wrap: wrap; gap: 12px; }
.platform-num { text-align: left; }
.platform-funnel li { grid-template-columns: 90px minmax(0, 1fr) auto; }
}
/* =========================================================================
USER COGNITIVE PROFILE CARD
========================================================================= */
.profile-card {
background:
radial-gradient(800px 220px at 100% 0%, rgba(200, 122, 76, 0.06), transparent 60%),
radial-gradient(500px 200px at 0% 100%, rgba(79, 138, 77, 0.05), transparent 60%),
var(--surface);
border: 1px solid var(--border);
border-radius: var(--radius-lg);
padding: 24px 26px 20px;
margin-bottom: 22px;
box-shadow: var(--shadow-md);
position: relative;
overflow: hidden;
}
.profile-head {
display: flex;
justify-content: space-between;
align-items: flex-start;
gap: 16px;
margin-bottom: 20px;
flex-wrap: wrap;
}
.profile-eyebrow {
display: block;
color: var(--muted);
font-size: 11px;
text-transform: uppercase;
letter-spacing: 0.08em;
margin-bottom: 3px;
}
.profile-title h2 {
font-size: 22px;
margin: 0 0 4px;
font-weight: 600;
color: var(--text);
letter-spacing: -0.01em;
}
.profile-hash {
color: var(--muted);
font-size: 11.5px;
font-family: "JetBrains Mono", monospace;
background: var(--code-bg);
padding: 1px 7px;
border-radius: 4px;
cursor: help;
}
.profile-meta {
display: flex;
gap: 20px;
}
.profile-meta-item {
display: flex;
flex-direction: column;
gap: 2px;
text-align: right;
}
.meta-label {
color: var(--muted);
font-size: 10.5px;
text-transform: uppercase;
letter-spacing: 0.06em;
}
.meta-value {
color: var(--text);
font-size: 16px;
font-weight: 600;
font-variant-numeric: tabular-nums;
}
/* ---- Hero tiles row (3 wide) ---- */
.profile-hero-row {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 14px;
margin-bottom: 18px;
}
.hero-tile {
background: var(--bg);
border: 1px solid var(--border);
border-radius: var(--radius-md);
padding: 14px 16px;
position: relative;
overflow: hidden;
}
.hero-tile::before {
content: "";
position: absolute;
top: 0; left: 0; right: 0;
height: 3px;
}
.hero-tile-ready::before { background: var(--pos); }
.hero-tile-likely::before { background: var(--primary); }
.hero-tile-nurture::before { background: #d4a83a; }
.hero-tile-early::before { background: var(--muted); }
.hero-tile-warn::before { background: var(--neg); }
.hero-tile-info::before { background: var(--primary); opacity: 0.5; }
.hero-label {
color: var(--text-secondary);
font-size: 11px;
text-transform: uppercase;
letter-spacing: 0.06em;
margin-bottom: 6px;
}
.hero-headline {
font-size: 22px;
font-weight: 600;
color: var(--text);
margin-bottom: 10px;
line-height: 1.15;
text-transform: capitalize;
letter-spacing: -0.01em;
}
.hero-score-row {
display: flex;
align-items: center;
gap: 8px;
margin-bottom: 6px;
}
.hero-score-bar {
flex: 1;
height: 5px;
background: var(--border);
border-radius: 3px;
overflow: hidden;
}
.hero-score-fill {
height: 100%;
background: linear-gradient(90deg, var(--primary), var(--pos));
transition: width 0.5s ease;
}
.hero-score-num {
color: var(--text);
font-size: 13px;
font-variant-numeric: tabular-nums;
font-weight: 600;
min-width: 32px;
text-align: right;
}
.hero-sub {
color: var(--text-secondary);
font-size: 11.5px;
line-height: 1.4;
}
/* ---- Facet tile grid (9 compact) ---- */
.profile-facet-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 12px;
}
.facet-tile {
background: var(--bg);
border: 1px solid var(--border);
border-radius: var(--radius-md);
padding: 12px 14px;
transition: border-color 0.15s, box-shadow 0.15s;
}
.facet-tile:hover {
border-color: var(--border-strong);
box-shadow: var(--shadow-sm);
}
.facet-tile-label {
color: var(--text-secondary);
font-size: 10.5px;
text-transform: uppercase;
letter-spacing: 0.06em;
margin-bottom: 4px;
}
.facet-tile-value {
font-size: 17px;
font-weight: 600;
color: var(--text);
text-transform: capitalize;
margin-bottom: 6px;
line-height: 1.2;
}
.facet-tile.tone-pos .facet-tile-value { color: var(--pos); }
.facet-tile.tone-warn .facet-tile-value { color: var(--neg); }
.facet-tile.tone-neutral .facet-tile-value { color: var(--text); }
.facet-tile.tone-ok .facet-tile-value { color: var(--text); }
.facet-tile-bar {
height: 3px;
background: var(--border);
border-radius: 2px;
margin-bottom: 6px;
overflow: hidden;
}
.facet-tile-bar-fill {
height: 100%;
background: var(--primary);
transition: width 0.4s ease;
}
.facet-tile.tone-pos .facet-tile-bar-fill { background: var(--pos); }
.facet-tile.tone-warn .facet-tile-bar-fill { background: var(--neg); }
.facet-tile-footnote {
color: var(--text-secondary);
font-size: 11px;
line-height: 1.4;
}
.profile-footer {
margin-top: 16px;
padding-top: 14px;
border-top: 1px solid var(--border);
color: var(--text-secondary);
font-size: 11.5px;
line-height: 1.5;
}
.profile-footer code {
background: var(--code-bg);
border-radius: 3px;
padding: 0 4px;
color: var(--primary);
font-family: "JetBrains Mono", monospace;
font-size: 11px;
}
@media (max-width: 900px) {
.profile-hero-row,
.profile-facet-grid { grid-template-columns: 1fr; }
.profile-meta { flex-wrap: wrap; gap: 12px; }
.profile-meta-item { text-align: left; }
}
/* =========================================================================
COGNITIVE FACET CARDS (per intent/topic cell)
========================================================================= */
.facet-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(560px, 1fr));
gap: 18px;
}
.facet-card {
position: relative;
background: var(--surface);
border: 1px solid var(--border);
border-radius: var(--radius-md);
overflow: hidden;
box-shadow: var(--shadow-sm);
transition: border-color 0.2s, transform 0.2s, box-shadow 0.2s;
}
.facet-card::before {
content: "";
position: absolute;
top: 0; left: 0;
width: 3px; height: 100%;
background: linear-gradient(180deg, var(--primary), var(--pos));
opacity: 0.8;
}
.facet-card:hover {
border-color: var(--border-strong);
transform: translateY(-1px);
box-shadow: var(--shadow-md);
}
.facet-row {
display: grid;
grid-template-columns: auto minmax(0, 1fr) auto; /* minmax so middle column can shrink */
gap: 18px;
align-items: center;
padding: 16px 18px 14px 22px; /* extra left padding for the accent strip */
}
.facet-main { min-width: 0; overflow: hidden; }
.facet-title {
font-size: 15px;
font-weight: 600;
color: var(--text);
margin-bottom: 4px;
letter-spacing: -0.005em;
display: flex;
align-items: center;
gap: 8px;
flex-wrap: wrap;
}
.facet-sub {
display: flex;
align-items: center;
gap: 6px;
margin-bottom: 8px;
font-size: 11.5px;
flex-wrap: wrap;
}
.intent-pill, .topic-pill {
background: var(--code-bg);
padding: 1px 7px;
border-radius: 4px;
font-size: 11px;
color: var(--text-secondary);
font-family: "JetBrains Mono", monospace;
}
.dot-sep { color: var(--muted); }
.facet-leaders {
display: flex;
flex-direction: column;
gap: 6px;
min-width: 200px;
font-size: 13px;
padding-left: 14px;
border-left: 1px solid var(--border);
}
.leader-row {
display: flex;
align-items: center;
gap: 6px;
color: var(--text);
}
.leader-row.runner { color: var(--text-secondary); }
.leader-dot {
width: 8px; height: 8px;
border-radius: 50%;
flex-shrink: 0;
}
.leader-name {
flex: 1;
text-transform: capitalize;
font-size: 12.5px;
}
.leader-mu {
font-variant-numeric: tabular-nums;
font-size: 11.5px;
color: var(--text-secondary);
}
.facet-detail {
padding: 14px 22px 16px;
border-top: 1px solid var(--border);
background: var(--bg);
}
.curves-row {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 14px;
margin-bottom: 14px;
}
.beta-curve {
background: var(--surface);
border: 1px solid var(--border);
border-radius: var(--radius-md);
padding: 10px 8px 8px;
}
.beta-curve.beta-empty {
display: flex;
align-items: center;
justify-content: center;
min-height: 90px;
border-style: dashed;
}
.beta-empty-text {
color: var(--muted);
font-size: 11.5px;
text-align: center;
line-height: 1.4;
}
.beta-label {
font-size: 11.5px;
text-transform: capitalize;
margin-top: 2px;
text-align: center;
font-weight: 500;
}
.beta-params {
color: var(--muted);
font-family: "JetBrains Mono", monospace;
font-size: 10.5px;
margin-left: 4px;
text-transform: none;
}
.cog-insight {
margin-top: 14px;
background: #f4efe8;
border: 1px solid #e6ddd0;
border-radius: var(--radius-md);
padding: 12px 14px;
}
.cog-insight-head {
font-size: 11.5px;
color: var(--pos);
text-transform: uppercase;
letter-spacing: 0.06em;
margin-bottom: 4px;
font-weight: 600;
}
.cog-icon { margin-right: 4px; }
.cog-insight-body {
color: var(--text);
font-size: 13px;
line-height: 1.5;
}
.all-strategies { margin-top: 14px; }
.all-strategies-toggle {
background: transparent;
border: none;
color: var(--text-secondary);
font-size: 11.5px;
text-transform: uppercase;
letter-spacing: 0.05em;
cursor: pointer;
padding: 4px 0;
font-family: inherit;
transition: color 0.15s;
}
.all-strategies-toggle:hover { color: var(--text); }
.strategy-mini-tbl {
width: 100%;
border-collapse: collapse;
font-size: 12px;
margin-top: 6px;
}
.strategy-mini-tbl th, .strategy-mini-tbl td {
padding: 6px 8px;
border-bottom: 1px solid var(--border);
text-align: left;
text-transform: capitalize;
}
.strategy-mini-tbl th {
color: var(--text-secondary);
font-weight: 500;
font-size: 11px;
text-transform: uppercase;
letter-spacing: 0.04em;
}
.strategy-mini-tbl td.num, .strategy-mini-tbl th.num {
text-align: right;
font-variant-numeric: tabular-nums;
text-transform: none;
}
.facet-footer {
margin-top: 10px;
font-size: 11px;
color: var(--muted);
text-align: right;
font-family: "JetBrains Mono", monospace;
}
.ucb-formula-note {
margin-top: 8px;
padding: 8px 10px;
background: var(--code-bg);
border-radius: var(--radius-sm);
color: var(--text-secondary);
font-size: 11px;
line-height: 1.5;
}
.ucb-formula-note code {
background: var(--surface);
border: 1px solid var(--border);
padding: 0 5px;
border-radius: 3px;
font-size: 10.5px;
color: var(--primary);
}
/* ---------- Confidence chips ---------- */
.conf-chip {
display: inline-flex;
align-items: center;
gap: 6px;
padding: 3px 9px;
border-radius: 100px;
font-size: 11px;
font-weight: 600;
letter-spacing: 0.05em;
}
.conf-chip .conf-dot {
width: 6px; height: 6px;
border-radius: 50%;
}
.conf-chip .conf-count {
font-weight: 400;
opacity: 0.85;
letter-spacing: 0;
text-transform: none;
}
.conf-high {
background: #e7efe6;
color: var(--pos);
}
.conf-high .conf-dot { background: var(--pos); }
.conf-moderate {
background: var(--accent-soft);
color: var(--primary);
}
.conf-moderate .conf-dot { background: var(--primary); }
.conf-low {
background: var(--secondary);
color: var(--muted);
}
.conf-low .conf-dot { background: var(--muted); }
/* =========================================================================
TABLES (active users, trends, interests, offers)
========================================================================= */
.tbl {
width: 100%;
border-collapse: separate;
border-spacing: 0;
font-size: 13px;
}
.tbl thead th {
text-align: left;
font-weight: 500;
color: var(--text-secondary);
font-size: 11px;
text-transform: uppercase;
letter-spacing: 0.05em;
padding: 8px 10px;
border-bottom: 1px solid var(--border-strong);
}
.tbl tbody td {
padding: 10px;
border-bottom: 1px solid var(--border);
color: var(--text);
vertical-align: top;
}
.tbl tbody tr:hover { background: var(--bg); }
.tbl .num {
text-align: right;
font-variant-numeric: tabular-nums;
}
.tbl .num.pos { color: var(--pos); }
.tbl .num.neg { color: var(--neg); }
.tbl .num.zero { color: var(--muted); }
.topic-chip {
background: var(--accent-soft);
color: var(--primary);
padding: 2px 8px;
border-radius: var(--radius-sm);
font-size: 12px;
font-family: "JetBrains Mono", monospace;
font-weight: 500;
}
.today-tag {
color: var(--primary);
margin-left: 6px;
font-size: 10.5px;
}
.eligible-yes {
color: var(--pos);
font-weight: 600;
}
.eligible-no {
color: var(--muted);
}
.offer-desc {
color: var(--text-secondary);
font-size: 11.5px;
margin-top: 2px;
}
.offer-reason {
color: var(--text-secondary);
font-size: 12px;
}
/* Inline score breakdown on offer rows */
.score-breakdown {
display: flex;
gap: 4px;
margin-top: 3px;
flex-wrap: wrap;
justify-content: flex-end;
cursor: help;
}
.score-breakdown .bd-part {
background: var(--code-bg);
color: var(--text-secondary);
font-size: 10px;
font-family: "JetBrains Mono", monospace;
padding: 1px 5px;
border-radius: 3px;
font-variant-numeric: tabular-nums;
}
.score-breakdown .bd-part strong {
color: var(--text);
margin-left: 2px;
}
/* ---------- Active users table ---------- */
.active-users-tbl tr.ready {
background: #f7fbf7;
}
.active-users-tbl tr.ready:hover {
background: #eff5ee;
}
.active-users-tbl tr.row-active {
background: var(--accent-soft) !important;
box-shadow: inset 3px 0 0 var(--primary);
}
.btn-secondary.btn-tiny.btn-active {
background: var(--primary);
border-color: var(--primary);
color: var(--primary-fg);
cursor: default;
opacity: 1;
}
.user-name {
color: var(--text);
font-size: 14px;
font-weight: 600;
margin-bottom: 3px;
line-height: 1.2;
}
.user-hash {
background: var(--code-bg);
padding: 1px 6px;
border-radius: 4px;
font-size: 10.5px;
color: var(--muted);
font-family: "JetBrains Mono", monospace;
display: inline-block;
cursor: help;
}
.intent-mini {
display: flex;
gap: 4px;
margin-top: 5px;
flex-wrap: wrap;
}
.intent-mini-pill {
background: var(--secondary);
color: var(--text-secondary);
font-size: 10px;
padding: 1px 6px;
border-radius: 3px;
text-transform: uppercase;
letter-spacing: 0.04em;
}
.topic-more {
color: var(--text-secondary);
font-size: 11px;
margin-left: 6px;
}
.reward-divider { color: var(--muted); }
.last-seen {
color: var(--text-secondary);
font-size: 12px;
}
.contact-ready-yes {
color: var(--pos);
font-weight: 600;
font-size: 12.5px;
}
.contact-ready-no {
color: var(--muted);
font-size: 12.5px;
}
.status-blocked {
color: var(--neg);
font-weight: 600;
font-size: 12.5px;
}
.recommendation-reason {
margin-top: 4px;
color: var(--text-secondary);
font-size: 11px;
line-height: 1.4;
max-width: 320px;
}
/* ---------- ScoreBar (interest rows) ---------- */
.score-bar-wrap {
margin-top: 4px;
height: 4px;
background: var(--border);
border-radius: 2px;
overflow: hidden;
}
.score-bar-fill {
height: 100%;
transition: width 0.3s;
}
/* ---------- Responsive ---------- */
@media (max-width: 720px) {
.analytics-header { padding: 16px 18px 12px; }
.analytics-main { padding: 16px; }
.facet-grid { grid-template-columns: 1fr; }
.facet-row {
grid-template-columns: auto 1fr;
gap: 12px;
}
.facet-leaders {
grid-column: 1 / -1;
flex-direction: row;
min-width: 0;
flex-wrap: wrap;
border-left: none;
border-top: 1px solid var(--border);
padding-left: 0;
padding-top: 8px;
}
.curves-row { grid-template-columns: 1fr; }
}
/* ─────────────────────────────────────────────────────────────────────
* CustomerHealthSection — retention + NPS + engagement segments
* (three signal consumers in one section)
* ──────────────────────────────────────────────────────────────────── */
.section-health .section-head {
display: flex;
justify-content: space-between;
align-items: flex-start;
gap: 16px;
}
.health-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(310px, 1fr));
gap: 14px;
margin-top: 10px;
}
.health-card {
background: var(--surface);
border: 1px solid var(--border);
border-radius: var(--radius-md);
padding: 14px 16px;
box-shadow: var(--shadow-sm);
}
.health-card-head {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 10px;
}
.health-card-head h3 {
margin: 0;
font-size: 14px;
letter-spacing: 0.02em;
font-weight: 600;
}
.health-empty {
color: var(--muted);
font-style: italic;
padding: 16px 0;
text-align: center;
font-size: 12.5px;
}
/* Retention numbers + cohort table */
.health-numbers {
display: flex;
gap: 8px;
margin-bottom: 12px;
}
.retention-pill {
flex: 1;
text-align: center;
padding: 8px 6px;
border-radius: var(--radius-md);
border: 1px solid var(--border);
}
.retention-pill-rate {
font-size: 20px;
font-weight: 700;
font-variant-numeric: tabular-nums;
}
.retention-pill-label {
font-size: 11px;
color: var(--muted);
text-transform: uppercase;
letter-spacing: 0.06em;
margin-top: 2px;
}
.retention-good { background: #e7efe6; color: #2c5a1a; border-color: #c4e2c4; }
.retention-mid { background: #fdf3da; color: #7a5a1a; border-color: #f0d8a0; }
.retention-low { background: #f6e7e7; color: #7a3a3a; border-color: #e6caca; }
.health-cohort-tbl {
width: 100%;
border-collapse: collapse;
font-size: 11.5px;
}
.health-cohort-tbl th {
text-align: left;
font-weight: 600;
color: var(--text-secondary);
padding: 4px 6px;
border-bottom: 1px solid var(--border);
}
.health-cohort-tbl td {
padding: 4px 6px;
border-bottom: 1px solid var(--border);
}
.health-cohort-tbl td.num,
.health-cohort-tbl th.num {
text-align: right;
font-variant-numeric: tabular-nums;
}
/* NPS satisfaction card */
.nps-display {
text-align: center;
margin: 16px 0 12px;
}
.nps-score {
font-size: 42px;
font-weight: 700;
font-variant-numeric: tabular-nums;
line-height: 1.1;
}
.nps-score.nps-very_satisfied { color: #2c5a1a; }
.nps-score.nps-mixed { color: #b07a1c; }
.nps-score.nps-concerning { color: #b03a3a; }
.nps-verdict {
font-size: 12px;
color: var(--text-secondary);
text-transform: uppercase;
letter-spacing: 0.06em;
margin-top: 4px;
}
.nps-breakdown {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 10px;
font-size: 12px;
padding: 8px 0;
border-top: 1px dashed var(--border);
border-bottom: 1px dashed var(--border);
margin-bottom: 10px;
}
.thumbs-stat {
font-weight: 600;
font-variant-numeric: tabular-nums;
}
.thumbs-up { color: #2c5a1a; }
.thumbs-down { color: #7a3a3a; }
.thumbs-total {
margin-left: auto;
font-size: 11px;
}
.nps-trend-head {
font-size: 11px;
color: var(--muted);
text-transform: uppercase;
letter-spacing: 0.04em;
margin-bottom: 4px;
}
/* Engagement segments */
.engagement-total {
font-size: 13px;
margin-bottom: 12px;
padding-bottom: 8px;
border-bottom: 1px dashed var(--border);
}
.engagement-list {
list-style: none;
margin: 0;
padding: 0;
display: flex;
flex-direction: column;
gap: 6px;
}
.engagement-list li {
display: grid;
grid-template-columns: 130px 1fr 36px 42px;
align-items: center;
gap: 8px;
font-size: 12.5px;
}
.engagement-list li.dim {
opacity: 0.4;
}
.seg-label { color: var(--text); }
.seg-bar-wrap {
height: 10px;
background: var(--bg);
border-radius: 5px;
overflow: hidden;
}
.seg-bar {
display: block;
height: 100%;
border-radius: 5px;
transition: width 0.2s;
}
.seg-deep_divers { background: #6f9fd4; }
.seg-explorers { background: #9b85c4; }
.seg-power_users { background: #d4a017; }
.seg-one_and_done { background: #d4862a; }
.seg-casual { background: #94a094; }
.seg-count {
text-align: right;
font-weight: 600;
font-variant-numeric: tabular-nums;
}
.seg-pct {
text-align: right;
font-size: 11px;
}
/* ─────────────────────────────────────────────────────────────────────
* MiniLineChart — small SVG line/area chart used across analytics tiles.
* ──────────────────────────────────────────────────────────────────── */
.mini-chart {
position: relative;
display: inline-block;
line-height: 1;
}
.mini-chart svg {
display: block;
overflow: visible;
}
.mini-chart-empty {
display: flex;
align-items: center;
justify-content: center;
color: var(--muted);
font-size: 11px;
font-style: italic;
border: 1px dashed var(--border);
border-radius: var(--radius-md);
}
.mini-chart-tip {
position: absolute;
top: 4px;
right: 4px;
background: var(--surface);
border: 1px solid var(--border-strong);
border-radius: var(--radius-sm);
padding: 6px 8px;
font-size: 11px;
box-shadow: var(--shadow-sm);
pointer-events: none;
z-index: 5;
min-width: 110px;
}
.mini-chart-tip-date {
color: var(--muted);
font-size: 10px;
margin-bottom: 3px;
}
.mini-chart-tip-row {
display: grid;
grid-template-columns: 10px 1fr auto;
align-items: center;
gap: 5px;
margin-top: 2px;
}
.mini-chart-tip-swatch {
width: 8px;
height: 8px;
border-radius: 2px;
}
.mini-chart-tip-name {
color: var(--text);
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.mini-chart-tip-val {
color: var(--text);
font-weight: 600;
font-variant-numeric: tabular-nums;
}
.mini-chart-legend {
display: flex;
flex-wrap: wrap;
gap: 10px;
margin-top: 4px;
font-size: 11px;
color: var(--text-secondary);
}
.mini-chart-legend-item {
display: inline-flex;
align-items: center;
gap: 4px;
}
.mini-chart-legend-swatch {
width: 10px;
height: 3px;
border-radius: 2px;
display: inline-block;
}
/* Containers used by the trend tiles */
.trend-tile {
margin-top: 12px;
padding-top: 10px;
border-top: 1px dashed var(--border);
}
.trend-tile-head {
display: flex;
align-items: baseline;
justify-content: space-between;
gap: 8px;
font-size: 12px;
color: var(--text-secondary);
margin-bottom: 6px;
font-weight: 600;
letter-spacing: 0.02em;
text-transform: uppercase;
}
.trend-tile-totals {
font-size: 11px;
color: var(--muted);
text-transform: none;
letter-spacing: 0;
font-weight: 500;
}
/* ============================================================
Analytics visual polish
============================================================ */
.analytics-body {
background: var(--bg);
}
.analytics-main {
max-width: 1320px;
padding-top: 30px;
}
.summary-row {
gap: 16px;
}
.summary-card,
.section,
.platform-card,
.health-card,
.cog-card,
.contributors {
background: var(--surface);
border-color: var(--border);
box-shadow: var(--shadow-sm);
}
.summary-card {
position: relative;
overflow: hidden;
min-height: 124px;
}
.summary-card::before {
content: "";
position: absolute;
inset: 0 0 auto 0;
height: 3px;
background: linear-gradient(90deg, var(--primary), rgba(208, 138, 40, 0.72));
opacity: 0.84;
}
.summary-card .label {
color: var(--muted);
letter-spacing: 0.08em;
}
.summary-card .value {
font-size: 32px;
letter-spacing: -0.04em;
}
.summary-card.accent {
background:
linear-gradient(145deg, rgba(226, 241, 239, 0.92), rgba(255, 255, 255, 0.92)),
var(--surface);
border-color: rgba(200, 122, 76, 0.24);
}
.section {
position: relative;
overflow: hidden;
}
.section h2,
.platform-head h2 {
letter-spacing: -0.02em;
}
.section.section-hero,
.platform-card {
background:
linear-gradient(145deg, rgba(255, 255, 255, 0.92), rgba(250, 248, 244, 0.84)),
var(--surface);
}
.section.section-outreach,
.active-users-tbl tr.ready {
background:
linear-gradient(145deg, rgba(232, 245, 239, 0.92), rgba(255, 255, 255, 0.86)),
var(--surface);
}
.platform-block,
.retention-pill,
.contributors,
.empty-state,
.section-pick-user {
border-color: rgba(217, 213, 204, 0.74);
}
.date-filter,
.user-search,
.user-search-dropdown,
.btn-secondary.btn-tiny {
background: rgba(255, 255, 255, 0.82);
border-color: rgba(217, 213, 204, 0.78);
box-shadow: var(--shadow-sm);
}
.date-pill.active,
.user-search-apply {
background: linear-gradient(145deg, var(--primary), #e0975f);
}
.tbl {
border-collapse: separate;
border-spacing: 0;
}
.tbl thead th {
background: var(--surface-soft);
color: var(--text-secondary);
}
.tbl tbody tr:hover {
background: rgba(226, 241, 239, 0.44);
}
.topic-chip,
.user-pill,
.window-tag,
.users-pill,
.conf-chip,
.intent-mini-pill,
.score-breakdown .bd-part {
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.58);
}
.cog-insight {
background: linear-gradient(145deg, rgba(226, 241, 239, 0.78), rgba(255, 255, 255, 0.7));
}
@media (max-width: 720px) {
.analytics-main {
padding: 18px 14px 44px;
}
.summary-card .value {
font-size: 26px;
}
}