/* ============================================================
   Schedule page — «Расписание групп»
   Новые секции страницы. Каталог стартов переиспользует компонент
   расписания (.sched*) из pages/home.css — здесь ТОЛЬКО новые блоки
   с префиксами schedule-* / spf-* (schedule page filters).

   Подключение (developer, eps_template_assets_map, ключ page-schedule):
     css => array( 'home', 'schedule' )   // home.css нужен ради .sched*
     js  => array( 'schedule' )           // опционально: sticky-offset

   Общие примитивы (.btn, .hero--page, .faq, .cta-banner, .cf-tabs,
   .chip-level, .badge-*, .crumbs) берутся из base.css — не дублируем.
   ============================================================ */

/* ---------- Hero: строка триггеров под CTA ---------- */
.schedule-triggers{
  display:flex;flex-wrap:wrap;justify-content:center;align-items:center;
  gap:8px 6px;margin-top:22px;padding-top:20px;border-top:1px solid var(--line);
}
.schedule-triggers .st-item{
  display:inline-flex;align-items:center;gap:8px;
  font-weight:700;font-size:.86rem;color:var(--text);
}
.schedule-triggers .st-item svg{width:16px;height:16px;color:var(--primary);flex:none}
.schedule-triggers .st-sep{width:4px;height:4px;border-radius:50%;background:var(--text-muted);opacity:.45;flex:none}

/* ============================================================
   Доска расписания: фильтр-сайдбар + каталог стартов
   ============================================================ */
.schedule-board-inner{display:flex;flex-direction:column;gap:20px}
/* Sticky фильтр-сайдбар + каталог — с 1200px (ниже матрица занимает всю ширину). */
@media(min-width:1200px){
  .schedule-board-inner{
    display:grid;grid-template-columns:clamp(300px,25vw,340px) minmax(0,1fr);
    gap:26px;align-items:start;
  }
}

/* ---------- Фильтр-панель (faceted search) ---------- */
.spf-panel{
  background:var(--surface);border:1px solid var(--line);
  border-radius:var(--r-xl);box-shadow:var(--sh-md);
  padding:clamp(18px,2.4vw,24px);
  display:flex;flex-direction:column;gap:18px;
}
/* Sticky-сайдбар только на широком десктопе (шапка .site-shell sticky ~70px + зазор) */
@media(min-width:1200px){
  .spf-panel{position:sticky;top:84px;max-height:calc(100dvh - 100px);overflow:auto;scrollbar-width:thin;scrollbar-color:var(--line) transparent}
  .spf-panel::-webkit-scrollbar{width:8px}
  .spf-panel::-webkit-scrollbar-thumb{background:var(--line);border-radius:var(--r-pill)}
}
.spf-head{display:flex;flex-direction:column;gap:6px}
.spf-eyebrow{display:inline-flex;align-items:center;gap:7px;font-weight:800;font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:var(--primary)}
.spf-eyebrow svg{width:15px;height:15px;flex:none}
.spf-title{font-size:1.12rem;font-weight:800;line-height:1.2;letter-spacing:-.01em}
.spf-sub{font-size:.86rem;line-height:1.5;color:var(--text-muted)}

/* Метка-факт «Онлайн» (не фильтр) */
.spf-online{
  display:inline-flex;align-items:center;gap:9px;align-self:flex-start;
  font-weight:700;font-size:.82rem;color:var(--green);
  background:color-mix(in srgb,var(--green) 13%,transparent);
  border-radius:var(--r-pill);padding:8px 14px;
}
.spf-online svg{width:16px;height:16px;flex:none}

/* Группы фильтров */
.spf-groups{display:flex;flex-direction:column;gap:16px}
.spf-row{display:flex;flex-direction:column;gap:9px}
.spf-label{
  display:flex;align-items:center;gap:8px;
  font-weight:700;font-size:.72rem;letter-spacing:.09em;text-transform:uppercase;
  color:var(--text-muted);
}
.spf-label svg{width:14px;height:14px;color:var(--primary);flex:none}
/* На десктопе фильтры укладываются вертикально в сайдбаре — .cf-tabs (base) переносит чипы */
.spf-row .cf-tabs{gap:7px}
.spf-row .cf-tab{padding:8px 13px;font-size:.84rem;min-height:40px}

