/* ============================================================
   SnapAPI Dashboard — Redesign Layer (2026-06)
   Premium override stylesheet. Loaded AFTER the inline CSS.
   Pure visual layer — does not touch any JS hook (ids/classes
   are matched, never renamed). Themed via [data-theme] on <html>.
   ============================================================ */

/* ---------- Design tokens (override the base palette) ---------- */
html[data-theme="dark"], :root {
  --c-primary:        #7c83ff;
  --c-primary-dark:   #6366f1;
  --c-primary-glow:   rgba(124,131,255,0.45);
  --c-primary-soft:   rgba(124,131,255,0.12);
  --c-accent:         #d946ef;
  --c-success:        #34d399;
  --c-warning:        #fbbf24;
  --c-error:          #f87171;
  --c-text:           #f5f6fb;
  --c-text-2:         #aab2c5;
  --c-text-3:         #717a90;
  --text-primary:     #f5f6fb;
  --text-secondary:   #aab2c5;
  --text-tertiary:    #717a90;
  --c-border:         rgba(255,255,255,0.08);
  --c-border-hover:   rgba(255,255,255,0.16);
  --border-color:     rgba(255,255,255,0.08);
  --bg-page:          #070710;
  --bg-sidebar:       rgba(13,13,24,0.72);
  --bg-card:          rgba(255,255,255,0.026);
  --bg-elevated:      rgba(255,255,255,0.05);
  --bg-hover:         rgba(255,255,255,0.06);
  --radius-xl: 22px; --radius-lg: 16px; --radius-md: 12px; --radius-sm: 9px;
  --grad-brand: linear-gradient(135deg,#6366f1 0%,#8b5cf6 48%,#d946ef 100%);
  --grad-brand-soft: linear-gradient(135deg,rgba(99,102,241,0.18),rgba(217,70,239,0.14));
  --shadow-card: 0 1px 0 rgba(255,255,255,0.04) inset, 0 18px 40px -24px rgba(0,0,0,0.8);
  --shadow-elevated: 0 24px 60px -28px rgba(0,0,0,0.85);
  --shadow-glow: 0 0 0 1px rgba(124,131,255,0.35), 0 16px 40px -12px rgba(124,131,255,0.35);
}
html[data-theme="light"] {
  --c-primary:#6366f1; --c-primary-glow:rgba(99,102,241,0.25); --c-primary-soft:rgba(99,102,241,0.08);
  --c-text:#0f172a; --c-text-2:#475569; --c-text-3:#94a3b8;
  --text-primary:#0f172a; --text-secondary:#475569; --text-tertiary:#94a3b8;
  --c-border:rgba(15,23,42,0.10); --c-border-hover:rgba(15,23,42,0.18); --border-color:rgba(15,23,42,0.10);
  --bg-page:#f4f5fb; --bg-sidebar:rgba(255,255,255,0.78); --bg-card:rgba(255,255,255,0.9);
  --bg-elevated:#ffffff; --bg-hover:rgba(15,23,42,0.04);
  --shadow-card:0 1px 2px rgba(15,23,42,0.04),0 12px 30px -18px rgba(15,23,42,0.18);
  --shadow-elevated:0 24px 60px -28px rgba(15,23,42,0.25);
}

/* ---------- Aurora background ---------- */
body {
  background: var(--bg-page) !important;
  color: var(--c-text);
  font-family: 'Inter', system-ui, -apple-system, sans-serif;
  -webkit-font-smoothing: antialiased;
}
body::before {
  content: ""; position: fixed; inset: 0; z-index: -2; pointer-events: none;
  background:
    radial-gradient(60vw 50vh at 12% -8%, rgba(99,102,241,0.22), transparent 60%),
    radial-gradient(50vw 45vh at 100% 0%, rgba(217,70,239,0.16), transparent 55%),
    radial-gradient(45vw 50vh at 50% 115%, rgba(139,92,246,0.16), transparent 60%);
}
html[data-theme="light"] body::before { opacity: 0.5; }
body::after {
  content: ""; position: fixed; inset: 0; z-index: -1; pointer-events: none; opacity: 0.4;
  background-image: radial-gradient(rgba(255,255,255,0.04) 1px, transparent 1px);
  background-size: 22px 22px;
}
html[data-theme="light"] body::after { display: none; }

/* ---------- Layout ---------- */
.dashboard-layout { background: transparent !important; }

/* ---------- Sidebar ---------- */
.sidebar {
  background: var(--bg-sidebar) !important;
  backdrop-filter: blur(22px) saturate(140%); -webkit-backdrop-filter: blur(22px) saturate(140%);
  border-right: 1px solid var(--c-border) !important;
  box-shadow: 1px 0 0 rgba(255,255,255,0.02);
}
.sidebar-header { border-bottom: 1px solid var(--c-border) !important; padding: 22px 20px !important; }
.sidebar-logo { font-weight: 800 !important; letter-spacing: -0.02em; font-size: 1.25rem !important; }
.sidebar-nav { padding: 14px 12px !important; }
.sidebar-nav > div, .sidebar-nav-label, .nav-section-label {
  letter-spacing: 0.14em !important; font-size: 0.66rem !important; color: var(--c-text-3) !important;
}
.nav-item {
  position: relative; border-radius: 11px !important; margin: 2px 0; gap: 12px !important;
  color: var(--c-text-2) !important; font-weight: 500 !important; font-size: 0.92rem !important;
  padding: 10px 13px !important;
  transition: color .18s, background .18s, transform .18s !important;
}
.nav-item svg, .nav-item .nav-icon { opacity: .8; transition: opacity .18s; }
.nav-item:hover { background: var(--bg-hover) !important; color: var(--c-text) !important; }
.nav-item:hover svg { opacity: 1; }
.nav-item.active {
  background: var(--grad-brand-soft) !important; color: #fff !important;
  box-shadow: inset 0 0 0 1px rgba(124,131,255,0.3), 0 8px 20px -10px var(--c-primary-glow);
}
.nav-item.active::before {
  content: ""; position: absolute; left: -4px; top: 50%; transform: translateY(-50%);
  width: 4px; height: 22px; border-radius: 4px; background: var(--grad-brand);
  box-shadow: 0 0 12px var(--c-primary-glow);
}
.nav-item.active svg { opacity: 1; }
.sidebar-footer { border-top: 1px solid var(--c-border) !important; }
.sidebar-plan-badge, .plan-badge {
  background: var(--grad-brand-soft) !important; border: 1px solid rgba(124,131,255,0.28) !important;
  border-radius: 12px !important; color: var(--c-text) !important;
}
.plan-badge .dot, .sidebar-plan-badge .dot {
  background: var(--grad-brand) !important; box-shadow: 0 0 10px var(--c-primary-glow);
}

/* ---------- Topbar ---------- */
.dashboard-header {
  background: linear-gradient(180deg, rgba(10,10,20,0.7), rgba(10,10,20,0.35)) !important;
  backdrop-filter: blur(18px) saturate(140%); -webkit-backdrop-filter: blur(18px) saturate(140%);
  border-bottom: 1px solid var(--c-border) !important; position: sticky; top: 0; z-index: 40;
}
html[data-theme="light"] .dashboard-header { background: rgba(255,255,255,0.7) !important; }
.header-title h1, #sectionTitle {
  font-weight: 800 !important; letter-spacing: -0.025em !important; font-size: 1.5rem !important;
  background: linear-gradient(120deg, var(--c-text), var(--c-text-2));
  -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;
}
.theme-toggle-btn:hover { border-color: var(--c-border-hover) !important; color: var(--c-text) !important; }
.user-btn {
  background: var(--bg-elevated) !important; border: 1px solid var(--c-border) !important;
  border-radius: 999px !important; padding: 5px 14px 5px 5px !important; transition: border-color .18s, background .18s;
}
.user-btn:hover { border-color: var(--c-border-hover) !important; background: var(--bg-hover) !important; }
.user-avatar {
  background: var(--grad-brand) !important; color: #fff !important; font-weight: 700 !important;
  box-shadow: 0 4px 12px -4px var(--c-primary-glow);
}
.user-dropdown {
  background: var(--bg-elevated) !important; border: 1px solid var(--c-border) !important;
  border-radius: 14px !important; box-shadow: var(--shadow-elevated) !important; backdrop-filter: blur(20px);
}
.user-dropdown a:hover { background: var(--bg-hover) !important; color: var(--c-text) !important; }

