/* =====================================================================
   NOELYTH SOFTWORKS — DESIGN TOKENS
   Sistema visual derivado del brandboard oficial.
   No usar valores fuera de estas variables.
   ===================================================================== */

@font-face {
  font-family: 'Satoshi';
  src: url('../fonts/satoshi/Satoshi-Variable.woff2') format('woff2-variations'),
       url('../fonts/satoshi/Satoshi-Variable.woff') format('woff-variations');
  font-weight: 300 900;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: 'Satoshi';
  src: url('../fonts/satoshi/Satoshi-VariableItalic.woff2') format('woff2-variations'),
       url('../fonts/satoshi/Satoshi-VariableItalic.woff') format('woff-variations');
  font-weight: 300 900;
  font-style: italic;
  font-display: swap;
}

:root {
  /* === COLORES BRAND ====================================== */
  /* Paleta oficial — escala de azules profundos */
  --noir-950: #04161e;          /* fondo más oscuro, contraste extremo */
  --noir-900: #06222f;          /* fondo principal dark */
  --noir-800: #07364c;          /* fondo elevado */
  --noir-700: #0d4c69;          /* fondo elevado +1 */
  --blue-600: #0573a8;          /* azul corporativo */
  --blue-500: #0c8dce;          /* azul acento brillante */
  --blue-400: #3aa5db;          /* hover acento */
  --blue-300: #7cc4e8;          /* acento suave */
  --blue-100: #d6ecf7;          /* tintes muy suaves */
  --blue-50:  #f0f7fb;          /* fondo light azulado */
  --white:    #ffffff;
  --black:    #000000;

  /* Neutros (derivados, baja saturación azulada) */
  --neutral-50:  #f7f9fb;
  --neutral-100: #eef2f6;
  --neutral-200: #dde4ea;
  --neutral-300: #b9c4cd;
  --neutral-400: #8a98a3;
  --neutral-500: #5d6b76;
  --neutral-600: #3e4a54;
  --neutral-700: #25313a;

  /* === ROLES SEMÁNTICOS DARK (default) ==================== */
  --bg:            var(--noir-900);
  --bg-elevated:   #0a2c3d;
  --bg-elevated-2: #0d3a52;
  --bg-glass:      rgba(255, 255, 255, 0.04);
  --bg-glass-hover:rgba(255, 255, 255, 0.07);

  --surface-line:  rgba(255, 255, 255, 0.08);
  --surface-line-strong: rgba(255, 255, 255, 0.16);

  --text-primary:   #f4f8fb;
  --text-secondary: #b8c8d3;
  --text-muted:     #7a8c98;
  --text-inverse:   var(--noir-900);

  --accent:        var(--blue-500);
  --accent-strong: var(--blue-600);
  --accent-soft:   rgba(12, 141, 206, 0.12);
  --accent-glow:   rgba(12, 141, 206, 0.35);

  --success: #2ec27e;
  --warning: #f5a524;
  --danger:  #ef4444;

  /* === TIPOGRAFÍA ========================================= */
  --font-sans: 'Satoshi', 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
  --font-mono: 'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;

  /* Escala fluida (clamp min, vw, max) */
  --fs-display: clamp(2.75rem, 5.5vw + 1rem, 5.5rem);   /* 44–88 */
  --fs-h1:      clamp(2.25rem, 4vw + 1rem, 4rem);        /* 36–64 */
  --fs-h2:      clamp(1.75rem, 2.4vw + 1rem, 3rem);      /* 28–48 */
  --fs-h3:      clamp(1.375rem, 1.2vw + 0.9rem, 2rem);   /* 22–32 */
  --fs-h4:      clamp(1.125rem, 0.6vw + 0.95rem, 1.375rem);/* 18–22 */
  --fs-body-lg: clamp(1.0625rem, 0.3vw + 1rem, 1.1875rem); /* 17–19 */
  --fs-body:    1rem;        /* 16 */
  --fs-small:   0.875rem;    /* 14 */
  --fs-caption: 0.75rem;     /* 12 — uppercase eyebrow */

  /* Pesos */
  --fw-light:   300;
  --fw-regular: 400;
  --fw-medium:  500;
  --fw-bold:    700;
  --fw-black:   900;

  /* Line height */
  --lh-tight:   1.05;
  --lh-snug:    1.2;
  --lh-normal:  1.5;
  --lh-relaxed: 1.7;

  /* Tracking */
  --tracking-tight:  -0.03em;
  --tracking-normal: 0;
  --tracking-wide:   0.02em;
  --tracking-wider:  0.12em;
  --tracking-widest: 0.22em;

  /* === SPACING (escala 4px) =============================== */
  --space-1:  0.25rem;   /* 4 */
  --space-2:  0.5rem;    /* 8 */
  --space-3:  0.75rem;   /* 12 */
  --space-4:  1rem;      /* 16 */
  --space-5:  1.25rem;   /* 20 */
  --space-6:  1.5rem;    /* 24 */
  --space-8:  2rem;      /* 32 */
  --space-10: 2.5rem;    /* 40 */
  --space-12: 3rem;      /* 48 */
  --space-16: 4rem;      /* 64 */
  --space-20: 5rem;      /* 80 */
  --space-24: 6rem;      /* 96 */
  --space-32: 8rem;      /* 128 */
  --space-40: 10rem;     /* 160 */

  /* === LAYOUT ============================================= */
  --container-xs:  640px;
  --container-sm:  768px;
  --container-md:  960px;
  --container-lg:  1180px;
  --container-xl:  1320px;
  --container-2xl: 1440px;
  --gutter: clamp(1.25rem, 3vw, 2rem);

  /* === RADII ============================================== */
  --r-xs:  4px;
  --r-sm:  8px;
  --r-md:  12px;
  --r-lg:  16px;
  --r-xl:  24px;
  --r-2xl: 32px;
  --r-pill: 999px;

  /* === SHADOWS / GLOWS ==================================== */
  --shadow-sm:  0 1px 2px rgba(4, 22, 30, 0.4);
  --shadow-md:  0 8px 24px -8px rgba(4, 22, 30, 0.5);
  --shadow-lg:  0 24px 48px -16px rgba(4, 22, 30, 0.6);
  --shadow-xl:  0 40px 80px -24px rgba(4, 22, 30, 0.65);

  --glow-sm: 0 0 24px rgba(12, 141, 206, 0.18);
  --glow-md: 0 0 48px rgba(12, 141, 206, 0.28);
  --glow-lg: 0 0 80px rgba(12, 141, 206, 0.35);

  --shadow-card: 0 1px 0 rgba(255,255,255,0.04) inset, 0 24px 48px -24px rgba(4, 22, 30, 0.7);

  /* === MOTION ============================================= */
  --ease-out:    cubic-bezier(0.16, 1, 0.3, 1);
  --ease-in-out: cubic-bezier(0.65, 0, 0.35, 1);
  --ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1);

  --dur-fast:   150ms;
  --dur-base:   240ms;
  --dur-slow:   420ms;
  --dur-slower: 700ms;

  /* === Z-INDEX ============================================ */
  --z-base:    1;
  --z-raised:  10;
  --z-sticky:  100;
  --z-overlay: 500;
  --z-modal:   1000;
  --z-toast:   2000;

  /* === GRADIENTES BRAND =================================== */
  --grad-hero:
    radial-gradient(1200px 600px at 80% -10%, rgba(12, 141, 206, 0.22), transparent 60%),
    radial-gradient(900px 500px at 10% 30%, rgba(5, 115, 168, 0.18), transparent 60%),
    linear-gradient(180deg, var(--noir-900) 0%, var(--noir-950) 100%);
  --grad-section:
    linear-gradient(180deg, var(--noir-900) 0%, #051c27 100%);
  --grad-accent: linear-gradient(135deg, var(--blue-600) 0%, var(--blue-500) 100%);
  --grad-text:   linear-gradient(180deg, #ffffff 0%, #b8d4e6 100%);
  --grad-line:   linear-gradient(90deg, transparent, var(--surface-line-strong), transparent);
}

/* Variante light (secciones claras puntuales) */
.theme-light {
  --bg:            var(--white);
  --bg-elevated:   var(--neutral-50);
  --bg-elevated-2: var(--neutral-100);
  --bg-glass:      rgba(6, 34, 47, 0.03);
  --bg-glass-hover:rgba(6, 34, 47, 0.06);

  --surface-line:        rgba(6, 34, 47, 0.08);
  --surface-line-strong: rgba(6, 34, 47, 0.16);

  --text-primary:   var(--noir-900);
  --text-secondary: var(--neutral-600);
  --text-muted:     var(--neutral-500);
  --text-inverse:   var(--white);

  --shadow-sm: 0 1px 2px rgba(6, 34, 47, 0.06);
  --shadow-md: 0 12px 28px -10px rgba(6, 34, 47, 0.12);
  --shadow-lg: 0 28px 56px -20px rgba(6, 34, 47, 0.16);

  --shadow-card: 0 1px 0 rgba(6,34,47,0.04) inset, 0 16px 32px -20px rgba(6, 34, 47, 0.18);
  --grad-text: linear-gradient(180deg, var(--noir-900) 0%, var(--noir-700) 100%);
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}
