/* =============================================================
 * suite-system-v2.css — Sistema visual PREMIUM Suite LeanCP
 * Adopción opt-in: importar DESPUÉS del CSS de la app.
 * Diseñado al nivel de Linear / Notion / Vercel / Stripe
 *
 * USO en HTML:
 *   <link rel="stylesheet" href="assets/css/suite-system-v2.css?v=1">
 *   <body class="suite-v2"> ... </body>
 *
 * Activa el sistema sólo si <body> tiene clase .suite-v2
 * v1 — 2026-04-19
 * ============================================================= */

/* === Tokens v2 (namespaced --v2-) === */
.suite-v2 {
  /* Paleta: dorado refinado + dark profundo */
  --v2-bg: #0A0A0A;
  --v2-bg-elev1: #111113;
  --v2-bg-elev2: #161618;
  --v2-bg-elev3: #1C1C1F;
  --v2-bg-card: rgba(22, 22, 24, 0.65);
  --v2-bg-overlay: rgba(0, 0, 0, 0.72);

  --v2-border: rgba(255, 255, 255, 0.06);
  --v2-border-strong: rgba(255, 255, 255, 0.12);
  --v2-border-oro: rgba(201, 162, 39, 0.18);
  --v2-border-oro-hover: rgba(201, 162, 39, 0.42);

  --v2-text: #F5F4EE;
  --v2-text-muted: rgba(245, 244, 238, 0.62);
  --v2-text-faint: rgba(245, 244, 238, 0.36);
  --v2-text-disabled: rgba(245, 244, 238, 0.20);

  --v2-oro: #C9A227;
  --v2-oro-bright: #E4BD3C;
  --v2-oro-deep: #A88520;
  --v2-oro-soft: rgba(201, 162, 39, 0.10);
  --v2-oro-glow: 0 0 24px rgba(201, 162, 39, 0.25);

  --v2-success: #34D399;
  --v2-warning: #FBBF24;
  --v2-danger: #F87171;
  --v2-info: #60A5FA;
  --v2-purple: #A78BFA;

  /* Tipografía fluid */
  --v2-font-display: 'Montserrat', system-ui, sans-serif;
  --v2-font-body: 'Inter', system-ui, sans-serif;
  --v2-font-mono: 'JetBrains Mono', 'SF Mono', Menlo, monospace;

  --v2-text-xs: clamp(0.68rem, 0.65rem + 0.15vw, 0.74rem);
  --v2-text-sm: clamp(0.78rem, 0.75rem + 0.18vw, 0.86rem);
  --v2-text-base: clamp(0.92rem, 0.88rem + 0.20vw, 1rem);
  --v2-text-md: clamp(1.02rem, 0.96rem + 0.30vw, 1.14rem);
  --v2-text-lg: clamp(1.20rem, 1.10rem + 0.50vw, 1.44rem);
  --v2-text-xl: clamp(1.50rem, 1.35rem + 0.75vw, 1.92rem);
  --v2-text-2xl: clamp(2.0rem, 1.7rem + 1.5vw, 2.8rem);
  --v2-text-3xl: clamp(2.6rem, 2.0rem + 3vw, 4.0rem);

  /* Espaciado */
  --v2-space-1: 4px;
  --v2-space-2: 8px;
  --v2-space-3: 12px;
  --v2-space-4: 16px;
  --v2-space-5: 24px;
  --v2-space-6: 32px;
  --v2-space-7: 48px;
  --v2-space-8: 64px;

  /* Radios y sombras */
  --v2-radius-xs: 4px;
  --v2-radius-sm: 6px;
  --v2-radius-md: 10px;
  --v2-radius-lg: 14px;
  --v2-radius-xl: 20px;
  --v2-radius-full: 9999px;

  --v2-shadow-sm: 0 1px 2px rgba(0,0,0,0.20);
  --v2-shadow-md: 0 4px 12px rgba(0,0,0,0.32), 0 1px 3px rgba(0,0,0,0.20);
  --v2-shadow-lg: 0 12px 32px rgba(0,0,0,0.44), 0 4px 12px rgba(0,0,0,0.24);
  --v2-shadow-xl: 0 24px 56px rgba(0,0,0,0.52), 0 8px 20px rgba(0,0,0,0.28);
  --v2-shadow-oro: 0 0 0 1px var(--v2-border-oro), 0 8px 24px rgba(201,162,39,0.10);

  /* Animación */
  --v2-ease: cubic-bezier(0.4, 0, 0.2, 1);
  --v2-ease-out: cubic-bezier(0.16, 1, 0.3, 1);
  --v2-ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
  --v2-dur-fast: 120ms;
  --v2-dur-base: 200ms;
  --v2-dur-slow: 400ms;
}

