/* ════════════════════════════════════════════════════════════════════════════
   EQUIPOINTE DESIGN SYSTEM
   Дизайн-система EquiPointe v1.0

   Философия:
   - UI чистый и лёгкий, но с УВЕРЕННЫМ использованием фирменных цветов
   - Бирюзово-синий спектр — это ДНК бренда EquiPointe
   - Эмоция и настроение — через ФОТОГРАФИИ с цветовой коррекцией
   - Референс лёгкости: dancer.com

   Мантра: "Clean + Colorful, not Sterile + Generic"
   ════════════════════════════════════════════════════════════════════════════ */

/* ═══════════════════════════════════════════════════════════════════════════
   FONTS
   ═══════════════════════════════════════════════════════════════════════════ */

@font-face {
  font-family: 'Onest';
  src: url('../fonts/Onest-VariableFont_wght.ttf') format('truetype-variations');
  font-weight: 100 900;
  font-style: normal;
  font-display: swap;
}

/* Fallback для браузеров без поддержки variable fonts */
@font-face {
  font-family: 'Onest';
  src: url('../fonts/Onest-Regular.ttf') format('truetype');
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: 'Onest';
  src: url('../fonts/Onest-Medium.ttf') format('truetype');
  font-weight: 500;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: 'Onest';
  src: url('../fonts/Onest-SemiBold.ttf') format('truetype');
  font-weight: 600;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: 'Onest';
  src: url('../fonts/Onest-Bold.ttf') format('truetype');
  font-weight: 700;
  font-style: normal;
  font-display: swap;
}

/* ═══════════════════════════════════════════════════════════════════════════
   CSS CUSTOM PROPERTIES
   ═══════════════════════════════════════════════════════════════════════════ */

