/* Chat Buddy Analytics v1.0.0 */
.cb-analytics-shell{padding:16px 18px 32px;overflow:auto;height:calc(100vh - 64px);background:var(--chat-page-primary-bg-color,#fff)}
.cb-analytics-header .cb-analytics-export{font-size:11px;font-weight:800;border:1px solid rgba(127,127,127,.25);border-radius:8px;padding:4px 7px;cursor:pointer}
.cb-analytics-header .cb-analytics-refresh{cursor:pointer;margin-left:10px}
.cb-analytics-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:10px}
.cb-analytics-periods,.cb-analytics-tabs{display:flex;gap:7px;overflow-x:auto;scrollbar-width:thin;padding-bottom:4px}
.cb-analytics-periods button,.cb-analytics-tabs button,.cb-analytics-apply-range{border:1px solid rgba(127,127,127,.22);background:rgba(127,127,127,.06);color:inherit;border-radius:10px;padding:8px 11px;font-size:12px;white-space:nowrap;cursor:pointer;transition:.18s ease}
.cb-analytics-periods button.active,.cb-analytics-tabs button.active,.cb-analytics-apply-range{background:var(--primary-color,#377dff);color:#fff;border-color:transparent}
.cb-analytics-tabs{margin:5px 0 13px;padding:8px;border-radius:13px;background:rgba(127,127,127,.055)}
.cb-analytics-compare{font-size:12px;display:flex;align-items:center;gap:6px;white-space:nowrap}
.cb-analytics-custom-range{display:flex;gap:10px;align-items:end;flex-wrap:wrap;padding:10px 12px;margin-bottom:10px;border:1px solid rgba(127,127,127,.18);border-radius:12px}
.cb-analytics-custom-range label{font-size:11px;display:flex;flex-direction:column;gap:4px}.cb-analytics-custom-range input{border:1px solid rgba(127,127,127,.25);background:transparent;color:inherit;padding:7px 8px;border-radius:8px}
.cb-analytics-range-label{font-size:11px;opacity:.68;margin:0 2px 10px}
.cb-analytics-user-finder{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:10px 12px;margin-bottom:10px;border:1px solid rgba(127,127,127,.15);border-radius:12px;background:rgba(127,127,127,.025)}
.cb-analytics-user-finder strong{font-size:11px;display:block}.cb-analytics-user-finder small{font-size:9px;opacity:.58;display:block;margin-top:2px}.cb-analytics-user-finder-controls{display:flex;gap:7px;min-width:min(100%,320px)}.cb-analytics-user-search{min-width:0;flex:1;border:1px solid rgba(127,127,127,.22);background:transparent;color:inherit;border-radius:9px;padding:7px 9px;font-size:11px}.cb-analytics-user-search-button{border:0;background:var(--primary-color,#377dff);color:#fff;border-radius:9px;padding:7px 11px;font-size:11px;font-weight:700;cursor:pointer}
.cb-analytics-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:14px}
.cb-analytics-kpi{border:1px solid rgba(127,127,127,.15);border-radius:14px;padding:13px 14px;background:rgba(127,127,127,.035);min-width:0;box-shadow:0 2px 10px rgba(0,0,0,.025)}
.cb-analytics-kpi small{display:block;font-size:11px;opacity:.7;margin-bottom:6px}.cb-analytics-kpi strong{display:block;font-size:21px;line-height:1.1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cb-analytics-kpi .delta{font-size:10px;margin-top:7px;font-weight:700}.cb-analytics-kpi .delta.up{color:#22a06b}.cb-analytics-kpi .delta.down{color:#d14343}.cb-analytics-kpi .hint{font-size:9px;line-height:1.3;opacity:.55;margin-top:6px}
.cb-analytics-chart-card,.cb-analytics-table-card,.cb-analytics-funnel-card,.cb-analytics-report-card,.cb-analytics-profile-card{border:1px solid rgba(127,127,127,.15);border-radius:15px;background:rgba(127,127,127,.025);margin:0 0 13px;overflow:hidden}
.cb-analytics-card-head{padding:12px 14px;border-bottom:1px solid rgba(127,127,127,.12);display:flex;align-items:center;justify-content:space-between;gap:10px}.cb-analytics-card-head h3{font-size:13px;margin:0;font-weight:800}.cb-analytics-card-head span{font-size:10px;opacity:.55}
.cb-analytics-chart{height:230px;padding:12px 14px}.cb-analytics-chart svg{width:100%;height:100%;overflow:visible}.cb-analytics-gridline{stroke:currentColor;opacity:.08}.cb-analytics-line{fill:none;stroke-width:2.4;vector-effect:non-scaling-stroke}.cb-analytics-area{opacity:.08}.cb-analytics-dot{stroke-width:1.5}.cb-analytics-chart-legend{display:flex;gap:13px;flex-wrap:wrap;padding:0 14px 12px;font-size:10px}.cb-analytics-chart-legend i{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:5px;background:currentColor}
.cb-analytics-table-wrap{overflow:auto}.cb-analytics-table{width:100%;border-collapse:collapse;min-width:620px}.cb-analytics-table th,.cb-analytics-table td{padding:10px 12px;border-bottom:1px solid rgba(127,127,127,.1);text-align:left;font-size:11px;vertical-align:middle}.cb-analytics-table th{font-size:10px;opacity:.68;text-transform:uppercase;letter-spacing:.03em;background:rgba(127,127,127,.035);position:sticky;top:0}.cb-analytics-table tr:last-child td{border-bottom:0}.cb-analytics-user-link{border:0;background:none;color:inherit;padding:0;font-weight:750;cursor:pointer;text-align:left}.cb-analytics-user-link:hover{text-decoration:underline}.cb-analytics-user-link .analytics-mini{font-size:9px;opacity:.55;margin-left:5px}
.cb-analytics-funnel{padding:14px}.cb-analytics-funnel-step{display:grid;grid-template-columns:minmax(120px,190px) 1fr 80px;gap:10px;align-items:center;margin:8px 0}.cb-analytics-funnel-label{font-size:11px}.cb-analytics-funnel-track{height:22px;background:rgba(127,127,127,.09);border-radius:8px;overflow:hidden}.cb-analytics-funnel-fill{height:100%;background:var(--primary-color,#377dff);border-radius:8px;min-width:2px}.cb-analytics-funnel-value{text-align:right;font-size:11px;font-weight:800}
.cb-analytics-notes{font-size:10px;line-height:1.45;opacity:.65;padding:3px 3px 16px}.cb-analytics-note{margin:4px 0}.cb-analytics-error{padding:14px;border-radius:12px;background:rgba(209,67,67,.12);color:#d14343;margin:12px 0}.cb-analytics-loading{display:flex;align-items:center;justify-content:center;gap:10px;padding:20px;font-size:11px}.cb-analytics-spinner{width:18px;height:18px;border:2px solid rgba(127,127,127,.25);border-top-color:currentColor;border-radius:50%;animation:cbAnalyticsSpin .75s linear infinite}@keyframes cbAnalyticsSpin{to{transform:rotate(360deg)}}
.cb-analytics-report-body{padding:15px 16px;font-size:12px;line-height:1.7}.cb-analytics-report-body p{margin:3px 0}.cb-analytics-copy-summary{border:1px solid rgba(127,127,127,.2);background:transparent;color:inherit;border-radius:8px;padding:6px 9px;font-size:10px;cursor:pointer}
.cb-analytics-profile-body{padding:15px;display:flex;gap:18px;align-items:flex-start;flex-wrap:wrap}.cb-analytics-profile-main strong{font-size:18px;display:block}.cb-analytics-profile-main small{display:block;opacity:.62;margin-top:4px}.cb-analytics-profile-balance{margin-left:auto;text-align:right}.cb-analytics-profile-balance small{display:block;font-size:9px;opacity:.6}.cb-analytics-profile-balance strong{font-size:18px}
.cb-analytics-empty{padding:18px;text-align:center;font-size:11px;opacity:.6}
@media(max-width:1100px){.cb-analytics-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:700px){.cb-analytics-user-finder-controls{width:100%}.cb-analytics-shell{padding:11px 10px 25px}.cb-analytics-kpis{grid-template-columns:1fr 1fr;gap:7px}.cb-analytics-kpi{padding:10px}.cb-analytics-kpi strong{font-size:17px}.cb-analytics-chart{height:190px;padding:10px}.cb-analytics-funnel-step{grid-template-columns:100px 1fr 58px}.cb-analytics-toolbar{align-items:flex-start}.cb-analytics-compare{width:100%}}
@media(max-width:420px){.cb-analytics-kpis{grid-template-columns:1fr}.cb-analytics-funnel-step{grid-template-columns:85px 1fr 52px}.cb-analytics-funnel-label,.cb-analytics-funnel-value{font-size:9px}}

/* ========================================================================
 * Chat Buddy Analytics v1.0.1 — theme-safe contrast/readability patch
 *
 * The original v1.0.0 dashboard relied on inherited text colour. Chat
 * Buddy's middle panel does not guarantee that inherited colour is suitable
 * for every theme, which could produce dark text on the dark Analytics UI.
 * These rules explicitly use Chat Buddy's chat-window theme variables.
 * ====================================================================== */
.chatbuddy_analytics{
    color:var(--chat-window-primary-text-color,var(--chat-page-primary-text-color,#e5edf6));
}

.chatbuddy_analytics .cb-analytics-shell{
    --cb-analytics-text:var(--chat-window-primary-text-color,var(--chat-page-primary-text-color,#e5edf6));
    --cb-analytics-muted:var(--chat-window-secondary-text-color,var(--chat-page-tertiary-text-color,#aeb9c7));
    --cb-analytics-bg:var(--chat-window-primary-bg-color,var(--chat-page-primary-bg-color,#14181d));
    --cb-analytics-surface:var(--chat-window-secondary-bg-color,rgba(127,127,127,.06));
    --cb-analytics-surface-soft:var(--chat-window-tertiary-bg-color,rgba(127,127,127,.035));
    --cb-analytics-border:var(--chat-window-primary-border-color,rgba(127,127,127,.22));
    background:var(--cb-analytics-bg);
    color:var(--cb-analytics-text);
}

/* Primary readable text */
.chatbuddy_analytics .cb-analytics-kpi strong,
.chatbuddy_analytics .cb-analytics-card-head h3,
.chatbuddy_analytics .cb-analytics-funnel-label,
.chatbuddy_analytics .cb-analytics-funnel-value,
.chatbuddy_analytics .cb-analytics-report-body,
.chatbuddy_analytics .cb-analytics-profile-main strong,
.chatbuddy_analytics .cb-analytics-profile-balance strong,
.chatbuddy_analytics .cb-analytics-table td,
.chatbuddy_analytics .cb-analytics-user-finder strong,
.chatbuddy_analytics .cb-analytics-loading,
.chatbuddy_analytics .cb-analytics-user-link{
    color:var(--cb-analytics-text);
    opacity:1;
}

/* Secondary text stays visibly secondary without becoming illegible */
.chatbuddy_analytics .cb-analytics-range-label,
.chatbuddy_analytics .cb-analytics-compare,
.chatbuddy_analytics .cb-analytics-user-finder small,
.chatbuddy_analytics .cb-analytics-kpi small,
.chatbuddy_analytics .cb-analytics-kpi .hint,
.chatbuddy_analytics .cb-analytics-card-head span,
.chatbuddy_analytics .cb-analytics-table th,
.chatbuddy_analytics .cb-analytics-notes,
.chatbuddy_analytics .cb-analytics-profile-main small,
.chatbuddy_analytics .cb-analytics-profile-balance small,
.chatbuddy_analytics .cb-analytics-empty,
.chatbuddy_analytics .cb-analytics-user-link .analytics-mini{
    color:var(--cb-analytics-muted);
    opacity:1;
}

.chatbuddy_analytics .cb-analytics-range-label{font-weight:600;}
.chatbuddy_analytics .cb-analytics-user-finder small,
.chatbuddy_analytics .cb-analytics-kpi .hint{opacity:.9;}

/* Date-range and section controls */
.chatbuddy_analytics .cb-analytics-periods button,
.chatbuddy_analytics .cb-analytics-tabs button,
.chatbuddy_analytics .cb-analytics-apply-range,
.chatbuddy_analytics .cb-analytics-copy-summary,
.chatbuddy_analytics .cb-analytics-export{
    color:var(--cb-analytics-muted);
    border-color:var(--cb-analytics-border);
    background:var(--cb-analytics-surface);
}

.chatbuddy_analytics .cb-analytics-periods button:hover,
.chatbuddy_analytics .cb-analytics-tabs button:hover,
.chatbuddy_analytics .cb-analytics-copy-summary:hover,
.chatbuddy_analytics .cb-analytics-export:hover{
    color:var(--cb-analytics-text);
    background:var(--cb-analytics-surface-soft);
}

.chatbuddy_analytics .cb-analytics-periods button.active,
.chatbuddy_analytics .cb-analytics-tabs button.active,
.chatbuddy_analytics .cb-analytics-apply-range,
.chatbuddy_analytics .cb-analytics-user-search-button{
    background:var(--primary-color,#377dff);
    color:#fff;
    border-color:transparent;
}

/* Search/date inputs */
.chatbuddy_analytics .cb-analytics-user-search,
.chatbuddy_analytics .cb-analytics-custom-range input{
    background:var(--cb-analytics-surface);
    color:var(--cb-analytics-text);
    border-color:var(--cb-analytics-border);
    caret-color:var(--cb-analytics-text);
}

.chatbuddy_analytics .cb-analytics-user-search::placeholder{
    color:var(--cb-analytics-muted);
    opacity:.82;
}

.chatbuddy_analytics .cb-analytics-custom-range label{
    color:var(--cb-analytics-muted);
}

/* Cards and tables */
.chatbuddy_analytics .cb-analytics-user-finder,
.chatbuddy_analytics .cb-analytics-kpi,
.chatbuddy_analytics .cb-analytics-chart-card,
.chatbuddy_analytics .cb-analytics-table-card,
.chatbuddy_analytics .cb-analytics-funnel-card,
.chatbuddy_analytics .cb-analytics-report-card,
.chatbuddy_analytics .cb-analytics-profile-card,
.chatbuddy_analytics .cb-analytics-custom-range{
    border-color:var(--cb-analytics-border);
    background:var(--cb-analytics-surface-soft);
}

.chatbuddy_analytics .cb-analytics-tabs{
    background:var(--cb-analytics-surface-soft);
}

.chatbuddy_analytics .cb-analytics-card-head,
.chatbuddy_analytics .cb-analytics-table th,
.chatbuddy_analytics .cb-analytics-table td{
    border-color:var(--cb-analytics-border);
}

.chatbuddy_analytics .cb-analytics-table th{
    color:var(--cb-analytics-muted);
    background:var(--cb-analytics-surface);
}

.chatbuddy_analytics .cb-analytics-table tbody tr:hover td{
    background:var(--cb-analytics-surface);
}

/* Charts/funnel */
.chatbuddy_analytics .cb-analytics-gridline{
    stroke:var(--cb-analytics-muted);
    opacity:.18;
}

.chatbuddy_analytics .cb-analytics-chart-legend{
    font-weight:700;
}

.chatbuddy_analytics .cb-analytics-funnel-track{
    background:var(--cb-analytics-surface);
}

/* Keep positive/negative deltas strongly legible in both themes. */
.chatbuddy_analytics .cb-analytics-kpi .delta.up{color:#31c48d;opacity:1;}
.chatbuddy_analytics .cb-analytics-kpi .delta.down{color:#f26b6b;opacity:1;}

/* Error state should also retain enough contrast on a dark panel. */
.chatbuddy_analytics .cb-analytics-error{
    color:#ff9b9b;
    border:1px solid rgba(242,107,107,.28);
    background:rgba(209,67,67,.14);
}