/* === BACKGROUND mesh + grain sutil === */
.suite-v2 {
  background:
    radial-gradient(ellipse 1200px 600px at 20% -10%, rgba(201,162,39,0.04), transparent 70%),
    radial-gradient(ellipse 1000px 500px at 80% 110%, rgba(201,162,39,0.025), transparent 70%),
    var(--v2-bg);
  color: var(--v2-text);
  font-family: var(--v2-font-body);
  font-size: var(--v2-text-base);
  line-height: 1.55;
}
.suite-v2::before {
  content: '';
  position: fixed;
  inset: 0;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.04 0'/%3E%3C/filter%3E%3Crect width='120' height='120' filter='url(%23n)'/%3E%3C/svg%3E");
  pointer-events: none;
  z-index: 1;
  opacity: 0.6;
  mix-blend-mode: overlay;
}
.suite-v2 > * { position: relative; z-index: 2; }

/* === APP SHELL (top bar + side nav + main + status bar) === */
.v2-shell {
  display: grid;
  grid-template-columns: 240px 1fr;
  grid-template-rows: 56px 1fr 28px;
  grid-template-areas:
    "top top"
    "side main"
    "status status";
  height: 100vh;
  overflow: hidden;
}
.v2-shell.collapsed { grid-template-columns: 60px 1fr; }
@media (max-width: 768px) {
  .v2-shell { grid-template-columns: 0 1fr; }
  .v2-shell .v2-side { transform: translateX(-100%); position: fixed; height: 100vh; z-index: 50; }
  .v2-shell.mobile-open .v2-side { transform: none; }
}

.v2-top {
  grid-area: top;
  display: flex;
  align-items: center;
  gap: var(--v2-space-3);
  padding: 0 var(--v2-space-4);
  border-bottom: 1px solid var(--v2-border);
  background: rgba(10,10,10,0.72);
  backdrop-filter: blur(20px) saturate(140%);
  -webkit-backdrop-filter: blur(20px) saturate(140%);
}
.v2-brand {
  display: flex;
  align-items: center;
  gap: var(--v2-space-2);
  font-family: var(--v2-font-display);
  font-weight: 700;
  letter-spacing: -0.01em;
}
.v2-brand-mark {
  width: 30px;
  height: 30px;
  border-radius: var(--v2-radius-sm);
  background: linear-gradient(135deg, var(--v2-oro-bright), var(--v2-oro-deep));
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: var(--v2-font-display);
  font-weight: 800;
  font-size: 0.74rem;
  color: #1A1410;
  box-shadow: 0 4px 12px rgba(201,162,39,0.35), inset 0 1px 0 rgba(255,255,255,0.25);
}
.v2-brand-name { font-size: var(--v2-text-sm); color: var(--v2-text); }
.v2-brand-sub { font-size: var(--v2-text-xs); color: var(--v2-text-muted); font-weight: 400; }