:root {
  /* ─────────────────────────────────────────────────────────────────────────
     PRIMARY COLORS — Бирюзово-синий спектр (ДНК бренда)
     ───────────────────────────────────────────────────────────────────────── */
  --ep-light-teal: #70CAD2;       /* hover-состояния, иконки, лёгкие акценты */
  --ep-soft-teal: #70B3CC;        /* альтернативный hover, мягкие акценты */
  --ep-primary-teal: #4998B2;     /* основные кнопки, активные элементы */
  --ep-muted-teal: #548AA1;       /* вторичные элементы, disabled-состояния */
  --ep-deep-teal: #337488;        /* ссылки, важные элементы */
  --ep-ocean-blue: #286795;       /* акценты, подзаголовки */
  --ep-vibrant-blue: #135985;     /* HERO-акценты, важные CTA, энергия! */
  --ep-teal-green: #1D6968;       /* альтернативные акценты */
  --ep-deep-teal-green: #0F5253; /* тёмные акценты */
  --ep-dark-navy: #043246;        /* заголовки, футер, основной текст */

  /* ─────────────────────────────────────────────────────────────────────────
     WARM ACCENTS — Персиковый спектр
     ───────────────────────────────────────────────────────────────────────── */
  --ep-soft-peach: #F5E6E0;       /* фон для секций (примерка, отзывы) */
  --ep-blush-pink: #FFE4E1;       /* hover-акценты, subtle highlights */
  --ep-warm-coral: #E8876C;       /* тёплый акцент для текста и иконок */

  /* ─────────────────────────────────────────────────────────────────────────
     NEUTRALS
     ───────────────────────────────────────────────────────────────────────── */
  --ep-white: #FFFFFF;
  --ep-gray-50: #F5F5F5;          /* альтернативный фон */
  --ep-gray-100: #EBEBEB;
  --ep-gray-200: #E0E0E0;         /* borders subtle */
  --ep-gray-300: #CCCCCC;
  --ep-gray-400: #999999;
  --ep-gray-500: #666666;         /* вторичный текст */
  --ep-gray-600: #4D4D4D;
  --ep-gray-700: #333333;         /* основной текст */
  --ep-black: #1A1A1A;

  /* ─────────────────────────────────────────────────────────────────────────
     SEMANTIC COLORS
     ───────────────────────────────────────────────────────────────────────── */
  --ep-success: #2E7D5A;
  --ep-warning: #D4A026;
  --ep-error: #C94545;
  --ep-info: var(--ep-primary-teal);

  /* ─────────────────────────────────────────────────────────────────────────
     APPLIED COLORS (для удобства использования)
     ───────────────────────────────────────────────────────────────────────── */

  /* Text */
  --ep-text-primary: var(--ep-gray-700);
  --ep-text-secondary: var(--ep-gray-500);
  --ep-text-headline: var(--ep-dark-navy);
  --ep-text-accent: var(--ep-primary-teal);
  --ep-text-on-dark: var(--ep-white);
  --ep-text-link: var(--ep-deep-teal);
  --ep-text-link-hover: var(--ep-primary-teal);
  --ep-text-muted: var(--ep-gray-100);

  /* Backgrounds */
  --ep-bg-primary: var(--ep-white);
  --ep-bg-secondary: var(--ep-gray-50);
  --ep-bg-warm: var(--ep-soft-peach);
  --ep-bg-dark: var(--ep-dark-navy);

  /* Gradients — бирюзовый спектр для глубины */
  --ep-gradient-teal: linear-gradient(135deg, var(--ep-light-teal) 0%, var(--ep-primary-teal) 50%, var(--ep-vibrant-blue) 100%);
  --ep-gradient-teal-soft: linear-gradient(135deg, rgba(112, 202, 210, 0.15) 0%, rgba(73, 152, 178, 0.08) 100%);
  --ep-gradient-teal-vibrant: linear-gradient(135deg, var(--ep-light-teal) 0%, var(--ep-vibrant-blue) 100%);
  --ep-gradient-ocean: linear-gradient(180deg, var(--ep-primary-teal) 0%, var(--ep-dark-navy) 100%);
  --ep-gradient-hero: linear-gradient(135deg, #5BB3C4 0%, #4998B2 35%, #337488 70%, #043246 100%);

  /* Borders */
  --ep-border-light: var(--ep-gray-200);
  --ep-border-accent: var(--ep-deep-teal);

  /* ─────────────────────────────────────────────────────────────────────────
     TYPOGRAPHY
     ───────────────────────────────────────────────────────────────────────── */
  --ep-font-family: 'Onest', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;

  /* Font sizes */
  --ep-text-2xs: 0.5rem;
  --ep-text-xs: 0.75rem;          /* 12px */
  --ep-text-sm: 0.875rem;         /* 14px */
  --ep-text-base: 1rem;           /* 16px */
  --ep-text-lg: 1.125rem;         /* 18px */
  --ep-text-xl: 1.25rem;          /* 20px */
  --ep-text-2xl: 1.5rem;          /* 24px */
  --ep-text-3xl: 2rem;            /* 32px */
  --ep-text-4xl: 2.5rem;          /* 40px */
  --ep-text-5xl: 3rem;            /* 48px */
  --ep-text-6xl: 4rem;            /* 64px */

  /* Responsive hero typography — сбалансированный масштаб */
  --ep-hero-title: clamp(2.25rem, 5vw, 4rem);   /* Заголовок hero — крупный, но не огромный */
  --ep-hero-accent: clamp(2.5rem, 6vw, 4rem);     /* Акцентная строка */
  --ep-section-title: clamp(1.5rem, 3vw, 2.5rem); /* Заголовки секций */
  --ep-quote: clamp(1.125rem, 2vw, 1.5rem);       /* Цитаты */

  /* Display-масштаб для статистики и нумерации */
  --ep-text-display: clamp(2.5rem, 6vw, 4rem);    /* Для ∞, 14, 0 — крупные, но сбалансированные */
  --ep-text-number: clamp(3rem, 8vw, 5rem);       /* Для нумерации 01, 02, 03 */

  /* Font weights */
  --ep-font-light: 200;
  --ep-font-normal: 300;
  --ep-font-medium: 400;
  --ep-font-semibold: 500;
  --ep-font-bold: 600;

  /* Line heights */
  --ep-leading-tight: 1.2;
  --ep-leading-snug: 1.375;
  --ep-leading-normal: 1.5;
  --ep-leading-relaxed: 1.625;

  /* Letter spacing */
  --ep-tracking-tight: -0.025em;
  --ep-tracking-normal: 0;
  --ep-tracking-wide: 0.025em;
  --ep-tracking-wider: 0.05em;

  /* ─────────────────────────────────────────────────────────────────────────
     SPACING (кратно 8px)
     ───────────────────────────────────────────────────────────────────────── */
  --ep-space-1: 0.25rem;          /* 4px */
  --ep-space-2: 0.5rem;           /* 8px */
  --ep-space-3: 0.75rem;          /* 12px */
  --ep-space-4: 1rem;             /* 16px */
  --ep-space-5: 1.25rem;          /* 20px */
  --ep-space-6: 1.5rem;           /* 24px */
  --ep-space-8: 2rem;             /* 32px */
  --ep-space-10: 2.5rem;          /* 40px */
  --ep-space-12: 3rem;            /* 48px */
  --ep-space-15: 3.75rem;         /* 60px */
  --ep-space-16: 4rem;            /* 64px */
  --ep-space-20: 5rem;            /* 80px */
  --ep-space-24: 6rem;            /* 96px */
  --ep-space-32: 8rem;            /* 128px */

  /* Section spacing */
  --ep-section-padding: clamp(4rem, 10vw, 8rem);
  --ep-hero-padding: clamp(5rem, 12vw, 10rem);

  /* ─────────────────────────────────────────────────────────────────────────
     LAYOUT
     ───────────────────────────────────────────────────────────────────────── */
  --ep-container-max: 1440px;
  --ep-container-narrow: 768px;
  --ep-container-wide: 1600px;
  --ep-container-padding: clamp(1rem, 5vw, 2rem);

  /* ─────────────────────────────────────────────────────────────────────────
     GRID SYSTEM — 12/8/4 колоночная адаптивная сетка

     Использование:
     - left: var(--ep-grid-col-4-start);  // Левая граница 4-й колонки
     - right: var(--ep-grid-col-10-end);  // Правая граница 10-й колонки
     - width: var(--ep-grid-col-width);   // Ширина одной колонки

     Breakpoints:
     - Desktop (>1024px): 12 колонок, gap 20px
     - Tablet (≤1024px): 8 колонок, gap 16px
     - Mobile (≤768px): 4 колонки, gap 16px

     ВАЖНО: Вычисляемые переменные (col-width, col-N-start/end) определены на body,
     чтобы корректно учитывать ширину scrollbar через calc(100vw - 100%).
     ───────────────────────────────────────────────────────────────────────── */

  /* Базовые параметры сетки (константы) */
  --ep-grid-columns: 12;
  --ep-grid-gap: 32px;

  /*
   * Fallback для viewport width (используется если JavaScript не загрузился).
   * JavaScript в base.njk перезапишет это значение точным числом в пикселях.
   */
  --ep-viewport-width: 100vw;

  /* ─────────────────────────────────────────────────────────────────────────
     BORDERS & RADIUS
     ───────────────────────────────────────────────────────────────────────── */
  --ep-radius-sm: 0px;
  --ep-radius-md: 2px;
  --ep-radius-lg: 4px;
  --ep-radius-xl: 6px;
  --ep-radius-2xl: 8px;
  --ep-radius-full: 9999px;

  /* Buttons: almost rectangular */
  --ep-radius-btn: 2px;

  /* Cards: subtle */
  --ep-radius-card: 2px;

  /* ─────────────────────────────────────────────────────────────────────────
     SHADOWS
     ───────────────────────────────────────────────────────────────────────── */
  --ep-shadow-xs: 0 1px 2px rgba(0, 0, 0, 0.04);
  --ep-shadow-sm: 0 2px 4px rgba(0, 0, 0, 0.04);
  --ep-shadow-md: 0 4px 12px rgba(0, 0, 0, 0.06);
  --ep-shadow-lg: 0 8px 24px rgba(0, 0, 0, 0.08);
  --ep-shadow-xl: 0 16px 48px rgba(0, 0, 0, 0.10);

  /* Card hover shadow */
  --ep-shadow-card-hover: 0 12px 32px rgba(4, 50, 70, 0.12);

  /* ─────────────────────────────────────────────────────────────────────────
     TRANSITIONS
     ───────────────────────────────────────────────────────────────────────── */
  --ep-transition-fast: 150ms ease;
  --ep-transition-base: 200ms ease;
  --ep-transition-smooth: 300ms cubic-bezier(0.25, 0.46, 0.45, 0.94);
  --ep-transition-slow: 400ms cubic-bezier(0.25, 0.46, 0.45, 0.94);

  /* ─────────────────────────────────────────────────────────────────────────
     Z-INDEX
     ───────────────────────────────────────────────────────────────────────── */
  --ep-z-dropdown: 100;
  --ep-z-sticky: 200;
  --ep-z-header: 300;
  --ep-z-modal-backdrop: 400;
  --ep-z-modal: 500;
  --ep-z-tooltip: 600;
}

/* ═══════════════════════════════════════════════════════════════════════════
   CSS RESET & BASE
   ═══════════════════════════════════════════════════════════════════════════ */

*,
*::before,
*::after {
  box-sizing: border-box;
}

* {
  margin: 0;
  padding: 0;
}

html {
  font-size: 16px;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
}

body {
  font-family: var(--ep-font-family);
  font-size: var(--ep-text-base);
  font-weight: var(--ep-font-normal);
  line-height: var(--ep-leading-normal);
  color: var(--ep-text-primary);
  background-color: var(--ep-bg-primary);

  /* ─────────────────────────────────────────────────────────────────────────
     GRID SYSTEM — Вычисляемые переменные

     ВАЖНО: CSS custom properties с % НЕ вычисляются при определении —
     они вычисляются при использовании, в контексте родителя элемента.
     Поэтому нельзя использовать calc(100vw - 100%) в переменных,
     которые будут применяться к элементам с width ≠ 100%.

     Подход: JavaScript устанавливает --ep-viewport-width на :root при загрузке
     страницы. CSS использует fallback из :root (100vw).
     ───────────────────────────────────────────────────────────────────────── */

  /* Фактическая ширина контейнера (меньшее из max и viewport) */
  --ep-grid-container-actual: min(var(--ep-container-max), var(--ep-viewport-width));

  /* Ширина контента внутри контейнера (без padding) */
  --ep-grid-content-width: calc(var(--ep-grid-container-actual) - 2 * var(--ep-container-padding));

  /* Ширина одной колонки */
  --ep-grid-col-width: calc((var(--ep-grid-content-width) - (var(--ep-grid-columns) - 1) * var(--ep-grid-gap)) / var(--ep-grid-columns));

  /* Отступ от края viewport до начала контента (эмулирует margin: 0 auto) */
  --ep-grid-side-offset: max(
    var(--ep-container-padding),
    calc((var(--ep-viewport-width) - var(--ep-grid-container-actual)) / 2 + var(--ep-container-padding))
  );

  /* ─── Позиции ЛЕВЫХ границ колонок (col-N-start) ─── */
  --ep-grid-col-1-start: var(--ep-grid-side-offset);
  --ep-grid-col-2-start: calc(var(--ep-grid-side-offset) + 1 * (var(--ep-grid-col-width) + var(--ep-grid-gap)));
  --ep-grid-col-3-start: calc(var(--ep-grid-side-offset) + 2 * (var(--ep-grid-col-width) + var(--ep-grid-gap)));
  --ep-grid-col-4-start: calc(var(--ep-grid-side-offset) + 3 * (var(--ep-grid-col-width) + var(--ep-grid-gap)));
  --ep-grid-col-5-start: calc(var(--ep-grid-side-offset) + 4 * (var(--ep-grid-col-width) + var(--ep-grid-gap)));
  --ep-grid-col-6-start: calc(var(--ep-grid-side-offset) + 5 * (var(--ep-grid-col-width) + var(--ep-grid-gap)));
  --ep-grid-col-7-start: calc(var(--ep-grid-side-offset) + 6 * (var(--ep-grid-col-width) + var(--ep-grid-gap)));
  --ep-grid-col-8-start: calc(var(--ep-grid-side-offset) + 7 * (var(--ep-grid-col-width) + var(--ep-grid-gap)));
  --ep-grid-col-9-start: calc(var(--ep-grid-side-offset) + 8 * (var(--ep-grid-col-width) + var(--ep-grid-gap)));
  --ep-grid-col-10-start: calc(var(--ep-grid-side-offset) + 9 * (var(--ep-grid-col-width) + var(--ep-grid-gap)));
  --ep-grid-col-11-start: calc(var(--ep-grid-side-offset) + 10 * (var(--ep-grid-col-width) + var(--ep-grid-gap)));
  --ep-grid-col-12-start: calc(var(--ep-grid-side-offset) + 11 * (var(--ep-grid-col-width) + var(--ep-grid-gap)));

  /* ─── Позиции ПРАВЫХ границ колонок (col-N-end) ─── */
  --ep-grid-col-1-end: calc(var(--ep-grid-col-1-start) + var(--ep-grid-col-width));
  --ep-grid-col-2-end: calc(var(--ep-grid-col-2-start) + var(--ep-grid-col-width));
  --ep-grid-col-3-end: calc(var(--ep-grid-col-3-start) + var(--ep-grid-col-width));
  --ep-grid-col-4-end: calc(var(--ep-grid-col-4-start) + var(--ep-grid-col-width));
  --ep-grid-col-5-end: calc(var(--ep-grid-col-5-start) + var(--ep-grid-col-width));
  --ep-grid-col-6-end: calc(var(--ep-grid-col-6-start) + var(--ep-grid-col-width));
  --ep-grid-col-7-end: calc(var(--ep-grid-col-7-start) + var(--ep-grid-col-width));
  --ep-grid-col-8-end: calc(var(--ep-grid-col-8-start) + var(--ep-grid-col-width));
  --ep-grid-col-9-end: calc(var(--ep-grid-col-9-start) + var(--ep-grid-col-width));
  --ep-grid-col-10-end: calc(var(--ep-grid-col-10-start) + var(--ep-grid-col-width));
  --ep-grid-col-11-end: calc(var(--ep-grid-col-11-start) + var(--ep-grid-col-width));
  --ep-grid-col-12-end: calc(var(--ep-grid-col-12-start) + var(--ep-grid-col-width));

  /* ─── Вспомогательная единица (col + gap) для расчётов ─── */
  --ep-grid-col-unit: calc(var(--ep-grid-col-width) + var(--ep-grid-gap));
}

img,
picture,
video,
canvas,
svg {
  display: block;
  max-width: 100%;
}

input,
button,
textarea,
select {
  font: inherit;
}

p,
h1,
h2,
h3,
h4,
h5,
h6 {
  overflow-wrap: break-word;
}

a {
  color: var(--ep-text-link);
  text-decoration: none;
  transition: color var(--ep-transition-fast);
}

a:hover {
  color: var(--ep-text-link-hover);
}

ul,
ol {
  list-style: none;
}

/* ═══════════════════════════════════════════════════════════════════════════
   TYPOGRAPHY
   ═══════════════════════════════════════════════════════════════════════════ */

h1, h2, h3, h4, h5, h6 {
  color: var(--ep-text-headline);
  font-weight: var(--ep-font-semibold);
  line-height: var(--ep-leading-tight);
  letter-spacing: var(--ep-tracking-tight);
}

h1 {
  font-size: var(--ep-hero-title);
}

h2 {
  font-size: var(--ep-section-title);
}

h3 {
  font-size: var(--ep-text-2xl);
}

h4 {
  font-size: var(--ep-text-xl);
}

h5 {
  font-size: var(--ep-text-lg);
}

h6 {
  font-size: var(--ep-text-base);
}

.ep-text-muted {
  color: var(--ep-text-secondary);
}

.ep-text-accent {
  color: var(--ep-text-accent);
}

.ep-text-headline {
  color: var(--ep-text-headline);
}

/* Text sizes */
.ep-text-xs { font-size: var(--ep-text-xs); }
.ep-text-sm { font-size: var(--ep-text-sm); }
.ep-text-base { font-size: var(--ep-text-base); }
.ep-text-lg { font-size: var(--ep-text-lg); }
.ep-text-xl { font-size: var(--ep-text-xl); }
.ep-text-2xl { font-size: var(--ep-text-2xl); }
.ep-text-3xl { font-size: var(--ep-text-3xl); }

/* Text weights */
.ep-font-normal { font-weight: var(--ep-font-normal); }
.ep-font-medium { font-weight: var(--ep-font-medium); }
.ep-font-semibold { font-weight: var(--ep-font-semibold); }
.ep-font-bold { font-weight: var(--ep-font-bold); }

/* Text alignment */
.ep-text-left { text-align: left; }
.ep-text-center { text-align: center; }
.ep-text-right { text-align: right; }

/* ═══════════════════════════════════════════════════════════════════════════
   LAYOUT
   ═══════════════════════════════════════════════════════════════════════════ */

.ep-container {
  width: 100%;
  max-width: var(--ep-container-max);
  margin-left: auto;
  margin-right: auto;
  padding-left: var(--ep-container-padding);
  padding-right: var(--ep-container-padding);
}

.ep-container_narrow {
  max-width: var(--ep-container-narrow);
}

.ep-container_wide {
  max-width: var(--ep-container-wide);
}

.ep-container_full {
  max-width: none;
}

/* Section */
.ep-section {
  padding-top: var(--ep-section-padding);
  padding-bottom: var(--ep-section-padding);
}

.ep-section_gray {
  background-color: var(--ep-bg-secondary);
}

.ep-section_warm {
  background-color: var(--ep-bg-warm);
}

.ep-section_dark {
  background-color: var(--ep-bg-dark);
  color: var(--ep-text-on-dark);
}

.ep-section_dark h1,
.ep-section_dark h2,
.ep-section_dark h3,
.ep-section_dark h4 {
  color: var(--ep-white);
}

/* ═══════════════════════════════════════════════════════════════════════════
   GRID
   ═══════════════════════════════════════════════════════════════════════════ */

.ep-grid {
  display: grid;
  gap: var(--ep-space-6);
}

.ep-grid_2 {
  grid-template-columns: repeat(2, 1fr);
}

.ep-grid_3 {
  grid-template-columns: repeat(3, 1fr);
}

.ep-grid_4 {
  grid-template-columns: repeat(4, 1fr);
}

/* Responsive grid */
@media (max-width: 768px) {
  .ep-grid_2,
  .ep-grid_3,
  .ep-grid_4 {
    grid-template-columns: 1fr;
  }
}

@media (min-width: 769px) and (max-width: 1024px) {
  .ep-grid_3,
  .ep-grid_4 {
    grid-template-columns: repeat(2, 1fr);
  }
}

/* ═══════════════════════════════════════════════════════════════════════════
   FLEXBOX UTILITIES
   ═══════════════════════════════════════════════════════════════════════════ */

.ep-flex { display: flex; }
.ep-flex-col { flex-direction: column; }
.ep-flex-wrap { flex-wrap: wrap; }
.ep-items-start { align-items: flex-start; }
.ep-items-center { align-items: center; }
.ep-items-end { align-items: flex-end; }
.ep-justify-start { justify-content: flex-start; }
.ep-justify-center { justify-content: center; }
.ep-justify-end { justify-content: flex-end; }
.ep-justify-between { justify-content: space-between; }

.ep-gap-1 { gap: var(--ep-space-1); }
.ep-gap-2 { gap: var(--ep-space-2); }
.ep-gap-3 { gap: var(--ep-space-3); }
.ep-gap-4 { gap: var(--ep-space-4); }
.ep-gap-6 { gap: var(--ep-space-6); }
.ep-gap-8 { gap: var(--ep-space-8); }

/* ═══════════════════════════════════════════════════════════════════════════
   SPACING UTILITIES
   ═══════════════════════════════════════════════════════════════════════════ */

/* Margin top */
.ep-mt-1 { margin-top: var(--ep-space-1); }
.ep-mt-2 { margin-top: var(--ep-space-2); }
.ep-mt-3 { margin-top: var(--ep-space-3); }
.ep-mt-4 { margin-top: var(--ep-space-4); }
.ep-mt-6 { margin-top: var(--ep-space-6); }
.ep-mt-8 { margin-top: var(--ep-space-8); }
.ep-mt-12 { margin-top: var(--ep-space-12); }
.ep-mt-16 { margin-top: var(--ep-space-16); }

/* Margin bottom */
.ep-mb-1 { margin-bottom: var(--ep-space-1); }
.ep-mb-2 { margin-bottom: var(--ep-space-2); }
.ep-mb-3 { margin-bottom: var(--ep-space-3); }
.ep-mb-4 { margin-bottom: var(--ep-space-4); }
.ep-mb-6 { margin-bottom: var(--ep-space-6); }
.ep-mb-8 { margin-bottom: var(--ep-space-8); }
.ep-mb-12 { margin-bottom: var(--ep-space-12); }

/* Padding */
.ep-p-4 { padding: var(--ep-space-4); }
.ep-p-6 { padding: var(--ep-space-6); }
.ep-p-8 { padding: var(--ep-space-8); }
.ep-py-4 { padding-top: var(--ep-space-4); padding-bottom: var(--ep-space-4); }
.ep-py-6 { padding-top: var(--ep-space-6); padding-bottom: var(--ep-space-6); }
.ep-py-8 { padding-top: var(--ep-space-8); padding-bottom: var(--ep-space-8); }
.ep-px-4 { padding-left: var(--ep-space-4); padding-right: var(--ep-space-4); }
.ep-px-6 { padding-left: var(--ep-space-6); padding-right: var(--ep-space-6); }

/* ═══════════════════════════════════════════════════════════════════════════
   BUTTONS
   ═══════════════════════════════════════════════════════════════════════════ */

.ep-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--ep-space-2);
  padding: var(--ep-space-3) var(--ep-space-6);
  font-family: var(--ep-font-family);
  font-size: var(--ep-text-base);
  font-weight: var(--ep-font-medium);
  line-height: 1;
  text-decoration: none;
  border: 2px solid transparent;
  border-radius: var(--ep-radius-btn);
  cursor: pointer;
  transition: all var(--ep-transition-base);
}