/* ---------- Section headers ---------- */
.section-header h2, .section-header h3 { letter-spacing: -0.02em; }

/* ---------- Cards (generic glass) ---------- */
.card, .analytics-chart-card, .settings-section-card, .usage-table-container,
.stat-card, .modal-content {
  background: var(--bg-card) !important;
  border: 1px solid var(--c-border) !important;
  border-radius: var(--radius-lg) !important;
  box-shadow: var(--shadow-card) !important;
  backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
}
.card-header { border-bottom: 1px solid var(--c-border) !important; }

/* ---------- Stat cards ---------- */
.stat-card {
  position: relative; overflow: hidden;
  transition: transform .22s cubic-bezier(.2,.7,.3,1), border-color .22s, box-shadow .22s !important;
}
.stat-card::after {
  content: ""; position: absolute; inset: 0; border-radius: inherit; pointer-events: none;
  background: radial-gradient(420px circle at var(--mouse-x,50%) var(--mouse-y,0%), var(--c-primary-soft), transparent 45%);
  opacity: 0; transition: opacity .25s;
}
.stat-card:hover { transform: translateY(-3px); border-color: var(--c-border-hover) !important; box-shadow: var(--shadow-elevated) !important; }
.stat-card:hover::after { opacity: 1; }
.stat-card::before {
  content: ""; position: absolute; left: 0; top: 0; right: 0; height: 2px;
  background: var(--grad-brand); opacity: 0; transition: opacity .25s;
}
.stat-card:hover::before { opacity: .9; }
.stat-icon {
  background: var(--grad-brand-soft) !important; border: 1px solid rgba(124,131,255,0.2) !important;
  border-radius: 12px !important; color: var(--c-primary) !important;
}
.stat-value {
  font-weight: 800 !important; letter-spacing: -0.03em !important; font-size: 2.3rem !important; line-height: 1.05 !important;
}
.stat-label { color: var(--c-text-3) !important; letter-spacing: .01em; }