.v2-search {
  flex: 1;
  max-width: 420px;
  margin: 0 var(--v2-space-4);
  display: flex;
  align-items: center;
  gap: var(--v2-space-2);
  padding: 6px 10px 6px 12px;
  background: var(--v2-bg-elev1);
  border: 1px solid var(--v2-border);
  border-radius: var(--v2-radius-md);
  color: var(--v2-text-muted);
  font-size: var(--v2-text-sm);
  cursor: pointer;
  transition: all var(--v2-dur-base) var(--v2-ease);
}
.v2-search:hover { border-color: var(--v2-border-strong); background: var(--v2-bg-elev2); }
.v2-search-icon { width: 14px; height: 14px; opacity: 0.6; }
.v2-search-text { flex: 1; }
.v2-kbd {
  display: inline-flex;
  align-items: center;
  gap: 2px;
  padding: 1px 5px;
  font-family: var(--v2-font-mono);
  font-size: 0.66rem;
  font-weight: 600;
  color: var(--v2-text-faint);
  background: var(--v2-bg-elev3);
  border: 1px solid var(--v2-border);
  border-bottom-width: 2px;
  border-radius: 4px;
  letter-spacing: 0.5px;
}

.v2-top-actions { display: flex; align-items: center; gap: var(--v2-space-2); }
.v2-icon-btn {
  width: 32px;
  height: 32px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: transparent;
  border: 1px solid transparent;
  border-radius: var(--v2-radius-sm);
  color: var(--v2-text-muted);
  cursor: pointer;
  transition: all var(--v2-dur-base) var(--v2-ease);
  position: relative;
}
.v2-icon-btn:hover { background: var(--v2-bg-elev2); color: var(--v2-text); border-color: var(--v2-border); }
.v2-icon-btn[data-badge]::after {
  content: attr(data-badge);
  position: absolute;
  top: 2px;
  right: 2px;
  min-width: 14px;
  height: 14px;
  padding: 0 4px;
  background: var(--v2-danger);
  color: #1A0F0F;
  font-size: 0.58rem;
  font-weight: 700;
  border-radius: 7px;
  display: flex;
  align-items: center;
  justify-content: center;
  border: 2px solid var(--v2-bg);
}

.v2-side {
  grid-area: side;
  background: var(--v2-bg-elev1);
  border-right: 1px solid var(--v2-border);
  overflow-y: auto;
  padding: var(--v2-space-3) 0;
  transition: transform var(--v2-dur-base) var(--v2-ease);
}
.v2-side-section {
  padding: var(--v2-space-2) var(--v2-space-4);
  font-size: 0.66rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--v2-text-faint);
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.v2-nav-item {
  display: flex;
  align-items: center;
  gap: var(--v2-space-3);
  padding: 7px var(--v2-space-4);
  margin: 1px var(--v2-space-2);
  border-radius: var(--v2-radius-sm);
  color: var(--v2-text-muted);
  text-decoration: none;
  font-size: var(--v2-text-sm);
  font-weight: 500;
  transition: all var(--v2-dur-fast) var(--v2-ease);
  cursor: pointer;
  position: relative;
}
.v2-nav-item:hover { background: var(--v2-bg-elev2); color: var(--v2-text); }
.v2-nav-item.active {
  background: var(--v2-oro-soft);
  color: var(--v2-oro-bright);
  box-shadow: inset 2px 0 0 var(--v2-oro);
}
.v2-nav-item-icon { width: 16px; height: 16px; flex-shrink: 0; }
.v2-nav-item-badge {
  margin-left: auto;
  font-size: 0.62rem;
  font-weight: 700;
  padding: 1px 6px;
  border-radius: var(--v2-radius-full);
  background: var(--v2-bg-elev3);
  color: var(--v2-text-muted);
}
.v2-nav-item.active .v2-nav-item-badge { background: var(--v2-oro); color: #1A1410; }

.v2-main {
  grid-area: main;
  overflow-y: auto;
  padding: var(--v2-space-5);
}

.v2-status {
  grid-area: status;
  display: flex;
  align-items: center;
  gap: var(--v2-space-4);
  padding: 0 var(--v2-space-4);
  border-top: 1px solid var(--v2-border);
  background: var(--v2-bg-elev1);
  font-family: var(--v2-font-mono);
  font-size: 0.66rem;
  color: var(--v2-text-faint);
  letter-spacing: 0.02em;
}
.v2-status-item { display: flex; align-items: center; gap: 6px; }
.v2-status-dot {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--v2-success);
  box-shadow: 0 0 8px currentColor;
}
.v2-status-dot.idle { background: var(--v2-text-faint); }
.v2-status-dot.warn { background: var(--v2-warning); }
.v2-status-spacer { flex: 1; }