.ep-btn:focus-visible {
  outline: 2px solid var(--ep-primary-teal);
  outline-offset: 2px;
}

/* Primary button */
.ep-btn_primary {
  background-color: var(--ep-primary-teal);
  color: var(--ep-white);
  border-color: var(--ep-primary-teal);
}

.ep-btn_primary:hover {
  background-color: var(--ep-deep-teal);
  border-color: var(--ep-deep-teal);
  color: var(--ep-white);
}

/* Энергичная кнопка (для важных CTA) */
.ep-btn_vibrant {
  background-color: var(--ep-vibrant-blue);
  color: var(--ep-white);
  border-color: var(--ep-vibrant-blue);
}

.ep-btn_vibrant:hover {
  background-color: var(--ep-ocean-blue);
  border-color: var(--ep-ocean-blue);
  color: var(--ep-white);
}

/* Secondary button */
.ep-btn_secondary {
  background-color: var(--ep-white);
  color: var(--ep-deep-teal);
  border-color: var(--ep-deep-teal);
}

.ep-btn_secondary:hover {
  background-color: var(--ep-gray-50);
  color: var(--ep-primary-teal);
  border-color: var(--ep-primary-teal);
}

/* Ghost button */
.ep-btn_ghost {
  background-color: transparent;
  color: var(--ep-deep-teal);
  border-color: transparent;
}