/* ---------- Buttons ---------- */
.btn { border-radius: 11px !important; font-weight: 600 !important; transition: transform .16s, box-shadow .2s, background .2s, border-color .2s !important; }
.btn-primary {
  background: var(--grad-brand) !important; color: #fff !important; border: 1px solid transparent !important;
  box-shadow: 0 8px 22px -10px var(--c-primary-glow), inset 0 1px 0 rgba(255,255,255,0.18) !important;
}
.btn-primary:hover { transform: translateY(-1px); box-shadow: 0 12px 30px -10px var(--c-primary-glow), inset 0 1px 0 rgba(255,255,255,0.25) !important; }
.btn-ghost, .quick-action-btn {
  background: var(--bg-elevated) !important; border: 1px solid var(--c-border) !important; color: var(--c-text) !important;
}
.btn-ghost:hover, .quick-action-btn:hover { border-color: var(--c-border-hover) !important; background: var(--bg-hover) !important; transform: translateY(-1px); }
.quick-action-btn { border-radius: var(--radius-md) !important; }
.btn-danger { background: rgba(248,113,113,0.12) !important; border: 1px solid rgba(248,113,113,0.4) !important; color: #fca5a5 !important; }
.btn-danger:hover { background: rgba(248,113,113,0.2) !important; }

/* ---------- Welcome / quick-start panels ---------- */
#welcomePanel, .welcome-panel {
  background: var(--grad-brand-soft) !important;
  border: 1px solid rgba(124,131,255,0.22) !important; border-radius: var(--radius-xl) !important;
  box-shadow: var(--shadow-card) !important; position: relative; overflow: hidden;
}
#welcomePanel::before {
  content:""; position:absolute; inset:0; pointer-events:none;
  background: radial-gradient(500px circle at 90% -20%, rgba(217,70,239,0.18), transparent 55%);
}
.welcome-step { background: var(--bg-card) !important; border: 1px solid var(--c-border) !important; border-radius: var(--radius-md) !important; transition: transform .2s, border-color .2s; }
.welcome-step:hover { transform: translateY(-2px); border-color: var(--c-border-hover) !important; }
.welcome-step-num { background: var(--grad-brand) !important; color: #fff !important; box-shadow: 0 4px 12px -4px var(--c-primary-glow); }

/* ---------- Chart tabs / segmented controls ---------- */
.chart-tab, .storage-tab {
  background: transparent !important; border: 1px solid transparent !important; color: var(--c-text-3) !important;
  border-radius: 9px !important; font-weight: 600 !important; transition: all .16s;
}
.chart-tab:hover, .storage-tab:hover { color: var(--c-text) !important; background: var(--bg-hover) !important; }
.chart-tab.active, .storage-tab.active {
  background: var(--grad-brand-soft) !important; color: #fff !important;
  border-color: rgba(124,131,255,0.3) !important; box-shadow: 0 4px 14px -8px var(--c-primary-glow);
}

/* ---------- Tables ---------- */
.usage-table thead th { color: var(--c-text-3) !important; letter-spacing: .04em; border-bottom: 1px solid var(--c-border) !important; }
.usage-table tbody tr { transition: background .15s; border-bottom: 1px solid var(--c-border) !important; }
.usage-table tbody tr:hover { background: var(--bg-hover) !important; }
.status-badge { border-radius: 999px !important; font-weight: 600 !important; padding: 3px 11px !important; font-size: 0.74rem !important; }
.status-badge.success { background: rgba(52,211,153,0.14) !important; color: #6ee7b7 !important; border: 1px solid rgba(52,211,153,0.3) !important; }
.status-badge.error { background: rgba(248,113,113,0.14) !important; color: #fca5a5 !important; border: 1px solid rgba(248,113,113,0.3) !important; }

/* ---------- Forms ---------- */
.form-group input, .form-group select, .form-group textarea,
.modal-body input, .modal-body select, .modal-body textarea,
input[type="text"], input[type="email"], input[type="password"], input[type="url"], input[type="number"], select, textarea {
  background: var(--bg-elevated) !important; border: 1px solid var(--c-border) !important;
  border-radius: 10px !important; color: var(--c-text) !important; transition: border-color .18s, box-shadow .18s !important;
}
.form-group input:focus, .modal-body input:focus, input:focus, select:focus, textarea:focus {
  border-color: var(--c-primary) !important; box-shadow: 0 0 0 3px var(--c-primary-soft) !important; outline: none !important;
}

/* ---------- Modals ---------- */
.modal-backdrop { background: rgba(5,5,12,0.6) !important; backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); }
.modal-content { box-shadow: var(--shadow-elevated) !important; border-radius: var(--radius-xl) !important; }
.modal-header { border-bottom: 1px solid var(--c-border) !important; }
.modal-close:hover { background: var(--bg-hover) !important; color: var(--c-text) !important; }

/* ---------- Progress / quota bars ---------- */
.progress-bar > div, [id$="Progress"], [id$="UsageFill"], .progress-fill {
  background: var(--grad-brand) !important; box-shadow: 0 0 12px -2px var(--c-primary-glow);
}

/* ---------- Empty states ---------- */
.empty-state { color: var(--c-text-3) !important; }

/* ---------- Billing plan chips ---------- */
.plan-chip, .plan-card {
  background: var(--bg-card) !important; border: 1px solid var(--c-border) !important; border-radius: var(--radius-lg) !important;
  transition: transform .2s, border-color .2s, box-shadow .2s;
}
.plan-chip:hover, .plan-card:hover { transform: translateY(-2px); border-color: var(--c-border-hover) !important; }
.plan-chip.selected, .plan-card.selected {
  border-color: rgba(124,131,255,0.5) !important; box-shadow: var(--shadow-glow) !important;
  background: var(--grad-brand-soft) !important;
}
.plan-chip-price { font-weight: 800 !important; letter-spacing: -0.02em; }

/* ---------- Toast ---------- */
#toast {
  background: var(--bg-elevated) !important; border: 1px solid var(--c-border) !important;
  border-radius: 13px !important; box-shadow: var(--shadow-elevated) !important; backdrop-filter: blur(16px);
}
#toast.success { border-color: rgba(52,211,153,0.4) !important; }
#toast.error { border-color: rgba(248,113,113,0.4) !important; }

/* ---------- Playground polish ---------- */
.pg-ep-tab.active, .pg-lang-tab.active { color: #fff !important; }
.pg-chip.active { background: var(--grad-brand-soft) !important; border-color: rgba(124,131,255,0.4) !important; color: #fff !important; }
.pg-exec-btn, #pgExecBtn { background: var(--grad-brand) !important; color:#fff !important; box-shadow: 0 8px 22px -10px var(--c-primary-glow); }

/* ---------- Custom scrollbars ---------- */
* { scrollbar-width: thin; scrollbar-color: rgba(124,131,255,0.35) transparent; }
*::-webkit-scrollbar { width: 10px; height: 10px; }
*::-webkit-scrollbar-thumb { background: rgba(124,131,255,0.28); border-radius: 8px; border: 2px solid transparent; background-clip: padding-box; }
*::-webkit-scrollbar-thumb:hover { background: rgba(124,131,255,0.5); background-clip: padding-box; }
*::-webkit-scrollbar-track { background: transparent; }

/* ---------- Reduced motion ---------- */
@media (prefers-reduced-motion: reduce) { * { transition: none !important; animation: none !important; } }

/* ---------- Entrance animation + final polish ---------- */
@keyframes snapFadeUp { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }
.dashboard-section.active { animation: snapFadeUp .42s cubic-bezier(.2,.7,.3,1); }
.stat-card { animation: snapFadeUp .5s cubic-bezier(.2,.7,.3,1) backwards; }
.dashboard-section.active .stat-card:nth-child(1){animation-delay:.02s}
.dashboard-section.active .stat-card:nth-child(2){animation-delay:.07s}
.dashboard-section.active .stat-card:nth-child(3){animation-delay:.12s}
.dashboard-section.active .stat-card:nth-child(4){animation-delay:.17s}
/* refined code blocks */
.dashboard-main pre, .dashboard-main code, [class*="code"] pre {
  border-radius: 12px !important;
}
/* logo accent */
.sidebar-logo span, .sidebar-logo b { background: var(--grad-brand); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; }
/* skeleton shimmer in brand tint */
.skeleton-line, .skeleton-row, .skeleton-circle, .skeleton-stat {
  background: linear-gradient(90deg, rgba(255,255,255,0.04) 25%, rgba(124,131,255,0.10) 50%, rgba(255,255,255,0.04) 75%) !important;
  background-size: 200% 100% !important;
}
/* gradient hairline under section title area */
.dashboard-header::after { content:""; position:absolute; left:0; right:0; bottom:-1px; height:1px;
  background: linear-gradient(90deg, transparent, rgba(124,131,255,0.4), transparent); opacity:.6; }

/* ============================================================
   v2 — MOTION & LIFE (more wow). Appended 2026-06-07.
   ============================================================ */
/* Slow-drifting aurora */
@keyframes auroraDrift {
  0%   { transform: translate3d(0,0,0) scale(1); }
  50%  { transform: translate3d(2%, 1.5%, 0) scale(1.08); }
  100% { transform: translate3d(0,0,0) scale(1); }
}
body::before { animation: auroraDrift 26s ease-in-out infinite; will-change: transform; }

/* Active nav: gentle glow pulse on the accent bar */
@keyframes navGlow { 0%,100% { box-shadow: 0 0 10px var(--c-primary-glow); } 50% { box-shadow: 0 0 18px var(--c-primary-glow); } }
.nav-item.active::before { animation: navGlow 2.6s ease-in-out infinite; }

/* Stat cards: animated gradient ring on hover */
.stat-card { background-clip: padding-box; }
@keyframes ringSpin { to { transform: rotate(1turn); } }
.stat-card:hover { box-shadow: var(--shadow-elevated), 0 0 0 1px rgba(124,131,255,0.25) !important; }
.stat-value { transition: transform .25s cubic-bezier(.2,.7,.3,1); transform-origin: left center; }
.stat-card:hover .stat-value { transform: scale(1.04); }
.stat-icon { transition: transform .25s cubic-bezier(.34,1.56,.64,1), box-shadow .25s; }
.stat-card:hover .stat-icon { transform: translateY(-2px) rotate(-4deg); box-shadow: 0 8px 20px -8px var(--c-primary-glow); }

/* Count-in for stat values when section enters */
@keyframes statPop { from { opacity:0; transform: translateY(6px) scale(.96); } to { opacity:1; transform:none; } }
.dashboard-section.active .stat-value { animation: statPop .55s cubic-bezier(.2,.7,.3,1) both; }

/* Shimmer sweep across primary buttons + upgrade CTA on hover */
.btn-primary, #upgradeNowBtn, .pg-exec-btn, #pgExecBtn { position: relative; overflow: hidden; }
.btn-primary::after, #upgradeNowBtn::after, #pgExecBtn::after {
  content:""; position:absolute; top:0; left:-130%; width:60%; height:100%;
  background: linear-gradient(115deg, transparent, rgba(255,255,255,0.35), transparent);
  transform: skewX(-18deg); transition: none; pointer-events:none;
}
@keyframes sheen { to { left: 150%; } }
.btn-primary:hover::after, #upgradeNowBtn:hover::after, #pgExecBtn:hover::after { animation: sheen .8s ease; }

/* Live pulsing status / online dots */
@keyframes dotPulse { 0% { box-shadow: 0 0 0 0 rgba(52,211,153,0.5);} 70% { box-shadow: 0 0 0 7px rgba(52,211,153,0);} 100% { box-shadow:0 0 0 0 rgba(52,211,153,0);} }
.plan-badge .dot, .sidebar-plan-badge .dot, .webhook-status-dot.active, .delivery-status.success,
.status-dot.online, .activity-dot.success { animation: dotPulse 2.4s ease-out infinite; }

/* Animated, shimmering data bars (quota / endpoint breakdown) → "live" feel */
[id$="Progress"], [id$="UsageFill"], .progress-fill, .endpoint-bar-fill, .top-url-count {
  position: relative; overflow: hidden;
  transition: width 1s cubic-bezier(.2,.7,.3,1) !important;
}
[id$="Progress"]::after, [id$="UsageFill"]::after, .progress-fill::after, .endpoint-bar-fill::after {
  content:""; position:absolute; inset:0;
  background: linear-gradient(90deg, transparent, rgba(255,255,255,0.35), transparent);
  background-size: 200% 100%; animation: barShimmer 2.2s linear infinite;
}
@keyframes barShimmer { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } }

/* Table rows + list items: slide-highlight on hover */
.usage-table tbody tr, .log-expandable, .key-card, .webhook-card, .gallery-item, .activity-item, .top-url-item {
  transition: background .16s, transform .16s, border-color .16s !important;
}
.key-card:hover, .webhook-card:hover, .activity-item:hover, .top-url-item:hover { transform: translateX(3px); }
.gallery-item { transition: transform .2s, box-shadow .2s !important; }
.gallery-item:hover { transform: translateY(-4px) scale(1.02); box-shadow: var(--shadow-elevated); }

/* Chart container: subtle glow frame + refined empty state */
#usageChartContainer, .analytics-chart-card, #usageTimeSeriesContainer {
  position: relative;
}
.empty-state, .gallery-empty-state, .endpoint-no-data {
  animation: snapFadeUp .5s ease both;
}
.empty-state svg, .empty-state img { opacity:.5; filter: drop-shadow(0 8px 20px var(--c-primary-glow)); }

/* Sidebar logo subtle breathing glow */
@keyframes logoGlow { 0%,100%{ filter: drop-shadow(0 0 0 transparent);} 50%{ filter: drop-shadow(0 0 8px var(--c-primary-glow)); } }
.sidebar-logo img, .sidebar-logo svg { animation: logoGlow 4s ease-in-out infinite; }

/* User avatar ring on hover */
.user-btn:hover .user-avatar { box-shadow: 0 0 0 3px var(--c-primary-soft), 0 4px 12px -4px var(--c-primary-glow); }

@media (prefers-reduced-motion: reduce) {
  body::before, .nav-item.active::before, .sidebar-logo img,
  [id$="Progress"]::after, [id$="UsageFill"]::after, .endpoint-bar-fill::after,
  .plan-badge .dot, .webhook-status-dot.active { animation: none !important; }
}