/* === HERO premium para dashboards === */
.v2-hero {
  margin-bottom: var(--v2-space-6);
}
.v2-hero-greet {
  font-family: var(--v2-font-display);
  font-weight: 800;
  font-size: var(--v2-text-2xl);
  letter-spacing: -0.025em;
  line-height: 1.05;
  background: linear-gradient(180deg, var(--v2-text) 0%, rgba(245,244,238,0.7) 100%);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
}
.v2-hero-sub {
  font-size: var(--v2-text-md);
  color: var(--v2-text-muted);
  margin-top: var(--v2-space-2);
}

/* === STAT CARDS premium con sparkline === */
.v2-stat-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: var(--v2-space-3);
  margin-bottom: var(--v2-space-6);
}
.v2-stat {
  background: var(--v2-bg-card);
  backdrop-filter: blur(12px);
  border: 1px solid var(--v2-border);
  border-radius: var(--v2-radius-lg);
  padding: var(--v2-space-4);
  position: relative;
  overflow: hidden;
  transition: all var(--v2-dur-base) var(--v2-ease);
}
.v2-stat:hover {
  border-color: var(--v2-border-oro-hover);
  transform: translateY(-2px);
  box-shadow: var(--v2-shadow-md);
}
.v2-stat-label {
  font-size: var(--v2-text-xs);
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--v2-text-muted);
  margin-bottom: var(--v2-space-2);
  display: flex;
  align-items: center;
  gap: 6px;
}
.v2-stat-value {
  font-family: var(--v2-font-display);
  font-weight: 800;
  font-size: var(--v2-text-xl);
  letter-spacing: -0.02em;
  color: var(--v2-text);
}
.v2-stat-trend {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  margin-top: var(--v2-space-2);
  font-size: var(--v2-text-xs);
  font-weight: 600;
}
.v2-stat-trend.up { color: var(--v2-success); }
.v2-stat-trend.down { color: var(--v2-danger); }
.v2-stat-trend.flat { color: var(--v2-text-faint); }
.v2-spark { display: block; margin-top: var(--v2-space-3); width: 100%; height: 32px; }

/* === SECTION === */
.v2-section { margin-bottom: var(--v2-space-6); }
.v2-section-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  margin-bottom: var(--v2-space-3);
  padding-bottom: var(--v2-space-2);
  border-bottom: 1px solid var(--v2-border);
}
.v2-section-title {
  font-family: var(--v2-font-display);
  font-weight: 700;
  font-size: var(--v2-text-md);
  letter-spacing: -0.01em;
}
.v2-section-action {
  font-size: var(--v2-text-xs);
  color: var(--v2-text-muted);
  text-decoration: none;
  cursor: pointer;
  transition: color var(--v2-dur-fast) var(--v2-ease);
}
.v2-section-action:hover { color: var(--v2-oro-bright); }