.ep-btn_ghost:hover {
  background-color: var(--ep-gray-50);
  color: var(--ep-primary-teal);
}

/* Dark mode button (on dark backgrounds) */
.ep-btn_light {
  background-color: var(--ep-white);
  color: var(--ep-dark-navy);
  border-color: var(--ep-white);
}

.ep-btn_light:hover {
  background-color: var(--ep-gray-50);
  border-color: var(--ep-gray-50);
  color: var(--ep-dark-navy);
}

/* Выделение цены внутри кнопки */
.ep-btn__price {
  font-weight: var(--ep-font-bold);
  color: var(--ep-dark-navy);
  margin-left: var(--ep-space-2);
  white-space: nowrap;
}

/* Button sizes */
.ep-btn_sm {
  padding: var(--ep-space-2) var(--ep-space-4);
  font-size: var(--ep-text-sm);
}

.ep-btn_lg {
  padding: var(--ep-space-4) var(--ep-space-8);
  font-size: var(--ep-text-lg);
}

.ep-btn_block {
  width: 100%;
}

/* ═══════════════════════════════════════════════════════════════════════════
   CARDS
   ═══════════════════════════════════════════════════════════════════════════ */

.ep-card {
  background-color: var(--ep-white);
  border-radius: var(--ep-radius-card);
  box-shadow: var(--ep-shadow-sm);
  overflow: hidden;
  transition: box-shadow var(--ep-transition-smooth), transform var(--ep-transition-smooth);
}

