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() ) { <?php esc_attr_e('Декарт — частная школа в Щелково', 'dekart'); ?> + loading="eager">