/* ==========================================================
   FX NOTES – BRAND SYSTEM (EDUCATION THEME)
   Version: 1.0
   ----------------------------------------------------------
   Contains colour tokens, typography, spacing, and motion
   for consistent FX Notes visuals across app and marketing.
   ========================================================== */

   :root {
    /* --- Colours --- */
    --fx-purple: #8F92F6;   /* Primary */
    --fx-lilac: #C6C8F7;    /* Gradient light */
    --fx-pink: #EC9FC4;     /* Gradient accent */
    --fx-coral: #FBBAA4;    /* Warm accent */
    --fx-green: #7EDD85;    /* Positive / success */
    --fx-dark: #1C2137;     /* Headings / body */
    --fx-bg: #F7F5F9;       /* Page background */
    --fx-grey: #444444;     /* Dark contrast */
    --fx-white: #ffffff;
  
    /* --- Gradients --- */
    --fx-gradient-main: linear-gradient(26.35deg, #C6C8F7 19.03%, #EC9FC4 112.92%);
    --fx-gradient-alt:  linear-gradient(120deg, #8F92F6 0%, #EC9FC4 100%);
  
    /* --- Typography --- */
    --font-primary: 'Poppins', sans-serif;
  
    --fx-h1-size: 54px;
    --fx-h2-size: 32px;
    --fx-body-size: 16px;
    --fx-caption-size: 14px;
  
    --fx-font-bold: 700;
    --fx-font-semi: 600;
    --fx-font-regular: 400;
  
    /* --- Layout --- */
    --fx-radius-card: 20px;
    --fx-shadow-card: 0 6px 20px rgba(0,0,0,0.05);
    --fx-max-width: 1220px;
    --fx-gap: 24px;
  
    /* --- Motion --- */
    --fx-ease: cubic-bezier(0.4, 0, 0.2, 1);
    --fx-duration: 300ms;
  }
  
  /* ==========================================================
     BASE STYLES
     ========================================================== */
  
  body {
    background-color: var(--fx-bg);
    color: var(--fx-dark);
    font-family: var(--font-primary);
    font-size: var(--fx-body-size);
    font-weight: var(--fx-font-regular);
    line-height: 1.5;
  }
  
  /* --- Headings --- */
  .fx-h1, h1 {
    font-size: var(--fx-h1-size);
    font-weight: var(--fx-font-bold);
    line-height: 1.1;
    color: var(--fx-dark);
  }
  .fx-h2, h2 {
    font-size: var(--fx-h2-size);
    font-weight: var(--fx-font-semi);
  }
  
  /* --- Cards --- */
  .fx-card {
    background: var(--fx-white);
    border-radius: var(--fx-radius-card);
    box-shadow: var(--fx-shadow-card);
    transition: transform var(--fx-duration) var(--fx-ease),
                box-shadow var(--fx-duration) var(--fx-ease);
  }
  .fx-card:hover {
    transform: translateY(-2px);
    box-shadow: 0 10px 25px rgba(0,0,0,0.08);
  }
  
  /* --- Buttons --- */
  .fx-btn-primary {
    background: var(--fx-purple);
    color: var(--fx-white);
    border-radius: 12px;
    padding: 10px 18px;
    font-weight: var(--fx-font-semi);
    transition: background var(--fx-duration) var(--fx-ease);
  }
  .fx-btn-primary:hover {
    background: #7c7ff0;
  }
  
  /* --- Gradient Text Utility --- */
  .fx-gradient-text {
    background: var(--fx-gradient-main);
    background-clip: text;
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
  }
  
  
  /* --- Shadows & Containers --- */
  .fx-container {
    max-width: var(--fx-max-width);
    margin: 0 auto;
    padding: var(--fx-gap);
  }
  
  /* --- Animation Utility --- */
  .fade-up {
    opacity: 0;
    transform: translateY(10px);
    animation: fadeUp var(--fx-duration) var(--fx-ease) forwards;
  }
  @keyframes fadeUp {
    to {
      opacity: 1;
      transform: translateY(0);
    }
  }
  
  /* --- Responsive adjustments --- */
  @media (max-width: 991px) {
    :root {
      --fx-h1-size: 36px;
      --fx-h2-size: 24px;
      --fx-body-size: 15px;
    }
    .fx-container {
      padding: 16px;
    }
  }
  