.ep-card:hover {
  box-shadow: var(--ep-shadow-card-hover);
  transform: translateY(-4px);
}

.ep-card__image {
  aspect-ratio: 4/3;
  background-color: var(--ep-gray-100);
  overflow: hidden;
}

.ep-card__image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.ep-card__body {
  padding: var(--ep-space-6);
}

.ep-card__title {
  font-size: var(--ep-text-xl);
  font-weight: var(--ep-font-semibold);
  color: var(--ep-text-headline);
  margin-bottom: var(--ep-space-2);
}

.ep-card__description {
  color: var(--ep-text-secondary);
  line-height: var(--ep-leading-relaxed);
}

/* ═══════════════════════════════════════════════════════════════════════════
   FORMS
   ═══════════════════════════════════════════════════════════════════════════ */

.ep-form-group {
  margin-bottom: var(--ep-space-4);
}

.ep-form-label {
  display: block;
  font-size: var(--ep-text-sm);
  font-weight: var(--ep-font-medium);
  color: var(--ep-text-headline);
  margin-bottom: var(--ep-space-2);
}

.ep-form-label_required::after {
  content: ' *';
  color: var(--ep-error);
}

.ep-form-input {
  width: 100%;
  padding: var(--ep-space-3) var(--ep-space-4);
  font-size: var(--ep-text-base);
  color: var(--ep-text-primary);
  background-color: var(--ep-white);
  border: 1px solid var(--ep-border-light);
  border-radius: var(--ep-radius-md);
  transition: border-color var(--ep-transition-fast), box-shadow var(--ep-transition-fast);
}