/* === CARD GRID === */
.v2-card-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: var(--v2-space-3);
}
.v2-card {
  background: var(--v2-bg-card);
  backdrop-filter: blur(12px);
  border: 1px solid var(--v2-border);
  border-radius: var(--v2-radius-lg);
  padding: var(--v2-space-4);
  cursor: pointer;
  transition: all var(--v2-dur-base) var(--v2-ease);
  display: flex;
  flex-direction: column;
  gap: var(--v2-space-2);
}
.v2-card:hover {
  border-color: var(--v2-border-oro-hover);
  transform: translateY(-2px);
  box-shadow: var(--v2-shadow-md);
}
.v2-card.disabled {
  opacity: 0.5;
  cursor: not-allowed;
}
.v2-card.disabled:hover { transform: none; box-shadow: none; }
.v2-card-icon-wrap {
  width: 36px;
  height: 36px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: var(--v2-radius-sm);
  background: var(--v2-oro-soft);
  color: var(--v2-oro-bright);
  margin-bottom: var(--v2-space-2);
}
.v2-card-title {
  font-family: var(--v2-font-display);
  font-weight: 700;
  font-size: var(--v2-text-base);
  color: var(--v2-text);
  letter-spacing: -0.005em;
}
.v2-card-desc {
  font-size: var(--v2-text-xs);
  color: var(--v2-text-muted);
  line-height: 1.5;
  flex: 1;
}
.v2-card-meta {
  display: flex;
  align-items: center;
  gap: 6px;
  margin-top: var(--v2-space-2);
  flex-wrap: wrap;
}

/* === BADGES === */
.v2-badge {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 2px 8px;
  font-size: 0.62rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  border-radius: var(--v2-radius-full);
  border: 1px solid transparent;
}
.v2-badge.success { background: rgba(52, 211, 153, 0.12); color: var(--v2-success); border-color: rgba(52, 211, 153, 0.2); }
.v2-badge.warning { background: rgba(251, 191, 36, 0.12); color: var(--v2-warning); border-color: rgba(251, 191, 36, 0.2); }
.v2-badge.danger { background: rgba(248, 113, 113, 0.12); color: var(--v2-danger); border-color: rgba(248, 113, 113, 0.2); }
.v2-badge.info { background: rgba(96, 165, 250, 0.12); color: var(--v2-info); border-color: rgba(96, 165, 250, 0.2); }
.v2-badge.purple { background: rgba(167, 139, 250, 0.12); color: var(--v2-purple); border-color: rgba(167, 139, 250, 0.2); }
.v2-badge.oro { background: var(--v2-oro-soft); color: var(--v2-oro-bright); border-color: var(--v2-border-oro); }
.v2-badge.muted { background: var(--v2-bg-elev2); color: var(--v2-text-muted); border-color: var(--v2-border); }
.v2-badge.solid {
  background: linear-gradient(135deg, var(--v2-oro-bright), var(--v2-oro-deep));
  color: #1A1410;
  border-color: transparent;
}

/* === BUTTONS === */
.v2-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 8px 14px;
  font-family: var(--v2-font-body);
  font-size: var(--v2-text-sm);
  font-weight: 600;
  border-radius: var(--v2-radius-sm);
  border: 1px solid transparent;
  cursor: pointer;
  transition: all var(--v2-dur-base) var(--v2-ease);
  text-decoration: none;
  white-space: nowrap;
}
.v2-btn:active:not(:disabled) { transform: translateY(1px); }
.v2-btn:disabled { opacity: 0.45; cursor: not-allowed; }

.v2-btn.primary {
  background: linear-gradient(135deg, var(--v2-oro-bright), var(--v2-oro));
  color: #1A1410;
  box-shadow: 0 1px 0 rgba(255,255,255,0.18) inset, 0 4px 12px rgba(201,162,39,0.28);
}
.v2-btn.primary:hover:not(:disabled) {
  box-shadow: 0 1px 0 rgba(255,255,255,0.25) inset, 0 8px 24px rgba(201,162,39,0.45);
  transform: translateY(-1px);
}
.v2-btn.secondary {
  background: var(--v2-bg-elev2);
  color: var(--v2-text);
  border-color: var(--v2-border-strong);
}
.v2-btn.secondary:hover:not(:disabled) { background: var(--v2-bg-elev3); border-color: var(--v2-border-oro-hover); }
.v2-btn.ghost {
  background: transparent;
  color: var(--v2-text-muted);
}
.v2-btn.ghost:hover:not(:disabled) { background: var(--v2-bg-elev2); color: var(--v2-text); }
.v2-btn.sm { padding: 5px 10px; font-size: var(--v2-text-xs); }
.v2-btn.lg { padding: 12px 20px; font-size: var(--v2-text-base); }

