Лагерь: SEO

This commit is contained in:
Dekart Deploy Bot 2026-07-07 12:53:36 +00:00
parent 22124a36b1
commit fe2028819a
2 changed files with 436 additions and 284 deletions

View File

@ -287,119 +287,142 @@ background: rgba(124, 58, 237, 0.2);
/* ============================================================
9. PROGRAMS GRID
============================================================ */
/* ============================================================
9. PROGRAMS redesigned 2-column cards
============================================================ */
.programs-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
grid-template-columns: 1fr 1fr;
gap: 24px;
margin: 28px 0 20px;
margin: 28px 0 0;
align-items: stretch;
}
/* ── Card container ── */
.program-card {
/* ── Card base ── */
.prog-card {
display: flex;
flex-direction: column;
border-radius: 20px;
border-radius: 24px;
overflow: hidden;
background: #fff;
background: #FFFFFF;
box-shadow: 0 4px 24px rgba(0, 0, 0, 0.07);
transition: transform 0.25s ease, box-shadow 0.25s ease;
position: relative;
}
.program-card:hover {
transform: translateY(-6px);
box-shadow: 0 16px 40px rgba(0,0,0,0.12);
.prog-card:hover {
transform: translateY(-4px);
box-shadow: 0 12px 40px rgba(0, 0, 0, 0.12);
}
/* ── Premium card highlight ── */
.prog-card--premium {
border: 2px solid #7C3AED;
box-shadow: 0 4px 28px rgba(124, 58, 237, 0.12);
}
.prog-card--premium:hover {
box-shadow: 0 12px 44px rgba(124, 58, 237, 0.20);
}
/* ── Badge "Популярный выбор" ── */
.prog-card__badge {
position: absolute;
top: 16px;
right: 16px;
z-index: 2;
display: inline-flex;
padding: 5px 12px;
background: #F59E0B;
color: #0F172A;
font-size: 0.68rem;
font-weight: 800;
border-radius: 100px;
letter-spacing: 0.01em;
box-shadow: 0 2px 8px rgba(245, 158, 11, 0.3);
white-space: nowrap;
gap: 0;
}
/* (badge-icon and badge-desc removed — now inline) */
/* ── Header ── */
.program-card__header {
padding: 20px 24px;
background: linear-gradient(135deg, var(--accent, #7C3AED), #A855F7);
color: #fff;
.prog-card__header {
padding: 16px 24px 20px;
display: flex;
align-items: center;
gap: 12px;
flex-direction: column;
align-items: flex-start;
gap: 8px;
position: relative;
}
.program-card__icon {
font-size: 1.6rem;
.prog-card__header-row {
display: flex;
align-items: center;
gap: 14px;
width: 100%;
}
.prog-card--base .prog-card__header {
background: linear-gradient(135deg, #7C3AED, #A855F7);
color: #FFFFFF;
}
.prog-card--premium .prog-card__header {
background: linear-gradient(135deg, #6D28D9, #7C3AED);
color: #FFFFFF;
}
.prog-card__icon {
flex-shrink: 0;
width: 44px;
height: 44px;
width: 48px;
height: 48px;
display: flex;
align-items: center;
justify-content: center;
background: rgba(255, 255, 255, 0.18);
border-radius: 12px;
border-radius: 14px;
font-size: 1.4rem;
}
.program-card__title {
margin: 0;
.prog-card__icon--double {
font-size: 1rem;
letter-spacing: -2px;
}
.prog-card__name {
font-size: 1.1rem;
font-weight: 700;
color: #fff;
line-height: 1.25;
}
.prog-card__subname {
font-size: 0.85rem;
opacity: 0.85;
margin-top: 2px;
}
/* ── Body ── */
.program-card__body {
padding: 24px;
.prog-card__body {
padding: 20px 24px 24px;
flex-grow: 1;
display: flex;
flex-direction: column;
gap: 18px;
gap: 16px;
}
/* ── Shared label ── */
.program-card__label {
display: block;
font-size: 0.8rem;
/* ── Block ── */
.prog-card__block-title {
font-size: 0.75rem;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.04em;
letter-spacing: 0.05em;
color: #64748B;
margin-bottom: 4px;
}
/* ── Intensity ── */
.program-card__intensity {
font-size: 0.95rem;
color: #334155;
background: #F8FAFC;
padding: 10px 14px;
border-radius: 10px;
border-left: 3px solid var(--accent, #7C3AED);
}
/* ── Schedule ── */
.program-card__schedule ul {
list-style: none;
padding: 0;
margin: 0;
}
.program-card__schedule li {
position: relative;
padding-left: 18px;
margin-bottom: 4px;
font-size: 0.9rem;
color: #475569;
line-height: 1.5;
}
.program-card__schedule li::before {
content: "•";
position: absolute;
left: 4px;
color: var(--accent, #7C3AED);
font-weight: 700;
}
/* ── Lesson structure timeline ── */
.program-card__structure .program-card__label {
margin-bottom: 8px;
}
.program-card__timeline {
/* ── Checklist ── */
.prog-card__checklist {
list-style: none;
padding: 0;
margin: 0;
@ -408,154 +431,247 @@ background: rgba(124, 58, 237, 0.2);
gap: 6px;
}
.program-card__timeline-item {
display: flex;
align-items: center;
gap: 10px;
padding: 6px 10px;
background: #F8FAFC;
border-radius: 8px;
.prog-card__checklist li {
position: relative;
padding-left: 22px;
font-size: 0.9rem;
color: #475569;
line-height: 1.45;
}
.program-card__timeline-badge {
.prog-card__checklist li::before {
content: "✓";
position: absolute;
left: 0;
color: #7C3AED;
font-weight: 800;
font-size: 0.85rem;
}
.prog-card__checklist--plus {
font-weight: 600;
color: #1E293B;
}
.prog-card__checklist--plus::before {
color: #F59E0B !important;
}
/* ── Schedule ── */
.prog-card__schedule {
font-size: 0.95rem;
font-weight: 600;
color: #1E293B;
background: #F8FAFC;
padding: 10px 14px;
border-radius: 10px;
border-left: 3px solid #7C3AED;
}
/* ── Tags (structure) ── */
.prog-card__tags {
display: flex;
flex-wrap: wrap;
gap: 6px;
}
.prog-card__tag {
display: inline-flex;
align-items: center;
justify-content: center;
min-width: 60px;
padding: 2px 8px;
font-size: 0.72rem;
font-weight: 700;
color: #fff;
background: var(--accent, #7C3AED);
border-radius: 6px;
padding: 5px 12px;
font-size: 0.8rem;
font-weight: 600;
color: #7C3AED;
background: #F5F3FF;
border-radius: 100px;
white-space: nowrap;
}
.program-card__timeline-name {
font-size: 0.88rem;
color: #334155;
line-height: 1.35;
/* ── Trust row ── */
.prog-card__trust {
display: flex;
flex-wrap: wrap;
gap: 8px 16px;
padding: 12px 14px;
background: #FAFAFE;
border-radius: 12px;
font-size: 0.85rem;
color: #64748B;
}
/* ── Includes (✅ list) ── */
.program-card__includes ul {
list-style: none;
padding: 0;
margin: 0;
}
.program-card__includes li {
position: relative;
padding-left: 20px;
/* ── Pricing — now at top of body ── */
.prog-card__pricing {
padding: 0 0 12px;
border-bottom: 1px solid #E9EDF4;
margin-bottom: 4px;
font-size: 0.88rem;
color: #475569;
line-height: 1.5;
}
.program-card__includes li::before {
content: "✅";
position: absolute;
left: 0;
font-size: 0.7rem;
}
/* ── Pricing block ── */
.program-card__pricing {
margin-top: auto;
padding-top: 14px;
border-top: 1px solid #E9EDF4;
display: flex;
flex-direction: column;
gap: 4px;
}
.program-card__price-main {
display: flex;
align-items: baseline;
gap: 8px;
}
.program-card__price-value {
font-size: 1.5rem;
.prog-card__price {
font-size: 1.6rem;
font-weight: 800;
color: #0F172A;
line-height: 1.1;
}
.program-card__price-period {
font-size: 0.8rem;
.prog-card__price--premium {
color: #6D28D9;
}
.prog-card__price-period {
font-size: 0.85rem;
font-weight: 400;
color: #64748B;
}
.program-card__price-single {
font-size: 0.8rem;
color: #94A3B8;
.prog-card__price-sub {
font-size: 0.82rem;
color: #10B981;
font-weight: 600;
margin-top: 2px;
}
/* ── CTA button ── */
.program-card__btn {
.prog-card__price-single {
font-size: 0.78rem;
color: #94A3B8;
margin-top: 4px;
}
.prog-card__urgency {
font-size: 0.8rem;
font-weight: 700;
color: #F59E0B;
margin-top: 6px;
}
/* ── Result promise ── */
.prog-card__result {
display: flex;
align-items: center;
gap: 10px;
padding: 10px 14px;
background: #F0FDF4;
border-radius: 12px;
border-left: 3px solid #10B981;
font-size: 0.9rem;
color: #166534;
line-height: 1.4;
}
.prog-card__result-icon {
font-size: 1.2rem;
flex-shrink: 0;
}
/* ── Header badge "Первое занятие — бесплатно" ── */
.prog-card__header-badge {
flex-shrink: 0;
display: inline-flex;
padding: 4px 10px;
background: rgba(255, 255, 255, 0.22);
color: #FFFFFF;
font-size: 0.68rem;
font-weight: 700;
border-radius: 100px;
letter-spacing: 0.02em;
white-space: nowrap;
}
/* ── Compare block (premium only) ── */
.prog-card__compare {
display: flex;
align-items: center;
gap: 10px;
padding: 10px 14px;
background: #F5F3FF;
border-radius: 12px;
border-left: 3px solid #7C3AED;
font-size: 0.85rem;
color: #4C1D95;
line-height: 1.4;
}
.prog-card__compare-icon {
font-size: 1.1rem;
flex-shrink: 0;
}
.prog-card__social-proof {
display: flex;
flex-wrap: wrap;
gap: 6px 16px;
font-size: 0.82rem;
color: #64748B;
}
/* ── Button ── */
.prog-card__btn {
display: block;
width: 100%;
padding: 12px;
padding: 14px;
border: none;
border-radius: 12px;
border-radius: 14px;
font-family: inherit;
font-size: 1rem;
font-weight: 700;
color: #fff;
cursor: pointer;
background: var(--accent, #7C3AED);
background: linear-gradient(135deg, #7C3AED, #A855F7);
text-align: center;
text-decoration: none;
transition: opacity 0.15s, transform 0.15s, box-shadow 0.15s;
box-shadow: 0 4px 16px rgba(124, 58, 237, 0.25);
}
.program-card__btn:hover {
opacity: 0.9;
transform: translateY(-1px);
box-shadow: 0 4px 12px rgba(124, 58, 237, 0.3);
.prog-card__btn:hover {
opacity: 0.92;
transform: translateY(-2px);
box-shadow: 0 6px 24px rgba(124, 58, 237, 0.35);
}
/* ── Programs grid responsive ── */
.prog-card__footnote {
text-align: center;
font-size: 0.8rem;
color: #94A3B8;
margin-top: 8px;
}
/* ── Responsive ── */
@media (max-width: 860px) {
.programs-grid {
grid-template-columns: repeat(2, 1fr);
}
}
@media (max-width: 639px) {
.programs-grid {
grid-template-columns: 1fr;
}
}
.programs-note {
text-align: center;
padding: 16px 0 0;
font-size: 0.925rem;
color: var(--slate-600);
}
.programs-note__link {
color: var(--accent, #7C3AED);
font-weight: 700;
text-decoration: underline;
text-underline-offset: 2px;
}
@media (max-width: 639px) {
.programs-grid {
grid-template-columns: 1fr;
grid-template-columns: 1fr 1fr;
gap: 16px;
}
.program-card__header {
padding: 14px 16px;
.prog-card__header {
padding: 14px 18px 16px;
gap: 6px;
}
.program-card__title {
.prog-card--premium .prog-card__header {
padding: 14px 18px 16px;
}
.prog-card__body {
padding: 16px 18px 18px;
gap: 14px;
}
.prog-card__checklist li {
font-size: 0.85rem;
}
.prog-card__price {
font-size: 1.35rem;
}
.prog-card__btn {
padding: 12px;
font-size: 0.95rem;
}
.program-card__body {
padding: 16px;
}
@media (max-width: 639px) {
.programs-grid {
grid-template-columns: 1fr;
gap: 20px;
}
.prog-card__badge {
top: 12px;
right: 12px;
font-size: 0.6rem;
padding: 4px 10px;
}
}

View File

@ -437,130 +437,166 @@ $opt_social_raw = get_option( 'branch_social' ) ?: carbon_get_post_meta( $post_
Группы до 8 человек каждому ребёнку уделяем внимание.</p>
<div class="programs-grid">
<?php
$pksh_programs = carbon_get_post_meta($post_id, 'pksh_programs');
if (is_array($pksh_programs) && !empty($pksh_programs)) :
foreach ($pksh_programs as $program) :
$icon = $program['program_icon'] ?? '🎓';
$title = $program['program_title'] ?? '';
$intensity = $program['program_intensity'] ?? '';
$schedule_raw = $program['program_schedule'] ?? '';
$duration = $program['program_duration'] ?? '90 мин';
$structure_raw = $program['program_lesson_structure'] ?? '';
$includes_raw = $program['program_includes'] ?? '';
$price_sub = $program['program_price_subscription'] ?? '';
$price_single = $program['program_price_single'] ?? '';
$btn_text = $program['program_button_text'] ?? 'Записаться';
$btn_url = $program['program_button_url'] ?? '/zapis/';
$schedule_lines = array_filter(explode("\n", $schedule_raw));
$structure_lines = array_filter(explode("\n", $structure_raw));
$includes_lines = array_filter(explode("\n", $includes_raw));
?>
<div class="program-card">
<div class="program-card__header">
<span class="program-card__icon"><?php echo esc_html($icon); ?></span>
<h3 class="program-card__title"><?php echo esc_html($title); ?></h3>
<!-- ═══ Базовая: Уверенный старт ═══ -->
<div class="prog-card prog-card--base">
<div class="prog-card__header">
<div class="prog-card__header-badge">Первое занятие бесплатно</div>
<div class="prog-card__header-row">
<div class="prog-card__icon"></div>
<div>
<div class="prog-card__name">Уверенный старт</div>
<div class="prog-card__subname">2 раза в неделю комфортный темп без перегрузки</div>
</div>
</div>
</div>
<div class="program-card__body">
<?php if ($intensity) : ?>
<div class="program-card__intensity">
<span class="program-card__label">Интенсивность:</span>
<?php echo esc_html($intensity); ?>
<div class="prog-card__body">
<!-- Цена сразу под шапкой -->
<div class="prog-card__pricing">
<div class="prog-card__price">7 500 <span class="prog-card__price-period">стоимость абонемента за 4 недели</span></div>
<div class="prog-card__price-sub">375 за занятие дешевле репетитора</div>
<div class="prog-card__price-single">Разовое занятие вне абонемента: 1 000 </div>
<div class="prog-card__urgency">Осталось 2 места в группе</div>
</div>
<?php endif; ?>
<?php if (!empty($schedule_lines)) : ?>
<div class="program-card__schedule">
<span class="program-card__label">📅 Расписание:</span>
<ul>
<?php foreach ($schedule_lines as $line) : ?>
<li><?php echo esc_html(trim($line)); ?></li>
<?php endforeach; ?>
<!-- Результат с гарантией -->
<div class="prog-card__result">
<span class="prog-card__result-icon">🎯</span>
<span><strong>Через 2 месяца</strong> осознанное чтение по слогам</span>
</div>
<!-- Что получит ребёнок -->
<div class="prog-card__block">
<div class="prog-card__block-title">Что получит ребёнок</div>
<ul class="prog-card__checklist">
<li>Чтение по слогам, письмо, математика готовность к 1-му классу</li>
<li>Поднимает руку, отвечает у доски без страха</li>
<li>Ребёнок идёт на занятия с удовольствием игровая методика</li>
<li>Все материалы и пособия включены в стоимость</li>
</ul>
</div>
<?php endif; ?>
<?php if (!empty($structure_lines) || $duration) : ?>
<div class="program-card__structure">
<span class="program-card__label"> Структура занятия (<?php echo esc_html($duration); ?>):</span>
<ul class="program-card__timeline">
<?php foreach ($structure_lines as $line) : ?>
<?php
$line = trim($line);
// Parse "15 мин 🧠 Нейрогимнастика" into time and name
$parts = explode(' ', $line, 2);
$time_part = $parts[0] ?? '';
$name_part = $parts[1] ?? $line;
?>
<li class="program-card__timeline-item">
<span class="program-card__timeline-badge"><?php echo esc_html($time_part); ?></span>
<span class="program-card__timeline-name"><?php echo esc_html($name_part); ?></span>
</li>
<?php endforeach; ?>
<!-- Расписание + Структура одним блоком -->
<div class="prog-card__block">
<div class="prog-card__block-title">Расписание</div>
<div class="prog-card__schedule">вт, чт 18:0019:30</div>
</div>
<div class="prog-card__block">
<div class="prog-card__block-title">Структура занятия</div>
<div class="prog-card__tags">
<span class="prog-card__tag">Нейрогимнастика</span>
<span class="prog-card__tag">Математика и логика</span>
<span class="prog-card__tag">Активная перемена</span>
<span class="prog-card__tag">Чтение и письмо</span>
<span class="prog-card__tag">Творчество</span>
</div>
</div>
<!-- Доверие -->
<div class="prog-card__trust">
<span>👥 до 8 детей</span>
<span>🎂 57 лет</span>
<span>📍 очно, Щёлково</span>
<span>👩‍🏫 педагог: стаж 12 лет</span>
</div>
<!-- Соцдок-во -->
<div class="prog-card__social-proof">
<span> 4.8 рейтинг программы</span>
<span>🎓 500+ детей уже прошли</span>
</div>
<!-- Кнопка -->
<button class="prog-card__btn open-bitrix-form">Попробовать бесплатно</button>
<div class="prog-card__footnote">После записи: перезвоним за 30 минут, подберём удобное время.</div>
</div>
</div>
<!-- ═══ Расширенная: Результат за 3 месяца ═══ -->
<div class="prog-card prog-card--premium">
<div class="prog-card__badge">Популярный&nbsp;выбор · 70% родителей выбирают эту программу</div>
<div class="prog-card__header">
<div class="prog-card__header-badge">Первое занятие бесплатно</div>
<div class="prog-card__header-row">
<div class="prog-card__icon prog-card__icon--double">⭐⭐</div>
<div>
<div class="prog-card__name">Результат за 3 месяца</div>
<div class="prog-card__subname">3 раза в неделю быстрый прогресс</div>
</div>
</div>
</div>
<div class="prog-card__body">
<!-- Цена сразу под шапкой -->
<div class="prog-card__pricing">
<div class="prog-card__price prog-card__price--premium">10 500 <span class="prog-card__price-period">стоимость абонемента за 4 недели</span></div>
<div class="prog-card__price-sub">500 за занятие дешевле репетитора</div>
<div class="prog-card__price-single">Разовое занятие вне абонемента: 1 500 </div>
<div class="prog-card__urgency">Осталось 3 места в группе</div>
</div>
<!-- Результат с гарантией -->
<div class="prog-card__result">
<span class="prog-card__result-icon">🎯</span>
<span><strong>Через 2 месяца</strong> чтение целыми словами и счёт до 20</span>
</div>
<!-- Что получит ребёнок -->
<div class="prog-card__block">
<div class="prog-card__block-title">Что получит ребёнок</div>
<ul class="prog-card__checklist">
<li>Чтение целыми словами, письмо, математика готовность к 1-му классу</li>
<li>Поднимает руку, отвечает у доски без страха</li>
<li>Ребёнок идёт на занятия с удовольствием игровая методика</li>
<li>Все материалы и пособия включены в стоимость</li>
<li class="prog-card__checklist--plus"> На 30% больше практики результат в 1,5 раза быстрее</li>
<li class="prog-card__checklist--plus"> Углублённая подготовка: ребёнок опережает сверстников на полгода</li>
<li class="prog-card__checklist--plus"> Творческие задания и проекты развиваем мышление, а не память</li>
</ul>
</div>
<?php endif; ?>
<?php if (!empty($includes_lines)) : ?>
<div class="program-card__includes">
<span class="program-card__label">Программа включает:</span>
<ul>
<?php foreach ($includes_lines as $line) : ?>
<li><?php echo esc_html(trim($line)); ?></li>
<?php endforeach; ?>
</ul>
</div>
<?php endif; ?>
<?php if ($price_sub || $price_single) : ?>
<div class="program-card__pricing">
<?php if ($price_sub) : ?>
<div class="program-card__price-main">
<span class="program-card__price-value"><?php echo esc_html($price_sub); ?></span>
<span class="program-card__price-period">за 4 недели</span>
</div>
<?php endif; ?>
<?php if ($price_single) : ?>
<div class="program-card__price-single">
<?php echo esc_html($price_single); ?> за одно занятие (вне абонемента)
</div>
<?php endif; ?>
</div>
<?php endif; ?>
<a href="<?php echo esc_url($btn_url); ?>" class="program-card__btn">
<?php echo esc_html($btn_text); ?>
</a>
</div>
</div>
<?php
endforeach;
else :
// Fallback, если программы не заполнены в админке
?>
<div class="program-card">
<div class="program-card__header">
<span class="program-card__icon">📖</span>
<h3 class="program-card__title">Базовая программа</h3>
</div>
<div class="program-card__body">
<p style="color: #94a3b8; font-style: italic;">Заполните программы в админке Настройки Подготовки к школе Программы</p>
</div>
</div>
<?php endif; ?>
<!-- Сравнение с базовой -->
<div class="prog-card__compare">
<span class="prog-card__compare-icon">📈</span>
<span><strong>На 50% больше занятий</strong> результат наступает на 3 недели раньше, чем при стандартной нагрузке</span>
</div>
<div class="programs-note">
<p>Первое пробное занятие <strong>бесплатно</strong>. При покупке абонемента на месяц скидка 10%.
<a href="#final-cta" class="programs-note__link">Записаться на бесплатное пробное</a></p>
<!-- Расписание + Структура -->
<div class="prog-card__block">
<div class="prog-card__block-title">Расписание</div>
<div class="prog-card__schedule">пн, ср, пт 16:3018:00</div>
</div>
<div class="prog-card__block">
<div class="prog-card__block-title">Структура занятия</div>
<div class="prog-card__tags">
<span class="prog-card__tag">Нейрогимнастика</span>
<span class="prog-card__tag">Математика и логика</span>
<span class="prog-card__tag">Активная перемена</span>
<span class="prog-card__tag">Чтение и письмо</span>
<span class="prog-card__tag">Творчество</span>
</div>
</div>
<!-- Доверие -->
<div class="prog-card__trust">
<span>👥 до 8 детей</span>
<span>🎂 57 лет</span>
<span>📍 очно, Щёлково</span>
<span>👩‍🏫 педагог: стаж 12 лет</span>
</div>
<!-- Соцдок-во -->
<div class="prog-card__social-proof">
<span> 4.8 рейтинг программы</span>
<span>🎓 500+ детей уже прошли</span>
</div>
<!-- Кнопка -->
<button class="prog-card__btn open-bitrix-form">Попробовать бесплатно</button>
<div class="prog-card__footnote">После записи: перезвоним за 30 минут, подберём удобное время.</div>
</div>
</div>
<div class="pksh-fomo">
<span class="pksh-fomo__dot"></span>
<span class="pksh-fomo__text">🔥 4 из 8 мест в группе 56 лет <strong>уже заняты</strong>. Успейте записаться!</span>
</div>
</div>
</section>