/* ═══════════════════════════════════════════════════════════════════
   NOMBA DESIGN SYSTEM · drop-in tokens + glassmorphism utilities
   Extraído de SUPRA CRM (TheNomba) · jun 2026
   ───────────────────────────────────────────────────────────────────
   Cómo usarlo en otro proyecto:
     1. Copia este archivo + (opcional) styleguide.html a tu repo.
     2. Importa una sola vez (CSS, Vite, Next, lo que sea):
          @import './nomba-tokens.css';
        o en HTML:  <link rel="stylesheet" href="nomba-tokens.css">
     3. Las fuentes ya se cargan aquí (Google Fonts @import). Si quieres
        controlarlas tú, borra el @import de abajo y mételas en tu <head>.
     4. Aplica clases: .glass-cream, .glass-chrome, .btn-glass-accent,
        .glass-input, .editorial-title, .eyebrow, .num-tabular, etc.

   Framework-agnostic: NO depende de Tailwind. Son CSS vars + clases.
   ─────────────────────────────────────────────────────────────────── */

@import url('https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,400;9..144,500;9..144,600;9..144,700&family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap');

/* ═══════════════════════════════════════════════════════════════════
   PALETA CANÓNICA · las únicas 4 semillas
   #0F190F  dark green   — chrome, texto sobre cream, sombras
   #F7F8E5  cream        — fondo principal, texto sobre dark green
   #D0FD00  lima         — acción, highlights, "caliente"
   #82AEFF  azul pastel  — info, "frío", acento secundario
   ═══════════════════════════════════════════════════════════════════ */