/* === EMPTY STATE premium === */
.v2-empty {
  text-align: center;
  padding: var(--v2-space-7) var(--v2-space-5);
  border: 1px dashed var(--v2-border);
  border-radius: var(--v2-radius-lg);
  background: radial-gradient(ellipse at center top, var(--v2-oro-soft), transparent 70%);
}
.v2-empty-icon {
  width: 56px;
  height: 56px;
  margin: 0 auto var(--v2-space-4);
  background: var(--v2-bg-elev2);
  border: 1px solid var(--v2-border-oro);
  border-radius: var(--v2-radius-lg);
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--v2-oro-bright);
  box-shadow: var(--v2-shadow-oro);
}
.v2-empty-title {
  font-family: var(--v2-font-display);
  font-weight: 700;
  font-size: var(--v2-text-md);
  margin-bottom: var(--v2-space-2);
}
.v2-empty-text {
  color: var(--v2-text-muted);
  font-size: var(--v2-text-sm);
  max-width: 360px;
  margin: 0 auto var(--v2-space-4);
  line-height: 1.5;
}

/* === COMMAND PALETTE === */
.v2-cmdk-overlay {
  position: fixed;
  inset: 0;
  background: var(--v2-bg-overlay);
  backdrop-filter: blur(8px) saturate(140%);
  -webkit-backdrop-filter: blur(8px) saturate(140%);
  z-index: 100;
  display: none;
  align-items: flex-start;
  justify-content: center;
  padding-top: 12vh;
  animation: v2-fade var(--v2-dur-base) var(--v2-ease-out);
}
.v2-cmdk-overlay.open { display: flex; }
.v2-cmdk {
  width: 92%;
  max-width: 560px;
  background: var(--v2-bg-elev2);
  border: 1px solid var(--v2-border-strong);
  border-radius: var(--v2-radius-lg);
  box-shadow: var(--v2-shadow-xl), 0 0 0 1px rgba(201,162,39,0.06);
  overflow: hidden;
  animation: v2-pop var(--v2-dur-base) var(--v2-ease-spring);
}
.v2-cmdk-input-wrap {
  display: flex;
  align-items: center;
  gap: var(--v2-space-3);
  padding: var(--v2-space-4);
  border-bottom: 1px solid var(--v2-border);
}
.v2-cmdk-input {
  flex: 1;
  background: transparent;
  border: none;
  outline: none;
  color: var(--v2-text);
  font-size: var(--v2-text-md);
  font-family: var(--v2-font-body);
}
.v2-cmdk-input::placeholder { color: var(--v2-text-faint); }
.v2-cmdk-list {
  max-height: 360px;
  overflow-y: auto;
  padding: var(--v2-space-2);
}
.v2-cmdk-section {
  padding: var(--v2-space-2) var(--v2-space-3) 4px;
  font-size: 0.62rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--v2-text-faint);
}
.v2-cmdk-item {
  display: flex;
  align-items: center;
  gap: var(--v2-space-3);
  padding: 8px var(--v2-space-3);
  border-radius: var(--v2-radius-sm);
  cursor: pointer;
  font-size: var(--v2-text-sm);
  color: var(--v2-text);
  transition: background var(--v2-dur-fast);
}
.v2-cmdk-item:hover, .v2-cmdk-item.selected {
  background: var(--v2-oro-soft);
  color: var(--v2-oro-bright);
}
.v2-cmdk-item-icon { width: 16px; height: 16px; opacity: 0.7; }
.v2-cmdk-item-name { flex: 1; }
.v2-cmdk-item-meta { font-size: var(--v2-text-xs); color: var(--v2-text-faint); }
.v2-cmdk-footer {
  display: flex;
  align-items: center;
  gap: var(--v2-space-3);
  padding: 8px var(--v2-space-4);
  border-top: 1px solid var(--v2-border);
  font-size: var(--v2-text-xs);
  color: var(--v2-text-faint);
}