.ep-form-input:focus {
  outline: none;
  border-color: var(--ep-primary-teal);
  box-shadow: 0 0 0 3px rgba(73, 152, 178, 0.15);
}

.ep-form-input::placeholder {
  color: var(--ep-gray-400);
}

.ep-form-hint {
  font-size: var(--ep-text-sm);
  color: var(--ep-text-secondary);
  margin-top: var(--ep-space-1);
}

.ep-form-error {
  font-size: var(--ep-text-sm);
  color: var(--ep-error);
  margin-top: var(--ep-space-1);
}

/* ─────────────────────────────────────────────────────────────────────────────
   CHECKBOX — Кастомный чекбокс (требования 152-ФЗ)
   ───────────────────────────────────────────────────────────────────────────── */

.ep-checkbox {
  display: flex;
  align-items: flex-start;
  gap: var(--ep-space-2);
  cursor: pointer;
  font-size: var(--ep-text-sm);
  line-height: var(--ep-leading-normal);
}

.ep-checkbox input[type="checkbox"] {
  position: absolute;
  opacity: 0;
  width: 0;
  height: 0;
}

.ep-checkbox__box {
  flex-shrink: 0;
  width: 18px;
  height: 18px;
  border: 2px solid var(--ep-gray-400);
  border-radius: var(--ep-radius-sm);
  background-color: var(--ep-white);
  transition: all var(--ep-transition-fast);
  position: relative;
  margin-top: 1px;
}

/* Галочка */
.ep-checkbox__box::after {
  content: '';
  position: absolute;
  left: 5px;
  top: 2px;
  width: 5px;
  height: 9px;
  border: solid var(--ep-white);
  border-width: 0 2px 2px 0;
  transform: rotate(45deg);
  opacity: 0;
  transition: opacity var(--ep-transition-fast);
}

/* Checked состояние */
.ep-checkbox input[type="checkbox"]:checked + .ep-checkbox__box {
  background-color: var(--ep-primary-teal);
  border-color: var(--ep-primary-teal);
}

.ep-checkbox input[type="checkbox"]:checked + .ep-checkbox__box::after {
  opacity: 1;
}

/* Focus состояние */
.ep-checkbox input[type="checkbox"]:focus-visible + .ep-checkbox__box {
  outline: 2px solid var(--ep-primary-teal);
  outline-offset: 2px;
}

/* Hover */
.ep-checkbox:hover .ep-checkbox__box {
  border-color: var(--ep-primary-teal);
}

.ep-checkbox__label {
  color: var(--ep-text-primary);
}