/* Цветная точка языка обучения на чипе */
.spf-dot{
  width:11px;height:11px;border-radius:50%;flex:none;
  background:var(--d,var(--primary));
  box-shadow:0 0 0 3px color-mix(in srgb,var(--d,var(--primary)) 20%,transparent);
}
.cf-tab.is-active .spf-dot{box-shadow:0 0 0 3px rgba(255,255,255,.35)}

/* Подвал панели: счётчик + сброс */
.spf-foot{
  display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;
  gap:12px;padding-top:16px;border-top:1px solid var(--line);
}
.spf-count{font-size:.9rem;color:var(--text-muted);font-weight:600}
.spf-count b{color:var(--primary);font-weight:800;font-variant-numeric:tabular-nums}
.spf-reset{
  display:inline-flex;align-items:center;gap:7px;
  font-family:var(--font-body);font-weight:700;font-size:.84rem;
  color:var(--text-muted);background:transparent;border:none;cursor:pointer;
  padding:6px 4px;border-radius:var(--r-sm);transition:color .16s ease;
}
.spf-reset svg{width:15px;height:15px;flex:none}
.spf-reset:hover{color:var(--primary)}
.spf-reset:focus-visible{box-shadow:var(--ring);outline:none}

/* ---------- Каталог: .sched внутри доски ---------- */
.schedule-catalog{min-width:0}
.schedule-catalog .sched{box-shadow:var(--sh-sm)}
/* На странице расписания у .sched-head нет табов аудитории (они в панели фильтров) */
.schedule-catalog .sched-head{gap:12px 18px}
/* Счётчик стартов у уровня (напр. «2 старта»). Глобальный .level-count b (home.css)
   красит число в жирный ink — на этой странице (и в матрице, и в аккордеоне) это
   читается как тяжёлый чёрный акцент. Точечно смягчаем в контексте .schedule-catalog:
   число остаётся выделенным весом, но тон согласован с muted-мета строки уровня.
   Разметку/классы/data-level-count не трогаем — только вес/цвет. */
.schedule-catalog .level-count b{
	color: color-mix(in srgb, var(--text) 55%, var(--text-muted));
	font-weight: 600;
}

/* Пояснение к часовому поясу под матрицей/аккордеоном */
.schedule-tz{
  display:flex;align-items:center;gap:9px;
  padding:14px clamp(16px,3vw,24px);
  font-size:.82rem;line-height:1.4;color:var(--text-muted);
  border-top:1px solid var(--line);background:var(--surface-2);
}
.schedule-tz svg{width:16px;height:16px;color:var(--blue);flex:none}
.schedule-tz b{color:var(--text);font-weight:700}

/* Заметка в набранной группе (лист ожидания) */
.start-note{
  font-size:.8rem;line-height:1.45;color:var(--text-muted);
  padding:2px 2px 0;
}

/* ---------- Пустое состояние по фильтру (оффер, не «ничего не найдено») ---------- */
.schedule-empty{
  display:flex;flex-direction:column;align-items:center;gap:14px;text-align:center;
  padding:clamp(30px,5vw,52px) clamp(20px,4vw,40px);
  border:1.5px dashed color-mix(in srgb,var(--primary) 32%,var(--line));
  border-radius:var(--r-xl);
  background:linear-gradient(180deg,var(--surface-soft),var(--surface));
}
/* .schedule-empty{display:flex} перебивает UA-[hidden]{display:none} по специфичности,
   поэтому явно возвращаем скрытие атрибутом hidden — так работает и JS-тоггл
   (empty.hidden в schedule.js), и прогрессивное улучшение без JS (блок скрыт,
   виден весь каталог). Тот же обход, что для .cf-tab (там — inline style.display). */
.schedule-empty[hidden]{display:none}
.schedule-empty .se-ico{
  width:60px;height:60px;border-radius:var(--r-lg);display:grid;place-items:center;
  background:var(--surface);color:var(--primary);box-shadow:var(--sh-sm);
}
.schedule-empty .se-ico svg{width:30px;height:30px}
.schedule-empty h3{font-size:1.25rem;font-weight:800;line-height:1.25;max-width:22ch}
.schedule-empty p{font-size:.95rem;line-height:1.6;color:var(--text-muted);max-width:52ch}
.schedule-empty .btn{margin-top:2px}