@keyframes v2-fade { from { opacity: 0; } to { opacity: 1; } }
@keyframes v2-pop { from { opacity: 0; transform: translateY(-12px) scale(0.96); } to { opacity: 1; transform: none; } }

/* === ACTIVITY FEED === */
.v2-feed { display: flex; flex-direction: column; gap: 1px; }
.v2-feed-item {
  display: flex;
  gap: var(--v2-space-3);
  padding: var(--v2-space-3) var(--v2-space-3);
  border-radius: var(--v2-radius-sm);
  transition: background var(--v2-dur-fast);
}
.v2-feed-item:hover { background: var(--v2-bg-elev2); }
.v2-feed-icon {
  width: 28px;
  height: 28px;
  flex-shrink: 0;
  border-radius: 50%;
  background: var(--v2-oro-soft);
  color: var(--v2-oro-bright);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 0.74rem;
  font-weight: 700;
}
.v2-feed-body { flex: 1; min-width: 0; }
.v2-feed-text { font-size: var(--v2-text-sm); color: var(--v2-text); line-height: 1.4; }
.v2-feed-text strong { color: var(--v2-oro-bright); font-weight: 600; }
.v2-feed-time { font-size: var(--v2-text-xs); color: var(--v2-text-faint); margin-top: 2px; }

/* === PROGRESS BAR === */
.v2-progress {
  width: 100%;
  height: 6px;
  background: var(--v2-bg-elev3);
  border-radius: var(--v2-radius-full);
  overflow: hidden;
  position: relative;
}
.v2-progress-fill {
  height: 100%;
  background: linear-gradient(90deg, var(--v2-oro-deep), var(--v2-oro-bright));
  border-radius: inherit;
  transition: width var(--v2-dur-slow) var(--v2-ease-out);
  box-shadow: 0 0 8px var(--v2-oro-soft);
}

/* === LOADING SHIMMER === */
.v2-skeleton {
  background: linear-gradient(90deg,
    var(--v2-bg-elev2) 0%,
    var(--v2-bg-elev3) 50%,
    var(--v2-bg-elev2) 100%);
  background-size: 200% 100%;
  animation: v2-shimmer 1.4s ease-in-out infinite;
  border-radius: var(--v2-radius-sm);
}
@keyframes v2-shimmer {
  0% { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}

/* === TOOLTIPS === */
[data-v2-tip] {
  position: relative;
}
[data-v2-tip]:hover::after {
  content: attr(data-v2-tip);
  position: absolute;
  bottom: calc(100% + 6px);
  left: 50%;
  transform: translateX(-50%);
  background: var(--v2-bg-elev3);
  color: var(--v2-text);
  font-size: var(--v2-text-xs);
  padding: 4px 8px;
  border-radius: var(--v2-radius-xs);
  border: 1px solid var(--v2-border-strong);
  white-space: nowrap;
  z-index: 1000;
  pointer-events: none;
  animation: v2-fade 150ms var(--v2-ease-out);
}

/* === RESPONSIVE === */
@media (max-width: 768px) {
  .v2-hero-greet { font-size: var(--v2-text-xl); }
  .v2-stat-grid { grid-template-columns: repeat(2, 1fr); }
  .v2-card-grid { grid-template-columns: 1fr; }
  .v2-search { display: none; }
}