.ep-checkbox__label a {
  color: var(--ep-primary-teal);
  text-decoration: underline;
  text-underline-offset: 2px;
}

.ep-checkbox__label a:hover {
  color: var(--ep-deep-teal);
}

/* ═══════════════════════════════════════════════════════════════════════════
   BADGES
   ═══════════════════════════════════════════════════════════════════════════ */

.ep-badge {
  display: inline-flex;
  align-items: center;
  padding: var(--ep-space-1) var(--ep-space-3);
  font-size: var(--ep-text-xs);
  font-weight: var(--ep-font-semibold);
  text-transform: uppercase;
  letter-spacing: var(--ep-tracking-wide);
  border-radius: var(--ep-radius-full);
  background-color: var(--ep-primary-teal);
  color: var(--ep-white);
}

.ep-badge_outline {
  background-color: transparent;
  color: var(--ep-primary-teal);
  border: 1px solid var(--ep-primary-teal);
}

.ep-badge_dark {
  background-color: var(--ep-dark-navy);
}

.ep-badge_warm {
  background-color: var(--ep-soft-peach);
  color: var(--ep-dark-navy);
}

/* Градиентные бейджи */
.ep-badge_gradient-teal {
  background: linear-gradient(
    135deg,
    #38b0bb 0%,
    #22a6b1 30%,
    #28aab5 60%,
    #035f65 100%
  );
  border: none;
}

.ep-badge_gradient-warm {
  background: linear-gradient(
    135deg,
    #FFE4E1 0%,
    #F5E6E0 50%,
    #FFFFFF 100%
  );
  color: var(--ep-warm-coral);
  border: none;
}

/* Иконка для тёплого градиента — coral */
.ep-badge_gradient-warm .ep-badge__icon {
  filter: invert(60%) sepia(50%) saturate(600%) hue-rotate(330deg) brightness(95%) contrast(90%);
}

/* Badge с иконкой */
.ep-badge__icon {
  width: 14px;
  height: 14px;
  margin-right: var(--ep-space-1);
  flex-shrink: 0;
  /* Иконка белая для заполненных бейджей */
  filter: brightness(0) invert(1);
}

/* Иконка для outline-бейджа — цвет teal */
.ep-badge_outline .ep-badge__icon {
  filter: invert(45%) sepia(50%) saturate(500%) hue-rotate(155deg) brightness(90%) contrast(90%);
}

.ep-badge__text {
  display: inline;
}

/* ═══════════════════════════════════════════════════════════════════════════
   PLACEHOLDERS (для разработки)
   ═══════════════════════════════════════════════════════════════════════════ */

.ep-placeholder {
  display: flex;
  align-items: center;
  justify-content: center;
  background-color: var(--ep-gray-100);
  background-image: linear-gradient(135deg, var(--ep-gray-100) 25%, var(--ep-gray-50) 50%, var(--ep-gray-100) 75%);
  color: var(--ep-gray-500);
  font-size: var(--ep-text-sm);
  text-align: center;
  padding: var(--ep-space-4);
  border-radius: var(--ep-radius-md);
}

.ep-placeholder_image {
  aspect-ratio: 16/9;
}

.ep-placeholder_square {
  aspect-ratio: 1;
}

.ep-placeholder_portrait {
  aspect-ratio: 3/4;
}

.ep-placeholder_video {
  aspect-ratio: 16/9;
  position: relative;
}

.ep-placeholder_video::before {
  content: '▶';
  font-size: var(--ep-text-3xl);
  opacity: 0.5;
}

/* ═══════════════════════════════════════════════════════════════════════════
   DIVIDERS
   ═══════════════════════════════════════════════════════════════════════════ */

.ep-divider {
  height: 1px;
  background-color: var(--ep-border-light);
  border: none;
  margin: var(--ep-space-6) 0;
}

.ep-divider_strong {
  background-color: var(--ep-gray-300);
}

/* ═══════════════════════════════════════════════════════════════════════════
   VISIBILITY
   ═══════════════════════════════════════════════════════════════════════════ */

.ep-sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

/* ═══════════════════════════════════════════════════════════════════════════
   GRID SYSTEM — Responsive overrides
   ═══════════════════════════════════════════════════════════════════════════ */

