shkola/wp-content/themes/dekart/podgotovka-k-shkole.css
2026-06-28 12:13:20 +00:00

2550 lines
64 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/* ============================================================
podgotovka-k-shkole.css — v2.0 (Redesign 2026)
Page-specific styles for "Подготовка к школе"
Loaded only via page-podgotovka-k-shkole.php template
============================================================ */
/* ============================================================
1. DESIGN TOKENS (page-pksh scoped)
============================================================ */
.page-pksh {
--bg-deep: #0F172A;
--bg-soft-2026: #F8FAFC;
--navy: #0F172A;
--slate-600: #475569;
--slate-400: #94A3B8;
--radius-2026: 24px;
}
/* Unified purple design system (was orange in v1).
--accent defined in main.css :root (#7C3AED). */
/* ============================================================
2. BANNER — address & scarcity
============================================================ */
.banner__address {
font-family: 'Roboto', sans-serif;
font-size: 16px;
color: #fff;
text-align: center;
margin-bottom: 8px;
letter-spacing: 0.02em;
}
.banner__scarcity {
font-family: 'Roboto', sans-serif;
font-size: 14px;
font-weight: 700;
color: #fff;
text-align: center;
margin: 0 0 10px;
padding: 6px 18px;
background: rgba(124, 58, 237, 0.2);
border-radius: 100px;
backdrop-filter: blur(4px);
display: inline-block;
max-width: fit-content;
}
.banner__scarcity strong {
color: #C084FC;
}
.btn-banner--main {
font-size: 16px;
padding: 14px 32px;
}
@media (max-width: 860px) {
.banner__address {
font-size: 14px;
}
.banner__scarcity {
font-size: 12px;
padding: 4px 14px;
}
.btn-banner--main {
font-size: 14px;
padding: 12px 24px;
width: 100%;
max-width: 320px;
}
}
/* ============================================================
3. BENTO LABELS & HEADINGS
============================================================ */
.bento-label {
display: inline-block;
font-size: 0.8125rem;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.08em;
color: var(--accent, #7C3AED);
margin-bottom: 8px;
}
.bento-label--light {
color: rgba(255,255,255,0.8);
}
.bento-h2 {
font-size: 1.625rem;
font-weight: 700;
line-height: 1.25;
color: var(--navy);
margin: 0 0 12px;
}
.bento-h2--light {
color: #fff;
}
.bento-p {
font-size: 1rem;
line-height: 1.6;
color: var(--slate-600);
margin: 0 0 20px;
}
@media (min-width: 640px) {
.bento-h2 {
font-size: 1.875rem;
}
}
/* ============================================================
4. STEPS-3 — How classes work
============================================================ */
.steps-3 {
display: flex;
flex-direction: column;
gap: 16px;
margin-top: 16px;
}
.step {
display: flex;
align-items: flex-start;
gap: 14px;
}
.step__num {
flex-shrink: 0;
width: 40px;
height: 40px;
border-radius: 50%;
background: linear-gradient(135deg, #7C3AED, #8B5CF6);
color: #fff;
display: flex;
align-items: center;
justify-content: center;
font-weight: 800;
font-size: 1rem;
box-shadow: 0 3px 10px rgba(124, 58, 237, 0.25);
}
.step strong {
display: block;
font-size: 0.9375rem;
color: var(--navy);
margin-bottom: 2px;
}
.step span:not(.step__num) {
display: block;
font-size: 0.875rem;
color: var(--slate-600);
line-height: 1.4;
}
/* ============================================================
5. OBJECTIONS — Why us cards
============================================================ */
/* WHITE cards on warm #F8F4F0 section = bright, contrast resolved.
Warm border + generous shadow replaces lost figure/ground. */
.bento-card--objections {
background: #FFFFFF;
border: 1.5px solid #EDE8DF;
box-shadow: 0 6px 24px rgba(0, 0, 0, 0.07);
}
.bento-card--objections:hover {
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1);
}
.objection-list {
display: flex;
flex-direction: column;
gap: 16px;
}
.objection-item {
display: flex;
gap: 12px;
align-items: flex-start;
}
.objection-item__icon {
flex-shrink: 0;
width: 32px;
height: 32px;
color: var(--accent, #7C3AED);
margin-top: 2px;
filter: drop-shadow(0 1px 3px rgba(124, 58, 237, 0.2));
}
.objection-item strong {
display: block;
font-size: 0.9375rem;
color: var(--navy);
margin-bottom: 2px;
}
.objection-item p {
font-size: 0.875rem;
color: var(--slate-600);
line-height: 1.45;
margin: 0;
}
/* ============================================================
6. RESULTS GRID — Highlight section
============================================================ */
.bento-card--highlight-results {
background: var(--bg-deep);
border-radius: var(--radius-2026);
padding: 32px 24px;
}
@media (min-width: 640px) {
.bento-card--highlight-results {
padding: 40px 32px;
}
}
.results-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 20px;
margin-top: 8px;
}
@media (min-width: 640px) {
.results-grid {
grid-template-columns: repeat(4, 1fr);
gap: 24px;
}
}
.result-item {
text-align: center;
}
.result-item__value {
display: block;
font-size: 2.25rem;
font-weight: 800;
color: var(--accent, #7C3AED);
line-height: 1;
margin-bottom: 6px;
}
@media (min-width: 640px) {
.result-item__value {
font-size: 2.75rem;
}
}
.result-item__desc {
display: block;
font-size: 0.8125rem;
color: var(--slate-400);
line-height: 1.35;
}
/* ============================================================
7. GUARANTEE Bento Card
============================================================ */
/* .bento-card--guarantee moved to .guarantee-block--centered */
/* ============================================================
8. (removed — FAQ moved to section 44)
============================================================ */
/* ============================================================
9. PROGRAMS GRID
============================================================ */
.programs-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
gap: 20px;
margin: 28px 0 20px;
}
.program-card {
display: flex;
flex-direction: column;
border-radius: 20px;
overflow: hidden;
background: #fff;
box-shadow: 0 4px 20px rgba(0,0,0,0.06);
transition: transform 0.2s ease, box-shadow 0.2s ease;
}
.program-card:hover {
transform: translateY(-4px);
box-shadow: 0 12px 32px rgba(0,0,0,0.1);
}
.program-card__header {
padding: 18px 20px;
color: #fff;
display: flex;
align-items: center;
gap: 10px;
}
.program-card--orange .program-card__header { background: linear-gradient(135deg, #C084FC, #A855F7); }
.program-card--green .program-card__header { background: linear-gradient(135deg, #22C55E, #16A34A); }
.program-card--blue .program-card__header { background: linear-gradient(135deg, #3B82F6, #2563EB); }
.program-card--purple .program-card__header { background: linear-gradient(135deg, #A855F7, #7C3AED); }
.program-card__icon {
font-size: 1.5rem;
flex-shrink: 0;
}
.program-card__title {
margin: 0;
font-size: 1.05rem;
font-weight: 700;
color: #fff;
line-height: 1.2;
}
.program-card__body {
padding: 20px;
flex-grow: 1;
display: flex;
flex-direction: column;
}
.program-card__list {
list-style: none;
padding: 0;
margin: 0 0 16px;
}
.program-card__list li {
position: relative;
padding-left: 18px;
margin-bottom: 6px;
font-size: 0.9rem;
line-height: 1.4;
color: #374151;
}
.program-card__list li::before {
content: "✓";
position: absolute;
left: 0;
color: var(--accent, #7C3AED);
font-weight: 700;
}
.program-card__meta {
display: flex;
flex-wrap: wrap;
gap: 6px;
margin-bottom: 12px;
}
.program-card__meta-item {
font-size: 0.75rem;
padding: 3px 10px;
border-radius: 20px;
background: #F1F5F9;
color: #475569;
font-weight: 600;
}
.program-card__price {
display: flex;
align-items: baseline;
gap: 6px;
margin-bottom: 14px;
margin-top: auto;
}
.program-card__price-val {
font-size: 1.35rem;
font-weight: 800;
color: var(--navy);
}
.program-card__price-period {
font-size: 0.8rem;
color: #94A3B8;
}
.program-card__btn {
display: block;
width: 100%;
padding: 12px;
border: none;
border-radius: 12px;
font-family: inherit;
font-size: 1rem;
font-weight: 700;
color: #fff;
cursor: pointer;
background: var(--accent, #7C3AED);
transition: opacity 0.15s;
}
.program-card__btn:hover { opacity: 0.9; }
.program-card__btn--green { background: #16A34A; }
.program-card__btn--blue { background: #2563EB; }
.program-card__btn--purple { background: #7C3AED; }
.programs-note {
text-align: center;
padding: 16px 0 0;
font-size: 0.925rem;
color: var(--slate-600);
}
.programs-note__link {
color: var(--accent, #7C3AED);
font-weight: 700;
text-decoration: underline;
text-underline-offset: 2px;
}
@media (max-width: 639px) {
.programs-grid {
grid-template-columns: 1fr;
gap: 16px;
}
.program-card__header {
padding: 14px 16px;
}
.program-card__title {
font-size: 0.95rem;
}
.program-card__body {
padding: 16px;
}
}
/* ============================================================
10. FINAL CTA
============================================================ */
.final-cta {
text-align: center;
padding: 24px 0;
}
.final-cta__text {
font-size: 1rem;
color: var(--slate-600);
line-height: 1.6;
max-width: 540px;
margin: 0 auto 24px;
}
.final-cta__footnote {
font-size: 0.8125rem;
color: var(--accent, #7C3AED);
font-weight: 600;
margin: 16px 0 0;
}
.btn-primary--large {
padding: 18px 40px;
font-size: 1.125rem;
min-height: 56px;
border-radius: 32px;
}
/* ============================================================
11. MOBILE OVERRIDES
============================================================ */
@media (max-width: 639px) {
.bento-card {
padding: 20px 16px;
border-radius: 20px;
}
.bento-h2 {
font-size: 1.375rem;
}
.result-item__value {
font-size: 1.75rem;
}
}
/* ============================================================
11b. MOBILE — Fixed header compensation
Header is 76px fixed at top. Banner must not hide behind it.
============================================================ */
@media (max-width: 860px) {
.page-pksh .banner {
padding-top: 76px;
margin-top: -76px; /* fixed header compensation */
}
.page-pksh .banner__content.mobile {
margin-top: 0; /* ensure no double gap */
}
}
/* ============================================================
11c. MOBILE — Banner scarcity on mobile wraps nicely
============================================================ */
@media (max-width: 639px) {
.banner__scarcity {
font-size: 12px;
padding: 4px 14px;
margin: 8px auto 0;
}
.btn-banner--main {
font-size: 14px;
padding: 12px 24px;
width: 100%;
max-width: 320px;
}
}
/* ============================================================
12. ANCHOR NAVIGATION
============================================================ */
/* ═══════════════════════════════════════════════════════════════
ANCHOR NAV — redesigned for desktop 2026-05
Problem: links were too small (8×18px padding, 14px font),
nav was 1280px wide (no alignment with 900px content axis of
sections 2-4), vertical rhythm was 12px vs section 80px.
Solution:
• Container → 900px (aligns with Social/Micro/Guarantee axis)
• Flex-wrap 2 rows × 3 pills, centered
• Pills → 14×28px padding, 16px font (body-text scale)
• Purple hover with translateY(-2px) + glow shadow
• Vertical padding 48/56px (matches section rhythm)
═══════════════════════════════════════════════════════════ */
.pksh-anchor-nav {
display: flex;
flex-wrap: wrap;
justify-content: center;
gap: 10px;
max-width: 900px;
margin: 0 auto;
padding: 48px 16px 56px;
overflow: visible;
}
.pksh-anchor-link {
flex-shrink: 0;
padding: 14px 28px;
border-radius: 100px;
background: #FFFFFF;
color: #475569;
font-size: 1rem;
font-weight: 600;
text-decoration: none;
border: 1.5px solid #E2E8F0;
transition: all 0.2s ease;
white-space: nowrap;
}
.pksh-anchor-link:hover,
.pksh-anchor-link:focus-visible {
background: #F5F3FF;
color: #7C3AED;
border-color: #7C3AED;
transform: translateY(-2px);
box-shadow: 0 4px 12px rgba(124, 58, 237, 0.15);
}
.pksh-anchor-link--cta {
background: linear-gradient(135deg, #7C3AED, #8B5CF6);
color: #fff;
border-color: transparent;
}
.pksh-anchor-link--cta:hover,
.pksh-anchor-link--cta:focus-visible {
background: linear-gradient(135deg, #6D28D9, #7C3AED);
color: #fff;
border-color: transparent;
box-shadow: 0 4px 12px rgba(124, 58, 237, 0.3);
}
@media (max-width: 639px) {
.pksh-anchor-nav {
padding: 32px 16px 40px;
gap: 8px;
justify-content: center;
}
.pksh-anchor-link {
padding: 10px 18px;
font-size: 0.875rem;
min-height: 44px;
display: inline-flex;
align-items: center;
}
}
/* ============================================================
13. FOMO SCARCITY BADGE
============================================================ */
.pksh-fomo {
display: flex;
align-items: center;
justify-content: center;
gap: 10px;
margin: 16px auto 0;
padding: 10px 24px;
background: linear-gradient(135deg, #F5F0FF, #EDE4FF);
border-radius: 100px;
max-width: fit-content;
border: 1px solid #D4C4F0;
}
.pksh-fomo__dot {
width: 10px;
height: 10px;
border-radius: 50%;
background: var(--accent, #7C3AED);
flex-shrink: 0;
animation: pksh-pulse 2s infinite;
}
@keyframes pksh-pulse {
0%, 100% { opacity: 1; transform: scale(1); }
50% { opacity: 0.6; transform: scale(1.3); }
}
.pksh-fomo__text {
font-size: 0.875rem;
font-weight: 600;
color: #9A3412;
}
/* ============================================================
14. OVERRIDE: fix CTA gap 640860px
Sticky CTA appears at 860px to match when banner CTA hides
============================================================ */
@media (max-width: 860px) {
.sticky-cta-mobile {
display: block;
}
body {
padding-bottom: 80px;
}
}
/* ============================================================
16. OVERRIDE: Teachers section — constrain on mobile
Swiper overflows viewport at <640px
============================================================ */
@media (max-width: 639px) {
.page-pksh .our-teachers .container {
padding-left: 16px !important;
padding-right: 16px !important;
}
.page-pksh .teachers-owl-wrapper {
padding: 0 !important;
}
}
/* ============================================================
18. OVERRIDE: Program card buttons — accent gradient
Match brand CTAs (banner, sticky, final) instead of solid orange
============================================================ */
.page-pksh .program-card__btn {
background: linear-gradient(135deg, var(--accent, #7C3AED), var(--accent-500, #8B5CF6)) !important;
font-family: 'Roboto', sans-serif;
border-radius: var(--radius-pill, 28px);
padding: 14px 12px;
transition: opacity 0.15s, transform 0.15s, box-shadow 0.15s;
}
.page-pksh .program-card__btn:hover {
opacity: 0.95;
transform: translateY(-1px);
box-shadow: 0 4px 12px rgba(124, 58, 237, 0.3);
}
.page-pksh .program-card__btn--green,
.page-pksh .program-card__btn--blue,
.page-pksh .program-card__btn--purple {
background: linear-gradient(135deg, var(--accent, #7C3AED), var(--accent-500, #8B5CF6)) !important;
}
/* ============================================================
19. OVERRIDE: Header btn-lilac — use accent
Legacy header button should match brand
============================================================ */
.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;
}
.page-pksh .btn-lilac:hover {
background: linear-gradient(135deg, var(--accent-hover, #6D28D9), var(--accent-700, #5B21B6)) !important;
}
/* ============================================================
15. OVERRIDE: Banner CTA accent
Use accent (purple) for banner CTA to match brand
============================================================ */
.page-pksh .btn-banner--main {
background: linear-gradient(135deg, var(--accent, #7C3AED), var(--accent-500, #8B5CF6));
border: none;
color: #fff;
font-family: 'Roboto', sans-serif;
font-weight: 700;
text-transform: none;
letter-spacing: 0;
}
.page-pksh .btn-banner--main:hover {
background: linear-gradient(135deg, var(--accent-hover, #6D28D9), var(--accent-700, #5B21B6));
}
/* ============================================================
21. DESKTOP LAYOUT — ширину.всё.
Force ALL bento sections to fill max-width (1280px).
Fix: inline-block-like collapse when content narrower.
============================================================ */
.page-pksh .bento {
width: 100%;
}
/* Inner grid items fill their cells (CSS Grid default is stretch) */
.page-pksh .bento__full,
.page-pksh .bento__half,
.page-pksh .bento__wide {
min-width: 0; /* prevent grid overflow from long words */
box-sizing: border-box;
}
/* ── 21b. Social Counters — center content ── */
.page-pksh .social-counters {
width: 100%;
display: flex;
justify-content: space-evenly;
align-items: center;
flex-wrap: wrap;
gap: 24px;
}
.page-pksh .social-counter {
flex: 1 1 180px;
max-width: 280px;
display: flex;
align-items: center;
gap: 14px;
}
/* ── 21c. Programs grid — fill bento width ── */
.page-pksh .programs-grid {
width: 100%;
}
/* ── 21d. Final CTA — full width + centered content ── */
.page-pksh #final-cta .bento__full {
width: 100%;
max-width: 700px;
margin: 0 auto;
display: flex;
flex-direction: column;
align-items: center;
text-align: center;
}
/* ── 21f. Consistent section vertical spacing ── */
.page-pksh .pksh-section + .pksh-section {
/* Sections already have padding: 80px 0; no extra margin needed */
}
.page-pksh .pksh-section + .pksh-anchor-nav,
.page-pksh .pksh-anchor-nav + .pksh-section {
margin-top: 0;
}
.page-pksh .pksh-section + :not(.pksh-section):not(.pksh-anchor-nav) {
/* map, etc. — no extra spacing */
}
/* ── 21g. Guarantee card ── fill height ── */
/* (removed — guarantee uses .guarantee-block--centered now) */
/* ============================================================
22. DESKTOP — program cards 4-col on wide screens
============================================================ */
@media (min-width: 1100px) {
.page-pksh .programs-grid {
grid-template-columns: repeat(4, 1fr);
}
}
/* ============================================================
23. DESKTOP — teacher cards in bento ── constrain within grid
Teachers.php uses .container with padding:20px 90px which
overflows when bento is 1280px. Reduce padding to grid padding.
============================================================ */
.page-pksh #teachers .our-teachers .container {
max-width: 100%;
width: 100%;
padding: 20px 24px 40px;
}
/* Teacher slides — fix fixed width on desktop */
.page-pksh .teachers-owl .swiper-slide {
width: auto !important;
flex: 0 0 236px;
}
/* ============================================================
23b. Price section (legacy) — prevent narrow collapse
The price section uses .container with padding, outside bento grid
============================================================ */
.page-pksh .price .container {
max-width: 1280px;
padding-left: 32px;
padding-right: 32px;
}
/* ============================================================
25. BANNER GUARANTEE MICRO
============================================================ */
.banner__guarantee {
font-family: 'Roboto', sans-serif;
font-size: 13px;
font-weight: 600;
color: #FFD43E;
text-align: center;
margin: 10px 0 0;
padding: 8px 18px;
background: rgba(15, 23, 42, 0.6);
border: 1px solid rgba(255, 212, 62, 0.3);
border-radius: 100px;
display: inline-block;
max-width: fit-content;
backdrop-filter: blur(4px);
}
.banner__guarantee strong {
color: #fff;
}
@media (max-width: 860px) {
.banner__guarantee {
font-size: 11px;
padding: 6px 14px;
}
}
/* ============================================================
26. GUARANTEE HERO BLOCK (Risk Reversal showcase)
Unified to purple design system: warm neutral card ×
purple border/accents. Orange → purple migration.
============================================================ */
.guarantee-hero {
display: flex;
align-items: center;
gap: 32px;
max-width: 900px;
margin: 0 auto;
padding: 32px 24px;
background: linear-gradient(135deg, #F8F4F0 0%, #F0EBE5 50%, #F8F4F0 100%);
border: 2px solid #7C3AED;
border-radius: var(--radius-2026, 24px);
}
.guarantee-hero__shield {
flex-shrink: 0;
font-size: 4rem;
line-height: 1;
}
.guarantee-hero__content {
flex: 1;
}
.guarantee-hero__text {
font-size: 1rem;
line-height: 1.6;
color: var(--slate-600, #475569);
margin: 0 0 18px;
}
.guarantee-hero__text strong {
color: #6D28D9;
}
.guarantee-hero__btn {
padding: 14px 32px;
font-size: 1rem;
}
.guarantee-hero__badges {
display: flex;
flex-direction: column;
align-items: center;
gap: 12px;
flex-shrink: 0;
}
@media (max-width: 639px) {
.guarantee-hero {
flex-direction: column;
text-align: center;
gap: 16px;
padding: 24px 20px;
}
.guarantee-hero__badges {
flex-direction: row;
gap: 16px;
}
.guarantee-hero__shield {
font-size: 3rem;
}
}
/* ============================================================
26b. GUARANTEE HERO — section background + spacing override
Base .pksh-section--alt gives cool #F8FAFC — clashes with
warm palette. White keeps the visual rhythm consistent:
gradient → white → warm stone → white → nav
Padding reduced from 80px → 32/48 for 80px gap rhythm.
============================================================ */
.page-pksh .bento[aria-label="Гарантия"] {
background: #FFFFFF;
padding: 32px 32px 48px;
}
@media (max-width: 860px) {
.page-pksh .bento[aria-label="Гарантия"] {
padding: 24px 16px 32px;
}
}
/* ============================================================
27. MICRO-COMMITMENT (checklist download)
============================================================ */
.micro-commit {
display: flex;
align-items: center;
gap: 40px;
max-width: 900px;
margin: 0 auto;
padding: 32px 24px;
background: #fff;
border-radius: var(--radius-2026, 24px);
box-shadow: 0 8px 32px rgba(0,0,0,0.06);
}
.micro-commit__content {
flex: 1;
}
.micro-commit__visual {
flex-shrink: 0;
width: 120px;
height: 120px;
background: #F5F0FF;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
}
.micro-commit__btn {
padding: 14px 32px;
font-size: 1rem;
margin-top: 8px;
}
.micro-commit__disclaimer {
font-size: 0.75rem;
color: #94A3B8;
margin: 8px 0 0;
}
@media (max-width: 639px) {
.micro-commit {
flex-direction: column;
text-align: center;
gap: 20px;
padding: 24px 20px;
}
.micro-commit__visual {
width: 80px;
height: 80px;
}
}
/* ============================================================
28. DESKTOP STICKY CTA
============================================================ */
.sticky-cta-desktop {
display: none;
position: fixed;
bottom: 0;
left: 0;
right: 0;
z-index: 999;
background: rgba(255,255,255,0.95);
backdrop-filter: blur(12px);
border-top: 1px solid #E2E8F0;
padding: 12px 32px;
box-shadow: 0 -4px 20px rgba(0,0,0,0.06);
animation: stickyFadeIn 0.3s ease;
}
@keyframes stickyFadeIn {
from { opacity: 0; transform: translateY(16px); }
to { opacity: 1; transform: translateY(0); }
}
.sticky-cta-desktop__inner {
max-width: 1280px;
margin: 0 auto;
display: flex;
align-items: center;
justify-content: space-between;
gap: 24px;
}
.sticky-cta-desktop__info {
display: flex;
align-items: center;
gap: 16px;
}
.sticky-cta-desktop__badge {
display: inline-block;
padding: 4px 14px;
background: var(--accent, #7C3AED);
color: #fff;
font-size: 0.8125rem;
font-weight: 700;
border-radius: 100px;
}
.sticky-cta-desktop__text {
font-size: 0.9375rem;
color: var(--navy, #0F172A);
font-weight: 500;
}
.sticky-cta-desktop__text strong {
color: var(--accent, #7C3AED);
}
.sticky-cta-desktop__btn {
padding: 14px 32px;
font-size: 1rem;
font-weight: 700;
border: none;
border-radius: 32px;
background: linear-gradient(135deg, var(--accent, #7C3AED), var(--accent-500, #8B5CF6));
color: #fff;
cursor: pointer;
font-family: 'Roboto', sans-serif;
transition: opacity 0.15s, transform 0.15s;
white-space: nowrap;
}
.sticky-cta-desktop__btn:hover {
opacity: 0.95;
transform: translateY(-1px);
}
/* Desktop sticky — show after scrolling past header (~200px) via IntersectionObserver
but default to hidden. Will be shown by JS. */
@media (min-width: 861px) {
.sticky-cta-desktop {
display: block;
transform: translateY(100%);
transition: transform 0.3s ease;
}
.sticky-cta-desktop.visible {
transform: translateY(0);
}
body {
padding-bottom: 0;
}
}
/* ============================================================
29. TAP TARGET SIZE FIX (Mobile 48px minimum)
============================================================ */
@media (max-width: 639px) {
.page-pksh .btn-primary,
.page-pksh .btn-banner--main,
.page-pksh .program-card__btn,
.page-pksh .sticky-cta-btn,
.page-pksh .guarantee-hero__btn,
.page-pksh .micro-commit__btn {
min-height: 48px;
padding-top: 14px;
padding-bottom: 14px;
font-size: 1rem;
}
/* (FAQ trigger removed — FAQ uses box__accordion now) */
/* Social counters — make entire card tappable */
.page-pksh .social-counter {
min-height: 48px;
}
/* Final CTA footnote — ensure sufficient height */
.page-pksh .final-cta__footnote {
padding: 8px 0;
}
}
/* ============================================================
30. SCARCITY ANIMATION & VISUAL WEIGHT
============================================================ */
.banner__scarcity {
animation: scarcityPulse 2s ease-in-out infinite;
}
@keyframes scarcityPulse {
0%, 100% { transform: scale(1); background: rgba(249, 115, 22, 0.25); }
50% { transform: scale(1.03); background: rgba(249, 115, 22, 0.35); }
}
/* Hover on scarcity increases urgency */
.banner__scarcity:hover {
animation-play-state: paused;
background: rgba(249, 115, 22, 0.4);
}
/* ============================================================
31. BANNER ADDRESS — visual enhancement
============================================================ */
.banner__address {
display: flex;
align-items: center;
justify-content: center;
gap: 6px;
opacity: 0.9;
}
/* ============================================================
32. FOMO SCARCITY — make more urgent
Replace pulsing dot with stronger indicator
============================================================ */
.pksh-fomo {
cursor: pointer;
transition: transform 0.2s, box-shadow 0.2s;
}
.pksh-fomo:hover {
transform: scale(1.02);
box-shadow: 0 4px 16px rgba(234, 88, 12, 0.15);
}
/* ============================================================
33. TEACHERS — show experience/credentials
Teacher direction already shows. Style enhancement.
============================================================ */
.page-pksh .ourteacher_title {
font-size: 0.8125rem;
min-height: 36px;
display: flex;
align-items: center;
justify-content: center;
text-align: center;
padding: 0 4px;
}
/* ============================================================
34. TWO-COLUMN PROGRAMS (Desktop)
Override 4-col to 2-col with feature comparison
============================================================ */
@media (min-width: 1100px) {
.page-pksh .programs-grid {
grid-template-columns: repeat(2, 1fr) !important;
}
}
/* ============================================================
36. SCROLL PROGRESS INDICATOR (optional enhancement)
============================================================ */
.page-pksh .pksh-scroll-progress {
position: fixed;
top: 0;
left: 0;
height: 3px;
background: linear-gradient(90deg, var(--accent, #7C3AED), #A855F7);
z-index: 10000;
width: 0%;
transition: width 0.1s linear;
}
/* ============================================================
37. MOBILE BANNER OVERRIDE — show CTA inside banner__content
Main.css hides .banner__content .btn-write on mobile.
We moved button INSIDE .banner__content.mobile — unhide.
============================================================ */
@media (max-width: 860px) {
.page-pksh .banner__content.mobile .btn-write {
display: block !important;
width: 100%;
max-width: 320px;
margin: 10px auto 0;
padding: 14px 24px;
font-size: 16px;
border-radius: 32px;
background: linear-gradient(135deg, var(--accent, #7C3AED), var(--accent-500, #8B5CF6));
border: none;
color: #fff;
font-weight: 700;
font-family: 'Roboto', sans-serif;
cursor: pointer;
transition: opacity 0.15s;
}
.page-pksh .banner__content.mobile .btn-write:hover {
opacity: 0.95;
}
.page-pksh .banner__content.mobile .banner__scarcity {
display: block;
margin: 8px auto 0;
font-size: 12px;
}
.page-pksh .banner__content.mobile .banner__guarantee {
display: inline-block;
margin: 8px auto 0;
font-size: 11px;
}
.page-pksh .banner__content.mobile .banner__address {
font-size: 13px;
margin-bottom: 6px;
opacity: 0.85;
}
/* Mobile banner content — ensure proper spacing for stacked elements */
.page-pksh .banner__content.mobile {
padding: 16px 20px;
display: flex;
flex-direction: column;
align-items: center;
gap: 2px;
}
.page-pksh .banner__content.mobile .page_title {
font-size: 22px;
line-height: 1.2;
margin: 4px 0;
}
.page-pksh .banner__content.mobile .banner_text {
font-size: 15px;
margin: 4px 0;
}
}
/* ============================================================
38. PKSH ANCHOR NAV — scroll offset for fixed header
============================================================ */
.page-pksh #how-it-works,
.page-pksh #results,
.page-pksh #programs,
.page-pksh #teachers,
.page-pksh #results,
.page-pksh #programs,
.page-pksh #teachers,
.page-pksh #faq,
.page-pksh #final-cta {
scroll-margin-top: 100px;
}
/* ============================================================
39. HERO — light warm background (neuro-optimized for ЦА)
Psychology: warm cream (safe, home, care) → soft sage (growth, nature, trust)
Text: deep navy for authority, slate for readability
CTA: purple accent on light bg for contrast + premium feel
============================================================ */
/* ── Hero container ── */
.page-pksh .hero-pksh {
position: relative;
min-height: 600px;
display: flex;
flex-direction: column;
overflow: hidden;
/* Warm cream → soft sage: home + nature = safe growth */
background: linear-gradient(135deg, #FCFAF2 0%, #F5F0E8 30%, #E6EDE6 70%, #DCE5DA 100%);
}
/* ── Background layer ── */
.hero-pksh__bg {
position: absolute;
inset: 0;
z-index: 0;
pointer-events: none;
}
/* ── Blobs — very muted natural tones ── */
.hero-pksh__blob {
position: absolute;
border-radius: 50%;
filter: blur(80px);
will-change: transform;
}
.hero-pksh__blob--1 {
width: 560px; height: 560px;
background: #D4C5A9; /* warm tan — earth/nurture */
top: -200px; right: -120px;
opacity: 0.10;
animation: heroBlob1 8s ease-in-out infinite alternate;
}
.hero-pksh__blob--2 {
width: 420px; height: 420px;
background: #A8C5B5; /* sage — growth/calm */
bottom: -140px; left: -80px;
opacity: 0.08;
animation: heroBlob2 10s ease-in-out infinite alternate;
}
.hero-pksh__blob--3 {
width: 280px; height: 280px;
background: #E8D5C0; /* peach — warmth/play */
top: 40%; left: 45%;
opacity: 0.06;
animation: heroBlob3 6s ease-in-out infinite alternate;
}
@keyframes heroBlob1 {
0% { transform: translate(0, 0) scale(1); }
100% { transform: translate(-40px, 30px) scale(1.08); }
}
@keyframes heroBlob2 {
0% { transform: translate(0, 0) scale(1); }
100% { transform: translate(30px, -20px) scale(1.05); }
}
@keyframes heroBlob3 {
0% { transform: translate(0, 0) scale(1); opacity: 0.06; }
100% { transform: translate(20px, 10px) scale(1.12); opacity: 0.09; }
}
/* ── Dot pattern — dark dots on light bg ── */
.hero-pksh__pattern {
position: absolute;
inset: 0;
background-image: radial-gradient(rgba(0, 0, 0, 0.04) 1px, transparent 1px);
background-size: 24px 24px;
}
/* ── Breadcrumbs ── */
.hero-pksh__breadcrumbs {
position: relative;
z-index: 2;
padding-top: 24px;
}
@media (max-width: 860px) {
.hero-pksh__breadcrumbs {
padding-top: 96px;
}
}
.hero-pksh__breadcrumbs .breadcrumbs a,
.hero-pksh__breadcrumbs .breadcrumbs span {
color: #94A3B8;
}
.hero-pksh__breadcrumbs .breadcrumbs a:hover {
color: #475569;
}
/* ── Main layout grid ── */
.hero-pksh__layout {
position: relative;
z-index: 1;
flex: 1;
display: grid;
grid-template-columns: 1fr 1fr;
gap: 40px;
max-width: 1280px;
margin: 0 auto;
padding: 32px 32px 48px;
width: 100%;
align-items: center;
}
/* ── Content column (left) ── */
.hero-pksh__content {
display: flex;
flex-direction: column;
gap: 14px;
}
/* ── Address pill ── */
.hero-pksh__address {
display: inline-flex;
align-items: center;
gap: 6px;
font-family: 'Roboto', sans-serif;
font-size: 15px;
font-weight: 500;
color: #64748B;
background: rgba(0, 0, 0, 0.03);
backdrop-filter: blur(8px);
-webkit-backdrop-filter: blur(8px);
padding: 8px 18px;
border-radius: 100px;
max-width: fit-content;
border: 1px solid rgba(0, 0, 0, 0.06);
transition: background 0.2s;
}
.hero-pksh__address svg {
width: 16px; height: 16px;
flex-shrink: 0;
color: #94A3B8;
}
/* ── Headline — deep navy for authority + confidence ── */
.hero-pksh__title {
font-family: 'Oswald', sans-serif;
font-size: 48px;
font-weight: 600;
line-height: 1.08;
color: #1E293B;
margin: 4px 0;
text-shadow: none;
max-width: 580px;
}
/* ── Subtitle ── */
.hero-pksh__subtitle {
font-family: 'Roboto', sans-serif;
font-size: 20px;
font-weight: 400;
line-height: 1.5;
color: #475569;
margin: 0;
max-width: 500px;
}
/* ── Actions (CTA + scarcity) ── */
.hero-pksh__actions {
display: flex;
flex-direction: column;
gap: 10px;
margin-top: 6px;
}
/* ── CTA — purple on light = premium contrast ── */
.hero-pksh__cta {
display: inline-flex;
align-items: center;
justify-content: center;
padding: 18px 40px;
font-family: 'Roboto', sans-serif;
font-size: 18px;
font-weight: 700;
color: #fff;
background: linear-gradient(135deg, #7C3AED, #A855F7);
border: none;
border-radius: 100px;
cursor: pointer;
transition: transform 0.2s ease, box-shadow 0.2s ease, opacity 0.2s ease;
box-shadow: 0 8px 28px rgba(124, 58, 237, 0.25);
max-width: fit-content;
text-transform: none;
letter-spacing: 0;
}
.hero-pksh__cta:hover {
transform: translateY(-2px);
box-shadow: 0 12px 36px rgba(124, 58, 237, 0.35);
opacity: 0.97;
}
.hero-pksh__cta:active {
transform: translateY(0);
box-shadow: 0 4px 12px rgba(124, 58, 237, 0.20);
}
/* ── Scarcity — warm amber urgency (not alarm) ── */
.hero-pksh__scarcity {
font-family: 'Roboto', sans-serif;
font-size: 14px;
font-weight: 600;
color: #92400E;
background: #FEF3C7;
padding: 8px 20px;
border-radius: 100px;
max-width: fit-content;
border: 1px solid rgba(146, 64, 14, 0.12);
animation: heroScarcityPulse 2.5s ease-in-out infinite;
}
.hero-pksh__scarcity strong {
color: #78350F;
font-weight: 700;
}
@keyframes heroScarcityPulse {
0%, 100% { transform: scale(1); background: #FEF3C7; }
50% { transform: scale(1.02); background: #FDE68A; }
}
/* ── Trust bar ── */
.hero-pksh__trust {
display: flex;
flex-wrap: wrap;
gap: 20px;
margin-top: 6px;
}
.hero-pksh__trust-item {
display: inline-flex;
align-items: center;
gap: 6px;
font-family: 'Roboto', sans-serif;
font-size: 14px;
color: #64748B;
}
.hero-pksh__trust-icon {
font-size: 16px;
line-height: 1;
}
.hero-pksh__trust-label strong {
color: #1E293B;
font-weight: 700;
}
/* ── Visual column (right) ── */
.hero-pksh__visual {
position: relative;
display: flex;
align-items: center;
justify-content: center;
min-height: 420px;
}
/* ── Image frame ── */
.hero-pksh__frame {
width: 100%;
max-width: 420px;
aspect-ratio: 3 / 4;
border-radius: 24px;
overflow: hidden;
box-shadow: 0 28px 72px rgba(0, 0, 0, 0.06);
background: rgba(255, 255, 255, 0.6);
backdrop-filter: blur(12px);
-webkit-backdrop-filter: blur(12px);
border: 1px solid rgba(0, 0, 0, 0.04);
}
.hero-pksh__img {
width: 100%;
height: 100%;
position: relative;
}
/* Placeholder — light version */
.hero-pksh__img-placeholder {
width: 100%; height: 100%;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 16px;
background: linear-gradient(135deg, rgba(124, 58, 237, 0.03), rgba(249, 115, 22, 0.03));
}
.hero-pksh__placeholder-icon svg circle,
.hero-pksh__placeholder-icon svg path {
fill: rgba(0, 0, 0, 0.06);
}
.hero-pksh__placeholder-icon svg {
display: block;
}
.hero-pksh__placeholder-label {
font-family: 'Roboto', sans-serif;
font-size: 13px;
font-weight: 500;
color: rgba(0, 0, 0, 0.25);
letter-spacing: 0.02em;
}
/* ── Floating badges ── */
.hero-pksh__float {
position: absolute;
display: flex;
align-items: center;
gap: 8px;
padding: 10px 20px;
background: rgba(255, 255, 255, 0.95);
backdrop-filter: blur(12px);
-webkit-backdrop-filter: blur(12px);
border-radius: 100px;
font-family: 'Roboto', sans-serif;
font-size: 14px;
font-weight: 600;
color: #1E293B;
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.04);
white-space: nowrap;
animation: heroFloat 4s ease-in-out infinite;
border: 1px solid rgba(0, 0, 0, 0.04);
}
.hero-pksh__float--1 { top: 8%; right: -8px; animation-delay: 0s; }
.hero-pksh__float--2 { bottom: 28%; left: -24px; animation-delay: 1.2s; }
.hero-pksh__float--3 { bottom: 6%; right: 12%; animation-delay: 2.6s; }
.hero-pksh__float-icon {
font-size: 18px;
line-height: 1;
}
@keyframes heroFloat {
0%, 100% { transform: translateY(0); }
50% { transform: translateY(-8px); }
}
/* ── Decorative dots ── */
.hero-pksh__dot {
position: absolute;
border-radius: 50%;
background: rgba(0, 0, 0, 0.06);
pointer-events: none;
}
.hero-pksh__dot--1 { width: 14px; height: 14px; top: 18%; left: 8%; }
.hero-pksh__dot--2 { width: 8px; height: 8px; top: 65%; left: 12%; }
.hero-pksh__dot--3 { width: 18px; height: 18px; bottom: 44%; right: 4%; }
.hero-pksh__dot--4 { width: 6px; height: 6px; bottom: 14%; right: 28%;}
/* ============================================================
39b. HERO — Responsive (Tablet)
============================================================ */
@media (max-width: 1024px) {
.hero-pksh__layout { gap: 32px; padding: 24px 24px 48px; }
.hero-pksh__title { font-size: 40px; }
.hero-pksh__frame { max-width: 360px; }
.hero-pksh__float--1 { right: 0; }
.hero-pksh__float--2 { left: -12px; }
}
/* ============================================================
39c. HERO — Responsive (Mobile < 860px)
============================================================ */
@media (max-width: 860px) {
.page-pksh .hero-pksh { min-height: auto; }
.hero-pksh__layout { grid-template-columns: 1fr; gap: 28px; padding: 16px 16px 48px; }
.hero-pksh__content { gap: 12px; align-items: flex-start; }
.hero-pksh__title { font-size: 32px; max-width: 100%; }
.hero-pksh__subtitle { font-size: 17px; max-width: 100%; }
.hero-pksh__address { font-size: 13px; padding: 6px 14px; }
.hero-pksh__cta { width: 100%; max-width: 100%; font-size: 16px; padding: 16px 24px; min-height: 52px; justify-content: center; text-align: center; }
.hero-pksh__actions { width: 100%; }
.hero-pksh__scarcity { width: 100%; max-width: 100%; text-align: center; font-size: 13px; padding: 8px 16px; box-sizing: border-box; }
.hero-pksh__trust { justify-content: flex-start; gap: 14px; }
.hero-pksh__trust-item { font-size: 12px; }
.hero-pksh__trust-icon { font-size: 14px; }
.hero-pksh__visual { min-height: 320px; order: 1; }
.hero-pksh__frame { max-width: 300px; }
.hero-pksh__float--1 { top: 4%; right: 0; font-size: 12px; padding: 6px 14px; }
.hero-pksh__float--2 { bottom: 22%; left: -8px; font-size: 12px; padding: 6px 14px; }
.hero-pksh__float--3 { bottom: 2%; right: 5%; font-size: 12px; padding: 6px 14px; }
.hero-pksh__dot--1 { top: 10%; left: 4%; }
.hero-pksh__dot--2 { top: 55%; left: 6%; }
.hero-pksh__dot--3 { bottom: 35%; right: 4%; }
.hero-pksh__dot--4 { bottom: 10%; right: 20%; }
}
/* ============================================================
39d. HERO — Small mobile (< 480px)
============================================================ */
@media (max-width: 480px) {
.hero-pksh__title { font-size: 26px; }
.hero-pksh__subtitle { font-size: 15px; }
.hero-pksh__trust { gap: 10px; }
.hero-pksh__trust-item { font-size: 11px; gap: 4px; }
.hero-pksh__visual { min-height: 260px; }
.hero-pksh__frame { max-width: 240px; }
}
/* ============================================================
39e. HERO — hide old mobile banner (safety net)
============================================================ */
.page-pksh .banner__content.mobile {
display: none !important;
}
/* ============================================================
39f. Reduced motion — respect user preference
============================================================ */
@media (prefers-reduced-motion: reduce) {
.hero-pksh__blob,
.hero-pksh__float,
.hero-pksh__scarcity { animation: none !important; }
.hero-pksh__cta { transition: none !important; }
}
/* ============================================================
40. SOCIAL COUNTERS — warm card design (hero-compatible)
Matches hero's light warm aesthetic.
Cards: warm cream bg, purple icon accents, subtle shadow.
============================================================ */
/* ── Section background + spacing consistent with hero padding ── */
/* NARROW section — constrained 900px content. White bg lets cards
(#F5EDE0 with border+shadow) do the visual work. */
.page-pksh .bento[aria-label="Социальное доказательство"] {
background: #FFFFFF;
padding: 32px 32px 40px;
}
@media (max-width: 860px) {
.page-pksh .bento[aria-label="Социальное доказательство"] {
padding: 24px 16px 32px;
}
}
/* ── Grid: 3 columns desktop, 1 col mobile ── */
/* Max-width / margin matches micro-commit card (900px) for vertical alignment. */
.page-pksh .bento[aria-label="Социальное доказательство"] .social-counters {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 16px;
max-width: 900px;
margin: 0 auto;
width: 100%;
}
@media (max-width: 639px) {
.page-pksh .bento[aria-label="Социальное доказательство"] .social-counters {
grid-template-columns: 1fr;
gap: 12px;
}
}
@media (min-width: 640px) and (max-width: 860px) {
.page-pksh .bento[aria-label="Социальное доказательство"] .social-counters {
gap: 14px;
}
}
/* ── Individual counter card ── */
/* Contrast analysis:
Section bg #F5F2EB = hsl(38,22%,94%) — warm cream.
Card bg #F5EDE0 = hsl(35,38%,92%) — 2pp darker.
Border #E4D7C4 — warm tan.
Shadow 0 4px 16px rgba(0,0,0,0.05) — adds depth.
Card well-defined via 3 cues: border, shadow, warm-tone shift (cards are more yellow).
*/
.page-pksh .bento[aria-label="Социальное доказательство"] .social-counter {
display: flex;
align-items: center;
gap: 16px;
padding: 20px 24px;
background: #F5EDE0;
border: 1px solid #E4D7C4;
border-radius: 16px;
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.05);
flex: none;
min-width: 0;
max-width: none;
transition: box-shadow 0.2s ease, transform 0.2s ease, border-color 0.2s ease;
}
.page-pksh .bento[aria-label="Социальное доказательство"] .social-counter:hover {
box-shadow: 0 8px 28px rgba(0, 0, 0, 0.06);
transform: translateY(-2px);
border-color: #D4C4AC;
}
@media (max-width: 860px) {
.page-pksh .bento[aria-label="Социальное доказательство"] .social-counter {
padding: 16px 18px;
gap: 14px;
}
}
/* ── Icon container ── */
.page-pksh .bento[aria-label="Социальное доказательство"] .social-counter__icon {
font-size: 24px;
flex-shrink: 0;
width: 48px;
height: 48px;
display: flex;
align-items: center;
justify-content: center;
background: linear-gradient(135deg, rgba(124, 58, 237, 0.10), rgba(168, 85, 247, 0.10));
border-radius: 12px;
}
@media (max-width: 860px) {
.page-pksh .bento[aria-label="Социальное доказательство"] .social-counter__icon {
width: 42px;
height: 42px;
font-size: 20px;
}
}
/* ── Number (stat value) ── */
.page-pksh .bento[aria-label="Социальное доказательство"] .social-counter__number {
font-family: 'Oswald', sans-serif;
font-size: 28px;
font-weight: 600;
color: #7C3AED;
line-height: 1;
white-space: nowrap;
}
@media (max-width: 860px) {
.page-pksh .bento[aria-label="Социальное доказательство"] .social-counter__number {
font-size: 24px;
}
}
/* ── Label ── */
.page-pksh .bento[aria-label="Социальное доказательство"] .social-counter__label {
font-family: 'Roboto', sans-serif;
font-size: 13px;
color: #64748B;
line-height: 1.35;
margin-top: 4px;
}
@media (max-width: 860px) {
.page-pksh .bento[aria-label="Социальное доказательство"] .social-counter__label {
font-size: 12px;
}
}
/* ============================================================
41. MICRO-COMMITMENT — warm section, white card, animated SVG
Unlike social counters (white bg × cream cards),
this section alternates: warm bg × white card.
Creates vertical rhythm and visual distinction.
SVG ring: slow rotation = calm, not flashy.
============================================================ */
/* NARROW section — constrained 900px content. White bg */
.page-pksh .bento[aria-label="Скачать чек-лист"] {
background: #FFFFFF;
padding: 40px 32px 48px;
}
@media (max-width: 860px) {
.page-pksh .bento[aria-label="Скачать чек-лист"] {
padding: 32px 16px 40px;
}
}
/* ── Full-width sections: warm #F8F4F0 alternation ── */
.page-pksh .bento[aria-label="Как проходят занятия"],
.page-pksh .bento#teachers {
background: #F8F4F0;
}
/* ── Section 6 cards: white on warm, with definition ── */
.page-pksh #how-it-works .bento-card--soft {
background: #FFFFFF;
border: 1.5px solid #EDE8DF;
box-shadow: 0 6px 24px rgba(0, 0, 0, 0.07);
}
.page-pksh #how-it-works .bento-card--soft:hover {
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1);
}
/* ── Card — white bg with warm border + shadow for depth ── */
.page-pksh .bento[aria-label="Скачать чек-лист"] .micro-commit {
display: flex;
align-items: center;
gap: 40px;
max-width: 900px;
margin: 0 auto;
padding: 36px 32px;
background: #FFFFFF;
border: 1.5px solid #DED3C0;
border-radius: 24px;
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.06);
}
@media (max-width: 860px) {
.page-pksh .bento[aria-label="Скачать чек-лист"] .micro-commit {
flex-direction: column;
text-align: center;
padding: 28px 20px;
gap: 24px;
border-width: 1px;
}
}
/* ── Visual — document preview placeholder (replaces circle+ring) ── */
.page-pksh .bento[aria-label="Скачать чек-лист"] .micro-commit__visual {
flex-shrink: 0;
width: 130px;
height: 170px;
position: relative;
display: flex;
align-items: center;
justify-content: center;
background: #FFFFFF;
border: 1.5px solid #DED3C0;
border-radius: 12px;
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.04);
}
@media (max-width: 860px) {
.page-pksh .bento[aria-label="Скачать чек-лист"] .micro-commit__visual {
width: 96px;
height: 126px;
}
}
/* ── Checklist illustration SVG fills the visual container ── */
.page-pksh .micro-commit__svg {
width: 100%;
height: 100%;
display: block;
}
/* ── Content ── */
.page-pksh .bento[aria-label="Скачать чек-лист"] .micro-commit__content {
flex: 1;
}
/* ── Tag "Бесплатно" — purple accent (was orange) ── */
.page-pksh .bento[aria-label="Скачать чек-лист"] .bento-label {
color: #7C3AED;
}
/* ── H2 heading — slightly larger for conviction ── */
.page-pksh .bento[aria-label="Скачать чек-лист"] .bento-h2 {
font-size: 1.75rem;
color: #1E293B;
}
@media (max-width: 860px) {
.page-pksh .bento[aria-label="Скачать чек-лист"] .bento-h2 {
font-size: 1.375rem;
}
}
/* ── Description text ── */
.page-pksh .bento[aria-label="Скачать чек-лист"] .bento-p {
font-size: 1rem;
color: #475569;
line-height: 1.6;
}
/* ── CTA button — accent gradient, enhanced sizing ── */
.page-pksh .bento[aria-label="Скачать чек-лист"] .micro-commit__btn {
margin-top: 8px;
padding: 16px 36px;
font-size: 1rem;
border-radius: 100px;
box-shadow: 0 4px 16px rgba(124, 58, 237, 0.20);
transition: transform 0.2s ease, box-shadow 0.2s ease;
}
.page-pksh .bento[aria-label="Скачать чек-лист"] .micro-commit__btn:hover {
transform: translateY(-2px);
box-shadow: 0 8px 24px rgba(124, 58, 237, 0.30);
}
/* ── Disclaimer — subtle on warm card bg ── */
.page-pksh .bento[aria-label="Скачать чек-лист"] .micro-commit__disclaimer {
font-size: 0.75rem;
color: #94A3B8;
margin: 8px 0 0;
}
/* ============================================================
42. REVIEWS — standalone section (camp-style)
lw-card rendering from Carbon Fields complex field.
Same pattern as .camp-reviews on camp page.
============================================================ */
/* ── Section full-width background ── */
.page-pksh .pksh-reviews {
position: relative;
padding: 80px 32px;
max-width: 1280px;
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);
}
/* ============================================================
44. CONTACTS — как на странице лагеря
============================================================ */
.page-pksh .pksh-contact {
padding: 0;
background: transparent;
box-shadow: none;
}
.page-pksh .pksh-contact__wrapper {
display: flex;
gap: 30px;
align-items: stretch;
}
.page-pksh .pksh-contact__info {
width: 35%;
display: flex;
flex-direction: column;
gap: 8px;
padding: 32px 0;
}
.page-pksh .pksh-contact__subtitle {
font-size: 15px;
font-weight: 700;
line-height: 1.3;
color: var(--slate-500, #64748B);
text-transform: uppercase;
letter-spacing: 0.06em;
margin-top: 12px;
}
.page-pksh .pksh-contact__subtitle:first-child {
margin-top: 0;
}
.page-pksh .pksh-contact__value {
font-size: clamp(17px, 2vw, 22px);
font-weight: 600;
line-height: 1.3;
color: var(--accent, #7C3AED);
text-decoration: none;
}
.page-pksh .pksh-contact__value:hover {
text-decoration: underline;
}
.page-pksh .pksh-contact__social {
display: flex;
flex-wrap: wrap;
gap: 12px;
}
.page-pksh .pksh-contact__social-link {
display: inline-flex;
align-items: center;
font-size: clamp(16px, 1.8vw, 20px);
font-weight: 600;
color: var(--accent, #7C3AED);
text-decoration: none;
transition: color 0.2s;
position: relative;
}
.page-pksh .pksh-contact__social-link:hover {
color: var(--accent-hover, #6D28D9);
}
.page-pksh .pksh-contact__social-link + .pksh-contact__social-link::before {
content: '·';
margin-right: 12px;
color: var(--slate-400, #94A3B8);
font-weight: 400;
}
.page-pksh .pksh-contact__map {
flex: 1;
border-radius: 24px;
overflow: hidden;
min-height: 400px;
box-shadow: 0 4px 20px rgba(0,0,0,0.08);
}
@media (max-width: 768px) {
.page-pksh .pksh-contact__wrapper {
flex-direction: column-reverse;
}
.page-pksh .pksh-contact__info {
width: 100%;
padding: 0;
}
.page-pksh .pksh-contact__map {
min-height: 280px;
margin: 0 -20px;
border-radius: 0;
box-shadow: none;
}
}
/* ============================================================
45. FAQ — как на странице лагеря (pksh-faq)
============================================================ */
.page-pksh .pksh-faq {
padding: 0;
background: transparent;
box-shadow: none;
}
.page-pksh .pksh-faq__wrapper {
display: flex;
gap: 30px;
}
.page-pksh .pksh-faq__col {
width: 50%;
display: flex;
flex-direction: column;
gap: 0;
border-top: 1px solid var(--slate-200, #E2E8F0);
}
.page-pksh .pksh-faq .box__accordion {
position: relative;
cursor: pointer;
border-bottom: 1px solid var(--slate-200, #E2E8F0);
border-radius: 0;
}
.page-pksh .pksh-faq .box__accordion_label {
position: relative;
padding: 20px 0;
cursor: pointer;
display: flex;
align-items: center;
gap: 20px;
justify-content: space-between;
padding-left: 0;
}
.page-pksh .pksh-faq .box__accordion_label span {
font-size: clamp(17px, 2vw, 21px);
line-height: 1.3;
font-weight: 600;
color: var(--navy, #1c2b2d);
}
.page-pksh .pksh-faq .box__accordion_label svg {
width: 36px;
height: 36px;
padding: 8px;
border-radius: 50%;
background: var(--accent, #7C3AED);
stroke: #fff;
transition: background 0.2s;
flex-shrink: 0;
}
.page-pksh .pksh-faq .box__accordion_label svg g {
stroke: #fff;
}
.page-pksh .pksh-faq .active .box__accordion_label svg {
rotate: 45deg;
background: var(--accent-hover, #6D28D9);
}
.page-pksh .pksh-faq .box__accordion_content {
display: flex;
position: relative;
overflow: hidden;
max-height: 0;
transition: max-height 0.3s;
gap: 20px;
align-items: center;
}
.page-pksh .pksh-faq .box__accordion_content-text {
display: flex;
flex-direction: column;
gap: 10px;
font-size: 16px;
line-height: 1.6;
color: var(--slate-600, #475569);
padding-bottom: 20px;
}
@media (max-width: 768px) {
.page-pksh .pksh-faq__wrapper {
flex-direction: column;
gap: 0;
}
.page-pksh .pksh-faq__col {
width: 100%;
border-top: none;
}
.page-pksh .pksh-faq__col:first-child {
border-top: 1px solid var(--slate-200, #E2E8F0);
}
}
/* ============================================================
46. TEACHERS — camp-style cards
============================================================ */
.page-pksh .pksh-section--teachers {
background: var(--bg-soft-2026, #F8FAFC);
}
.pksh-teachers__wrapper {
display: flex;
flex-wrap: wrap;
gap: 24px;
justify-content: center;
}
.pksh-teachers__item {
width: calc(25% - 18px);
min-width: 220px;
max-width: 280px;
}
.pksh-teachers__card {
background: #fff;
border-radius: 20px;
overflow: hidden;
box-shadow: 0 2px 12px rgba(0,0,0,0.06);
transition: transform 0.25s ease, box-shadow 0.25s ease;
display: flex;
flex-direction: column;
height: 100%;
}
.pksh-teachers__card:hover {
transform: translateY(-4px);
box-shadow: 0 8px 24px rgba(0,0,0,0.10);
}
.pksh-teachers__card-top {
background: linear-gradient(135deg, rgba(124, 58, 237, 0.05), rgba(139, 92, 246, 0.08));
display: flex;
justify-content: center;
padding: 24px 20px 16px;
}
.pksh-teachers__photo {
width: 120px;
height: 120px;
border-radius: 50%;
object-fit: cover;
border: 4px solid #fff;
box-shadow: 0 4px 12px rgba(0,0,0,0.08);
}
.pksh-teachers__card-body {
padding: 12px 20px 20px;
display: flex;
flex-direction: column;
gap: 6px;
flex: 1;
}
.pksh-teachers__name {
font-size: 1.0625rem;
font-weight: 700;
line-height: 1.3;
color: var(--navy, #0F172A);
text-align: center;
margin: 0;
}
.pksh-teachers__subj {
font-size: 0.8125rem;
line-height: 1.4;
color: var(--accent, #7C3AED);
text-align: center;
font-weight: 600;
margin: 0;
}
.pksh-teachers__about {
font-size: 0.8125rem;
line-height: 1.5;
color: var(--slate-600, #475569);
text-align: center;
margin: 2px 0 0;
}
@media (max-width: 768px) {
.pksh-teachers__item {
width: calc(50% - 12px);
min-width: 0;
max-width: none;
}
.pksh-teachers__wrapper {
gap: 16px;
}
.pksh-teachers__card-top {
padding: 20px 16px 12px;
}
.pksh-teachers__photo {
width: 100px;
height: 100px;
}
.pksh-teachers__card-body {
padding: 10px 16px 16px;
gap: 4px;
}
.pksh-teachers__name {
font-size: 1rem;
}
.pksh-teachers__subj,
.pksh-teachers__about {
font-size: 0.75rem;
}
}
@media (max-width: 480px) {
.pksh-teachers__item {
width: 100%;
max-width: 280px;
}
}
@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;
}