diff --git a/wp-content/themes/dekart/assets/css/main.css b/wp-content/themes/dekart/assets/css/main.css
index 4b5f238..a26c2ff 100644
--- a/wp-content/themes/dekart/assets/css/main.css
+++ b/wp-content/themes/dekart/assets/css/main.css
@@ -11110,8 +11110,9 @@ main > .pksh-section:first-child {
background: var(--accent-light, #F5F3FF);
}
-.faq-section .container {
- /* центрирование через стандартный .container */
+.faq-section .container,
+.faq-section .bento {
+ width: 100%;
}
.faq-section__title {
@@ -11121,11 +11122,13 @@ main > .pksh-section:first-child {
font-weight: 700;
line-height: 1.25;
color: var(--navy, #0F172A);
+ grid-column: 1 / -1;
}
.faq-section__wrapper {
display: flex;
gap: 30px;
+ grid-column: 1 / -1;
}
.faq-section__col {
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 30eee4d..644e0a4 100644
--- a/wp-content/themes/dekart/assets/css/podgotovka-k-shkole.css
+++ b/wp-content/themes/dekart/assets/css/podgotovka-k-shkole.css
@@ -117,12 +117,19 @@ background: rgba(124, 58, 237, 0.2);
.bento-p--light {
color: rgba(255,255,255,0.65);
}
+
+.bento-p {
font-size: 1rem;
- line-height: 1.6;
- color: var(--slate-600);
+ line-height: 1.65;
+ color: var(--slate-600, #475569);
margin: 0 0 20px;
}
+/* ── Centered section header (replaces inline style="text-align:center" on bento__full) ── */
+.section-header--centered {
+ text-align: center;
+}
+
@media (min-width: 640px) {
.bento-h2 {
font-size: 1.875rem;
@@ -310,7 +317,7 @@ background: rgba(124, 58, 237, 0.2);
9. PROGRAMS GRID
============================================================ */
/* ============================================================
- 9. PROGRAMS — redesigned 2-column cards
+ 9. PROGRAMS — карточки программ v3
============================================================ */
.programs-grid {
display: grid;
@@ -320,310 +327,361 @@ background: rgba(124, 58, 237, 0.2);
align-items: stretch;
}
-/* ── Card base ── */
+/* ── Карточка ── */
.prog-card {
display: flex;
flex-direction: column;
border-radius: 24px;
overflow: hidden;
background: #FFFFFF;
- box-shadow: 0 4px 24px rgba(0, 0, 0, 0.07);
+ box-shadow: 0 2px 20px rgba(0,0,0,0.07);
transition: transform 0.25s ease, box-shadow 0.25s ease;
position: relative;
}
.prog-card:hover {
transform: translateY(-4px);
- box-shadow: 0 12px 40px rgba(0, 0, 0, 0.12);
+ 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 ── */
+/* ── Шапка ── */
.prog-card__header {
- padding: 16px 24px 20px;
+ position: relative;
display: flex;
flex-direction: column;
align-items: flex-start;
gap: 8px;
- position: relative;
+ padding: 16px 20px;
+ min-height: 90px;
+}
+
+.prog-card--base .prog-card__header {
+ background: linear-gradient(145deg, #7C3AED 0%, #6D28D9 100%);
+ color: #FFFFFF;
+}
+
+.prog-card--premium .prog-card__header {
+ background: linear-gradient(145deg, #6D28D9 0%, #5B21B6 100%);
+ color: #FFFFFF;
+}
+
+/* Бейдж "Первое занятие — бесплатно" */
+.prog-card__header-badge {
+ display: inline-flex;
+ padding: 3px 10px;
+ background: rgba(255,255,255,0.15);
+ backdrop-filter: blur(4px);
+ color: #FFFFFF;
+ font-size: 10px;
+ font-weight: 600;
+ letter-spacing: 0.03em;
+ border-radius: 100px;
+}
+
+/* Бейдж "Популярный выбор" (в потоке, под подзаголовком) */
+.prog-card__popular {
+ display: inline-flex;
+ padding: 3px 10px;
+ background: #F59E0B;
+ color: #0F172A;
+ font-size: 10px;
+ font-weight: 700;
+ border-radius: 100px;
+ box-shadow: 0 2px 8px rgba(245,158,11,0.3);
+ margin-top: 6px;
+}
+
+/* Иконка звезды */
+.prog-card__icon {
+ font-size: 44px;
+ line-height: 1;
+ flex-shrink: 0;
}
.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: 48px;
- height: 48px;
- display: flex;
- align-items: center;
- justify-content: center;
- background: rgba(255, 255, 255, 0.18);
- border-radius: 14px;
- font-size: 1.4rem;
-}
-
-.prog-card__icon--double {
- font-size: 1rem;
- letter-spacing: -2px;
+ gap: 10px;
}
.prog-card__name {
- font-size: 1.1rem;
+ font-size: 26px;
font-weight: 700;
- line-height: 1.25;
+ color: #FFFFFF;
+ text-align: left;
+ line-height: 1.15;
+ margin-bottom: 3px;
+ letter-spacing: -0.02em;
}
.prog-card__subname {
- font-size: 0.85rem;
- opacity: 0.85;
- margin-top: 2px;
+ font-size: 11px;
+ color: rgba(255,255,255,0.65);
+ text-align: left;
+ line-height: 1.3;
+ font-weight: 400;
}
-/* ── Body ── */
+/* ── Тело карточки ── */
.prog-card__body {
- padding: 20px 24px 24px;
flex-grow: 1;
display: flex;
flex-direction: column;
- gap: 16px;
}
-/* ── Block ── */
-.prog-card__block-title {
- font-size: 0.75rem;
- font-weight: 700;
- text-transform: uppercase;
- letter-spacing: 0.05em;
+/* ── Цена ── */
+.prog-card__pricing {
+ padding: 20px 24px 16px;
+ border-bottom: 1px solid #E9EDF4;
+ text-align: left;
+}
+
+.prog-card__price {
+ font-size: 28px;
+ font-weight: 800;
+ color: #0F172A;
+ line-height: 1;
+ display: block;
+}
+
+.prog-card__price--premium {
+ color: #0F172A;
+}
+
+.prog-card__price-period {
+ font-size: 13px;
+ font-weight: 400;
color: #64748B;
- margin-bottom: 8px;
+ margin-left: 4px;
}
-/* ── Checklist ── */
+.prog-card__price-sub {
+ font-size: 14px;
+ font-weight: 600;
+ color: #7C3AED;
+ margin-top: 4px;
+}
+
+.prog-card__price-single {
+ font-size: 12px;
+ color: #94A3B8;
+ margin-top: 2px;
+}
+
+.prog-card__urgency {
+ margin-top: 8px;
+ font-size: 13px;
+ font-weight: 600;
+ color: #DC2626;
+ display: flex;
+ align-items: center;
+ gap: 6px;
+}
+
+.prog-card__urgency::before {
+ content: '';
+ display: inline-block;
+ width: 8px;
+ height: 8px;
+ border-radius: 50%;
+ background: #DC2626;
+ flex-shrink: 0;
+}
+
+/* ── Результат ── */
+.prog-card__result {
+ display: flex;
+ align-items: center;
+ gap: 10px;
+ padding: 12px 24px;
+ background: #F0FDF4;
+ font-size: 14px;
+ line-height: 1.45;
+ color: #166534;
+ border-bottom: 1px solid #E9EDF4;
+ text-align: left;
+}
+
+.prog-card__result-icon {
+ font-size: 44px;
+ flex-shrink: 0;
+ line-height: 1;
+}
+
+.prog-card__result strong {
+ font-weight: 700;
+ color: #15803D;
+}
+
+/* ── Блоки ── */
+.prog-card__block {
+ padding: 16px 24px;
+ border-bottom: 1px solid #E9EDF4;
+}
+
+.prog-card__block:last-of-type {
+ border-bottom: none;
+}
+
+.prog-card__block-title {
+ font-size: 11px;
+ font-weight: 700;
+ letter-spacing: 0.06em;
+ color: #64748B;
+ text-transform: uppercase;
+ margin-bottom: 10px;
+}
+
+/* ── Чеклист ── */
.prog-card__checklist {
list-style: none;
padding: 0;
margin: 0;
display: flex;
flex-direction: column;
- gap: 6px;
}
.prog-card__checklist li {
- position: relative;
- padding-left: 22px;
- font-size: 0.9rem;
- color: #475569;
- line-height: 1.45;
+ display: flex;
+ align-items: flex-start;
+ gap: 10px;
+ padding: 5px 0;
+ font-size: 14px;
+ line-height: 1.4;
+ color: #1E293B;
+ text-align: left;
}
.prog-card__checklist li::before {
content: "✓";
- position: absolute;
- left: 0;
+ flex-shrink: 0;
+ width: 18px;
+ font-size: 14px;
+ font-weight: 700;
color: #7C3AED;
- font-weight: 800;
- font-size: 0.85rem;
+ margin-top: 1px;
}
.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;
+/* ── Блок сравнения (премиум) ── */
+.prog-card__compare {
+ display: flex;
+ align-items: center;
+ gap: 10px;
+ padding: 12px 24px;
+ margin: 0;
+ background: #FFF7ED;
+ font-size: 14px;
+ line-height: 1.45;
+ color: #92400E;
+ border-bottom: 1px solid #E9EDF4;
+ text-align: left;
+}
+
+.prog-card__compare-icon {
+ font-size: 44px;
+ flex-shrink: 0;
+ line-height: 1;
+}
+
+.prog-card__compare strong {
+ font-weight: 700;
+}
+
+/* ── Расписание ── */
+.prog-card__schedule-wrap {
+ padding: 16px 24px;
+ border-bottom: 1px solid #E9EDF4;
+}
+
+.prog-card__schedule {
+ display: inline-flex;
+ align-items: center;
+ padding: 8px 16px;
+ background: #F5F3FF;
+ border-radius: 8px;
+ font-size: 15px;
+ font-weight: 600;
+ color: #7C3AED;
+}
+
+/* ── Структура ── */
+.prog-card__struct-wrap {
+ padding: 16px 24px;
+ border-bottom: 1px solid #E9EDF4;
+ text-align: center;
}
-/* ── Tags (structure) ── */
.prog-card__tags {
display: flex;
flex-wrap: wrap;
gap: 6px;
+ justify-content: center;
}
.prog-card__tag {
display: inline-flex;
padding: 5px 12px;
- font-size: 0.8rem;
- font-weight: 600;
- color: #7C3AED;
- background: #F5F3FF;
+ font-size: 13px;
+ font-weight: 500;
border-radius: 100px;
- white-space: nowrap;
+ background: #F5F3FF;
+ color: #7C3AED;
}
-/* ── Trust row ── */
+/* ── Доверие ── */
.prog-card__trust {
display: flex;
flex-wrap: wrap;
+ justify-content: center;
gap: 8px 16px;
- padding: 12px 14px;
- background: #FAFAFE;
- border-radius: 12px;
- font-size: 0.85rem;
- color: #64748B;
-}
-
-/* ── Pricing — now at top of body ── */
-.prog-card__pricing {
- padding: 0 0 12px;
+ padding: 12px 24px;
border-bottom: 1px solid #E9EDF4;
- margin-bottom: 4px;
-}
-
-.prog-card__price {
- font-size: 1.6rem;
- font-weight: 800;
- color: #0F172A;
- line-height: 1.1;
-}
-
-.prog-card__price--premium {
- color: #6D28D9;
-}
-
-.prog-card__price-period {
- font-size: 0.85rem;
- font-weight: 400;
+ font-size: 13px;
color: #64748B;
}
-.prog-card__price-sub {
- font-size: 0.82rem;
- color: #10B981;
- font-weight: 600;
- margin-top: 2px;
-}
-
-.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;
+ justify-content: center;
+ gap: 24px;
+ padding: 10px 24px;
+ border-bottom: 1px solid #E9EDF4;
+ font-size: 13px;
+}
+
+.prog-card__rating {
+ font-weight: 600;
+ color: #1E293B;
+}
+
+.prog-card__rating::before {
+ content: "★";
+ color: #F59E0B;
+ margin-right: 4px;
+}
+
+.prog-card__graduates {
color: #64748B;
}
-/* ── Button ── */
+/* ── Кнопка ── */
+.prog-card__btn-wrap {
+ padding: 16px 24px 4px;
+}
+
.prog-card__btn {
display: block;
width: 100%;
@@ -631,69 +689,133 @@ background: rgba(124, 58, 237, 0.2);
border: none;
border-radius: 14px;
font-family: inherit;
- font-size: 1rem;
+ font-size: 16px;
font-weight: 700;
- color: #fff;
+ color: #FFFFFF;
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 4px 16px rgba(124, 58, 237, 0.25);
+ transition: all 0.2s ease;
+}
+
+.prog-card--base .prog-card__btn {
+ background: #7C3AED;
+}
+
+.prog-card--premium .prog-card__btn {
+ background: linear-gradient(135deg, #7C3AED, #A855F7);
+ box-shadow: 0 4px 20px 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);
+ transform: translateY(-1px);
+ box-shadow: 0 6px 24px rgba(124,58,237,0.4) !important;
}
+/* ── Футер ── */
.prog-card__footnote {
text-align: center;
- font-size: 0.8rem;
+ font-size: 12px;
color: #94A3B8;
- margin-top: 8px;
+ margin: 6px 24px 16px;
}
-/* ── Responsive ── */
+/* ── Адаптив ── */
@media (max-width: 860px) {
.programs-grid {
- grid-template-columns: 1fr 1fr;
gap: 16px;
}
.prog-card__header {
- padding: 14px 18px 16px;
+ padding: 12px 16px;
+ min-height: 80px;
gap: 6px;
}
- .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__name {
+ font-size: 22px;
}
.prog-card__price {
- font-size: 1.35rem;
+ font-size: 24px;
}
- .prog-card__btn {
- padding: 12px;
- font-size: 0.95rem;
+ .prog-card__pricing {
+ padding: 16px 18px 12px;
+ }
+ .prog-card__block {
+ padding: 12px 18px;
+ }
+ .prog-card__schedule-wrap,
+ .prog-card__struct-wrap {
+ padding: 12px 18px;
+ }
+ .prog-card__result {
+ padding: 10px 18px;
+ }
+ .prog-card__trust {
+ padding: 10px 18px;
+ }
+ .prog-card__social-proof {
+ padding: 8px 18px;
+ }
+ .prog-card__btn-wrap {
+ padding: 12px 18px 2px;
+ }
+ .prog-card__footnote {
+ margin: 4px 18px 12px;
}
}
@media (max-width: 639px) {
.programs-grid {
- grid-template-columns: 1fr;
- gap: 20px;
+ display: flex;
+ gap: 16px;
+ overflow-x: auto;
+ scroll-snap-type: x mandatory;
+ -webkit-overflow-scrolling: touch;
}
- .prog-card__badge {
- top: 12px;
- right: 12px;
- font-size: 0.6rem;
- padding: 4px 10px;
+ .prog-card {
+ flex-shrink: 0;
+ width: calc(100vw - 48px);
+ max-width: 380px;
+ scroll-snap-align: start;
+ }
+}
+
+/* ── Подсказка о свайпе на мобиле ── */
+.pksh-swipe-hint {
+ display: none;
+ align-items: center;
+ justify-content: center;
+ flex-wrap: wrap;
+ gap: 6px 8px;
+ margin: 16px 0 4px;
+ font-size: 0.875rem;
+ color: #7C3AED;
+ font-weight: 600;
+ animation: pkshSwipePulse 2s ease-in-out infinite;
+}
+
+.pksh-swipe-hint__arrow {
+ display: inline-block;
+ font-size: 1.125rem;
+ animation: pkshSwipePoint 1.5s ease-in-out infinite;
+}
+
+.pksh-swipe-hint__text {
+ text-align: center;
+}
+
+@keyframes pkshSwipePoint {
+ 0%, 100% { transform: translateY(0); }
+ 50% { transform: translateY(-4px); }
+}
+
+@keyframes pkshSwipePulse {
+ 0%, 100% { opacity: 0.6; }
+ 50% { opacity: 1; }
+}
+
+@media (max-width: 768px) {
+ .pksh-swipe-hint {
+ display: flex;
}
}
@@ -1056,11 +1178,7 @@ background: rgba(124, 58, 237, 0.2);
}
/* ── 21c. Programs grid — fill bento width ── */
-.page-pksh .programs-grid {
- width: 100%;
-}
-
-/* ── 21d. Final CTA — full width + centered content ── */
+/* programs-grid width:100% moved to base .programs-grid */
.page-pksh #final-cta .bento__full {
width: 100%;
max-width: 700px;
@@ -1578,6 +1696,7 @@ background: rgba(124, 58, 237, 0.2);
.page-pksh .bento[aria-label="Социальное доказательство"] {
background: var(--bg-warm, #F8F4F0);
position: relative;
+ padding: 48px 32px 0 !important;
}
/* Subtle background pattern for depth */
@@ -1891,24 +2010,50 @@ background: rgba(124, 58, 237, 0.2);
box-shadow: 0 8px 28px rgba(124, 58, 237, 0.50);
}
-/* ============================================================
- 42. REVIEWS — standalone section (camp-style)
- lw-card rendering from Carbon Fields complex field.
- Same pattern as .camp-reviews on camp page.
- ============================================================ */
+/* ── 42. REVIEWS — uses .bento.pksh-section layout (same as teachers) ── */
-/* ── Section full-width background ── */
-.page-pksh .pksh-reviews {
- position: relative;
- padding: 80px 32px;
- max-width: 1280px;
- margin: 0 auto;
+/* ── 43. SHARED MOBILE SCROLLBAR (reviews + programs) ── */
+@media (max-width: 768px) {
+ /* Reviews — more bottom breathing room */
+ .page-pksh .reviews-cards .lw-grid--3 {
+ padding-bottom: 20px;
+ }
+ /* Programs — add spacing for scrollbar (scrollbar-width set in Firefox fallback below) */
+ .page-pksh .programs-grid {
+ padding-bottom: 20px;
+ }
+ .page-pksh .programs-grid::-webkit-scrollbar {
+ display: block;
+ }
}
-@media (max-width: 768px) {
- .page-pksh .pksh-reviews {
- padding: 40px 0;
- }
+/* All three: styled scrollbar via shared selector */
+/* Note: reviews scrollbar is on .lw-grid--3 (overflow-x:auto), not .lw-scroll-x wrapper */
+.page-pksh .reviews-cards .lw-grid--3::-webkit-scrollbar,
+.page-pksh .programs-grid::-webkit-scrollbar,
+.page-pksh .pksh-teachers__scroll-x::-webkit-scrollbar {
+ height: 8px;
+ background: #f1f5f9;
+ border-radius: 8px;
+}
+.page-pksh .reviews-cards .lw-grid--3::-webkit-scrollbar-thumb,
+.page-pksh .programs-grid::-webkit-scrollbar-thumb,
+.page-pksh .pksh-teachers__scroll-x::-webkit-scrollbar-thumb {
+ background: linear-gradient(90deg, #7C3AED, #A78BFA);
+ border-radius: 8px;
+ border: 2px solid #f1f5f9; /* creates padding effect around thumb */
+}
+.page-pksh .reviews-cards .lw-grid--3::-webkit-scrollbar-thumb:hover,
+.page-pksh .programs-grid::-webkit-scrollbar-thumb:hover,
+.page-pksh .pksh-teachers__scroll-x::-webkit-scrollbar-thumb:hover {
+ background: linear-gradient(90deg, #6D28D9, #7C3AED);
+}
+/* Firefox fallback */
+.page-pksh .reviews-cards .lw-grid--3,
+.page-pksh .programs-grid,
+.page-pksh .pksh-teachers__scroll-x {
+ scrollbar-width: thin;
+ scrollbar-color: #7C3AED #f1f5f9;
}
/* ============================================================
@@ -2022,8 +2167,8 @@ background: rgba(124, 58, 237, 0.2);
}
.pksh-teachers__item {
- width: calc(25% - 18px);
- min-width: 240px;
+ width: calc(33.33% - 18px);
+ min-width: 280px;
}
.pksh-teachers__card {
@@ -2183,6 +2328,29 @@ background: rgba(124, 58, 237, 0.2);
}
}
+/* ── Teachers: mobile horizontal scroll (≤639px) ── */
+@media (max-width: 639px) {
+ .pksh-teachers__scroll-x {
+ overflow-x: auto;
+ -webkit-overflow-scrolling: touch;
+ scroll-snap-type: x mandatory;
+ padding-bottom: 20px;
+ }
+ .pksh-teachers__wrapper {
+ flex-wrap: nowrap;
+ gap: 16px;
+ justify-content: flex-start;
+ padding-bottom: 4px;
+ }
+ .pksh-teachers__item {
+ flex-shrink: 0;
+ width: calc(100vw - 64px);
+ max-width: 340px;
+ scroll-snap-align: start;
+ min-width: 0;
+ }
+}
+
@media (max-width: 480px) {
.pksh-teachers__item {
width: 100%;
@@ -2190,20 +2358,6 @@ background: rgba(124, 58, 237, 0.2);
}
}
-@supports (scrollbar-width: thin) {
- .pksh-teachers__scroll-x {
- scrollbar-width: thin;
- scrollbar-color: #ccc transparent;
- }
-}
-.pksh-teachers__scroll-x::-webkit-scrollbar {
- height: 6px;
-}
-.pksh-teachers__scroll-x::-webkit-scrollbar-thumb {
- background: #ccc;
- border-radius: 8px;
-}
-
/* ═══════════════════════════════════════════════════════════
42. BACKGROUND — единый фон на .page-pksh
Фон страницы: var(--accent-light, #F5F3FF) — задан на .page-pksh
@@ -2424,27 +2578,6 @@ background: rgba(124, 58, 237, 0.2);
============================================================ */
/* ── Program cards — container context ── */
-.page-pksh .programs-grid {
- container-type: inline-size;
- container-name: programs-grid;
-}
-
-@container programs-grid (max-width: 400px) {
- .program-card__header {
- flex-direction: column;
- text-align: center;
- padding: 16px;
- }
- .program-card__pricing {
- align-items: center;
- text-align: center;
- }
- .program-card__price-main {
- flex-direction: column;
- align-items: center;
- }
-}
-
/* ── Trust authority cards — container context ── */
.page-pksh .trust-authority__grid {
container-type: inline-size;
@@ -2578,3 +2711,214 @@ background: rgba(124, 58, 237, 0.2);
width: 100%;
}
}
+
+/* ── Honest Timer ── */
+.honest-timer {
+ text-align: center;
+ margin: 20px 0 12px;
+}
+
+.honest-timer__label {
+ display: block;
+ font-size: 0.875rem;
+ color: var(--slate-500, #64748B);
+ margin-bottom: 10px;
+ font-weight: 600;
+}
+
+.honest-timer__digits {
+ display: inline-flex;
+ align-items: center;
+ gap: 4px;
+}
+
+.honest-timer__unit {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ gap: 2px;
+}
+
+.honest-timer__num {
+ display: block;
+ min-width: 52px;
+ padding: 6px 8px;
+ background: linear-gradient(135deg, #1E1B4B, #312E81);
+ color: #fff;
+ font-size: 1.5rem;
+ font-weight: 700;
+ font-variant-numeric: tabular-nums;
+ border-radius: 10px;
+ line-height: 1.2;
+ text-align: center;
+}
+
+.honest-timer__unit-label {
+ font-size: 0.675rem;
+ color: var(--slate-400, #94A3B8);
+ text-transform: uppercase;
+ letter-spacing: 0.06em;
+}
+
+.honest-timer__sep {
+ font-size: 1.5rem;
+ font-weight: 700;
+ color: var(--slate-300, #CBD5E1);
+ margin-bottom: 18px;
+}
+
+@media (max-width: 480px) {
+ .honest-timer__num {
+ min-width: 40px;
+ font-size: 1.25rem;
+ padding: 4px 6px;
+ }
+ .honest-timer__sep {
+ font-size: 1.25rem;
+ }
+}
+
+/* ═══════════════════════════════════════════════════════════
+ 44 — COMPARE TABLE (pksh-compare)
+ Сравнение Декарт vs Репетитор vs Кружок
+ ═══════════════════════════════════════════════════════════ */
+
+.pksh-compare {
+ overflow-x: auto;
+ -webkit-overflow-scrolling: touch;
+ padding-bottom: 16px;
+ margin-top: -16px;
+}
+
+.pksh-compare::-webkit-scrollbar { height: 6px; }
+.pksh-compare::-webkit-scrollbar-thumb {
+ background: var(--accent, #7C3AED);
+ border-radius: 8px;
+}
+
+.pksh-compare__table {
+ width: 100%;
+ min-width: 660px;
+ border-collapse: collapse;
+ font-size: 0.9375rem;
+ line-height: 1.5;
+}
+
+.pksh-compare__table th,
+.pksh-compare__table td {
+ padding: 14px 16px;
+ text-align: left;
+ vertical-align: top;
+ border-bottom: 1px solid #E2E8F0;
+}
+
+.pksh-compare__table thead th {
+ font-family: 'Oswald', sans-serif;
+ font-weight: 600;
+ font-size: 1.05rem;
+ text-transform: uppercase;
+ letter-spacing: 0.02em;
+ border-bottom: 2px solid #CBD5E1;
+ padding-top: 20px;
+ padding-bottom: 16px;
+}
+
+.pksh-compare__label-cell {
+ font-weight: 600;
+ color: #475569;
+ white-space: nowrap;
+ width: 140px;
+}
+
+/* Highlight column — Декарт */
+.pksh-compare__highlight {
+ background: var(--accent-light, #F5F3FF);
+ border-left: 2px solid var(--accent, #7C3AED);
+ border-right: 2px solid var(--accent, #7C3AED);
+}
+
+.pksh-compare__table thead .pksh-compare__highlight {
+ background: linear-gradient(135deg, #7C3AED, #6D28D9);
+ color: #fff;
+ border-bottom: none;
+}
+
+.pksh-compare__col-title {
+ display: block;
+ font-size: 1.15rem;
+}
+
+.pksh-compare__col-badge {
+ display: inline-block;
+ font-family: 'Roboto', sans-serif;
+ font-size: 0.7rem;
+ font-weight: 500;
+ text-transform: none;
+ letter-spacing: normal;
+ background: rgba(255,255,255,0.2);
+ padding: 2px 8px;
+ border-radius: 4px;
+ margin-top: 4px;
+}
+
+/* Markers */
+.pksh-compare__yes {
+ color: #16A34A;
+ font-weight: 700;
+ margin-right: 4px;
+}
+
+.pksh-compare__no {
+ color: #DC2626;
+ font-weight: 700;
+ margin-right: 4px;
+}
+
+.pksh-compare__draft {
+ display: inline-block;
+ font-size: 0.7rem;
+ font-weight: 500;
+ color: #92400E;
+ background: #FEF3C7;
+ padding: 1px 6px;
+ border-radius: 3px;
+ margin-right: 4px;
+}
+
+/* Footnote */
+.pksh-compare__footnote {
+ font-size: 0.8125rem;
+ color: #94A3B8;
+ padding: 12px 16px;
+ margin: 0;
+ border-top: 1px solid #E2E8F0;
+}
+
+/* Mobile adjustments */
+@media (max-width: 639px) {
+ .pksh-compare__table th,
+ .pksh-compare__table td {
+ padding: 10px 12px;
+ font-size: 0.8125rem;
+ }
+ .pksh-compare__label-cell {
+ width: 100px;
+ font-size: 0.8125rem;
+ }
+ .pksh-compare__table thead th {
+ font-size: 0.9375rem;
+ padding-top: 14px;
+ padding-bottom: 12px;
+ }
+ .pksh-compare__col-title {
+ font-size: 1rem;
+ }
+}
+
+@media (max-width: 380px) {
+ .pksh-compare__table th,
+ .pksh-compare__table td {
+ padding: 8px;
+ font-size: 0.75rem;
+ }
+}
diff --git a/wp-content/themes/dekart/functions.php b/wp-content/themes/dekart/functions.php
index aed3348..223f1a1 100644
--- a/wp-content/themes/dekart/functions.php
+++ b/wp-content/themes/dekart/functions.php
@@ -1465,7 +1465,6 @@ function needs_swiper(): bool {
'page-school.php',
'page-contacts.php',
'page-teachers.php',
- 'page-podgotovka-k-shkole.php',
'page-camp.php',
];
foreach ( $swiper_templates as $tmpl ) {
@@ -1605,15 +1604,40 @@ function dekart_security_headers(): void {
header( 'X-Frame-Options: SAMEORIGIN' );
header( 'Referrer-Policy: strict-origin-when-cross-origin' );
// Content-Security-Policy — базовый, без блокировки легаси-скриптов
- header( "Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdn-ru.bitrix24.ru https://alee.bitrix24.ru https://api-maps.yandex.ru https://cdn.jsdelivr.net https://www.google.com https://www.gstatic.com https://www.googletagmanager.com https://mc.yandex.ru; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com https://cdn.jsdelivr.net https://alee.bitrix24.ru; img-src 'self' data: https: blob:; font-src 'self' data: https://fonts.gstatic.com; frame-src 'self' https://cdn-ru.bitrix24.ru https://alee.bitrix24.ru https://www.google.com; connect-src 'self' https://api-maps.yandex.ru https://cdn-ru.bitrix24.ru https://alee.bitrix24.ru https://mc.yandex.ru; object-src 'none'; base-uri 'self'; form-action 'self' https://alee.bitrix24.ru;" );
+ header( "Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdn-ru.bitrix24.ru https://alee.bitrix24.ru https://api-maps.yandex.ru https://yastatic.net https://cdn.jsdelivr.net https://www.google.com https://www.gstatic.com https://www.googletagmanager.com https://mc.yandex.ru; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com https://cdn.jsdelivr.net https://alee.bitrix24.ru; img-src 'self' data: https: blob:; font-src 'self' data: https://fonts.gstatic.com; frame-src 'self' https://cdn-ru.bitrix24.ru https://alee.bitrix24.ru https://www.google.com; connect-src 'self' https://api-maps.yandex.ru https://yastatic.net https://cdn-ru.bitrix24.ru https://alee.bitrix24.ru https://mc.yandex.ru wss://mc.yandex.ru; object-src 'none'; base-uri 'self'; form-action 'self' https://alee.bitrix24.ru;" );
}
}
function dekart_add_preload_hints() {
// резерв для preload hints
}
-add_action('wp_head', 'dekart_add_preload_hints', 1);// Тестовая строка для проверки деплоя 2026-05-06
-// Updated via WordPress admin 2026-05-07
+add_action('wp_head', 'dekart_add_preload_hints', 1);
+
+/* ── Honest timer: end-of-month deadline ── */
+/**
+ * Return end-of-current-month as ISO 8601 string.
+ * Stored in wp_option 'dekart_honest_deadline' so same value
+ * is used by PHP (template) and exposed to JS.
+ */
+function dekart_get_honest_deadline(): string {
+ $cached = get_option( 'dekart_honest_deadline', '' );
+ if ( $cached && (int) $cached > time() ) {
+ return $cached;
+ }
+ return dekart_recalc_honest_deadline();
+}
+
+function dekart_recalc_honest_deadline(): string {
+ $end = new DateTime( 'last day of this month 23:59:59' );
+ $ts = (int) $end->format( 'U' ); // Unix timestamp — безопасен для JSON/JS
+ update_option( 'dekart_honest_deadline', $ts, false );
+ return (string) $ts;
+}
+
+add_action( 'dekart_daily_refresh_deadline', 'dekart_recalc_honest_deadline' );
+if ( ! wp_next_scheduled( 'dekart_daily_refresh_deadline' ) ) {
+ wp_schedule_event( time(), 'daily', 'dekart_daily_refresh_deadline' );
+}
// === ACF JSON Auto-save ===
// Автоматически сохраняет группы полей в JSON при редактировании
diff --git a/wp-content/themes/dekart/header.php b/wp-content/themes/dekart/header.php
index 6243cd0..fbd2e5c 100644
--- a/wp-content/themes/dekart/header.php
+++ b/wp-content/themes/dekart/header.php
@@ -24,7 +24,20 @@
' . "\n";
+ }
+ }
+}
+
+// ─────────────────────────────────────────────────────────────────────
+// PRELOAD LCP: front page
// ─────────────────────────────────────────────────────────────────────
if ( is_front_page() ) {
$post_id = get_the_ID();
@@ -91,8 +104,7 @@ if ( is_front_page() ) {
+ loading="eager">