:root,
[data-theme='nomba'] {
  /* ── Semillas (inmutables) ────────────────────────────────────── */
  --seed-dark:  #0F190F;
  --seed-page:  #F7F8E5;
  --seed-lime:  #D0FD00;
  --seed-azure: #82AEFF;

  /* ── Fondos & superficies — cream page + cards blancas ─────────── */
  --bg-base:          #F7F8E5;   /* página principal (cream paper) */
  --bg-surface:       #FDFDFA;   /* cards blancas que liftan sobre la page */
  --bg-surface-2:     #F0F2DE;   /* hover sutil de filas / alternate row */
  --bg-surface-3:     #E6E8D0;   /* hover denso / press state */
  --bg-input:         #FDFDFA;
  --bg-highlight:     rgba(208, 253, 0, 0.18);
  --bg-overlay:       rgba(10, 19, 10, 0.72);   /* tinte de modales */

  /* ── Chrome oscuro — nav, topbar, contraste ───────────────────── */
  --chrome-base:      #0F190F;
  --chrome-base-2:    #162216;
  --chrome-base-3:    #1E2A1E;
  --chrome-text:      #F7F8E5;
  --chrome-text-dim:  rgba(247, 248, 229, 0.66);
  --chrome-text-mute: rgba(247, 248, 229, 0.40);
  --chrome-divider:   rgba(247, 248, 229, 0.10);
  --chrome-border:    rgba(247, 248, 229, 0.14);

  /* ── Texto (sobre cream) ──────────────────────────────────────── */
  --text-primary:     #0F190F;
  --text-secondary:   #3F4A3F;
  --text-tertiary:    #6D7868;
  --text-muted:       #9AA493;
  --text-inverse:     #F7F8E5;
  --text-on-accent:   #0F190F;   /* texto sobre lima → SIEMPRE dark green */
  --text-on-azure:    #0A1229;
  --text-link:        #0F190F;

  /* ── Acento principal: LIMA #D0FD00 ────────────────────────────── */
  --accent:           #D0FD00;
  --accent-hover:     #B8E000;
  --accent-pressed:   #96B800;
  --accent-bg:        rgba(208, 253, 0, 0.18);
  --accent-border:    rgba(208, 253, 0, 0.44);
  --accent-soft:      rgba(208, 253, 0, 0.28);
  --accent-text-dark: #4A6400;   /* olive — legible sobre cream */
  --glow-accent:      rgba(208, 253, 0, 0.48);

  /* ── Acento secundario: AZUL PASTEL ───────────────────────────── */
  --azure:            #82AEFF;
  --azure-hover:      #6B9CFF;
  --azure-bg:         rgba(130, 174, 255, 0.14);
  --azure-border:     rgba(130, 174, 255, 0.32);
  --azure-text-dark:  #2E4A8F;

  /* ── Semánticos (coherentes con paleta) ───────────────────────── */
  --success:          #5F7A1E;
  --success-bg:       rgba(95, 122, 30, 0.12);
  --success-border:   rgba(95, 122, 30, 0.28);
  --warning:          #A68416;
  --warning-bg:       rgba(166, 132, 22, 0.14);
  --warning-border:   rgba(166, 132, 22, 0.32);
  --error:            #C94A2E;
  --error-bg:         rgba(201, 74, 46, 0.14);
  --error-border:     rgba(201, 74, 46, 0.32);
  --info:             #82AEFF;
  --info-bg:          rgba(130, 174, 255, 0.14);
  --info-border:      rgba(130, 174, 255, 0.32);

  /* ── Temperatura (semáforo frío→caliente) ─────────────────────── */
  --temp-cold:        #82AEFF;  --temp-cold-bg: rgba(130,174,255,0.14); --temp-cold-text: #2E4A8F;
  --temp-warm:        #A68416;  --temp-warm-bg: rgba(166,132,22,0.14);  --temp-warm-text: #6E5A14;
  --temp-hot:         #96B800;  --temp-hot-bg:  rgba(208,253,0,0.22);   --temp-hot-text:  #4F6200;
  --temp-caliente:    #0F190F;  --temp-caliente-bg: #0F190F;            --temp-caliente-text: #D0FD00;

  /* ── Premium signals (neon family) · chips persona ────────────── */
  --neon-cyan:        #00E5FF;
  --neon-cyan-soft:   rgba(0, 229, 255, 0.55);
  --neon-cyan-bg:     rgba(15, 25, 15, 0.92);
  --neon-cyan-glow:   0 0 0 1px rgba(0,229,255,0.16), 0 0 14px rgba(0,229,255,0.22);

  /* ── Bordes (sobre cream) ─────────────────────────────────────── */
  --border-subtle:    rgba(15, 25, 15, 0.06);
  --border-default:   rgba(15, 25, 15, 0.10);
  --border-strong:    rgba(15, 25, 15, 0.18);
  --border-focus:     var(--accent);
  --divider:          rgba(15, 25, 15, 0.06);

  /* ── Shadows (derivadas de dark green) ────────────────────────── */
  --shadow-xs:        0 1px 1px rgba(15, 25, 15, 0.04);
  --shadow-sm:        0 1px 2px rgba(15,25,15,0.06), 0 0 0 1px rgba(15,25,15,0.03);
  --shadow-md:        0 3px 10px rgba(15,25,15,0.08), 0 0 0 1px rgba(15,25,15,0.04);
  --shadow-lg:        0 14px 34px rgba(15, 25, 15, 0.14);
  --shadow-card:      0 1px 0 rgba(15,25,15,0.02), 0 2px 6px rgba(15,25,15,0.05);
  --shadow-chrome:    0 6px 22px rgba(15, 25, 15, 0.18);
  --shadow-glass:     0 12px 40px -6px rgba(15,25,15,0.24), 0 2px 8px rgba(15,25,15,0.08), inset 0 1px 0 rgba(247,248,229,0.10);
  --shadow-hero:      0 30px 80px -20px rgba(15,25,15,0.40), 0 8px 20px rgba(15,25,15,0.12);
  --shadow-focus:     0 0 0 2px rgba(208, 253, 0, 0.48);

  /* ── Gradientes editoriales ───────────────────────────────────── */
  --grad-chrome:      linear-gradient(135deg, #0F190F 0%, #162216 55%, #1E2A1E 100%);
  --grad-accent:      linear-gradient(135deg, #D0FD00 0%, #B8E000 100%);
  --grad-accent-soft: linear-gradient(135deg, rgba(208,253,0,0.16) 0%, rgba(208,253,0,0.04) 100%);
  --grad-azure-soft:  linear-gradient(135deg, rgba(130,174,255,0.18) 0%, rgba(130,174,255,0.04) 100%);
  --grad-cream:       linear-gradient(180deg, #FDFDFA 0%, #F7F8E5 100%);
  --grad-page:        radial-gradient(1100px 620px at 6% 0%, rgba(208,253,0,0.18) 0%, transparent 55%),
                      radial-gradient(1000px 560px at 100% 6%, rgba(130,174,255,0.14) 0%, transparent 55%),
                      radial-gradient(900px 600px at 50% 100%, rgba(15,25,15,0.06) 0%, transparent 60%),
                      linear-gradient(180deg, #F8F9E8 0%, #F4F5DE 60%, #F7F8E5 100%);

  /* Glass surfaces — blur + tinted transparency */
  --glass-chrome-bg:  rgba(15, 25, 15, 0.72);
  --glass-chrome-border: rgba(247, 248, 229, 0.10);
  --glass-cream-bg:   rgba(253, 253, 250, 0.62);
  --glass-cream-border: rgba(15, 25, 15, 0.08);

  /* ── Charts (Heritage jewel tones se definen en JS, ver doc) ──── */
  --chart-1: #0F190F; --chart-2: #D0FD00; --chart-3: #82AEFF;
  --chart-4: #A68416; --chart-5: #C94A2E;
  --chart-grid: rgba(15, 25, 15, 0.06); --chart-label: #6D7868;

  /* ── Radii (jerarquía estricta) ───────────────────────────────── */
  --radius-xs: 2px; --radius-sm: 4px; --radius-md: 6px;
  --radius-lg: 8px; --radius-xl: 12px; --radius-pill: 9999px;

  /* ── Layout ───────────────────────────────────────────────────── */
  --sidebar-width: 240px; --sidebar-collapsed: 64px; --topbar-height: 52px;
  --page-padding: 28px; --card-padding: 20px;
  --table-row-height: 40px; --input-height: 34px;

  /* ── Tipografía ───────────────────────────────────────────────── */
  --font-display: 'Fraunces', 'Cormorant Garamond', Georgia, serif;
  --font-sans:    'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
  --font-mono:    'JetBrains Mono', 'SF Mono', 'Fira Code', monospace;

  /* ── Motion ───────────────────────────────────────────────────── */
  --motion-fast: 100ms cubic-bezier(0.22, 1, 0.36, 1);
  --motion-base: 150ms cubic-bezier(0.22, 1, 0.36, 1);
  --motion-slow: 250ms cubic-bezier(0.22, 1, 0.36, 1);
}

/* ── Dark theme · <html data-theme="nomba-dark"> ─────────────────── */
[data-theme='nomba-dark'] {
  --bg-base: #0E140E; --bg-surface: #161E16; --bg-surface-2: #1B231B;
  --bg-surface-3: #232C23; --bg-input: #161E16; --bg-overlay: rgba(0,0,0,0.62);
  --chrome-base: #232C23; --chrome-base-2: #2C362C; --chrome-base-3: #34403B;
  --text-primary: #F7F8E5; --text-secondary: rgba(247,248,229,0.78);
  --text-tertiary: rgba(247,248,229,0.52); --text-muted: rgba(247,248,229,0.34);
  --text-link: var(--accent);
  --border-subtle: rgba(247,248,229,0.06); --border-default: rgba(247,248,229,0.10);
  --border-strong: rgba(247,248,229,0.18);
  --shadow-card: 0 1px 0 rgba(0,0,0,0.10), 0 2px 8px rgba(0,0,0,0.36);
  --shadow-md: 0 3px 14px rgba(0,0,0,0.42); --shadow-lg: 0 18px 50px rgba(0,0,0,0.55);
}

/* ═══════════════════════════════════════════════════════════════════
   BASE
   ═══════════════════════════════════════════════════════════════════ */

*, *::before, *::after { box-sizing: border-box; border-color: var(--border-default); }

html {
  background: var(--bg-base);
  color: var(--text-primary);
  font-family: var(--font-sans);
  font-feature-settings: 'cv11', 'ss01', 'ss03', 'cv03';
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
}
body {
  margin: 0;
  background: var(--grad-page);
  background-attachment: fixed;
  color: var(--text-primary);
  font-size: 14px;
  line-height: 1.5;
  letter-spacing: -0.005em;
}
input, textarea, button, select { font: inherit; color: inherit; }
button { cursor: pointer; border: none; background: none; }
::selection { background: var(--accent-soft); color: var(--text-primary); }

:focus-visible { outline: none; box-shadow: var(--shadow-focus); border-radius: var(--radius-sm); }

/* Scrollbar discreto */
*::-webkit-scrollbar { width: 10px; height: 10px; }
*::-webkit-scrollbar-track { background: transparent; }
*::-webkit-scrollbar-thumb {
  background: rgba(15, 25, 15, 0.14); border-radius: 8px;
  border: 2px solid transparent; background-clip: padding-box;
}
*::-webkit-scrollbar-thumb:hover { background: rgba(15, 25, 15, 0.22); background-clip: padding-box; }
.chrome-surface ::-webkit-scrollbar-thumb { background: rgba(247, 248, 229, 0.12); background-clip: padding-box; }

/* ═══════════════════════════════════════════════════════════════════
   TIPOGRAFÍA EDITORIAL
   ═══════════════════════════════════════════════════════════════════ */

.font-display { font-family: var(--font-display); font-weight: 500; letter-spacing: -0.015em; font-optical-sizing: auto; }
.font-mono    { font-family: var(--font-mono); }

.editorial-title {
  font-family: var(--font-display);
  font-weight: 500; letter-spacing: -0.02em; line-height: 1.05;
}
.eyebrow {
  font-family: var(--font-sans);
  font-size: 11px; font-weight: 500; letter-spacing: 0.14em;
  text-transform: uppercase; color: var(--text-tertiary);
}
.chrome-surface .eyebrow, .chrome-elevated .eyebrow { color: rgba(247, 248, 229, 0.56); }

.num-tabular { font-variant-numeric: tabular-nums; font-feature-settings: 'tnum'; }
.num-display {
  font-family: var(--font-display); font-weight: 500;
  letter-spacing: -0.02em; line-height: 1;
  font-variant-numeric: tabular-nums; font-feature-settings: 'tnum';
}

/* Chrome (nav/topbar dark green) */
.chrome-surface  { background: var(--chrome-base);   color: var(--chrome-text); }
.chrome-elevated { background: var(--chrome-base-2); color: var(--chrome-text); }

/* ═══════════════════════════════════════════════════════════════════
   GLASSMORPHISM · superficies
   Receta base: gradiente + backdrop-blur + borde 1px + inset highlight
   + sombra blanda. Variantes: chrome (dark green), cream (claro),
   inset (mini-card dentro de chrome), accent (lima).
   ═══════════════════════════════════════════════════════════════════ */

/* Chrome glass — hero panels, KPI strip (dark green + glow lima/azure) */
.glass-chrome {
  position: relative; isolation: isolate;
  background: var(--grad-chrome); color: var(--chrome-text);
  border: 1px solid var(--glass-chrome-border); border-radius: var(--radius-lg);
  box-shadow:
    0 26px 64px -16px rgba(15,25,15,0.55), 0 8px 22px -4px rgba(15,25,15,0.28),
    inset 0 1px 0 rgba(247,248,229,0.10), inset 0 -1px 0 rgba(15,25,15,0.32);
  overflow: hidden;
}
.glass-chrome::before {
  content: ''; position: absolute; inset: 0; pointer-events: none; z-index: -1;
  background:
    radial-gradient(620px 280px at 0% 0%, rgba(208,253,0,0.14) 0%, transparent 60%),
    radial-gradient(540px 340px at 100% 100%, rgba(130,174,255,0.10) 0%, transparent 58%);
  mix-blend-mode: screen;
}
.glass-chrome::after {
  content: ''; position: absolute; inset: 0 0 auto 0; height: 1px; z-index: -1; pointer-events: none;
  background: linear-gradient(90deg, transparent, rgba(247,248,229,0.22), transparent);
}

/* Inner mini-card dentro de panel chrome (p.ej. una celda KPI) */
.glass-inset {
  position: relative; overflow: hidden;
  background: linear-gradient(135deg, rgba(247,248,229,0.07) 0%, rgba(247,248,229,0.02) 100%);
  border: 1px solid rgba(247,248,229,0.14); border-radius: var(--radius-md);
  backdrop-filter: blur(18px) saturate(160%); -webkit-backdrop-filter: blur(18px) saturate(160%);
  box-shadow: inset 0 1px 0 rgba(247,248,229,0.10), inset 0 -1px 0 rgba(15,25,15,0.30), 0 1px 2px rgba(15,25,15,0.20);
  transition: background var(--motion-base), border-color var(--motion-base), transform var(--motion-base), box-shadow var(--motion-base);
}
.glass-inset:hover {
  background: linear-gradient(135deg, rgba(208,253,0,0.10) 0%, rgba(247,248,229,0.04) 100%);
  border-color: rgba(208,253,0,0.32); transform: translateY(-1px);
  box-shadow: inset 0 1px 0 rgba(247,248,229,0.14), inset 0 -1px 0 rgba(15,25,15,0.30), 0 6px 16px -4px rgba(15,25,15,0.30);
}

/* Cream glass — semi-transparente sobre la page cream */
.glass-cream {
  position: relative; isolation: isolate;
  background: linear-gradient(135deg, rgba(253,253,250,0.82) 0%, rgba(247,248,229,0.58) 100%);
  backdrop-filter: blur(22px) saturate(180%); -webkit-backdrop-filter: blur(22px) saturate(180%);
  border: 1px solid rgba(15,25,15,0.10); border-radius: var(--radius-lg);
  box-shadow:
    0 18px 48px -14px rgba(15,25,15,0.18), 0 6px 16px -4px rgba(15,25,15,0.08),
    0 1px 2px rgba(15,25,15,0.04), inset 0 1px 0 rgba(255,255,255,0.78), inset 0 -1px 0 rgba(15,25,15,0.05);
}
.glass-cream::before {
  content: ''; position: absolute; inset: 0 0 auto 0; height: 45%; z-index: -1; pointer-events: none;
  background: linear-gradient(180deg, rgba(255,255,255,0.35) 0%, transparent 100%);
  border-radius: var(--radius-lg) var(--radius-lg) 0 0;
}

/* Accent glass — highlight lima (estados activos/calientes) */
.glass-accent {
  background: var(--grad-accent-soft); border: 1px solid var(--accent-border);
  border-radius: var(--radius-md);
  backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
}

/* Card base + variante elevada (premium lift para hero) */
.card {
  background: var(--bg-surface); border: 1px solid var(--border-subtle);
  border-radius: var(--radius-lg); box-shadow: var(--shadow-card);
}
.card-elevated {
  box-shadow:
    0 30px 70px -18px rgba(15,25,15,0.26), 0 12px 28px -6px rgba(15,25,15,0.13),
    0 1px 2px rgba(15,25,15,0.06), inset 0 1px 0 rgba(255,255,255,0.85), inset 0 -1px 0 rgba(15,25,15,0.06);
}

/* ═══════════════════════════════════════════════════════════════════
   GLASS BUTTONS · familia completa
   Uso: <button class="btn-base btn-glass-accent">…</button>
   ═══════════════════════════════════════════════════════════════════ */

.btn-base {
  position: relative; isolation: isolate;
  display: inline-flex; align-items: center; justify-content: center; gap: 6px;
  height: 34px; padding: 0 14px; border-radius: var(--radius-sm);
  font-size: 13px; font-weight: 500;
  box-shadow: 0 1px 2px rgba(15,25,15,0.08), inset 0 1px 0 rgba(255,255,255,0.55);
  transition: background var(--motion-fast), box-shadow var(--motion-fast), transform var(--motion-fast), border-color var(--motion-fast);
}
.btn-base:not(:disabled):hover  { transform: translateY(-0.5px); }
.btn-base:not(:disabled):active { transform: translateY(0.5px); }
.btn-base:disabled { opacity: 0.55; cursor: not-allowed; }
.btn-base:focus-visible {
  outline: none;
  box-shadow: 0 0 0 1px rgba(247,248,229,0.95), 0 0 0 3px rgba(208,253,0,0.55), inset 0 1px 0 rgba(255,255,255,0.55);
}

/* Dark-green glass (primary) */
.btn-glass-chrome {
  background: linear-gradient(180deg, rgba(30,42,30,0.92) 0%, rgba(15,25,15,0.95) 100%);
  color: var(--chrome-text);
  backdrop-filter: blur(10px) saturate(140%); -webkit-backdrop-filter: blur(10px) saturate(140%);
  border: 1px solid rgba(247,248,229,0.08);
  box-shadow: 0 2px 4px rgba(15,25,15,0.18), inset 0 1px 0 rgba(247,248,229,0.06), inset 0 -1px 0 rgba(15,25,15,0.32);
}
.btn-glass-chrome:hover:not(:disabled) { background: linear-gradient(180deg, rgba(46,58,46,0.95) 0%, rgba(22,34,22,0.98) 100%); }

/* Lima glass (accent / CTA) */
.btn-glass-accent {
  background: linear-gradient(180deg, rgba(224,255,64,0.98) 0%, rgba(208,253,0,1) 100%);
  border: 1px solid rgba(150,184,0,0.55);
  box-shadow: 0 2px 6px rgba(150,184,0,0.28), inset 0 1px 0 rgba(255,255,255,0.70), inset 0 -1px 0 rgba(74,100,0,0.22);
}
.btn-glass-accent:hover:not(:disabled) { background: linear-gradient(180deg, rgba(232,255,80,1) 0%, rgba(184,224,0,1) 100%); }

/* Accent-glow CTA — halo animado. USAR 1 por superficie (cierre de venta). */
.btn-glass-accent-glow {
  background: linear-gradient(180deg, rgba(224,255,64,0.98) 0%, rgba(208,253,0,1) 100%);
  border: 1px solid rgba(150,184,0,0.55);
  box-shadow: 0 0 0 0 rgba(208,253,0,0.55), 0 2px 8px rgba(150,184,0,0.34), inset 0 1px 0 rgba(255,255,255,0.72), inset 0 -1px 0 rgba(74,100,0,0.22);
  animation: accent-pulse 2.4s ease-in-out infinite;
}
.btn-glass-accent-glow:hover:not(:disabled) { animation-play-state: paused; }
@keyframes accent-pulse {
  0%, 100% { box-shadow: 0 0 0 0 rgba(208,253,0,0.45), 0 2px 8px rgba(150,184,0,0.34), inset 0 1px 0 rgba(255,255,255,0.72), inset 0 -1px 0 rgba(74,100,0,0.22); }
  50%      { box-shadow: 0 0 0 6px rgba(208,253,0,0.0), 0 4px 14px rgba(150,184,0,0.42), inset 0 1px 0 rgba(255,255,255,0.85), inset 0 -1px 0 rgba(74,100,0,0.22); }
}

/* Sunflower glass — amarillo girasol cálido (mismo tratamiento que accent) */
.btn-glass-sunflower {
  background: linear-gradient(180deg, rgba(255,218,92,0.98) 0%, rgba(255,199,44,1) 100%);
  border: 1px solid rgba(202,152,0,0.55);
  box-shadow: 0 2px 6px rgba(202,152,0,0.28), inset 0 1px 0 rgba(255,255,255,0.72), inset 0 -1px 0 rgba(120,86,0,0.22);
}
.btn-glass-sunflower:hover:not(:disabled) { background: linear-gradient(180deg, rgba(255,224,110,1) 0%, rgba(245,186,20,1) 100%); }
.btn-glass-sunflower, .btn-glass-sunflower:hover { color: #3a2d02 !important; }

/* Fuchsia glass */
.btn-glass-fuchsia {
  background: linear-gradient(180deg, #f0abfc 0%, #e879f9 100%);
  border: 1px solid rgba(192,38,211,0.55);
  box-shadow: 0 2px 6px rgba(192,38,211,0.28), inset 0 1px 0 rgba(255,255,255,0.55), inset 0 -1px 0 rgba(112,26,117,0.22);
}
.btn-glass-fuchsia:hover:not(:disabled) { background: linear-gradient(180deg, #f5b8fd 0%, #e25ff0 100%); }
.btn-glass-fuchsia, .btn-glass-fuchsia:hover { color: #3d0a40 !important; }

/* Info glass (azul) */
.btn-glass-info {
  background: linear-gradient(180deg, #5b9df9 0%, #3b82f6 100%);
  border: 1px solid rgba(37,99,235,0.55);
  box-shadow: 0 2px 6px rgba(37,99,235,0.30), inset 0 1px 0 rgba(255,255,255,0.45), inset 0 -1px 0 rgba(20,52,140,0.25);
}
.btn-glass-info:hover:not(:disabled) { background: linear-gradient(180deg, #6fa8fb 0%, #2d74ee 100%); }
.btn-glass-info, .btn-glass-info:hover { color: #ffffff !important; }

/* Cream glass (secondary) */
.btn-glass-cream {
  background: linear-gradient(180deg, rgba(253,253,250,0.86) 0%, rgba(240,242,222,0.78) 100%);
  backdrop-filter: blur(12px) saturate(140%); -webkit-backdrop-filter: blur(12px) saturate(140%);
  border: 1px solid rgba(15,25,15,0.10);
  box-shadow: 0 1px 2px rgba(15,25,15,0.06), inset 0 1px 0 rgba(255,255,255,0.75);
}
.btn-glass-cream:hover:not(:disabled) { background: linear-gradient(180deg, rgba(255,255,252,0.94) 0%, rgba(240,242,222,0.88) 100%); border-color: rgba(15,25,15,0.14); }

/* Outline glass */
.btn-glass-outline {
  background: linear-gradient(180deg, rgba(253,253,250,0.55) 0%, rgba(247,248,229,0.35) 100%);
  backdrop-filter: blur(14px) saturate(140%); -webkit-backdrop-filter: blur(14px) saturate(140%);
  border: 1px solid rgba(15,25,15,0.18); box-shadow: inset 0 1px 0 rgba(255,255,255,0.65);
}
.btn-glass-outline:hover:not(:disabled) { background: linear-gradient(180deg, rgba(253,253,250,0.78) 0%, rgba(247,248,229,0.62) 100%); border-color: rgba(15,25,15,0.24); }

/* Ghost — sin chrome en reposo, glass al hover */
.btn-glass-ghost { background: transparent; border: 1px solid transparent; box-shadow: none; }
.btn-glass-ghost:hover:not(:disabled) {
  background: linear-gradient(180deg, rgba(253,253,250,0.58) 0%, rgba(247,248,229,0.40) 100%);
  backdrop-filter: blur(10px) saturate(140%); -webkit-backdrop-filter: blur(10px) saturate(140%);
  border-color: rgba(15,25,15,0.08); box-shadow: inset 0 1px 0 rgba(255,255,255,0.55);
}

/* Destructive glass */
.btn-glass-destructive {
  background: linear-gradient(180deg, rgba(220,80,56,0.96) 0%, rgba(180,56,38,0.98) 100%);
  border: 1px solid rgba(140,36,22,0.55); color: #FFF6F2;
  box-shadow: 0 2px 6px rgba(140,36,22,0.32), inset 0 1px 0 rgba(255,255,255,0.16), inset 0 -1px 0 rgba(80,12,6,0.32);
}
.btn-glass-destructive:hover:not(:disabled) { background: linear-gradient(180deg, rgba(232,92,64,1) 0%, rgba(196,64,42,1) 100%); }

/* REGLA DEFENSIVA: texto sobre lima/cream/outline/ghost SIEMPRE dark green */
.btn-glass-accent, .btn-glass-accent:hover, .btn-glass-accent-glow,
.btn-glass-cream, .btn-glass-outline, .btn-glass-ghost {
  color: var(--text-on-accent) !important;
}
.btn-base svg { color: inherit; stroke: currentColor; }

/* ═══════════════════════════════════════════════════════════════════
   GLASS FORMS · inputs, textarea, select, checkbox, kbd
   ═══════════════════════════════════════════════════════════════════ */

.glass-input, .glass-textarea, .glass-select {
  display: block; width: 100%; height: 34px; padding: 0 10px;
  font-size: 13px; line-height: 1.4; font-family: inherit; color: var(--text-primary);
  background: linear-gradient(180deg, rgba(253,253,250,0.86) 0%, rgba(247,248,229,0.66) 100%);
  border: 1px solid rgba(15,25,15,0.10); border-radius: var(--radius-sm);
  backdrop-filter: blur(12px) saturate(140%); -webkit-backdrop-filter: blur(12px) saturate(140%);
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.55);
  transition: background var(--motion-fast), border-color var(--motion-fast), box-shadow var(--motion-fast), color var(--motion-fast);
  outline: none;
}
.glass-input::placeholder, .glass-textarea::placeholder { color: var(--text-tertiary); }
.glass-input:hover:not(:disabled), .glass-textarea:hover:not(:disabled), .glass-select:hover:not(:disabled) {
  border-color: rgba(15,25,15,0.18);
  background: linear-gradient(180deg, rgba(255,255,252,0.92) 0%, rgba(240,242,222,0.78) 100%);
}
.glass-input:focus, .glass-textarea:focus, .glass-select:focus,
.glass-input:focus-visible, .glass-textarea:focus-visible, .glass-select:focus-visible {
  border-color: rgba(208,253,0,0.45);
  box-shadow: 0 0 0 3px rgba(208,253,0,0.22), inset 0 1px 0 rgba(255,255,255,0.65);
}
.glass-input:disabled, .glass-textarea:disabled, .glass-select:disabled { opacity: 0.55; cursor: not-allowed; }
.glass-textarea { height: auto; min-height: 72px; padding: 8px 10px; resize: vertical; }
.glass-select {
  -webkit-appearance: none; -moz-appearance: none; appearance: none; padding-right: 28px; cursor: pointer;
  background-image:
    linear-gradient(180deg, rgba(253,253,250,0.86) 0%, rgba(247,248,229,0.66) 100%),
    url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6' fill='none'><path d='M1 1L5 5L9 1' stroke='%230F190F' stroke-opacity='0.6' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/></svg>");
  background-repeat: no-repeat, no-repeat; background-position: 0 0, right 10px center; background-size: cover, 10px 6px;
}

/* Checkbox glass */
.glass-checkbox {
  appearance: none; -webkit-appearance: none; width: 16px; height: 16px; border-radius: var(--radius-xs);
  background: linear-gradient(180deg, rgba(253,253,250,0.92) 0%, rgba(240,242,222,0.78) 100%);
  border: 1px solid rgba(15,25,15,0.18); box-shadow: inset 0 1px 0 rgba(255,255,255,0.65);
  cursor: pointer; display: inline-flex; align-items: center; justify-content: center;
  position: relative; flex-shrink: 0;
  transition: background var(--motion-fast), border-color var(--motion-fast), box-shadow var(--motion-fast);
}
.glass-checkbox:checked {
  background: linear-gradient(180deg, rgba(224,255,64,0.98) 0%, rgba(208,253,0,1) 100%);
  border-color: rgba(150,184,0,0.55);
  box-shadow: 0 1px 3px rgba(150,184,0,0.32), inset 0 1px 0 rgba(255,255,255,0.70);
}
.glass-checkbox:checked::after {
  content: ''; position: absolute; width: 9px; height: 5px;
  border-left: 2px solid var(--chrome-base); border-bottom: 2px solid var(--chrome-base);
  transform: rotate(-45deg) translate(0.5px, -1px);
}
.glass-checkbox:focus-visible { outline: none; box-shadow: 0 0 0 3px rgba(208,253,0,0.45), inset 0 1px 0 rgba(255,255,255,0.65); }

/* Keyboard chip */
.kbd-pill {
  display: inline-flex; align-items: center; justify-content: center;
  padding: 1px 6px; min-width: 18px; height: 18px;
  font-family: var(--font-mono); font-size: 10px; font-weight: 600; color: var(--text-secondary);
  background: linear-gradient(180deg, rgba(253,253,250,0.96) 0%, rgba(240,242,222,0.85) 100%);
  border: 1px solid rgba(15,25,15,0.10); border-radius: var(--radius-xs);
  box-shadow: 0 1px 0 rgba(15,25,15,0.06), inset 0 1px 0 rgba(255,255,255,0.65);
}

/* ═══════════════════════════════════════════════════════════════════
   MARCAS · accent-dot, separadores, temperatura, badges
   ═══════════════════════════════════════════════════════════════════ */

.accent-dot {
  display: inline-block; width: 6px; height: 6px; border-radius: 9999px;
  background: var(--accent); box-shadow: 0 0 0 2px rgba(208,253,0,0.22);
  vertical-align: middle; margin-right: 8px;
}
.glass-separator { height: 1px; background: linear-gradient(90deg, transparent, rgba(247,248,229,0.12), transparent); }

.temp-dot { width: 8px; height: 8px; border-radius: 9999px; display: inline-block; }
.temp-dot-cold     { background: var(--temp-cold); }
.temp-dot-warm     { background: var(--temp-warm); }
.temp-dot-hot      { background: var(--temp-hot); }
.temp-dot-caliente { background: var(--seed-lime); box-shadow: 0 0 0 2px rgba(15,25,15,0.85); }

/* Badge pill genérico (variantes por color) */
.badge {
  display: inline-flex; align-items: center; gap: 4px;
  padding: 2px 8px; border-radius: var(--radius-pill);
  font-size: 11px; font-weight: 500; line-height: 1.4;
}
.badge-accent  { background: var(--accent-bg);  color: var(--accent-text-dark); border: 1px solid var(--accent-border); }
.badge-azure   { background: var(--azure-bg);   color: var(--azure-text-dark);  border: 1px solid var(--azure-border); }
.badge-success { background: var(--success-bg); color: var(--success);          border: 1px solid var(--success-border); }
.badge-warning { background: var(--warning-bg); color: var(--warning);          border: 1px solid var(--warning-border); }
.badge-error   { background: var(--error-bg);   color: var(--error);            border: 1px solid var(--error-border); }
.badge-ghost   { background: var(--bg-surface-2); color: var(--text-tertiary);  border: 1px solid var(--border-default); }

/* ═══════════════════════════════════════════════════════════════════
   MICRO-INTERACCIONES
   ═══════════════════════════════════════════════════════════════════ */

.card-btn { cursor: pointer; transition: background var(--motion-base), border-color var(--motion-base), box-shadow var(--motion-base), transform var(--motion-fast); }
.card-btn:hover { border-color: rgba(15,25,15,0.16); box-shadow: 0 4px 14px rgba(15,25,15,0.08), inset 0 1px 0 rgba(255,255,255,0.70); transform: translateY(-1px); }
.card-btn:active { transform: translateY(0); }

.lift-on-hover { transition: transform var(--motion-base), box-shadow var(--motion-base); }
.lift-on-hover:hover { transform: translateY(-2px); box-shadow: var(--shadow-lg); }

/* Specular sweep en hover (hero) */
.spec-sweep { position: relative; overflow: hidden; }
.spec-sweep::after {
  content: ''; position: absolute; top: 0; left: -30%; width: 40%; height: 100%;
  background: linear-gradient(90deg, transparent, rgba(247,248,229,0.06), transparent);
  transform: skewX(-18deg); transition: left 700ms ease; pointer-events: none;
}
.spec-sweep:hover::after { left: 130%; }

/* ═══════════════════════════════════════════════════════════════════
   ANIMACIONES
   ═══════════════════════════════════════════════════════════════════ */

@keyframes fade-in { from { opacity: 0; transform: translateY(4px); } to { opacity: 1; transform: translateY(0); } }
.animate-fade-in { animation: fade-in var(--motion-base) both; }

@keyframes route-enter { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } }
.animate-route-enter { animation: route-enter 280ms cubic-bezier(0.22, 1, 0.36, 1) both; }
.animate-route-enter > * { animation: route-enter 380ms cubic-bezier(0.22, 1, 0.36, 1) both; }
.animate-route-enter > *:nth-child(1) { animation-delay: 0ms; }
.animate-route-enter > *:nth-child(2) { animation-delay: 50ms; }
.animate-route-enter > *:nth-child(3) { animation-delay: 100ms; }
.animate-route-enter > *:nth-child(4) { animation-delay: 150ms; }
.animate-route-enter > *:nth-child(5) { animation-delay: 200ms; }
.animate-route-enter > *:nth-child(n+6) { animation-delay: 240ms; }

@keyframes scaleIn { from { transform: scale(0.98); opacity: 0; } to { transform: scale(1); opacity: 1; } }
.animate-scaleIn { animation: scaleIn 150ms ease; }

@keyframes pulse-accent { 0%,100% { box-shadow: 0 0 0 0 rgba(208,253,0,0.55); } 50% { box-shadow: 0 0 0 8px rgba(208,253,0,0); } }
.pulse-accent { animation: pulse-accent 1.8s ease-in-out infinite; }

@keyframes skeleton-shimmer { 0% { background-position: -200% 0; } 100% { background-position: 200% 0; } }
.skeleton-shimmer {
  background-color: var(--bg-surface-2);
  background-image: linear-gradient(90deg, transparent 0%, rgba(15,25,15,0.06) 40%, rgba(208,253,0,0.10) 50%, rgba(15,25,15,0.06) 60%, transparent 100%);
  background-size: 200% 100%; background-repeat: no-repeat;
  animation: skeleton-shimmer 1.4s ease-in-out infinite;
}

@media (prefers-reduced-motion: reduce) {
  .animate-route-enter, .animate-route-enter > *, .skeleton-shimmer,
  .pulse-accent, .btn-glass-accent-glow { animation: none !important; }
}

/* ── Responsive · aprieta paddings y títulos en móvil ────────────── */
@media (max-width: 767px) {
  :root { --page-padding: 16px; --card-padding: 14px; }
  .editorial-title { font-size: 28px; line-height: 1.1; }
  .num-tabular.editorial-title { font-size: 22px; }
}
