diff --git a/wp-content/themes/dekart/assets/css/camp.css b/wp-content/themes/dekart/assets/css/camp.css index 25e0a1a..490bcd1 100644 --- a/wp-content/themes/dekart/assets/css/camp.css +++ b/wp-content/themes/dekart/assets/css/camp.css @@ -1855,104 +1855,7 @@ html { /* swiper END */ /* faq */ -.faq-wrapper { - display: flex; - gap: 30px; -} - -.camp-faq .box__accordion_label::after { - background-image: none !important; -} - -.accordion { - width: 50%; - display: flex; - flex-direction: column; - gap: 10px; - border-top: 1px solid #ccc; -} - -.camp-faq .accordion .box__accordion { - position: relative; - cursor: pointer; - border-bottom: 1px solid #ccc; - border-radius: 0; -} - -.camp-faq .box__accordion_label { - position: relative; - padding: 20px 0; - cursor: pointer; - display: flex; - align-items: center; - gap: 20px; - justify-content: space-between; -} - -.camp-faq .box__accordion_label span { - font-size: clamp(18px, 2.2vw, 22px); - line-height: 1.25; - font-family: var(--font-display); - font-weight: 600; - color: var(--color-text); -} - -.box__accordion_label svg { - width: 36px; - height: 36px; - padding: 8px; - border-radius: 50%; - background: var(--color-primary); - stroke: #fff; - transition: background var(--transition-fast); - flex-shrink: 0; -} - -.camp-faq .accordion .box__accordion .box__accordion_label { - display: flex; - align-items: center; - justify-content: space-between; - padding-left: 0; -} - -.box__accordion_label svg g { - stroke: #fff; -} - -.box__accordion_label svg:hover { - background: var(--color-primary-hover); -} - -.active .box__accordion_label svg { - rotate: 45deg; - background: var(--color-primary-hover); -} - -.box__accordion_label svg:hover g { - stroke: #fff; -} - -.camp-faq .box__accordion_content { - display: flex; - position: relative; - overflow: hidden; - max-height: 0; - transition: .3s; - gap: 20px; - align-items: center; -} - -.box__accordion_content-text { - display: flex; - flex-direction: column; - gap: 10px; - font-size: 16px; - line-height: 1.6; - color: var(--color-text-muted); - padding-bottom: 20px; - font-family: var(--font-body); -} - +/* faq — используется общий стиль .faq-section из main.css */ /* faq END */ /* contact */ .contact-wrapper { @@ -2654,44 +2557,7 @@ html { font-size: clamp(12px, 1.5vw, 18px); } - .faq-wrapper { - gap: clamp(20px, 2.5vw, 30px); - } - - .accordion { - gap: clamp(6px, .83vw, 10px); - border-top: 1px solid #ccc; - } - - .camp-faq .accordion .box__accordion { - border-bottom: 1px solid #ccc; - } - - .camp-faq .box__accordion_label { - padding: clamp(13px, 1.67vw, 20px) 0; - gap: clamp(13px, 1.67vw, 20px); - } - - .camp-faq .box__accordion_label span { - font-size: clamp(17px, 2.17vw, 26px); - } - - .box__accordion_label svg { - width: clamp(26px, 3.33vw, 40px); - height: clamp(26px, 3.33vw, 40px); - padding: clamp(5px, .67vw, 8px); - } - - .camp-faq .box__accordion_content { - gap: clamp(13px, 1.67vw, 20px); - } - - .box__accordion_content-text { - gap: clamp(6px, .83vw, 10px); - font-size: clamp(12px, 1.5vw, 18px); - padding-bottom: clamp(13px, 1.67vw, 20px); - } - + /* faq — используется общий стиль .faq-section из main.css */ .contact-wrapper { gap: clamp(20px, 2.5vw, 30px); } @@ -2943,32 +2809,7 @@ html { left: 10px; } - .faq-wrapper { - gap: 0; - flex-direction: column; - } - - .accordion { - width: 100%; - gap: 0; - } - - .accordion-last { - border-top: none; - } - - .accordion .box__accordion .box__accordion_label { - padding: 10px 0; - } - - .camp-faq .box__accordion_label span { - font-size: 20px; - } - - .box__accordion_label svg { - flex-shrink: 0; - } - + /* faq — используется общий стиль .faq-section из main.css */ .contact-wrapper { gap: 20px; flex-direction: column-reverse; diff --git a/wp-content/themes/dekart/assets/css/main.css b/wp-content/themes/dekart/assets/css/main.css index c0f8fd2..4b5f238 100644 --- a/wp-content/themes/dekart/assets/css/main.css +++ b/wp-content/themes/dekart/assets/css/main.css @@ -100,7 +100,7 @@ html { /* ════════════════════════════════════════════ */ .ds-hero { position: relative; - padding: 60px 0; + padding: 48px 0; overflow: hidden; background: var(--color-bg-dark); background-image: @@ -11074,3 +11074,145 @@ main { main > .pksh-section:first-child { padding-top: 0; } + +/* ============================================================ + FAQ SECTION — общий стиль для всех страниц + Использовать: class="section-bg faq-section" на section + ============================================================ */ +.section-bg { + position: relative; +} +.section-bg::before { + content: ''; + position: absolute; + top: 0; + bottom: 0; + left: calc(-50vw + 50%); + width: 100vw; + z-index: -1; +} + +/* .bento внутри section-bg — растягивается на всю ширину */ +.section-bg > .bento { + width: 100%; +} + +.faq-section { + padding: 48px 0; +} + +.section-bg.faq-section::before { + background: var(--accent-light, #F5F3FF); +} + +/* Все не-белые секции на ПКШ — единый фон accent-light на всю ширину */ +.page-pksh .section-bg:not(.ds-hero):not(.faq-section)::before { + background: var(--accent-light, #F5F3FF); +} + +.faq-section .container { + /* центрирование через стандартный .container */ +} + +.faq-section__title { + text-align: center; + margin-bottom: 40px; + font-size: clamp(24px, 2.8vw, 32px); + font-weight: 700; + line-height: 1.25; + color: var(--navy, #0F172A); +} + +.faq-section__wrapper { + display: flex; + gap: 30px; +} + +.faq-section__col { + width: 50%; + display: flex; + flex-direction: column; + border-top: 1px solid var(--slate-200, #E2E8F0); +} + +.faq-section .box__accordion { + position: relative; + cursor: pointer; + border-bottom: 1px solid var(--slate-200, #E2E8F0); + border-radius: 0; +} + +.faq-section .box__accordion_label { + position: relative; + padding: 20px 0; + cursor: pointer; + display: flex; + align-items: center; + gap: 20px; + justify-content: space-between; +} + +.faq-section .box__accordion_label span { + font-size: clamp(17px, 2vw, 21px); + line-height: 1.3; + font-weight: 600; + color: var(--navy, #0F172A); +} + +.faq-section .box__accordion_label svg { + width: 36px; + height: 36px; + padding: 8px; + border-radius: 50%; + background: var(--accent, #7C3AED); + stroke: #fff; + transition: background 0.2s, rotate 0.25s ease; + flex-shrink: 0; +} + +.faq-section .box__accordion_label svg g { + stroke: #fff !important; +} + +.faq-section .active .box__accordion_label svg { + rotate: 45deg; + background: var(--accent-hover, #6D28D9); +} + +.faq-section .box__accordion_content { + display: flex; + position: relative; + overflow: hidden; + max-height: 0; + transition: max-height 0.3s ease; + gap: 20px; + align-items: center; +} + +.faq-section .box__accordion_content-text { + display: flex; + flex-direction: column; + gap: 10px; + font-size: 16px; + line-height: 1.6; + color: var(--slate-600, #475569); + padding-bottom: 20px; +} + +.faq-section .box__accordion_content-text p { + margin: 0; +} + +@media (max-width: 768px) { + .faq-section__wrapper { + flex-direction: column; + gap: 0; + } + .faq-section__col { + width: 100%; + border-top: none; + } + .faq-section__col:first-child { + border-top: 1px solid var(--slate-200, #E2E8F0); + } +} diff --git a/wp-content/themes/dekart/assets/css/podgotovka-k-shkole.css b/wp-content/themes/dekart/assets/css/podgotovka-k-shkole.css index ea3d304..30eee4d 100644 --- a/wp-content/themes/dekart/assets/css/podgotovka-k-shkole.css +++ b/wp-content/themes/dekart/assets/css/podgotovka-k-shkole.css @@ -22,6 +22,7 @@ .page-pksh { overflow-x: clip; gap: 0; /* override main's flex gap: 70px — we control spacing via section padding */ + background: var(--accent-light, #F5F3FF); } /* ─── DS Hero heading override — long text smaller on desktop ─── */ @@ -98,7 +99,7 @@ background: rgba(124, 58, 237, 0.2); } .bento-label--light { - color: rgba(255,255,255,0.8); + color: #F59E0B; } .bento-h2 { @@ -113,7 +114,9 @@ background: rgba(124, 58, 237, 0.2); color: #fff; } -.bento-p { +.bento-p--light { + color: rgba(255,255,255,0.65); +} font-size: 1rem; line-height: 1.6; color: var(--slate-600); @@ -238,19 +241,36 @@ background: rgba(124, 58, 237, 0.2); .results-grid { display: grid; grid-template-columns: 1fr 1fr; - gap: 20px; + gap: 0; margin-top: 8px; } @media (min-width: 640px) { .results-grid { grid-template-columns: repeat(4, 1fr); - gap: 24px; + gap: 0; } } .result-item { text-align: center; + padding: 16px 12px; + position: relative; +} + +@media (min-width: 640px) { + .result-item { + padding: 20px 16px; + } + .result-item + .result-item::before { + content: ''; + position: absolute; + top: 20%; + left: 0; + width: 1px; + height: 60%; + background: rgba(255,255,255,0.12); + } } .result-item__value { @@ -259,7 +279,7 @@ background: rgba(124, 58, 237, 0.2); font-weight: 800; color: var(--accent, #7C3AED); line-height: 1; - margin-bottom: 6px; + margin-bottom: 8px; } @media (min-width: 640px) { @@ -271,8 +291,10 @@ background: rgba(124, 58, 237, 0.2); .result-item__desc { display: block; font-size: 0.8125rem; - color: var(--slate-400); - line-height: 1.35; + color: rgba(255,255,255,0.65); + line-height: 1.4; + max-width: 180px; + margin: 0 auto; } /* ============================================================ @@ -1139,7 +1161,6 @@ background: rgba(124, 58, 237, 0.2); align-items: stretch; flex-wrap: wrap; gap: 20px 32px; - max-width: 1000px; margin: 0 auto; padding: 40px 36px; background: linear-gradient(135deg, #F8F4F0 0%, #F0EBE5 50%, #F8F4F0 100%); @@ -1225,23 +1246,13 @@ background: rgba(124, 58, 237, 0.2); Padding reduced from 80px → 32/48 for 80px gap rhythm. ============================================================ */ .page-pksh .bento[aria-label="Гарантия"] { - background: #FFFFFF; + background: transparent; } /* ============================================================ 27. MICRO-COMMITMENT (checklist download) ============================================================ */ -.micro-commit { - display: flex; - align-items: center; - gap: 40px; - max-width: 900px; - margin: 0 auto; - padding: 32px 24px; - background: #fff; - border-radius: var(--radius-2026, 24px); - box-shadow: 0 8px 32px rgba(0,0,0,0.06); -} +/* micro-commit styles now under .page-pksh .bento[aria-label="Скачать чек-лист"] */ .micro-commit__content { flex: 1; @@ -1569,12 +1580,6 @@ background: rgba(124, 58, 237, 0.2); position: relative; } -@media (min-width: 861px) { - .page-pksh .bento[aria-label="Социальное доказательство"] { - padding-bottom: 60px; - } -} - /* Subtle background pattern for depth */ .page-pksh .bento[aria-label="Социальное доказательство"]::before { content: ''; @@ -1590,7 +1595,6 @@ background: rgba(124, 58, 237, 0.2); display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px; - max-width: 1000px; margin: 0 auto; width: 100%; position: relative; @@ -1742,13 +1746,27 @@ background: rgba(124, 58, 237, 0.2); /* NARROW section — no background (section bg transparent) */ .page-pksh .bento[aria-label="Скачать чек-лист"] { - /* transparent — card handles its own bg */ + /* transparent — bg on .bento-card--checklist */ +} + +.page-pksh .bento-card--checklist { + background: #0F172A; + border-radius: 24px; + box-shadow: 0 20px 60px rgba(0, 0, 0, 0.30); + text-align: center; +} + +.page-pksh .bento-card--checklist .micro-commit { + display: flex; + align-items: center; + gap: 40px; + padding: 40px 36px; } /* ── Full-width sections: warm #F8F4F0 alternation ── */ .page-pksh .bento[aria-label="Как проходят занятия"], .page-pksh .bento#teachers { - background: #F8F4F0; + background: transparent; } /* ── Section 6 cards: white on warm, with definition ── */ @@ -1762,15 +1780,14 @@ background: rgba(124, 58, 237, 0.2); } /* ── Card — dark bg, white text, accent button ── */ -.page-pksh .bento[aria-label="Скачать чек-лист"] .micro-commit { +.page-pksh .micro-commit { display: flex; align-items: center; gap: 40px; - max-width: 1000px; - margin: 0 auto; + width: 100%; padding: 40px 36px; background: #0F172A; - border: 1px solid #1E293B; + border: none; border-radius: 24px; box-shadow: 0 20px 60px rgba(0, 0, 0, 0.30); text-align: center; @@ -1778,7 +1795,7 @@ background: rgba(124, 58, 237, 0.2); } @media (max-width: 860px) { - .page-pksh .bento[aria-label="Скачать чек-лист"] .micro-commit { + .page-pksh .micro-commit { flex-direction: column; text-align: center; padding: 32px 20px; @@ -1985,99 +2002,8 @@ background: rgba(124, 58, 237, 0.2); } /* ============================================================ - 45. FAQ — как на странице лагеря (pksh-faq) - ============================================================ */ -.page-pksh .pksh-faq { - padding: 0; - background: transparent; - box-shadow: none; -} -.page-pksh .pksh-faq__wrapper { - display: flex; - gap: 30px; -} -.page-pksh .pksh-faq__col { - width: 50%; - display: flex; - flex-direction: column; - gap: 0; - border-top: 1px solid var(--slate-200, #E2E8F0); -} -.page-pksh .pksh-faq .box__accordion { - position: relative; - cursor: pointer; - border-bottom: 1px solid var(--slate-200, #E2E8F0); - border-radius: 0; -} -.page-pksh .pksh-faq .box__accordion_label { - position: relative; - padding: 20px 0; - cursor: pointer; - display: flex; - align-items: center; - gap: 20px; - justify-content: space-between; - padding-left: 0; -} -.page-pksh .pksh-faq .box__accordion_label span { - font-size: clamp(17px, 2vw, 21px); - line-height: 1.3; - font-weight: 600; - color: var(--navy, #1c2b2d); -} -.page-pksh .pksh-faq .box__accordion_label svg { - width: 36px; - height: 36px; - padding: 8px; - border-radius: 50%; - background: var(--accent, #7C3AED); - stroke: #fff; - transition: background 0.2s; - flex-shrink: 0; -} -.page-pksh .pksh-faq .box__accordion_label svg g { - stroke: #fff; -} -.page-pksh .pksh-faq .active .box__accordion_label svg { - rotate: 45deg; - background: var(--accent-hover, #6D28D9); -} -.page-pksh .pksh-faq .box__accordion_content { - display: flex; - position: relative; - overflow: hidden; - max-height: 0; - transition: max-height 0.3s; - gap: 20px; - align-items: center; -} -.page-pksh .pksh-faq .box__accordion_content-text { - display: flex; - flex-direction: column; - gap: 10px; - font-size: 16px; - line-height: 1.6; - color: var(--slate-600, #475569); - padding-bottom: 20px; -} - -@media (max-width: 768px) { - .page-pksh .pksh-faq__wrapper { - flex-direction: column; - gap: 0; - } - .page-pksh .pksh-faq__col { - width: 100%; - border-top: none; - } - .page-pksh .pksh-faq__col:first-child { - border-top: 1px solid var(--slate-200, #E2E8F0); - } -} - -/* ============================================================ - 46. TEACHERS — camp-style cards - ============================================================ */ + 46. TEACHERS — camp-style cards + ============================================================ */ .page-pksh .pksh-section--teachers { background: var(--bg-soft-2026, #F8FAFC); padding-top: 60px; @@ -2120,23 +2046,23 @@ background: rgba(124, 58, 237, 0.2); background: linear-gradient(135deg, rgba(124, 58, 237, 0.05), rgba(139, 92, 246, 0.08)); display: flex; justify-content: center; - padding: 28px 24px 18px; + padding: 32px 24px 20px; } .pksh-teachers__photo { - width: 130px; - height: 130px; + width: 140px; + height: 140px; border-radius: 50%; object-fit: cover; border: 4px solid #fff; - box-shadow: 0 4px 12px rgba(0,0,0,0.08); + box-shadow: 0 4px 16px rgba(0,0,0,0.10); } .pksh-teachers__card-body { padding: 18px 24px 24px; display: flex; flex-direction: column; - gap: 8px; + gap: 6px; flex: 1; } @@ -2155,15 +2081,70 @@ background: rgba(124, 58, 237, 0.2); color: var(--accent, #7C3AED); text-align: center; font-weight: 600; - margin: 0; + margin: 0 0 2px; } -.pksh-teachers__about { - font-size: 0.875rem; +.pksh-teachers__desc { + font-size: 0.825rem; line-height: 1.5; color: var(--slate-600, #475569); text-align: center; - margin: 0; + margin: 0 0 4px; +} + +.pksh-teachers__meta { + display: flex; + flex-wrap: wrap; + justify-content: center; + gap: 6px; + margin: 4px 0 12px; +} + +.pksh-teachers__meta-badge { + display: inline-flex; + padding: 3px 10px; + font-size: 0.72rem; + font-weight: 600; + color: #6D28D9; + background: #F5F3FF; + border-radius: 100px; + white-space: nowrap; +} + +.pksh-teachers__meta-exp { + display: inline-flex; + padding: 3px 10px; + font-size: 0.72rem; + font-weight: 600; + color: #92400E; + background: #FEF3C7; + border-radius: 100px; + white-space: nowrap; +} + +.pksh-teachers__btn { + display: block; + width: 100%; + padding: 12px; + border: none; + border-radius: 12px; + font-family: inherit; + font-size: 0.9rem; + font-weight: 700; + color: #fff; + cursor: pointer; + 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 3px 12px rgba(124, 58, 237, 0.2); + margin-top: auto; +} + +.pksh-teachers__btn:hover { + opacity: 0.92; + transform: translateY(-1px); + box-shadow: 0 5px 18px rgba(124, 58, 237, 0.3); } @media (max-width: 768px) { @@ -2179,11 +2160,11 @@ background: rgba(124, 58, 237, 0.2); gap: 16px; } .pksh-teachers__card-top { - padding: 24px 16px 14px; + padding: 24px 16px 16px; } .pksh-teachers__photo { - width: 110px; - height: 110px; + width: 120px; + height: 120px; } .pksh-teachers__card-body { padding: 14px 18px 20px; @@ -2193,9 +2174,13 @@ background: rgba(124, 58, 237, 0.2); font-size: 1rem; } .pksh-teachers__subj, - .pksh-teachers__about { + .pksh-teachers__desc { font-size: 0.8125rem; } + .pksh-teachers__btn { + padding: 10px; + font-size: 0.85rem; + } } @media (max-width: 480px) { @@ -2220,103 +2205,12 @@ background: rgba(124, 58, 237, 0.2); } /* ═══════════════════════════════════════════════════════════ - 42. BACKGROUND SYSTEM v2.1 — Coherent warm palette - Unified background rhythm across all sections. - - PROBLEMS SOLVED: - • White cluster — 3+ white sections in a row - • Warm/cool undertone conflict — #F8F4F0 vs #F8FAFC - • Missing backgrounds — Programs etc had no explicit bg - • Inconsistent rhythm — no visual breathing between sections - - DESIGN: - • WARM (#F8F4F0) = rhythm sections — how-it-works, - programs, teachers, final CTA - • WARM-ALT (#F5F0E8) = variety — FAQ - • WHITE = clean backdrop for content cards — checklist, - guarantee hero, results, guarantee standalone - • NAVY = emphasis — results inner card (unchanged) - ═══════════════════════════════════════════════════════ */ - -/* ── 42a. Global --alt override: warm instead of cool ── */ -/* Main.css gives .pksh-section--alt: var(--bg-soft) = #F8FAFC (cool gray). - This overrides all --alt sections to warm palette. - NOTE: uses background shorthand (not background-color) because - these sections do NOT have decorative background-image patterns. */ -.page-pksh .pksh-section--alt { - background: var(--bg-warm, #F8F4F0); -} - -/* ── 42b. Section-by-section background color assignments ── */ -/* Uses background-color (not shorthand) to avoid resetting - background-image set in 42d. */ - -/* 🔵 WARM — Checklist card stands out against warm bg */ -/* .page-pksh .bento[aria-label="Скачать чек-лист"] bg set in section 27 override */ - -/* 🔵 WHITE — Guarantee hero (strong purple border card) */ -.page-pksh .bento[aria-label="Гарантия"] { - background-color: #FFFFFF; -} - -/* 🔵 WHITE — Results (navy inner card needs clean backdrop) */ -.page-pksh #results.bento.pksh-section--alt { - background-color: #FFFFFF; -} - -/* 🔵 WHITE — Guarantee standalone (clean) */ -.page-pksh #guarantee.bento.pksh-section--alt { - background-color: #FFFFFF; -} - -/* 🟤 WARM — Programs (was transparent, now rhythm warm) */ -.page-pksh #programs.bento.pksh-section { - background-color: var(--bg-warm, #F8F4F0); -} - -/* 🟤 WARM — Final CTA (was cool via --alt, now warm) */ -.page-pksh #final-cta.bento.pksh-section--alt { - background-color: var(--bg-warm, #F8F4F0); -} - -/* 🟠 WARM-ALT — FAQ (warm stone for variety) */ -.page-pksh #faq.bento.pksh-section--alt { - background-color: var(--bg-warm-alt, #F5F0E8); -} - -/* ── 42c. Contacts — transparent (let footer handle it) ── */ -.page-pksh #pksh-contact.bento.pksh-section { - background-color: transparent; -} - -/* ── 42d. Background decorative gradients ── */ -/* Adds subtle radial gradient overlays to warm sections - for subtle depth without visual noise. - Safely combines with background-color from 42b. */ -.page-pksh #programs.bento.pksh-section { - background-image: - radial-gradient(ellipse at 80% 20%, rgba(124, 58, 237, 0.018) 0%, transparent 55%), - radial-gradient(ellipse at 10% 80%, rgba(0, 0, 0, 0.012) 0%, transparent 50%); -} - -.page-pksh #final-cta.bento.pksh-section--alt { - background-image: - radial-gradient(ellipse at 50% 0%, rgba(124, 58, 237, 0.025) 0%, transparent 60%); -} - -.page-pksh #faq.bento.pksh-section--alt { - background-image: - radial-gradient(ellipse at 30% 90%, rgba(124, 58, 237, 0.015) 0%, transparent 50%), - radial-gradient(ellipse at 70% 10%, rgba(0, 0, 0, 0.01) 0%, transparent 50%); -} - -/* ── 42e. Section separators ── */ -/* Subtle light border-top on warm sections following white - to create intentional visual stratification. */ -.page-pksh #programs.bento.pksh-section, -.page-pksh #final-cta.bento.pksh-section--alt { - border-top: 1px solid rgba(0, 0, 0, 0.03); -} + 42. BACKGROUND — единый фон на .page-pksh + Фон страницы: var(--accent-light, #F5F3FF) — задан на .page-pksh + Hero — свой тёмный фон (data-bg="hero") + FAQ — свой фон через section-bg + Все остальные секции наследуют фон страницы. + ═══════════════════════════════════════════════════ */ /* ── 42f. Mobile-responsive final CTA ── */ @media (max-width: 860px) { @@ -2623,7 +2517,7 @@ background: rgba(124, 58, 237, 0.2); 57. CTA TEST — Бесплатное тестирование перед results ============================================================ */ .page-pksh .bento[aria-label="Запись на тестирование"] { - background: var(--bg-warm, #F8F4F0); + background: transparent; } .cta-test { diff --git a/wp-content/themes/dekart/assets/css/reviews-page.css b/wp-content/themes/dekart/assets/css/reviews-page.css index b09b38c..a859f8c 100644 --- a/wp-content/themes/dekart/assets/css/reviews-page.css +++ b/wp-content/themes/dekart/assets/css/reviews-page.css @@ -668,98 +668,14 @@ } /* ─── FAQ (две колонки, аккордеон как на camp) ─── */ -.reviews-faq { - padding: 40px 0; - background: var(--accent-light, #F5F3FF); -} -.reviews-faq__title { - text-align: center; - margin-bottom: 40px; +/* ============================================================ + FAQ — используется общий стиль .faq-section из main.css + Секция .reviews-faq сохраняет свой bg (accent-light) + отступы + ============================================================ */ +.reviews-faq .faq-section__title { font-family: 'Oswald', sans-serif; - font-size: clamp(24px, 2.8vw, 32px); font-weight: 500; - color: var(--color-text); -} -.reviews-faq-wrapper { - display: flex; - gap: 30px; -} -.reviews-faq .accordion { - width: 50%; - display: flex; - flex-direction: column; - gap: 10px; - border-top: 1px solid #ccc; -} -.reviews-faq .accordion .box__accordion { - position: relative; - cursor: pointer; - border-bottom: 1px solid #ccc; - border-radius: 0; -} -.reviews-faq .box__accordion_label { - position: relative; - padding: 20px 0; - cursor: pointer; - display: flex; - align-items: center; - gap: 20px; - justify-content: space-between; -} -.reviews-faq .accordion .box__accordion .box__accordion_label::after { - background-image: none; -} -.reviews-faq .box__accordion_label span { - font-size: clamp(18px, 2.2vw, 22px); - line-height: 1.25; - font-family: var(--font-display, 'Oswald', sans-serif); - font-weight: 600; - color: var(--color-text); -} -.box__accordion_label svg { - width: 36px; - height: 36px; - padding: 8px; - border-radius: 50%; - background: var(--color-primary); - stroke: #fff; - transition: background var(--transition-fast); - flex-shrink: 0; -} -.box__accordion_label svg:hover { - background: var(--color-primary-hover); -} -.active .box__accordion_label svg { - rotate: 45deg; - background: var(--color-primary-hover); -} -.box__accordion_label svg g { - stroke: #fff; -} -.box__accordion_label svg:hover g { - stroke: #fff; -} -.reviews-faq .box__accordion_content { - display: flex; - position: relative; - overflow: hidden; - max-height: 0; - transition: max-height .3s ease; - gap: 20px; - align-items: center; -} -.box__accordion_content-text { - display: flex; - flex-direction: column; - gap: 10px; - font-size: 16px; - line-height: 1.6; - color: var(--color-text-muted); - padding-bottom: 20px; - font-family: var(--font-body, sans-serif); -} -.box__accordion_content-text p { - margin: 0; + margin-bottom: 40px; } /* ─── ЗАКЛЮЧИТЕЛЬНЫЙ ТЕКСТ ─── */ @@ -1199,24 +1115,6 @@ text-align: center; padding: 16px 20px; } - /* ─── FAQ: две колонки → одна колонка ─── */ - .reviews-faq-wrapper { - gap: 0; - flex-direction: column; - } - .reviews-faq-wrapper .accordion { - width: 100%; - gap: 0; - } - .reviews-faq-wrapper .accordion-last { - border-top: none; - } - .reviews-faq .box__accordion_label span { - font-size: 20px; - } - .box__accordion_label svg { - flex-shrink: 0; - } /* ─── Контакты: колонки → стопкой, карта меньше ─── */ .reviews-contact .contact-wrapper { gap: 20px; diff --git a/wp-content/themes/dekart/functions.php b/wp-content/themes/dekart/functions.php index 33c3ecc..aed3348 100644 --- a/wp-content/themes/dekart/functions.php +++ b/wp-content/themes/dekart/functions.php @@ -480,10 +480,14 @@ function add_carbon() { ->where( 'post_type', '=', 'teacher' ) ->add_fields( array( Field::make( 'text', 'teacher_direction', 'Направление преподавателя (текст в под фото):' ), - Field::make( 'image', 'teacher_avatar', 'Автар:' ) + Field::make( 'image', 'teacher_avatar', 'Аватар:' ) ->set_width( 15 ), + Field::make( 'text', 'teacher_start_year', 'Год начала работы (только год, например: 1987)' ) + ->set_width( 30 ) + ->set_attribute( 'placeholder', '1987' ) + ->set_help_text( 'Стаж рассчитается автоматически на странице подготовки к школе.' ), Field::make( 'textarea', 'teacher_description', 'Дескрипшн преподавателя' ) - ->set_width( 75 ), + ->set_width( 55 ), Field::make( 'textarea', 'teacher_about', 'О себе:' ), Field::make( 'textarea', 'teacher_education', 'Образование:' ), Field::make( 'textarea', 'teacher_add_education', 'Дополнительное образование:' ), @@ -617,20 +621,21 @@ function add_carbon() { )) ->add_tab('👨‍🏫 Преподаватели', array( Field::make( 'html', 'pksh_teachers_tab_desc', '' ) - ->set_html( '

Секция: #teachers. Карточки преподавателей в стиле лагеря.

' ), - Field::make( 'complex', 'pksh_teachers', 'Преподаватели' ) + ->set_html( '

Секция: #teachers. Выберите преподавателей из добавленных в разделе Преподаватели главного меню админки. ФИО и фото берутся из карточки преподавателя.

' ), + Field::make( 'complex', 'pksh_teachers', 'Преподаватели на странице' ) ->set_layout( 'tabbed-horizontal' ) - ->set_help_text( 'Добавьте преподавателей. Выводятся на странице подготовки к школе в секции Преподаватели.' ) + ->set_help_text( 'Добавьте преподавателей для этой страницы. Выберите из списка существующих.' ) ->add_fields( array( - Field::make( 'text', 'teacher_name', 'ФИО' ) - ->set_width( 40 ), - Field::make( 'image', 'teacher_photo', 'Фото' ) - ->set_help_text( 'Оптимально: 240×240 px, квадратное.' ) - ->set_width( 30 ), - Field::make( 'text', 'teacher_subject', 'Предмет / должность' ) - ->set_width( 30 ), - Field::make( 'textarea', 'teacher_about', 'О педагоге' ) - ->set_width( 100 ), + Field::make( 'select', 'teacher_id', 'Выберите преподавателя' ) + ->set_options( array( 0 => '— Выберите преподавателя —' ) + dekart_get_teacher_options() ) + ->set_width( 100 ) + ->set_help_text( 'ФИО и фото подтянутся из карточки преподавателя. Если нужного нет — добавьте в разделе Преподаватели.' ), + Field::make( 'text', 'teacher_subject', 'Предмет / должность (на этой странице)' ) + ->set_width( 100 ) + ->set_help_text( 'Если оставить пустым — используется значение из карточки преподавателя.' ), + Field::make( 'textarea', 'teacher_about', 'О педагоге (на этой странице)' ) + ->set_width( 100 ) + ->set_help_text( 'Краткое описание для этой страницы. Если оставить пустым — используется значение из карточки преподавателя.' ), )), )) // ==================================================== @@ -638,67 +643,47 @@ function add_carbon() { // ==================================================== ->add_tab('📚 Программы', array( Field::make( 'html', 'pksh_programs_tab_desc', '' ) - ->set_html( '

Секция: #programs. Карточки программ подготовки к школе. Каждая карточка — отдельная запись.

' ), - Field::make( 'complex', 'pksh_programs', 'Программы подготовки' ) - ->set_layout( 'tabbed-horizontal' ) - ->set_help_text( 'Добавьте программы подготовки к школе. Каждая — отдельная карточка.' ) - ->add_fields( array( - Field::make( 'text', 'program_icon', 'Иконка (emoji)' ) - ->set_width( 20 ) - ->set_default_value( '🎓' ), - Field::make( 'text', 'program_title', 'Название программы' ) - ->set_width( 80 ), - Field::make( 'text', 'program_intensity', 'Интенсивность' ) - ->set_width( 50 ) - ->set_help_text( 'Например: 2 раза в неделю' ), - Field::make( 'textarea', 'program_schedule', 'Расписание' ) - ->set_width( 50 ) - ->set_help_text( 'Каждая строка — один вариант расписания' ), - Field::make( 'text', 'program_duration', 'Длительность занятия' ) - ->set_width( 30 ) - ->set_default_value( '90 мин' ), - Field::make( 'textarea', 'program_lesson_structure', 'Структура занятия (timeline)' ) - ->set_width( 70 ) - ->set_help_text( 'Каждая строка: время 🔤 Название. Например: "15 мин 🧠 Нейрогимнастика"' ), - Field::make( 'textarea', 'program_includes', 'Программа включает' ) - ->set_width( 100 ) - ->set_help_text( 'Каждая строка — пункт списка' ), - Field::make( 'text', 'program_price_subscription', 'Цена абонемента' ) - ->set_width( 40 ) - ->set_default_value( '7 500 ₽' ) - ->set_help_text( 'Например: 7 500 ₽' ), - Field::make( 'text', 'program_price_single', 'Цена разового занятия' ) - ->set_width( 40 ) - ->set_default_value( '1 000 ₽' ) - ->set_help_text( 'Например: 1 000 ₽' ), - Field::make( 'text', 'program_time_required', 'Длительность курса (timeRequired)' ) - ->set_width( 30 ) - ->set_help_text( 'Общая длительность курса. Например: "4 месяца", "P4M"' ), - Field::make( 'text', 'program_repeat_frequency', 'Частота занятий (ISO 8601)' ) - ->set_width( 30 ) - ->set_help_text( - 'Для Schema.org Schedule.repeatFrequency. ' - . 'Пример: P1W (раз в неделю), P4D (дважды в неделю). ' - . 'program_intensity остаётся для отображения на сайте.' - ) - ->set_attribute( 'placeholder', 'P1W' ), - Field::make( 'text', 'program_workload', 'Нагрузка (courseWorkload)' ) - ->set_width( 70 ) - ->set_help_text( 'Например: "2 занятия в неделю по 90 минут"' ), - Field::make( 'date', 'program_start_date', 'Дата старта программы' ) - ->set_width( 33 ), - Field::make( 'date', 'program_end_date', 'Дата окончания' ) - ->set_width( 33 ), - Field::make( 'date', 'program_price_valid', 'Цена действительна до' ) - ->set_width( 34 ) - ->set_help_text( 'Дата, до которой актуальна указанная цена.' ), - Field::make( 'text', 'program_button_text', 'Текст кнопки' ) - ->set_width( 40 ) - ->set_default_value( 'Записаться' ), - Field::make( 'text', 'program_button_url', 'Ссылка кнопки' ) - ->set_width( 60 ) - ->set_default_value( '/zapis/' ), - )), + ->set_html( '

Секция: #programs. Две фиксированные карточки: базовая и расширенная программа.

' ), + Field::make( 'html', 'pksh_prog_base_title', '' ) + ->set_html( '

🔵 Базовая — «Уверенный старт»

' ), + Field::make( 'text', 'pksh_prog_base_name', 'Название программы' ) + ->set_width( 100 ) + ->set_default_value( 'Уверенный старт' ), + Field::make( 'text', 'pksh_prog_base_subname', 'Подзаголовок' ) + ->set_width( 100 ) + ->set_default_value( '2 раза в неделю — комфортный темп без перегрузки' ), + Field::make( 'text', 'pksh_prog_base_schedule', 'Расписание' ) + ->set_width( 100 ) + ->set_default_value( 'вт, чт — 18:00–19:30' ), + Field::make( 'text', 'pksh_prog_base_price_sub', 'Стоимость абонемента за 4 недели' ) + ->set_width( 50 ) + ->set_default_value( '7 500 ₽' ), + Field::make( 'text', 'pksh_prog_base_price_single', 'Стоимость разового занятия' ) + ->set_width( 50 ) + ->set_default_value( '1 000 ₽' ), + Field::make( 'text', 'pksh_prog_base_urgency', 'Срочность (мест в группе)' ) + ->set_width( 100 ) + ->set_default_value( 'Осталось 2 места в группе' ), + Field::make( 'html', 'pksh_prog_prem_title', '' ) + ->set_html( '

🟣 Расширенная — «Результат за 3 месяца»

' ), + Field::make( 'text', 'pksh_prog_prem_name', 'Название программы' ) + ->set_width( 100 ) + ->set_default_value( 'Результат за 3 месяца' ), + Field::make( 'text', 'pksh_prog_prem_subname', 'Подзаголовок' ) + ->set_width( 100 ) + ->set_default_value( '3 раза в неделю — быстрый прогресс' ), + Field::make( 'text', 'pksh_prog_prem_schedule', 'Расписание' ) + ->set_width( 100 ) + ->set_default_value( 'пн, ср, пт — 16:30–18:00' ), + Field::make( 'text', 'pksh_prog_prem_price_sub', 'Стоимость абонемента за 4 недели' ) + ->set_width( 50 ) + ->set_default_value( '10 500 ₽' ), + Field::make( 'text', 'pksh_prog_prem_price_single', 'Стоимость разового занятия' ) + ->set_width( 50 ) + ->set_default_value( '1 500 ₽' ), + Field::make( 'text', 'pksh_prog_prem_urgency', 'Срочность (мест в группе)' ) + ->set_width( 100 ) + ->set_default_value( 'Осталось 3 места в группе' ), )) // ==================================================== // Вкладка: JSON-LD Schema (данные для микроразметки) @@ -2109,6 +2094,24 @@ require_once __DIR__ . '/inc/schema.php'; +// ───────────────────────────────────────────────────────────── +// Helper: список преподавателей для select поля +// ───────────────────────────────────────────────────────────── +function dekart_get_teacher_options() { + $options = array(); + $teachers = get_posts( array( + 'post_type' => 'teacher', + 'posts_per_page' => -1, + 'post_status' => 'publish', + 'orderby' => 'title', + 'order' => 'ASC', + ) ); + foreach ( $teachers as $t ) { + $options[ $t->ID ] = esc_html( $t->post_title ); + } + return $options; +} + // ───────────────────────────────────────────────────────────── // ACF: Отзывы (Лагерь) — группа полей // ───────────────────────────────────────────────────────────── diff --git a/wp-content/themes/dekart/page-camp.php b/wp-content/themes/dekart/page-camp.php index 5d97968..3efe326 100644 --- a/wp-content/themes/dekart/page-camp.php +++ b/wp-content/themes/dekart/page-camp.php @@ -650,9 +650,10 @@ $metrics = [ -
-

Часто задаваемые вопросы

-
+
+
+

Часто задаваемые вопросы

+
" . esc_html($questions_question) . " - + - + @@ -688,10 +689,11 @@ $metrics = [ $count++; } } - echo "
$HTMcol1
"; - echo "
$HTMcol2
"; + echo "
$HTMcol1
"; + echo "
$HTMcol2
"; ?>
+
diff --git a/wp-content/themes/dekart/page-podgotovka-k-shkole.php b/wp-content/themes/dekart/page-podgotovka-k-shkole.php index d805c41..87ef6a9 100644 --- a/wp-content/themes/dekart/page-podgotovka-k-shkole.php +++ b/wp-content/themes/dekart/page-podgotovka-k-shkole.php @@ -243,7 +243,7 @@ $opt_social_raw = get_option( 'branch_social' ) ?: carbon_get_post_meta( $post_
-
+
Бесплатно @@ -255,26 +255,18 @@ $opt_social_raw = get_option( 'branch_social' ) ?: carbon_get_post_meta( $post_
@@ -313,10 +305,15 @@ $opt_social_raw = get_option( 'branch_social' ) ?: carbon_get_post_meta( $post_
+
+ Как проходят занятия +

30 минут игры — 1 шаг к школе

+

Каждое занятие построено так, что ребёнок сам хочет вернуться. Без скучных прописей — только игровая методика и смена активностей каждые 7 минут.

+
- Как проходит занятие -

30 минут игры = 1 шаг к школе

-

Никаких скучных прописей. Каждое занятие построено так, что ребёнок сам хочет вернуться.

+ Структура занятия +

Каждый урок — мини-путешествие

+

Ребёнок не сидит за партой 30 минут. Мы меняем активность каждые 7 минут — мозг не устаёт, интерес не гаснет.

@@ -387,7 +384,7 @@ $opt_social_raw = get_option( 'branch_social' ) ?: carbon_get_post_meta( $post_ -
+
Бесплатно
@@ -401,10 +398,11 @@ $opt_social_raw = get_option( 'branch_social' ) ?: carbon_get_post_meta( $post_ -
-
+
+
Результаты наших учеников

К чему мы приводим детей

+

95% наших выпускников поступают в школы и лицеи Щёлкова без стресса. Первые результаты — через 3 недели.

95% @@ -429,8 +427,24 @@ $opt_social_raw = get_option( 'branch_social' ) ?: carbon_get_post_meta( $post_ +
-
+
Программы

Выберите формат подготовки

Все программы ведут действующие педагоги начальных классов. @@ -444,8 +458,8 @@ $opt_social_raw = get_option( 'branch_social' ) ?: carbon_get_post_meta( $post_

-
Уверенный старт
-
2 раза в неделю — комфортный темп без перегрузки
+
+
@@ -453,10 +467,10 @@ $opt_social_raw = get_option( 'branch_social' ) ?: carbon_get_post_meta( $post_
-
7 500 ₽ стоимость абонемента за 4 недели
-
375 ₽ за занятие — дешевле репетитора
-
Разовое занятие вне абонемента: 1 000 ₽
-
Осталось 2 места в группе
+
стоимость абонемента за 4 недели
+
за занятие — дешевле репетитора
+
Разовое занятие вне абонемента:
+
@@ -479,7 +493,7 @@ $opt_social_raw = get_option( 'branch_social' ) ?: carbon_get_post_meta( $post_
Расписание
-
вт, чт — 18:00–19:30
+
@@ -509,7 +523,7 @@ $opt_social_raw = get_option( 'branch_social' ) ?: carbon_get_post_meta( $post_ -
После записи: перезвоним за 30 минут, подберём удобное время.
+
Тестирование и первое занятие — бесплатно. Результат увидите до оплаты.
@@ -521,8 +535,8 @@ $opt_social_raw = get_option( 'branch_social' ) ?: carbon_get_post_meta( $post_
⭐⭐
-
Результат за 3 месяца
-
3 раза в неделю — быстрый прогресс
+
+
@@ -530,10 +544,10 @@ $opt_social_raw = get_option( 'branch_social' ) ?: carbon_get_post_meta( $post_
-
10 500 ₽ стоимость абонемента за 4 недели
-
500 ₽ за занятие — дешевле репетитора
-
Разовое занятие вне абонемента: 1 500 ₽
-
Осталось 3 места в группе
+
стоимость абонемента за 4 недели
+
за занятие — дешевле репетитора
+
Разовое занятие вне абонемента:
+
@@ -564,7 +578,7 @@ $opt_social_raw = get_option( 'branch_social' ) ?: carbon_get_post_meta( $post_
Расписание
-
пн, ср, пт — 16:30–18:00
+
@@ -594,7 +608,7 @@ $opt_social_raw = get_option( 'branch_social' ) ?: carbon_get_post_meta( $post_ -
После записи: перезвоним за 30 минут, подберём удобное время.
+
Тестирование и первое занятие — бесплатно. Результат увидите до оплаты.
@@ -610,28 +624,55 @@ $opt_social_raw = get_option( 'branch_social' ) ?: carbon_get_post_meta( $post_
+
+ Преподаватели +

Наши преподаватели — практикующие педагоги

+

Каждый педагог имеет опыт работы с дошкольниками от 5 лет. Все — действующие учителя начальных классов с высшим образованием.

+
-

Наши преподаватели

post_title : '—'; + + // Фото: _teacher_avatar или _thumbnail_id + $t_photo = 0; + if ($t_post) { + $t_photo = get_post_meta($t_id, '_teacher_avatar', true); + if (!$t_photo) { + $t_photo = get_post_meta($t_id, '_thumbnail_id', true); + } + } + + // Subject fallback: сначала из CF, потом из CPT _teacher_direction + if (empty($t_subj) && $t_post) { + $t_subj = get_post_meta($t_id, '_teacher_direction', true); + } + + // About fallback + if (empty($t_about) && $t_post) { + $t_about = get_post_meta($t_id, '_teacher_about', true); + } ?>
- + <?php echo esc_attr($t_name); ?> - <?php echo esc_attr($t_name); ?> @@ -641,9 +682,29 @@ $opt_social_raw = get_option( 'branch_social' ) ?: carbon_get_post_meta( $post_

- -

+ +

+ +
+ 👶 Работает с дошкольниками + 0) { + $exp_years = $exp . ' лет'; + } + } + if ($exp_years) : ?> + 📅 Стаж: + + +
+
@@ -674,11 +735,11 @@ $opt_social_raw = get_option( 'branch_social' ) ?: carbon_get_post_meta( $post_
- + -
-
-

Часто задаваемые вопросы

+
+
+

Часто задаваемые вопросы

-
-
-
+
+
+
- @@ -829,7 +889,7 @@ $opt_social_raw = get_option( 'branch_social' ) ?: carbon_get_post_meta( $post_ -
+

Нас рекомендуют на площадках

@@ -862,7 +922,7 @@ $opt_social_raw = get_option( 'branch_social' ) ?: carbon_get_post_meta( $post_ -
+

Первое занятие — бесплатно

diff --git a/wp-content/themes/dekart/page-reviews.php b/wp-content/themes/dekart/page-reviews.php index bde84ce..4e26476 100644 --- a/wp-content/themes/dekart/page-reviews.php +++ b/wp-content/themes/dekart/page-reviews.php @@ -658,11 +658,11 @@ $intro_price_txt = carbon_get_post_meta( $post_id, 'reviews_intro_price_text' );
- -
-
-

Частые вопросы о поступлении в школу Декарт

-
+ +
+
+

Частые вопросы о поступлении в школу Декарт

+
' . '' . '
' . '
' . wp_kses_post( wpautop( $a ) ) . '
' @@ -701,9 +701,9 @@ $intro_price_txt = carbon_get_post_meta( $post_id, 'reviews_intro_price_text' ); $count++; endforeach; ?> -
-
-
+
+
+