/* ============================================================
   «Онлайн — это удобно» — 4 плитки (bento)
   ============================================================ */
.schedule-online-grid{display:grid;gap:16px;grid-template-columns:1fr}
@media(min-width:560px){.schedule-online-grid{grid-template-columns:repeat(2,1fr)}}
@media(min-width:1024px){.schedule-online-grid{grid-template-columns:repeat(4,1fr)}}
.schedule-tile{
  display:flex;flex-direction:column;gap:12px;
  padding:clamp(22px,2.6vw,28px);
  background:var(--surface);border:1px solid var(--line);
  border-radius:var(--r-lg);box-shadow:var(--sh-sm);
  transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease;
}
.schedule-tile:hover{transform:translateY(-4px);box-shadow:var(--sh-lg);border-color:color-mix(in srgb,var(--primary) 26%,var(--line))}
.schedule-tile .st-ico{width:52px;height:52px;border-radius:var(--r-md);display:grid;place-items:center}
.schedule-tile .st-ico svg{width:26px;height:26px}
.schedule-tile h3{font-size:1.08rem;font-weight:800;line-height:1.25}
.schedule-tile p{font-size:.92rem;line-height:1.55;color:var(--text-muted)}

/* ============================================================
   Карточки-решения: «Не нашли старт?» (3) и «С чего начать» (2)
   ============================================================ */
.schedule-cards{display:grid;gap:18px;grid-template-columns:1fr}
@media(min-width:680px){.schedule-cards--3{grid-template-columns:repeat(3,1fr)}}
@media(min-width:760px){.schedule-cards--2{grid-template-columns:repeat(2,1fr)}}
.schedule-card{
  display:flex;flex-direction:column;gap:13px;
  padding:clamp(24px,3vw,30px);
  background:var(--surface);border:1px solid var(--line);
  border-radius:var(--r-xl);box-shadow:var(--sh-sm);position:relative;overflow:hidden;
  transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease;
}
.schedule-card:hover{transform:translateY(-4px);box-shadow:var(--sh-lg);border-color:color-mix(in srgb,var(--primary) 26%,var(--line))}
.schedule-card .sc-ico{width:54px;height:54px;border-radius:var(--r-md);display:grid;place-items:center;flex:none}
.schedule-card .sc-ico svg{width:27px;height:27px}
.schedule-card h3{font-size:1.15rem;font-weight:800;line-height:1.25}
.schedule-card p{font-size:.93rem;line-height:1.6;color:var(--text-muted);flex:1 1 auto}
.schedule-card .sc-link{
  display:inline-flex;align-items:center;gap:8px;align-self:flex-start;margin-top:2px;
  font-weight:700;font-size:.92rem;color:var(--primary);
  transition:gap .16s ease,color .16s ease;
}
.schedule-card .sc-link svg{width:17px;height:17px;flex:none;transition:transform .16s ease}
.schedule-card .sc-link:hover{gap:11px}
.schedule-card:hover .sc-link svg{transform:translateX(2px)}
.schedule-card .sc-link:focus-visible{box-shadow:var(--ring);outline:none;border-radius:var(--r-sm)}

/* «С чего начать» — акцентная первая дверь */
.schedule-card--primary{
  background:linear-gradient(135deg,var(--surface-soft),var(--surface-amber));
  border-color:color-mix(in srgb,var(--primary) 28%,var(--line));
}
.schedule-card .sc-full{align-self:stretch;width:100%;justify-content:center;margin-top:4px}
@media(max-width:479.98px){.schedule-card .sc-full{white-space:normal;text-wrap:balance}}

/* ---------- Финальный CTA: мессенджеры внутри .cta-banner ---------- */
.cta-msgs{display:flex;flex-direction:column;gap:12px;margin-top:24px;padding-top:22px;border-top:1px solid rgba(255,255,255,.22)}
.cta-msgs-label{font-size:.9rem;opacity:.95}
.cta-msgs-row{display:flex;gap:10px}
.cta-msgs-row .btn-msg{background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.28);color:#fff}
.cta-msgs-row .btn-msg:hover{background:rgba(255,255,255,.26)}
.cta-msgs-row .btn-msg:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(255,255,255,.5)}
