diff --git a/wp-content/themes/dekart/assets/css/camp.css b/wp-content/themes/dekart/assets/css/camp.css index 655d4ba..25e0a1a 100644 --- a/wp-content/themes/dekart/assets/css/camp.css +++ b/wp-content/themes/dekart/assets/css/camp.css @@ -2042,221 +2042,6 @@ html { } /* contact END */ -/* ═══════════════════════════════════════════════ - REVIEWS — Yandex-style via lazeweb utilities - ═══════════════════════════════════════════════ */ -.lw-scroll-x { - overflow-x: auto; - -webkit-overflow-scrolling: touch; - padding-bottom: 8px; -} -.lw-scroll-x::-webkit-scrollbar { - height: 6px; -} -.lw-scroll-x::-webkit-scrollbar-thumb { - background: #ccc; - border-radius: 8px; -} - -.lw-grid { - display: grid; -} -.lw-grid--3 { - grid-template-columns: repeat(3, 1fr); -} -.lw-grid--2 { - grid-template-columns: repeat(2, 1fr); -} -.lw-gap-20 { - gap: 20px; -} - -.lw-flex { - display: flex; -} -.lw-flex--row { - flex-direction: row; -} -.lw-flex--col { - flex-direction: column; -} -.lw-gap-12 { - gap: 12px; -} -.lw-gap-8 { - gap: 8px; -} -.lw-items-center { - align-items: center; -} -.lw-justify-between { - justify-content: space-between; -} - -.lw-card { - background: var(--color-bg); - border-radius: var(--card-radius); - padding: 20px; - box-shadow: var(--card-shadow); - display: flex; - flex-direction: column; - transition: box-shadow var(--transition-normal), transform var(--transition-normal); -} -.lw-card:hover { - box-shadow: var(--card-shadow-hover); - transform: translateY(-2px); -} - -.lw-avatar { - border-radius: 50%; - overflow: hidden; - flex-shrink: 0; - background: rgba(59, 178, 160, 0.1); - display: flex; - align-items: center; - justify-content: space-between; -} -.lw-avatar--48 { - width: 48px; - height: 48px; -} -.lw-avatar__img { - width: 100%; - height: 100%; - object-fit: cover; - display: block; -} - -.lw-text-dark { - color: #1c2b2d; -} -.lw-text-gray { - color: #888; -} -.lw-text-sm { - font-size: 14px; - line-height: 1.4; -} -.lw-text-xs { - font-size: 12px; - line-height: 1.3; -} -.lw-font-medium { - font-weight: 500; -} -.lw-font-semibold { - font-weight: 600; -} -.lw-font-bold { - font-weight: 700; -} - -.lw-mt-8 { - margin-top: 8px; -} -.lw-mb-8 { - margin-bottom: 8px; -} -.lw-mb-12 { - margin-bottom: 12px; -} - -.lw-badge { - display: inline-flex; - align-items: center; - padding: 4px 10px; - border-radius: 50px; - font-size: 11px; - font-weight: 600; - line-height: 1.2; - white-space: nowrap; - margin-left: auto; - flex-shrink: 0; -} -.lw-badge--verified { - background: rgba(59, 178, 160, 0.1); - color: var(--color-secondary); -} - -.lw-stars { - display: flex; - gap: 2px; - align-items: center; -} -.lw-star { - color: var(--color-text-light); - flex-shrink: 0; -} -.lw-star--filled { - color: #FFD43E; -} - -.lw-card__text { - font-size: 14px; - line-height: 1.55; - color: var(--color-text-muted); - word-break: break-word; -} - -/* ─── Десктоп: как карточки наставников ─── */ -.camp-reviews .lw-scroll-x { - overflow: visible; - padding: 0; -} -.camp-reviews .lw-grid--3 { - display: flex; - flex-wrap: wrap; - gap: 30px; - justify-content: center; -} -.camp-reviews .lw-grid--3 .lw-card { - width: calc(25% - 23px); - min-width: 280px; - padding: 24px; - border-radius: 20px; - box-shadow: 0 2px 16px rgba(0,0,0,0.06); - transition: transform 0.3s ease, box-shadow 0.3s ease; -} -.camp-reviews .lw-grid--3 .lw-card:hover { - transform: translateY(-4px); - box-shadow: 0 8px 32px rgba(0,0,0,0.1); -} - -@media (max-width: 1200px) { - .camp-reviews .lw-grid--3 .lw-card { - width: calc(50% - 15px); - min-width: 280px; - } -} - -@media (max-width: 768px) { - .camp-reviews .lw-scroll-x { - overflow-x: auto; - -webkit-overflow-scrolling: touch; - padding-bottom: 8px; - } - .camp-reviews .lw-grid--3 { - display: flex; - gap: 16px; - overflow-x: auto; - scroll-snap-type: x mandatory; - flex-wrap: nowrap; - justify-content: flex-start; - padding-bottom: 4px; - } - .camp-reviews .lw-grid--3 .lw-card { - flex: 0 0 300px; - width: auto; - scroll-snap-align: start; - } -} - -@media (max-width: 480px) { - .camp-reviews .lw-grid--3 .lw-card { - flex: 0 0 260px; - } -} - /* reviews END*/ .modal-camp-request-form { diff --git a/wp-content/themes/dekart/assets/css/main.css b/wp-content/themes/dekart/assets/css/main.css index d9d72bb..2bafd70 100644 --- a/wp-content/themes/dekart/assets/css/main.css +++ b/wp-content/themes/dekart/assets/css/main.css @@ -4265,11 +4265,15 @@ footer a:hover, left: 0; width: 100%; height: 100%; - background-color: #000; + background-color: rgba(0,0,0,0.6); + backdrop-filter: blur(4px); + -webkit-backdrop-filter: blur(4px); display: flex; align-items: center; justify-content: center; z-index: 99999; + padding: 20px; + box-sizing: border-box; } .btn-close-slider { @@ -4363,6 +4367,23 @@ footer a:hover, width: 50%; } +.b24-form-placeholder { + display: flex; + flex-direction: column; + align-items: center; + gap: 20px; + padding: 40px 30px; + text-align: center; +} +.b24-form-placeholder__text { + font-family: 'Roboto', sans-serif; + font-size: 18px; + line-height: 1.5; + color: #fff; + max-width: 360px; + margin: 0; +} + .banner-circle { position: absolute; border-radius: 50%; @@ -4506,9 +4527,21 @@ footer a:hover, .form-wrapper { position: relative; + width: 100%; + max-width: 560px; + margin: 0 auto; + background: #fff; + border-radius: 20px; + padding: 40px 32px 32px; + box-shadow: 0 20px 60px rgba(0,0,0,0.3); + max-height: 90vh; + overflow-y: auto; +} +.form-wrapper .b24-form-container { + width: 100%; } .form-wrapper .b24-form { - border-radius: 30px; + border-radius: 12px; overflow: hidden; } @@ -9664,6 +9697,17 @@ footer a:hover, --radius-lg: 16px; --radius-xl: 20px; --radius-pill: 28px; + + /* ── Card component (shared lw-*) ── */ + --color-primary: #E8753A; + --color-bg: #FFFFFF; + --color-text-muted: #5A6B6D; + --color-text-light: #8A9A9D; + --card-radius: 20px; + --card-shadow: 0 2px 16px rgba(0,0,0,0.06); + --card-shadow-hover: 0 8px 32px rgba(0,0,0,0.1); + --transition-fast: 0.2s ease; + --transition-normal: 0.3s ease; } /* ── 2. Bento Grid System ── */ @@ -10248,6 +10292,352 @@ footer a:hover, animation: none; } +/* ══════════════════════════════════════════════════════════════ + Shared Review Card Components (lw-*) + Used by /otzyvy/, /lager/, and all service pages. + Page-specific grid/layout overrides in page CSS files. + ══════════════════════════════════════════════════════════════ */ + +/* ── Layout utilities ── */ +.lw-flex { display: flex; } +.lw-flex--row { flex-direction: row; } +.lw-flex--col { flex-direction: column; } +.lw-flex--wrap { flex-wrap: wrap; } +.lw-items-center { align-items: center; } +.lw-items-start { align-items: flex-start; } +.lw-justify-center { justify-content: center; } +.lw-justify-between { justify-content: space-between; } +.lw-gap-8 { gap: 8px; } +.lw-gap-12 { gap: 12px; } +.lw-gap-20 { gap: 20px; } +.lw-mt-8 { margin-top: 8px; } +.lw-mb-8 { margin-bottom: 8px; } +.lw-mb-12 { margin-bottom: 12px; } + +/* ── Scroll wrapper ── */ +.lw-scroll-x { + overflow-x: auto; + -webkit-overflow-scrolling: touch; + padding-bottom: 8px; +} +.lw-scroll-x::-webkit-scrollbar { height: 6px; } +.lw-scroll-x::-webkit-scrollbar-thumb { background: #ccc; border-radius: 8px; } + +/* ── Grid ── */ +.lw-grid { display: grid; } +.lw-grid--2 { grid-template-columns: repeat(2, 1fr); } +.lw-grid--3 { grid-template-columns: repeat(3, 1fr); } + +/* ── Card ── */ +.lw-card { + background: var(--color-bg); + border-radius: var(--card-radius); + padding: 20px; + box-shadow: var(--card-shadow); + display: flex; + flex-direction: column; + transition: box-shadow var(--transition-normal), transform var(--transition-normal); +} +.lw-card:hover { + box-shadow: var(--card-shadow-hover); + transform: translateY(-2px); +} + +/* ── Avatar ── */ +.lw-avatar { + border-radius: 50%; + overflow: hidden; + flex-shrink: 0; + background: rgba(59, 178, 160, 0.1); + display: flex; + align-items: center; + justify-content: center; +} +.lw-avatar--48 { width: 48px; height: 48px; } +.lw-avatar__img { + width: 100%; height: 100%; + object-fit: cover; + display: block; +} +.lw-avatar--letter { background: rgba(232, 117, 58, 0.08); } +.lw-avatar__letter { + display: block; + font-size: 18px; + font-weight: 700; + color: var(--color-primary); + line-height: 1; + user-select: none; +} + +/* ── Typography ── */ +.lw-text-dark { color: #1c2b2d; } +.lw-text-gray { color: var(--color-text-muted); } +.lw-text-sm { font-size: 14px; line-height: 1.4; } +.lw-text-xs { font-size: 12px; line-height: 1.3; } +.lw-font-medium { font-weight: 500; } +.lw-font-semibold { font-weight: 600; } +.lw-font-bold { font-weight: 700; } + +/* ── Badge ── */ +.lw-badge { + display: inline-flex; + align-items: center; + padding: 4px 10px; + border-radius: 50px; + font-size: 11px; + font-weight: 600; + line-height: 1.2; + white-space: nowrap; + margin-left: auto; + flex-shrink: 0; +} +.lw-badge--verified { + background: #059669; + color: #fff; + border-radius: 50px; + padding: 3px 12px 3px 10px; + font-size: 11px; + font-weight: 600; + line-height: 1.4; + white-space: nowrap; + align-self: flex-start; +} +.lw-card .lw-text-gray + .lw-badge--verified { margin-top: 6px; } + +/* ── Stars ── */ +.lw-stars { display: flex; gap: 2px; align-items: center; } +.lw-star { color: var(--color-text-light); flex-shrink: 0; } +.lw-star--filled { color: #FFD43E; } + +/* ── Card text ── */ +.lw-card__text { + font-size: 14px; + line-height: 1.55; + color: var(--color-text-muted); + word-break: break-word; +} + +/* ── Card footer (date + read-more) ── */ +.review-card__footer { + display: flex; + align-items: center; + gap: 12px; + margin-top: 8px; +} +.review-card__date { + margin-left: auto; + font-size: 13px; + color: var(--color-text-muted); + white-space: nowrap; +} + +/* ── Read-more button ── */ +.review-card__btn-more { + display: inline-block; + padding: 0; + border: none; + background: none; + color: var(--accent); + font-weight: 600; + font-size: 14px; + cursor: pointer; + align-self: flex-start; +} +.review-card__btn-more:hover { + text-decoration: underline; +} + +/* ── Clamped text (long reviews) ── */ +.review-card__text--clamped { + position: relative; + max-height: 120px; + overflow: hidden; + transition: max-height .4s ease; +} +.review-card__text--clamped.review-card__text--expanded { + max-height: 2000px; +} +.review-card__text--clamped:not(.review-card__text--expanded)::after { + content: ''; + position: absolute; + bottom: 0; + left: 0; + right: 0; + height: 40px; + background: linear-gradient(transparent, var(--color-bg)); +} + +/* ── Reveal animation (batch-loaded cards) ── */ +.reveal { + opacity: 0; + transform: translateY(24px); + transition: opacity .6s ease, transform .6s ease; +} +.reveal--visible { + opacity: 1; + transform: translateY(0); +} + +/* ── Teacher link ── */ +.review-card__teacher-link { + color: var(--accent); + text-decoration: underline; + text-underline-offset: 3px; + text-decoration-color: currentColor; + transition: color .2s, font-weight .2s; + font-weight: 500; +} +.review-card__teacher-link:hover { + color: var(--accent-hover); + font-weight: 700; +} + +/* ══════════════════════════════════════════════════════════════ + Shared Reviews Grid / Scroll Layout (.reviews-cards) + Same layout for /otzyvy/, /lager/, /podgotovka-k-shkole/. + ══════════════════════════════════════════════════════════════ */ + +/* ─── Desktop: flex-wrap centered grid ─── */ +.reviews-cards .lw-scroll-x { + overflow: visible; + padding: 0; +} +.reviews-cards .lw-grid--3 { + display: flex; + flex-wrap: wrap; + gap: 24px; + justify-content: center; +} +.reviews-cards .lw-grid--3 .lw-card { + width: calc(33.33% - 16px); + min-width: 280px; + padding: 24px; + border-radius: 20px; + box-shadow: 0 2px 16px rgba(0,0,0,0.06); + border: 1.5px solid rgba(0,0,0,0.12); + transition: transform 0.3s ease, box-shadow 0.3s ease, border-color 0.3s ease, background 0.3s ease; +} +.reviews-cards .lw-grid--3 .lw-card:hover { + transform: translateY(-4px); + box-shadow: 0 8px 32px rgba(0,0,0,0.1); + border-color: rgba(124, 58, 237, 0.15); + background: var(--accent-light); +} + +/* ─── 3 → 2 columns ─── */ +@media (max-width: 1200px) { + .reviews-cards .lw-grid--3 .lw-card { + width: calc(50% - 12px); + min-width: 280px; + } +} + +/* ─── Mobile horizontal scroll ─── */ +@media (max-width: 768px) { + .reviews-cards .lw-scroll-x { + overflow-x: auto; + -webkit-overflow-scrolling: touch; + padding-bottom: 8px; + } + .reviews-cards .lw-grid--3 { + display: flex; + gap: 16px; + overflow-x: auto; + scroll-snap-type: x mandatory; + flex-wrap: nowrap; + justify-content: flex-start; + padding-bottom: 4px; + } + .reviews-cards .lw-grid--3 .lw-card { + flex: 0 0 88vw; + scroll-snap-align: start; + position: relative; + } + .reviews-cards .lw-card > .lw-flex.lw-flex--row { + flex-wrap: wrap; + gap: 8px 12px; + align-items: flex-start; + } + .reviews-cards .lw-card .lw-avatar { + flex-shrink: 0; + } + .reviews-cards .lw-card > .lw-flex.lw-flex--row > .lw-flex.lw-flex--col { + flex: 1; + min-width: 0; + padding-right: 90px; + } + .reviews-cards .lw-card .lw-badge--verified { + margin-top: 6px; + margin-left: 0; + } + .reviews-cards .lw-card .lw-stars { + position: absolute; + top: 24px; + right: 24px; + margin-top: 0; + } +} + +@media (max-width: 480px) { + .reviews-cards .lw-grid--3 .lw-card { + padding: 16px; + } + .reviews-cards .lw-card .lw-stars { + top: 16px; + right: 16px; + } +} + +/* ─── Batch loading: hide cards after first batch on desktop ─── */ +@media (min-width: 769px) { + .lw-card[data-batch]:not([data-batch="1"]) { + display: none; + } +} +/* ─── Mobile: all cards visible (horizontal scroll shows all) ─── */ +@media (max-width: 768px) { + .lw-card[data-batch]:not([data-batch="1"]) { + display: flex; + } +} + +/* ─── Load more button ─── */ +.reviews-loadmore { + text-align: center; + margin-top: 32px; +} +.reviews-loadmore__btn { + display: inline-flex; + align-items: center; + gap: 8px; + padding: 14px 36px; + font-size: 16px; + font-weight: 600; + color: var(--accent); + background: var(--accent-light); + border: 2px solid var(--accent); + border-radius: 12px; + cursor: pointer; + transition: background var(--transition-fast), transform var(--transition-fast); +} +.reviews-loadmore__btn:hover { + background: rgba(124, 58, 237, 0.15); + transform: translateY(-2px); +} +.reviews-loadmore__btn:active { + transform: translateY(0); +} +.reviews-loadmore__btn:disabled { + opacity: 0.5; + cursor: default; + transform: none; +} +@media (max-width: 768px) { + .reviews-loadmore { + display: none; + } +} + /* ── Reduced Motion ── */ @media (prefers-reduced-motion: reduce) { .bento-card { @@ -10257,8 +10647,18 @@ footer a:hover, transition: none; } .btn-primary, - .btn-secondary { + .btn-secondary, + .lw-card, + .lw-card:hover { transition: none; + transform: none; + } + .reveal, + .reveal--visible { + transition: none !important; + transform: none !important; + animation: none !important; + opacity: 1 !important; } } 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 8db736d..0f1e973 100644 --- a/wp-content/themes/dekart/assets/css/podgotovka-k-shkole.css +++ b/wp-content/themes/dekart/assets/css/podgotovka-k-shkole.css @@ -745,16 +745,88 @@ background: rgba(124, 58, 237, 0.2); } /* ============================================================ - 14. OVERRIDE: fix CTA gap 640–860px - Sticky CTA appears at 860px to match when banner CTA hides - ============================================================ */ + 14. MOBILE STICKY CTA — only shown on mobile (< 861px) + ============================================================ */ +.sticky-cta-mobile { + display: none; + position: fixed; + bottom: 0; + left: 0; + right: 0; + z-index: 999; + background: rgba(255,255,255,0.97); + backdrop-filter: blur(12px); + -webkit-backdrop-filter: blur(12px); + border-top: 1px solid #E2E8F0; + padding: 12px 16px; + box-shadow: 0 -4px 20px rgba(0,0,0,0.08); + animation: stickyFadeIn 0.3s ease; +} + +.sticky-cta-mobile__inner { + display: flex; + align-items: center; + justify-content: space-between; + gap: 12px; + max-width: 500px; + margin: 0 auto; +} + +.sticky-cta-mobile__text { + font-size: 0.9375rem; + color: #0F172A; + font-weight: 500; + line-height: 1.3; +} + +.sticky-cta-mobile__text strong { + color: #7C3AED; +} + +.sticky-cta-mobile__btn { + flex-shrink: 0; + padding: 12px 24px; + font-size: 0.9375rem; + font-weight: 700; + border: none; + border-radius: 32px; + background: linear-gradient(135deg, #7C3AED, #8B5CF6); + color: #fff; + cursor: pointer; + font-family: 'Roboto', sans-serif; + transition: opacity 0.15s, transform 0.15s; + white-space: nowrap; + min-height: 48px; +} + +.sticky-cta-mobile__btn:hover { + opacity: 0.95; + transform: translateY(-1px); +} + @media (max-width: 860px) { - .sticky-cta-mobile { - display: block; - } - body { - padding-bottom: 80px; - } + .sticky-cta-mobile { + display: block; + } + body { + padding-bottom: 76px !important; + } +} + +@media (max-width: 380px) { + .sticky-cta-mobile__text { + font-size: 0.8125rem; + } + .sticky-cta-mobile__btn { + padding: 10px 18px; + font-size: 0.875rem; + } +} + +@media (min-width: 861px) { + .sticky-cta-mobile { + display: none !important; + } } /* ============================================================ @@ -779,17 +851,20 @@ background: rgba(124, 58, 237, 0.2); 19. OVERRIDE: Header btn-lilac — use accent Legacy header button should match brand ============================================================ */ +.page-pksh button.btn-lilac, +.page-pksh a.btn-lilac, .page-pksh .btn-lilac { - background: linear-gradient(135deg, var(--accent, #7C3AED), var(--accent-500, #8B5CF6)) !important; - font-family: 'Roboto', sans-serif !important; - font-weight: 700 !important; - text-transform: none !important; - border-radius: var(--radius-pill, 28px) !important; - border: none !important; + background: linear-gradient(135deg, var(--accent, #7C3AED), var(--accent-500, #8B5CF6)); + font-family: 'Roboto', sans-serif; + font-weight: 700; + text-transform: none; + border-radius: var(--radius-pill, 28px); + border: none; } -.page-pksh .btn-lilac:hover { - background: linear-gradient(135deg, var(--accent-hover, #6D28D9), var(--accent-700, #5B21B6)) !important; +.page-pksh .btn-lilac:hover, +.page-pksh .btn-lilac:focus { + background: linear-gradient(135deg, var(--accent-hover, #6D28D9), var(--accent-700, #5B21B6)); } /* ============================================================ @@ -2312,244 +2387,10 @@ background: rgba(124, 58, 237, 0.2); margin: 0 auto; } -/* ── Layout utilities (scoped) ── */ -.page-pksh .pksh-reviews .lw-scroll-x { - overflow-x: auto; - -webkit-overflow-scrolling: touch; - padding-bottom: 8px; -} -.page-pksh .pksh-reviews .lw-scroll-x::-webkit-scrollbar { - height: 6px; -} -.page-pksh .pksh-reviews .lw-scroll-x::-webkit-scrollbar-thumb { - background: #ccc; - border-radius: 8px; -} - -.page-pksh .pksh-reviews .lw-grid { - display: grid; -} -.page-pksh .pksh-reviews .lw-grid--3 { - grid-template-columns: repeat(3, 1fr); -} -.page-pksh .pksh-reviews .lw-gap-20 { - gap: 20px; -} - -.page-pksh .pksh-reviews .lw-flex { - display: flex; -} -.page-pksh .pksh-reviews .lw-flex--row { - flex-direction: row; -} -.page-pksh .pksh-reviews .lw-flex--col { - flex-direction: column; -} -.page-pksh .pksh-reviews .lw-gap-12 { - gap: 12px; -} -.page-pksh .pksh-reviews .lw-items-center { - align-items: center; -} - -/* ── Card ── */ -.page-pksh .pksh-reviews .lw-card { - background: #FFFFFF; - border-radius: 20px; - padding: 20px; - display: flex; - flex-direction: column; - transition: box-shadow 0.3s ease, transform 0.3s ease; -} - -/* ── Avatar ── */ -.page-pksh .pksh-reviews .lw-avatar { - border-radius: 50%; - overflow: hidden; - flex-shrink: 0; - background: rgba(124, 58, 237, 0.08); - display: flex; - align-items: center; - justify-content: center; -} -.page-pksh .pksh-reviews .lw-avatar--48 { - width: 48px; - height: 48px; -} -.page-pksh .pksh-reviews .lw-avatar__img { - width: 100%; - height: 100%; - object-fit: cover; - display: block; -} - -/* ── Typography ── */ -.page-pksh .pksh-reviews .lw-text-dark { - color: #1c2b2d; -} -.page-pksh .pksh-reviews .lw-font-semibold { - font-weight: 600; -} - -/* ── Spacing ── */ -.page-pksh .pksh-reviews .lw-mt-8 { - margin-top: 8px; -} - -/* ── Badge ── */ -.page-pksh .pksh-reviews .lw-badge { - display: inline-flex; - align-items: center; - padding: 4px 10px; - border-radius: 50px; - font-size: 11px; - font-weight: 600; - line-height: 1.2; - white-space: nowrap; - margin-left: auto; - flex-shrink: 0; -} -.page-pksh .pksh-reviews .lw-badge--verified { - background: rgba(124, 58, 237, 0.08); - color: #7C3AED; -} - -/* ── Stars ── */ -.page-pksh .pksh-reviews .lw-stars { - display: flex; - gap: 2px; - align-items: center; -} -.page-pksh .pksh-reviews .lw-star { - color: #D1D5DB; - flex-shrink: 0; -} -.page-pksh .pksh-reviews .lw-star--filled { - color: #FFD43E; -} - -/* ── Card text ── */ -.page-pksh .pksh-reviews .lw-card__text { - font-size: 14px; - line-height: 1.55; - color: #475569; - word-break: break-word; -} - -/* ── Desktop: flex-wrap centered grid ── */ -.page-pksh .pksh-reviews .lw-scroll-x { - overflow: visible; - padding: 0; -} -.page-pksh .pksh-reviews .lw-grid--3 { - display: flex; - flex-wrap: wrap; - gap: 30px; - justify-content: center; -} -.page-pksh .pksh-reviews .lw-grid--3 .lw-card { - width: calc(25% - 23px); - min-width: 280px; - padding: 24px; - box-shadow: 0 2px 16px rgba(0,0,0,0.06); -} -.page-pksh .pksh-reviews .lw-grid--3 .lw-card:hover { - box-shadow: 0 8px 32px rgba(0,0,0,0.1); - transform: translateY(-4px); -} - -@media (max-width: 1200px) { - .page-pksh .pksh-reviews .lw-grid--3 .lw-card { - width: calc(50% - 15px); - min-width: 280px; - } -} - @media (max-width: 768px) { .page-pksh .pksh-reviews { padding: 40px 0; } - .page-pksh .pksh-reviews .lw-scroll-x { - overflow-x: auto; - -webkit-overflow-scrolling: touch; - padding: 0 0 8px 16px; - margin: 0; - } - .page-pksh .pksh-reviews .lw-grid--3 { - display: flex; - gap: 12px; - overflow-x: auto; - scroll-snap-type: x mandatory; - flex-wrap: nowrap; - justify-content: flex-start; - padding: 0 0 4px 0; - margin: 0; - -webkit-overflow-scrolling: touch; - } - .page-pksh .pksh-reviews .lw-grid--3 .lw-card { - flex: 0 0 280px; - width: auto; - min-width: 0; - scroll-snap-align: start; - } - /* Mobile: all cards visible regardless of pagination state */ - .page-pksh .pksh-reviews .lw-card { - display: flex !important; - } - .page-pksh .pksh-reviews__actions { - display: none !important; - } -} - -@media (max-width: 480px) { - .page-pksh .pksh-reviews .lw-grid--3 .lw-card { - flex: 0 0 250px; - } -} - -/* ============================================================ - 43. REVIEWS — pagination / load more - ============================================================ */ -/* Default collapsed: show 2 rows per breakpoint */ -.page-pksh .pksh-reviews [data-pksh-collapsed] .lw-card:nth-child(n+9) { - display: none; -} -@media (max-width: 1200px) { - .page-pksh .pksh-reviews [data-pksh-collapsed] .lw-card:nth-child(n+5) { - display: none; - } -} -/* Expanded: override nth-child, show all */ -.page-pksh .pksh-reviews [data-pksh-expanded] .lw-card { - display: flex; -} -.page-pksh .pksh-reviews__actions { - display: flex; - justify-content: center; - margin-top: 32px; -} -.page-pksh .pksh-reviews__toggle { - display: inline-flex; - align-items: center; - gap: 8px; - padding: 12px 32px; - font-size: 15px; - font-weight: 600; - font-family: inherit; - color: #7C3AED; - background: rgba(124, 58, 237, 0.08); - border: 1.5px solid rgba(124, 58, 237, 0.2); - border-radius: 100px; - cursor: pointer; - transition: background 0.2s, border-color 0.2s, transform 0.15s; -} -.page-pksh .pksh-reviews__toggle:hover { - background: rgba(124, 58, 237, 0.15); - border-color: rgba(124, 58, 237, 0.35); - transform: translateY(-1px); -} -.page-pksh .pksh-reviews__toggle:active { - transform: translateY(0); } /* ============================================================ @@ -2986,3 +2827,350 @@ background: rgba(124, 58, 237, 0.2); radial-gradient(ellipse at 50% 0%, rgba(124, 58, 237, 0.025) 0%, transparent 60%); } } + +/* ============================================================ + 50. TRUST AUTHORITY — Why Trust Us block + ============================================================ */ +.trust-authority { + max-width: 1000px; + margin: 0 auto; + text-align: center; +} + +.trust-authority__grid { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 24px; + margin-top: 32px; +} + +.trust-authority__item { + background: #fff; + border-radius: 20px; + padding: 32px 24px; + text-align: center; + box-shadow: 0 4px 20px rgba(0,0,0,0.05); + transition: transform 0.3s ease, box-shadow 0.3s ease; +} + +.trust-authority__item:hover { + transform: translateY(-4px); + box-shadow: 0 12px 36px rgba(0,0,0,0.10); +} + +.trust-authority__icon { + font-size: 2.5rem; + display: block; + margin-bottom: 16px; +} + +.trust-authority__title { + display: block; + font-size: 1.125rem; + font-weight: 700; + color: #0F172A; + margin-bottom: 8px; +} + +.trust-authority__text { + font-size: 0.9375rem; + color: #475569; + line-height: 1.55; + margin: 0; +} + +@media (max-width: 768px) { + .trust-authority__grid { + grid-template-columns: 1fr; + gap: 16px; + } + .trust-authority__item { + padding: 24px 20px; + } +} + +/* ============================================================ + 51. EXTERNAL REVIEWS — Cross-links + ============================================================ */ +.external-reviews { + max-width: 1000px; + margin: 0 auto; + text-align: center; +} + +.external-reviews__grid { + display: grid; + grid-template-columns: repeat(4, 1fr); + gap: 20px; + margin-top: 32px; +} + +.external-reviews__card { + display: flex; + flex-direction: column; + align-items: center; + gap: 8px; + padding: 24px 16px; + background: #fff; + border-radius: 16px; + text-decoration: none; + box-shadow: 0 2px 12px rgba(0,0,0,0.05); + transition: transform 0.25s ease, box-shadow 0.25s ease; +} + +.external-reviews__card:hover { + transform: translateY(-3px); + box-shadow: 0 8px 24px rgba(0,0,0,0.10); +} + +.external-reviews__icon { + font-size: 1.5rem; + font-weight: 800; + color: #7C3AED; + width: 48px; + height: 48px; + display: flex; + align-items: center; + justify-content: center; + background: rgba(124,58,237,0.08); + border-radius: 12px; +} + +.external-reviews__name { + font-size: 0.9375rem; + font-weight: 600; + color: #0F172A; +} + +.external-reviews__rating { + font-size: 0.875rem; + color: #475569; +} + +@media (max-width: 768px) { + .external-reviews__grid { + grid-template-columns: repeat(2, 1fr); + gap: 12px; + } +} + +/* ============================================================ + 52. FINAL CTA — Countdown timer + ============================================================ */ +.final-cta__timer { + margin: 20px auto 24px; + text-align: center; +} + +.final-cta__timer-label { + display: block; + font-size: 0.875rem; + font-weight: 600; + color: #7C3AED; + margin-bottom: 12px; + text-transform: uppercase; + letter-spacing: 0.05em; +} + +.final-cta__timer-digits { + display: flex; + align-items: center; + justify-content: center; + gap: 8px; +} + +.final-cta__timer-unit { + display: flex; + flex-direction: column; + align-items: center; + gap: 4px; +} + +.final-cta__timer-num { + font-size: 2.5rem; + font-weight: 800; + color: #0F172A; + line-height: 1; + font-family: 'Oswald', sans-serif; + min-width: 60px; + text-align: center; + background: #F8FAFC; + padding: 8px 12px; + border-radius: 12px; + border: 1px solid #E2E8F0; +} + +.final-cta__timer-text { + font-size: 0.75rem; + color: #94A3B8; + text-transform: uppercase; + letter-spacing: 0.05em; +} + +.final-cta__timer-sep { + font-size: 2rem; + font-weight: 700; + color: #7C3AED; + margin-top: -20px; +} + +@media (max-width: 480px) { + .final-cta__timer-num { + font-size: 1.75rem; + min-width: 44px; + padding: 6px 8px; + } + .final-cta__timer-sep { + font-size: 1.5rem; + } +} + +/* ============================================================ + 53. MICRO-COMMIT — Inline form + ============================================================ */ +.micro-commit__form { + display: flex; + flex-direction: column; + gap: 10px; + margin-top: 12px; +} + +.micro-commit__input { + padding: 14px 18px; + font-size: 1rem; + border: 1.5px solid #DED3C0; + border-radius: 12px; + font-family: inherit; + background: #fff; + transition: border-color 0.2s; + width: 100%; + max-width: 360px; + box-sizing: border-box; +} + +.micro-commit__input:focus { + outline: none; + border-color: #7C3AED; + box-shadow: 0 0 0 3px rgba(124,58,237,0.1); +} + +.micro-commit__form .micro-commit__btn { + margin-top: 4px; +} + +@media (max-width: 639px) { + .micro-commit__input { + max-width: 100%; + } +} + +/* ============================================================ + 54. CONTAINER QUERIES — Card components adapt to container + Support: Chrome 111+, Safari 17+, Firefox 124+ + ============================================================ */ + +/* ── 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; + container-name: trust-grid; +} + +@container trust-grid (max-width: 350px) { + .trust-authority__item { + padding: 20px 16px; + } +} + +/* ============================================================ + 55. REDUCED MOTION — Comprehensive preferences + ============================================================ */ +@media (prefers-reduced-motion: reduce) { + /* Hero animations */ + .hero-pksh__blob, + .hero-pksh__sparkle, + .hero-pksh__float, + .hero-pksh__deco, + .hero-pksh__photo-frame, + .hero-pksh__photo-ring, + .hero-pksh__scarcity, + .hero-pksh__cta { + animation: none !important; + transition: none !important; + } + + /* Card hover effects */ + .program-card, + .program-card__btn, + .social-counter, + .trust-authority__item, + .external-reviews__card, + .lw-card { + transition: none !important; + transform: none !important; + } + + .program-card:hover, + .social-counter:hover, + .trust-authority__item:hover, + .external-reviews__card:hover, + .lw-card:hover { + transform: none !important; + } + + /* Sticky elements fade */ + .sticky-cta-desktop, + .sticky-cta-mobile { + animation: none !important; + } + + /* Scarcity pulse */ + .pksh-fomo__dot, + .banner__scarcity { + animation: none !important; + } + + /* Hero CTA glow */ + .hero-pksh__cta { + animation: none !important; + } + + /* Ensure elements that depend on scroll-driven animations are static */ + *, + *::before, + *::after { + animation-duration: 0.01ms !important; + animation-iteration-count: 1 !important; + scroll-behavior: auto !important; + } +} + +/* ============================================================ + 56. IMPROVED SCROLLBAR STYLING — System-wide + ============================================================ */ +@media (prefers-reduced-motion: no-preference) { + html { + scroll-behavior: smooth; + } +} diff --git a/wp-content/themes/dekart/assets/css/reviews-page.css b/wp-content/themes/dekart/assets/css/reviews-page.css index bbc2057..cf915b5 100644 --- a/wp-content/themes/dekart/assets/css/reviews-page.css +++ b/wp-content/themes/dekart/assets/css/reviews-page.css @@ -469,253 +469,6 @@ padding: 8px 0 0; } } -/* ─── LW-утилиты (как на странице лагеря) ─── */ -.lw-grid { - display: grid; -} -.lw-grid--3 { - grid-template-columns: repeat(3, 1fr); -} -.lw-gap-20 { - gap: 20px; -} -.lw-flex { - display: flex; -} -.lw-flex--row { - flex-direction: row; -} -.lw-flex--col { - flex-direction: column; -} -.lw-gap-12 { - gap: 12px; -} -.lw-gap-8 { - gap: 8px; -} -.lw-items-center { - align-items: center; -} -.lw-justify-between { - justify-content: space-between; -} - -.lw-card { - background: var(--color-bg); - border-radius: var(--card-radius); - padding: 20px; - box-shadow: var(--card-shadow); - display: flex; - flex-direction: column; - transition: box-shadow var(--transition-normal), transform var(--transition-normal); -} -.lw-card:hover { - box-shadow: var(--card-shadow-hover); - transform: translateY(-2px); -} - -.lw-avatar { - border-radius: 50%; - overflow: hidden; - flex-shrink: 0; - background: rgba(59, 178, 160, 0.1); - display: flex; - align-items: center; - justify-content: center; -} -.lw-avatar--48 { - width: 48px; - height: 48px; -} -.lw-avatar__img { - width: 100%; - height: 100%; - object-fit: cover; - display: block; -} -.lw-avatar--letter { - background: rgba(232, 117, 58, 0.08); /* --color-primary 8% */ -} -.lw-avatar__letter { - display: block; - font-size: 18px; - font-weight: 700; - color: var(--color-primary); - line-height: 1; - user-select: none; -} - -.lw-text-dark { - color: #1c2b2d; -} -.lw-text-gray { - color: var(--color-text-muted); -} -.lw-text-sm { - font-size: 14px; - line-height: 1.4; -} -.lw-text-xs { - font-size: 12px; - line-height: 1.3; -} -.lw-font-medium { - font-weight: 500; -} -.lw-font-semibold { - font-weight: 600; -} -.lw-font-bold { - font-weight: 700; -} - -.lw-mt-8 { - margin-top: 8px; -} -.lw-mb-8 { - margin-bottom: 8px; -} -.lw-mb-12 { - margin-bottom: 12px; -} - -.lw-badge { - display: inline-flex; - align-items: center; - padding: 4px 10px; - border-radius: 50px; - font-size: 11px; - font-weight: 600; - line-height: 1.2; - white-space: nowrap; - margin-left: auto; - flex-shrink: 0; -} -.lw-badge--verified { - background: #059669; - color: #fff; - border-radius: 50px; - padding: 3px 12px 3px 10px; - font-size: 11px; - font-weight: 600; - line-height: 1.4; - white-space: nowrap; - align-self: flex-start; -} -.lw-card .lw-text-gray + .lw-badge--verified { - margin-top: 6px; -} - -.lw-stars { - display: flex; - gap: 2px; - align-items: center; -} -.lw-star { - color: var(--color-text-light); - flex-shrink: 0; -} -.lw-star--filled { - color: #FFD43E; -} - -.lw-card__text { - font-size: 14px; - line-height: 1.55; - color: var(--color-text-muted); - word-break: break-word; -} - -/* ─── Сетка отзывов (как на странице лагеря) ─── */ -.reviews-cards .lw-scroll-x { - overflow: visible; - padding: 0; -} -.reviews-cards .lw-grid--3 { - display: flex; - flex-wrap: wrap; - gap: 24px; - justify-content: center; -} -.reviews-cards .lw-grid--3 .lw-card { - width: calc(33.33% - 16px); - min-width: 280px; - padding: 24px; - border-radius: 20px; - box-shadow: 0 2px 16px rgba(0,0,0,0.06); - border: 1.5px solid rgba(0,0,0,0.12); - transition: transform 0.3s ease, box-shadow 0.3s ease, border-color 0.3s ease, background 0.3s ease; -} -.reviews-cards .lw-grid--3 .lw-card:hover { - transform: translateY(-4px); - box-shadow: 0 8px 32px rgba(0,0,0,0.1); - border-color: rgba(124, 58, 237, 0.15); - background: var(--accent-light); -} - -/* ─── Clamp текста для длинных отзывов ─── */ -.review-card__text--clamped { - position: relative; - max-height: 120px; - overflow: hidden; - transition: max-height .4s ease; -} -.review-card__text--clamped.review-card__text--expanded { - max-height: 2000px; -} -.review-card__text--clamped:not(.review-card__text--expanded)::after { - content: ''; - position: absolute; - bottom: 0; - left: 0; - right: 0; - height: 40px; - background: linear-gradient(transparent, var(--color-bg)); -} -.review-card__btn-more { - display: inline-block; - padding: 0; - border: none; - background: none; - color: var(--accent); - font-weight: 600; - font-size: 14px; - cursor: pointer; - align-self: flex-start; -} -.review-card__btn-more:hover { - text-decoration: underline; -} - -/* ─── ФУТЕР КАРТОЧКИ: дата + "Читать ещё" ─── */ -.review-card__footer { - display: flex; - align-items: center; - gap: 12px; - margin-top: 8px; -} -.review-card__date { - margin-left: auto; - font-size: 13px; - color: var(--color-text-muted); - white-space: nowrap; -} - -/* ─── Ссылка на преподавателя в карточке отзыва ─── */ -.review-card__teacher-link { - color: var(--accent); - text-decoration: underline; - text-underline-offset: 3px; - text-decoration-color: currentColor; - transition: color .2s, font-weight .2s; - font-weight: 500; -} -.review-card__teacher-link:hover { - color: var(--accent-hover); - font-weight: 700; -} - /* ─── РЕЗУЛЬТАТЫ (блок с цифрами) ─── */ .results { padding: 40px 0; @@ -1317,26 +1070,10 @@ } /* ─── АНИМАЦИЯ ПОЯВЛЕНИЯ ─── */ -.reveal { - opacity: 0; - transform: translateY(24px); - transition: opacity .6s ease, transform .6s ease; -} -.reveal--visible { - opacity: 1; - transform: translateY(0); -} +/* .reveal moved to main.css */ /* ─── АДАПТИВНОСТЬ ─── */ -/* Сетка отзывов: 3 → 2 колонки */ -@media (max-width: 1200px) { - .reviews-cards .lw-grid--3 .lw-card { - width: calc(50% - 12px); - min-width: 280px; - } -} - @media (max-width: 860px) { .reviews-hero { padding: 40px 0; @@ -1431,68 +1168,6 @@ width: 100%; justify-content: center; } - - /* ─── Карточка: position для absolute звёзд ─── */ - .reviews-cards .lw-grid--3 .lw-card { - position: relative; - } - - /* ─── Шапка: wrap чтобы бейдж уходил на новую строку ─── */ - .reviews-cards .lw-card > .lw-flex.lw-flex--row { - flex-wrap: wrap; - gap: 8px 12px; - align-items: flex-start; - } - - /* Аватар не сжимается */ - .reviews-cards .lw-card .lw-avatar { - flex-shrink: 0; - } - - /* Колонка имени: занимает остаток, не даём тексту залезть под звёзды */ - .reviews-cards .lw-card > .lw-flex.lw-flex--row > .lw-flex.lw-flex--col { - flex: 1; - min-width: 0; - padding-right: 90px; - } - - /* Преподаватель и ФИО — на разных строках */ - .reviews-cards .lw-card .review-card__teacher-link { - display: block; - } - - /* ─── Бейдж в колонке имени ─── */ - .reviews-cards .lw-card .lw-badge--verified { - margin-top: 6px; - margin-left: 0; - } - - /* ─── Звёзды: абсолютно в правый верхний угол карточки ─── */ - .reviews-cards .lw-card .lw-stars { - position: absolute; - top: 24px; - right: 24px; - margin-top: 0; - } - - .reviews-cards .lw-scroll-x { - overflow-x: auto; - -webkit-overflow-scrolling: touch; - padding-bottom: 8px; - } - .reviews-cards .lw-grid--3 { - display: flex; - gap: 16px; - overflow-x: auto; - scroll-snap-type: x mandatory; - flex-wrap: nowrap; - justify-content: flex-start; - padding-bottom: 4px; - } - .reviews-cards .lw-grid--3 .lw-card { - flex: 0 0 88vw; - scroll-snap-align: start; - } } @media (max-width: 480px) { @@ -1511,14 +1186,6 @@ .reviews-intro__card-text { font-size: 14px; } - .reviews-cards .lw-grid--3 .lw-card { - padding: 16px; - } - /* Звёзды: подстраиваем под меньший padding карточки */ - .reviews-cards .lw-card .lw-stars { - top: 16px; - right: 16px; - } .cross-links__grid { grid-template-columns: 1fr; } @@ -1632,57 +1299,6 @@ padding-bottom: 0; } -/* ─── DESKTOP: скрываем карточки после первого батча ─── */ -@media (min-width: 769px) { - .lw-card[data-batch]:not([data-batch="1"]) { - display: none; - } -} - -/* ─── MOBILE: все карточки видны в скролле ─── */ -@media (max-width: 768px) { - .lw-card[data-batch]:not([data-batch="1"]) { - display: flex; - } -} - -/* ─── КНОПКА "ПОКАЗАТЬ ЕЩЁ" ─── */ -.reviews-loadmore { - text-align: center; - margin-top: 32px; -} -.reviews-loadmore__btn { - display: inline-flex; - align-items: center; - gap: 8px; - padding: 14px 36px; - font-size: 16px; - font-weight: 600; - color: var(--accent); - background: var(--accent-light); - border: 2px solid var(--accent); - border-radius: 12px; - cursor: pointer; - transition: background var(--transition-fast), transform var(--transition-fast); -} -.reviews-loadmore__btn:hover { - background: rgba(124, 58, 237, 0.15); - transform: translateY(-2px); -} -.reviews-loadmore__btn:active { - transform: translateY(0); -} -.reviews-loadmore__btn:disabled { - opacity: 0.5; - cursor: default; - transform: none; -} -@media (max-width: 768px) { - .reviews-loadmore { - display: none; - } -} - /* ─── ВНЕШНИЕ ПЛОЩАДКИ (E-E-A-T) ─── */ .reviews-ext-platforms { padding: 40px 0; @@ -2145,9 +1761,6 @@ word-break: break-word; hyphens: auto; } - .reviews-cards .lw-grid--3 { - grid-template-columns: 1fr; - } .results__card { flex: 0 0 50%; max-width: 50%; diff --git a/wp-content/themes/dekart/assets/js/add.js b/wp-content/themes/dekart/assets/js/add.js index b5336f0..a990b21 100644 --- a/wp-content/themes/dekart/assets/js/add.js +++ b/wp-content/themes/dekart/assets/js/add.js @@ -1,11 +1,16 @@ -const btnOpenMenu = document.querySelector('.burger-btn'); -const headerMenu = document.querySelector('.bottom-header-row'); - -btnOpenMenu.addEventListener('click', ()=> { - document.querySelector('html').style = "overflow: hidden;" - headerMenu.classList.add('open'); - btnOpenMenu.style="opacity: 0;"; -}); +try { + var btnOpenMenu = document.querySelector('.burger-btn'); + var headerMenu = document.querySelector('.bottom-header-row'); + if (btnOpenMenu && headerMenu) { + btnOpenMenu.addEventListener('click', function() { + document.querySelector('html').style = "overflow: hidden;"; + headerMenu.classList.add('open'); + btnOpenMenu.style="opacity: 0;"; + }); + } +} catch(e) { + if (window.console) console.warn('add.js: burger-menu error', e); +} const boxes = Array.from(document.querySelectorAll(".box__accordion")); boxes.forEach((box) => { @@ -50,7 +55,9 @@ document.addEventListener("click", function (event) { document.querySelector('html').style = ""; return; } - if (target.classList.contains("btn-write")) { + if (target.classList.contains("btn-write") || target.closest('.btn-write-camp')) { + var campBtn = target.closest('.btn-write-camp'); + if (campBtn && campBtn.tagName === 'A') event.preventDefault(); modalRequestForm.style=""; document.querySelector('html').style = "overflow: hidden;"; // Динамическая загрузка Bitrix24 (иначе не инициализируется в скрытом контейнере) @@ -124,124 +131,40 @@ document.addEventListener("click", function (event) { }); })(jQuery);*/ -let swiperPopularSubjects = new Swiper(".swiper-popular-subjects", { - spaceBetween: 10, - slidesPerView: 1, - speed: 400, - preventInteractionOnTransition: true, // запрет смены слайдов - keyboard: true, - breakpoints: { - 680: { - slidesPerView: 2, - speed: 400, - }, - 860: { - slidesPerView: 3, - speed: 400, - } - }, - navigation: { - nextEl: ".subject-next", - prevEl: ".subject-prev", - } -}); - -let swiperFoto = new Swiper(".swiper-foto", { - spaceBetween: 10, - slidesPerView: 1, - speed: 400, - preventInteractionOnTransition: true, // запрет смены слайдов - keyboard: true, - navigation: { - nextEl: ".foto-next", - prevEl: ".foto-prev", - }, - pagination: { - el: ".swiper-pagination", - clickable: true, - }, -}); - -let swiperNews = new Swiper(".swiper-news", { - spaceBetween: 10, - slidesPerView: 1, - speed: 400, - preventInteractionOnTransition: true, // запрет смены слайдов - keyboard: true, - breakpoints: { - 680: { - slidesPerView: 2, - speed: 400, - }, - 860: { - slidesPerView: 3, - speed: 400, - } - }, - navigation: { - nextEl: ".news-next", - prevEl: ".news-prev", - } -}); - -let swiperCertificates = new Swiper(".certificates-owl", { - spaceBetween: 10, - slidesPerView: 1, - speed: 400, - loop: true, - preventInteractionOnTransition: true, // запрет смены слайдов - keyboard: true, - navigation: { - nextEl: ".certificates-owl-next", - prevEl: ".certificates-owl-prev", - } -}); - -let swiperReviews = new Swiper(".reviews-owl", { - spaceBetween: 40, - speed: 400, - slidesPerView: 1, - /*slidesPerGroup: 2, - centeredSlidesBounds: true, - freeMode: true, - followFinger: true, - loop: false,*/ - //preventInteractionOnTransition: true, // запрет смены слайдов - keyboard: true, - breakpoints: { - 860: { - slidesPerView: 2, - speed: 400, - } - }, - navigation: { - nextEl: ".reviews-owl-next", - prevEl: ".reviews-owl-prev", - } -}); - -let swiperTeachers = new Swiper(".teachers-owl", { - spaceBetween: 30, - speed: 400, - slidesPerView: 1, - keyboard: true, - breakpoints: { - 540: { - slidesPerView: 2, - }, - 860: { - slidesPerView: 4, +try { + var swiperPopularSubjects = new Swiper(".swiper-popular-subjects", { + spaceBetween: 10, + slidesPerView: 1, + speed: 400, + preventInteractionOnTransition: true, + keyboard: true, + breakpoints: { + 680: { slidesPerView: 2, speed: 400 }, + 860: { slidesPerView: 3, speed: 400 } }, - 992: { - slidesPerView: 4, - spaceBetween: 36, - }, - }, - navigation: { - nextEl: ".teachers-owl-next", - prevEl: ".teachers-owl-prev", - } -}); + navigation: { nextEl: ".subject-next", prevEl: ".subject-prev" } + }); +} catch(e) { /* skip — swiper not on this page */ } + +try { + var swiperFoto = new Swiper(".swiper-foto", { + spaceBetween: 10, + slidesPerView: 1, + speed: 400, + preventInteractionOnTransition: true, + keyboard: true, + navigation: { nextEl: ".foto-next", prevEl: ".foto-prev" }, + pagination: { el: ".swiper-pagination", clickable: true } + }); +} catch(e) { /* skip — swiper not on this page */ } + +try { var swiperNews = new Swiper(".swiper-news", { spaceBetween: 10, slidesPerView: 1, speed: 400, preventInteractionOnTransition: true, keyboard: true, breakpoints: { 680: { slidesPerView: 2, speed: 400 }, 860: { slidesPerView: 3, speed: 400 } }, navigation: { nextEl: ".news-next", prevEl: ".news-prev" } }); } catch(e) { /* skip */ } + +try { var swiperCertificates = new Swiper(".certificates-owl", { spaceBetween: 10, slidesPerView: 1, speed: 400, loop: true, preventInteractionOnTransition: true, keyboard: true, navigation: { nextEl: ".certificates-owl-next", prevEl: ".certificates-owl-prev" } }); } catch(e) { /* skip */ } + +try { var swiperReviews = new Swiper(".reviews-owl", { spaceBetween: 40, speed: 400, slidesPerView: 1, keyboard: true, breakpoints: { 860: { slidesPerView: 2, speed: 400 } }, navigation: { nextEl: ".reviews-owl-next", prevEl: ".reviews-owl-prev" } }); } catch(e) { /* skip */ } + +try { var swiperTeachers = new Swiper(".teachers-owl", { spaceBetween: 30, speed: 400, slidesPerView: 1, keyboard: true, breakpoints: { 540: { slidesPerView: 2 }, 860: { slidesPerView: 4 }, 992: { slidesPerView: 4, spaceBetween: 36 } }, navigation: { nextEl: ".teachers-owl-next", prevEl: ".teachers-owl-prev" } }); } catch(e) { /* skip */ } setTimeout(() => { document.querySelectorAll('.b24-form-content .b24-form-btn').forEach(btn => { @@ -251,7 +174,74 @@ setTimeout(() => { document.querySelectorAll('.header-menu').forEach(item => { item.classList.add('hover-effect'); -}) +}); + +/* ── "Читать ещё" (expand/collapse long reviews) ── */ +(function() { + 'use strict'; + document.querySelectorAll('.review-card__btn-more').forEach(function(btn) { + btn.addEventListener('click', function() { + var textBlock = this.closest('.lw-card').querySelector('.lw-card__text'); + if (textBlock) { + textBlock.classList.toggle('review-card__text--expanded'); + this.textContent = textBlock.classList.contains('review-card__text--expanded') + ? 'Свернуть' + : 'Читать ещё'; + } + }); + }); +})(); + +/* ── Reveal animation (IntersectionObserver) ── */ +(function() { + 'use strict'; + var revealElements = document.querySelectorAll('.reveal'); + if (revealElements.length && 'IntersectionObserver' in window) { + var observer = new IntersectionObserver( + function(entries) { + entries.forEach(function(entry) { + if (entry.isIntersecting) { + entry.target.classList.add('reveal--visible'); + observer.unobserve(entry.target); + } + }); + }, + { threshold: 0.1 } + ); + revealElements.forEach(function(el) { + observer.observe(el); + }); + } else { + // Fallback: show all immediately + revealElements.forEach(function(el) { + el.classList.add('reveal--visible'); + }); + } +})(); + +/* ── "Показать ещё" — batch load more ── */ +(function() { + 'use strict'; + var loadMoreWrapper = document.getElementById('reviews-loadmore'); + if (!loadMoreWrapper) return; + var btn = loadMoreWrapper.querySelector('.reviews-loadmore__btn'); + if (!btn) return; + var nextBatch = 2; + btn.addEventListener('click', function() { + var cards = document.querySelectorAll('.lw-card[data-batch="' + nextBatch + '"]'); + if (cards.length) { + cards.forEach(function(card) { + card.style.display = 'flex'; + card.classList.add('reveal--visible'); // reveal + batch = видно + }); + nextBatch++; + var remaining = document.querySelectorAll('.lw-card[data-batch="' + nextBatch + '"]'); + if (!remaining.length) { + loadMoreWrapper.style.display = 'none'; + } + } + }); +})(); /* ── Scroll Progress Bar ── */ (function() { diff --git a/wp-content/themes/dekart/assets/js/camp.js b/wp-content/themes/dekart/assets/js/camp.js index 34459f5..be3d15c 100644 --- a/wp-content/themes/dekart/assets/js/camp.js +++ b/wp-content/themes/dekart/assets/js/camp.js @@ -33,8 +33,6 @@ const btnCloseModalMentors = document.querySelector('.btn-close-mentors'); const modalPrograms = document.querySelector('.modal-programs'); const modalMentors = document.querySelector('.modal-mentors'); -const modalCampRequestForm = document.querySelector('.modal-camp-request-form'); - btnCloseModalPrograms.addEventListener("click", function (event) { modalPrograms.classList.remove('open'); }); @@ -45,37 +43,7 @@ btnCloseModalMentors.addEventListener("click", function (event) { document.addEventListener("click", function (event) { const target = event.target; - if (target.classList.contains("btn-close-request-form-camp")) { - document.body.style.overflow = ""; - modalCampRequestForm.classList.add("hidden"); - return; - } - - const campBtn = target.closest('.btn-write-camp'); - if (campBtn) { - if (campBtn.tagName === 'A') event.preventDefault(); - - window.b24campLoaded = true; - - document.body.style.overflow = "hidden"; - modalCampRequestForm.classList.remove("hidden"); - - var container = modalCampRequestForm.querySelector('.b24-form-container'); - if (!container.querySelector('.b24-form')) { - var fForm = modalCampRequestForm.dataset.b24Form; - var fLoader = modalCampRequestForm.dataset.b24Loader; - if (fForm && fLoader) { - var s = document.createElement('script'); - s.setAttribute('data-b24-form', fForm); - s.setAttribute('data-skip-moving', 'true'); - s.text = "(function(w,d,u){var s=d.createElement('script');s.async=true;s.src=u+'?'+(Date.now()/180000|0);var h=d.getElementsByTagName('script')[0];h.parentNode.insertBefore(s,h);})(window,document,'" + fLoader + "');"; - container.appendChild(s); - } - } - return; - } - - if (target.classList.contains("btn-program")) { + if (target.classList.contains("btn-program")) { const card = target.closest('.programs__card'); modalPrograms.querySelector('.modal-programs__img').innerHTML = card.querySelector('.programs__image').outerHTML; modalPrograms.querySelector('.programs__item_title').textContent = card.querySelector('.programs__name').textContent; diff --git a/wp-content/themes/dekart/assets/js/reviews-page.js b/wp-content/themes/dekart/assets/js/reviews-page.js index 106857f..ac508fd 100644 --- a/wp-content/themes/dekart/assets/js/reviews-page.js +++ b/wp-content/themes/dekart/assets/js/reviews-page.js @@ -10,6 +10,7 @@ document.addEventListener('DOMContentLoaded', function () { // ─────────────────────────────────────────────── // 1. АНИМАЦИЯ ПОЯВЛЕНИЯ (Intersection Observer) + // fallback — add.js тоже содержит этот код // ─────────────────────────────────────────────── const revealElements = document.querySelectorAll('.reveal'); if (revealElements.length && 'IntersectionObserver' in window) { @@ -28,29 +29,14 @@ document.addEventListener('DOMContentLoaded', function () { observer.observe(el); }); } else { - // Fallback: показываем всё сразу revealElements.forEach(function (el) { el.classList.add('reveal--visible'); }); } // ─────────────────────────────────────────────── - // 2. КНОПКИ "ЧИТАТЬ ЕЩЁ" - // ─────────────────────────────────────────────── - document.querySelectorAll('.review-card__btn-more').forEach(function (btn) { - btn.addEventListener('click', function () { - const textBlock = this.closest('.lw-card').querySelector('.lw-card__text'); - if (textBlock) { - textBlock.classList.toggle('review-card__text--expanded'); - this.textContent = textBlock.classList.contains('review-card__text--expanded') - ? 'Свернуть' - : 'Читать ещё'; - } - }); - }); - - // ─────────────────────────────────────────────── - // 3. КНОПКА "ПОКАЗАТЬ ЕЩЁ" (десктоп) + // 2. КНОПКА "ПОКАЗАТЬ ЕЩЁ" (десктоп) + // fallback — add.js тоже содержит этот код // ─────────────────────────────────────────────── const loadMoreBtn = document.getElementById('reviews-loadmore'); if (loadMoreBtn) { @@ -62,9 +48,9 @@ document.addEventListener('DOMContentLoaded', function () { if (cards.length) { cards.forEach(function (card) { card.style.display = 'flex'; + card.classList.add('reveal--visible'); }); nextBatch++; - // Если следующих батчей нет — прячем кнопку const remaining = document.querySelectorAll('.lw-card[data-batch="' + nextBatch + '"]'); if (!remaining.length) { loadMoreBtn.style.display = 'none'; diff --git a/wp-content/themes/dekart/footer.php b/wp-content/themes/dekart/footer.php index f1e0353..f1e4944 100644 --- a/wp-content/themes/dekart/footer.php +++ b/wp-content/themes/dekart/footer.php @@ -66,7 +66,24 @@ - + + 12 ) : ?> +
+ +
+ + +

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

@@ -768,24 +800,6 @@ $metrics = [
- - - +
- +
+
+
+

Почему родители доверяют нам

+
+
+ 📜 + Государственная лицензия +

Имеем право на образовательную деятельность. Вы можете вернуть 13% через налоговый вычет.

+
+
+ 🏆 + 12 лет на рынке +

С 2014 года готовим детей к школе. Более 500 выпускников успешно учатся в лицеях и гимназиях Щёлкова.

+
+
+ 🛡️ + Гарантия результата +

Если через 3 месяца ребёнок не начнёт читать — вернём деньги и продолжим обучение бесплатно.

+
+
+
+
+
+ + + + +
+
+ +
+
+ + +
@@ -604,7 +669,26 @@ $opt_social_raw = get_option( 'branch_social' ) ?: carbon_get_post_meta( $post_

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

Ребёнок познакомится с педагогом, попробует задания. Вы увидите методику своими глазами. Никакой оплаты и договоров.

- + +
+ Скидка 10% действует ещё: +
+
+ 24 + часов +
+ : +
+ 00 + минут +
+ : +
+ 00 + секунд +
+
+

🔥 Осталось 2 места в группе 5–6 лет. Успейте!

@@ -612,6 +696,28 @@ $opt_social_raw = get_option( 'branch_social' ) ?: carbon_get_post_meta( $post_
+ + @@ -706,6 +812,16 @@ $opt_social_raw = get_option( 'branch_social' ) ?: carbon_get_post_meta( $post_ })(); + + + +
+
+ Первое занятие — бесплатно + +
+
+ Запишитесь на бесплатное пробное занятие и тестирование
- +
+

Запишитесь на бесплатное пробное занятие и тестирование

+ +
diff --git a/wp-content/themes/dekart/template-parts/block-banner.php b/wp-content/themes/dekart/template-parts/block-banner.php index 2c90c78..6d864a5 100644 --- a/wp-content/themes/dekart/template-parts/block-banner.php +++ b/wp-content/themes/dekart/template-parts/block-banner.php @@ -128,11 +128,12 @@ $branch_address = get_option( 'branch_address', 'ул. Комсомольска 'class' => 'hero-pksh__photo', 'loading' => 'eager', 'decoding' => 'async', + 'alt' => 'Подготовка к школе в Щёлково — занятия для детей 5–7 лет', ) ); ?> Девочка и мальчик — весёлые занятия подготовкой к школе
- +

Заполните форму
или позвоните по телефону