/* Tablet: 8 колонок, gap 16px */
@media (max-width: 1024px) {
  /* Константы в :root */
  :root {
    --ep-grid-columns: 8;
    --ep-grid-gap: 16px;
  }

  /* Вычисляемые переменные в body (для корректного учёта scrollbar) */
  body {
    /* Пересчёт ширины колонки */
    --ep-grid-col-width: calc((var(--ep-grid-content-width) - (var(--ep-grid-columns) - 1) * var(--ep-grid-gap)) / var(--ep-grid-columns));

    /* Пересчёт позиций колонок (1-8) */
    --ep-grid-col-1-start: var(--ep-grid-side-offset);
    --ep-grid-col-2-start: calc(var(--ep-grid-side-offset) + 1 * (var(--ep-grid-col-width) + var(--ep-grid-gap)));
    --ep-grid-col-3-start: calc(var(--ep-grid-side-offset) + 2 * (var(--ep-grid-col-width) + var(--ep-grid-gap)));
    --ep-grid-col-4-start: calc(var(--ep-grid-side-offset) + 3 * (var(--ep-grid-col-width) + var(--ep-grid-gap)));
    --ep-grid-col-5-start: calc(var(--ep-grid-side-offset) + 4 * (var(--ep-grid-col-width) + var(--ep-grid-gap)));
    --ep-grid-col-6-start: calc(var(--ep-grid-side-offset) + 5 * (var(--ep-grid-col-width) + var(--ep-grid-gap)));
    --ep-grid-col-7-start: calc(var(--ep-grid-side-offset) + 6 * (var(--ep-grid-col-width) + var(--ep-grid-gap)));
    --ep-grid-col-8-start: calc(var(--ep-grid-side-offset) + 7 * (var(--ep-grid-col-width) + var(--ep-grid-gap)));

    --ep-grid-col-1-end: calc(var(--ep-grid-col-1-start) + var(--ep-grid-col-width));
    --ep-grid-col-2-end: calc(var(--ep-grid-col-2-start) + var(--ep-grid-col-width));
    --ep-grid-col-3-end: calc(var(--ep-grid-col-3-start) + var(--ep-grid-col-width));
    --ep-grid-col-4-end: calc(var(--ep-grid-col-4-start) + var(--ep-grid-col-width));
    --ep-grid-col-5-end: calc(var(--ep-grid-col-5-start) + var(--ep-grid-col-width));
    --ep-grid-col-6-end: calc(var(--ep-grid-col-6-start) + var(--ep-grid-col-width));
    --ep-grid-col-7-end: calc(var(--ep-grid-col-7-start) + var(--ep-grid-col-width));
    --ep-grid-col-8-end: calc(var(--ep-grid-col-8-start) + var(--ep-grid-col-width));

    /* Колонки 9-12 недоступны на tablet */
    --ep-grid-col-9-start: var(--ep-grid-col-8-end);
    --ep-grid-col-10-start: var(--ep-grid-col-8-end);
    --ep-grid-col-11-start: var(--ep-grid-col-8-end);
    --ep-grid-col-12-start: var(--ep-grid-col-8-end);
    --ep-grid-col-9-end: var(--ep-grid-col-8-end);
    --ep-grid-col-10-end: var(--ep-grid-col-8-end);
    --ep-grid-col-11-end: var(--ep-grid-col-8-end);
    --ep-grid-col-12-end: var(--ep-grid-col-8-end);

    /* Вспомогательная единица */
    --ep-grid-col-unit: calc(var(--ep-grid-col-width) + var(--ep-grid-gap));
  }
}

/* Mobile: 4 колонки, gap 16px */
@media (max-width: 768px) {
  /* Константы в :root */
  :root {
    --ep-grid-columns: 4;
    --ep-grid-gap: 16px;
  }

  /* Вычисляемые переменные в body (для корректного учёта scrollbar) */
  body {
    /* Пересчёт ширины колонки */
    --ep-grid-col-width: calc((var(--ep-grid-content-width) - (var(--ep-grid-columns) - 1) * var(--ep-grid-gap)) / var(--ep-grid-columns));

    /* Пересчёт позиций колонок (1-4) */
    --ep-grid-col-1-start: var(--ep-grid-side-offset);
    --ep-grid-col-2-start: calc(var(--ep-grid-side-offset) + 1 * (var(--ep-grid-col-width) + var(--ep-grid-gap)));
    --ep-grid-col-3-start: calc(var(--ep-grid-side-offset) + 2 * (var(--ep-grid-col-width) + var(--ep-grid-gap)));
    --ep-grid-col-4-start: calc(var(--ep-grid-side-offset) + 3 * (var(--ep-grid-col-width) + var(--ep-grid-gap)));

    --ep-grid-col-1-end: calc(var(--ep-grid-col-1-start) + var(--ep-grid-col-width));
    --ep-grid-col-2-end: calc(var(--ep-grid-col-2-start) + var(--ep-grid-col-width));
    --ep-grid-col-3-end: calc(var(--ep-grid-col-3-start) + var(--ep-grid-col-width));
    --ep-grid-col-4-end: calc(var(--ep-grid-col-4-start) + var(--ep-grid-col-width));

    /* Колонки 5-12 недоступны на mobile */
    --ep-grid-col-5-start: var(--ep-grid-col-4-end);
    --ep-grid-col-6-start: var(--ep-grid-col-4-end);
    --ep-grid-col-7-start: var(--ep-grid-col-4-end);
    --ep-grid-col-8-start: var(--ep-grid-col-4-end);
    --ep-grid-col-9-start: var(--ep-grid-col-4-end);
    --ep-grid-col-10-start: var(--ep-grid-col-4-end);
    --ep-grid-col-11-start: var(--ep-grid-col-4-end);
    --ep-grid-col-12-start: var(--ep-grid-col-4-end);
    --ep-grid-col-5-end: var(--ep-grid-col-4-end);
    --ep-grid-col-6-end: var(--ep-grid-col-4-end);
    --ep-grid-col-7-end: var(--ep-grid-col-4-end);
    --ep-grid-col-8-end: var(--ep-grid-col-4-end);
    --ep-grid-col-9-end: var(--ep-grid-col-4-end);
    --ep-grid-col-10-end: var(--ep-grid-col-4-end);
    --ep-grid-col-11-end: var(--ep-grid-col-4-end);
    --ep-grid-col-12-end: var(--ep-grid-col-4-end);

    /* Вспомогательная единица */
    --ep-grid-col-unit: calc(var(--ep-grid-col-width) + var(--ep-grid-gap));
  }
}

/* ═══════════════════════════════════════════════════════════════════════════
   VISIBILITY
   ═══════════════════════════════════════════════════════════════════════════ */

@media (max-width: 768px) {
  .ep-hide-mobile { display: none !important; }
}

@media (min-width: 769px) {
  .ep-hide-desktop { display: none !important; }
}

/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzaWduLXN5c3RlbS5jc3MiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9hc3NldHMvY3NzL2Rlc2lnbi1zeXN0ZW0uY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSJ9 */