Autosave: 20260325-110304

This commit is contained in:
Flatlogic Bot 2026-03-25 11:03:04 +00:00
parent 3e52ce7bf6
commit cf38ce4e13
2 changed files with 267 additions and 15 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 204 KiB

View File

@ -1754,6 +1754,200 @@ body.coaching-mvp-active .coach-proof-band > .wp-block-group__inner-container {
font-size: .95rem; font-size: .95rem;
margin-bottom: .7rem; margin-bottom: .7rem;
} }
.coach-social-proof-section {
position: relative;
width: 100%;
margin-top: clamp(1.4rem, 3vw, 2.4rem);
margin-bottom: clamp(1.2rem, 2.6vw, 2rem);
padding: clamp(3.1rem, 6vw, 5rem) 0;
background: linear-gradient(180deg, rgba(255,255,255,.98), rgba(248,249,246,.98));
border-top: 1px solid rgba(17,27,51,.05);
border-bottom: 1px solid rgba(17,27,51,.05);
}
.coach-social-proof-section::before {
content: "";
position: absolute;
inset: 0;
background:
radial-gradient(circle at 12% 18%, rgba(95,45,255,.06), transparent 22%),
radial-gradient(circle at 88% 14%, rgba(0,184,169,.05), transparent 18%),
radial-gradient(circle at 82% 84%, rgba(255,159,28,.06), transparent 22%);
pointer-events: none;
}
.coach-social-proof-inner {
position: relative;
z-index: 1;
width: min(calc(100% - (var(--coach-page-gutter) * 2)), var(--coach-content-max));
max-width: var(--coach-content-max);
margin: 0 auto;
}
.coach-social-proof-header {
display: grid;
grid-template-columns: minmax(0, 1fr) auto;
gap: 1.2rem;
align-items: end;
margin-bottom: clamp(1.4rem, 3vw, 2rem);
}
.coach-social-proof-copy {
max-width: 42rem;
}
.coach-social-proof-copy .coach-eyebrow {
background: rgba(17,27,51,.04);
border-color: rgba(17,27,51,.08);
color: rgba(17,27,51,.76);
}
.coach-social-proof-copy h2 {
margin: .75rem 0 .7rem;
font-size: clamp(2.15rem, 4vw, 3.75rem);
line-height: .98;
letter-spacing: -.04em;
color: #14142b;
}
.coach-social-proof-copy p {
margin: 0;
max-width: 35rem;
font-size: 1rem;
line-height: 1.7;
color: rgba(32,45,68,.78);
}
.coach-social-proof-pill {
justify-self: end;
display: inline-flex;
align-items: center;
gap: .8rem;
padding: .9rem 1.05rem;
border-radius: 999px;
background: rgba(255,255,255,.9);
border: 1px solid rgba(17,27,51,.08);
box-shadow: 0 16px 36px rgba(9,18,40,.08);
color: #171d31;
white-space: nowrap;
}
.coach-social-proof-pill strong {
font-size: 1rem;
line-height: 1;
}
.coach-social-proof-pill span {
font-size: .84rem;
font-weight: 700;
letter-spacing: .04em;
text-transform: uppercase;
color: rgba(23,29,49,.62);
}
.coach-social-proof-grid {
display: grid;
gap: 1rem;
grid-template-columns: 1.22fr .78fr;
grid-template-areas:
"primary secondary"
"tertiary quaternary";
align-items: stretch;
}
.coach-social-proof-card {
position: relative;
display: flex;
flex-direction: column;
justify-content: space-between;
min-height: 100%;
padding: clamp(1.2rem, 2.2vw, 1.65rem);
border-radius: 30px;
background: linear-gradient(180deg, #f5f5f1 0%, #f1f1ed 100%);
border: 1px solid rgba(17,27,51,.06);
box-shadow: 0 18px 38px rgba(15,23,42,.05);
overflow: hidden;
}
.coach-social-proof-card::before {
content: "";
position: absolute;
right: 1rem;
top: .45rem;
font-size: clamp(4rem, 8vw, 6rem);
line-height: 1;
color: rgba(17,27,51,.07);
font-family: Georgia, serif;
}
.coach-social-proof-card:nth-child(1) { grid-area: primary; min-height: 340px; }
.coach-social-proof-card:nth-child(2) { grid-area: secondary; min-height: 250px; }
.coach-social-proof-card:nth-child(3) { grid-area: tertiary; min-height: 220px; }
.coach-social-proof-card:nth-child(4) { grid-area: quaternary; min-height: 220px; }
.coach-social-proof-card .coach-rating {
margin-bottom: .95rem;
letter-spacing: .22em;
}
.coach-social-proof-quote {
margin: 0 0 1.3rem;
max-width: 42ch;
font-size: clamp(1rem, 1.35vw, 1.18rem);
line-height: 1.7;
color: rgba(17,27,51,.88);
}
.coach-social-proof-card:nth-child(1) .coach-social-proof-quote {
font-size: clamp(1.1rem, 1.5vw, 1.32rem);
line-height: 1.72;
}
.coach-social-proof-footer {
display: flex;
flex-wrap: wrap;
align-items: center;
justify-content: space-between;
gap: .7rem 1rem;
margin-top: auto;
}
.coach-social-proof-person strong {
display: block;
font-size: 1rem;
color: #171d31;
}
.coach-social-proof-person span {
display: block;
margin-top: .2rem;
font-size: .88rem;
line-height: 1.45;
color: rgba(32,45,68,.68);
}
.coach-social-proof-tag {
display: inline-flex;
align-items: center;
padding: .42rem .72rem;
border-radius: 999px;
background: rgba(255,255,255,.74);
border: 1px solid rgba(17,27,51,.07);
color: rgba(17,27,51,.66);
font-size: .77rem;
font-weight: 800;
letter-spacing: .06em;
text-transform: uppercase;
}
@media (max-width: 900px) {
.coach-social-proof-header {
grid-template-columns: 1fr;
align-items: start;
}
.coach-social-proof-pill {
justify-self: start;
}
.coach-social-proof-grid {
grid-template-columns: 1fr;
grid-template-areas: "primary" "secondary" "tertiary" "quaternary";
}
.coach-social-proof-card:nth-child(1),
.coach-social-proof-card:nth-child(2),
.coach-social-proof-card:nth-child(3),
.coach-social-proof-card:nth-child(4) {
min-height: 0;
}
}
@media (max-width: 600px) {
.coach-social-proof-section {
padding: 2.5rem 0;
}
.coach-social-proof-card {
border-radius: 24px;
}
.coach-social-proof-pill {
white-space: normal;
}
}
.coach-cta-band { .coach-cta-band {
padding: 1.85rem; padding: 1.85rem;
background: background:
@ -3094,6 +3288,26 @@ function coaching_mvp_home_content() {
</div></div> </div></div>
<!-- /wp:group --> <!-- /wp:group -->
<!-- wp:group {"align":"full","className":"coach-social-proof-section"} -->
<div class="wp-block-group alignfull coach-social-proof-section"><div class="wp-block-group__inner-container">
<!-- wp:html -->
<div class="coach-social-proof-inner">
<div class="coach-social-proof-header">
<div class="coach-social-proof-copy">
<p class="coach-eyebrow">03 / Social proof</p>
<h2>Voices of Impact.</h2>
<p>Real client reflections, arranged as a stronger design-led proof section instead of a simple list keeping the homepage feeling premium and calm.</p>
</div>
<div class="coach-social-proof-pill"><strong>5.0 ★★★★★</strong><span>Trusted client feedback</span></div>
</div>
</div>
<!-- /wp:html -->
<!-- wp:shortcode -->
[coaching_featured_testimonials limit="4"]
<!-- /wp:shortcode -->
</div></div>
<!-- /wp:group -->
<!-- wp:group {"className":"coach-section coach-video-section","layout":{"type":"constrained"} } --> <!-- wp:group {"className":"coach-section coach-video-section","layout":{"type":"constrained"} } -->
<div class="wp-block-group coach-section coach-video-section"><div class="wp-block-group__inner-container"> <div class="wp-block-group coach-section coach-video-section"><div class="wp-block-group__inner-container">
<!-- wp:paragraph {"className":"coach-badge"} --> <!-- wp:paragraph {"className":"coach-badge"} -->
@ -3254,20 +3468,6 @@ function coaching_mvp_home_content() {
</div></div> </div></div>
<!-- /wp:group --> <!-- /wp:group -->
<!-- wp:group {"className":"coach-section","layout":{"type":"constrained"}} -->
<div class="wp-block-group coach-section"><div class="wp-block-group__inner-container">
<!-- wp:paragraph {"className":"coach-badge"} -->
<p class="coach-badge">Client reflections</p>
<!-- /wp:paragraph -->
<!-- wp:heading -->
<h2 class="wp-block-heading">What clients often take away from this work</h2>
<!-- /wp:heading -->
<!-- wp:shortcode -->
[coaching_testimonials limit="3"]
<!-- /wp:shortcode -->
</div></div>
<!-- /wp:group -->
<!-- wp:group {"className":"coach-section","layout":{"type":"constrained"}} --> <!-- wp:group {"className":"coach-section","layout":{"type":"constrained"}} -->
<div class="wp-block-group coach-section"><div class="wp-block-group__inner-container"> <div class="wp-block-group coach-section"><div class="wp-block-group__inner-container">
<!-- wp:paragraph {"className":"coach-badge"} --> <!-- wp:paragraph {"className":"coach-badge"} -->
@ -3973,6 +4173,10 @@ function coaching_mvp_services_shortcode($atts = []) {
} }
add_shortcode('coaching_services', 'coaching_mvp_services_shortcode'); add_shortcode('coaching_services', 'coaching_mvp_services_shortcode');
function coaching_mvp_public_testimonial_name($title) {
return trim((string) preg_replace('/\s+—\s+Sample$/u', '', (string) $title));
}
function coaching_mvp_testimonials_shortcode($atts = []) { function coaching_mvp_testimonials_shortcode($atts = []) {
$atts = shortcode_atts(['limit' => 6], $atts, 'coaching_testimonials'); $atts = shortcode_atts(['limit' => 6], $atts, 'coaching_testimonials');
$items = get_posts([ $items = get_posts([
@ -3992,7 +4196,7 @@ function coaching_mvp_testimonials_shortcode($atts = []) {
echo '<article class="coach-testimonial-card">'; echo '<article class="coach-testimonial-card">';
echo '<div class="coach-rating">★★★★★</div>'; echo '<div class="coach-rating">★★★★★</div>';
echo '<blockquote><p>' . esc_html(wp_strip_all_tags($item->post_content)) . '</p></blockquote>'; echo '<blockquote><p>' . esc_html(wp_strip_all_tags($item->post_content)) . '</p></blockquote>';
echo '<h3>' . esc_html(get_the_title($item)) . '</h3>'; echo '<h3>' . esc_html(coaching_mvp_public_testimonial_name(get_the_title($item))) . '</h3>';
if ($role) { if ($role) {
echo '<div class="coach-testimonial-meta">' . esc_html($role) . '</div>'; echo '<div class="coach-testimonial-meta">' . esc_html($role) . '</div>';
} }
@ -4003,6 +4207,54 @@ function coaching_mvp_testimonials_shortcode($atts = []) {
} }
add_shortcode('coaching_testimonials', 'coaching_mvp_testimonials_shortcode'); add_shortcode('coaching_testimonials', 'coaching_mvp_testimonials_shortcode');
function coaching_mvp_featured_testimonials_shortcode($atts = []) {
$atts = shortcode_atts(['limit' => 4], $atts, 'coaching_featured_testimonials');
$items = get_posts([
'post_type' => 'testimonial',
'post_status' => 'publish',
'numberposts' => (int) $atts['limit'],
'orderby' => 'menu_order date',
'order' => 'ASC',
]);
if (!$items) {
return '<p>No testimonials yet.</p>';
}
ob_start();
echo '<div class="coach-social-proof-grid">';
foreach ($items as $item) {
$role = trim((string) get_post_meta($item->ID, '_testimonial_role', true));
$name = coaching_mvp_public_testimonial_name(get_the_title($item));
$tag = '';
if ($role !== '') {
$parts = array_filter(array_map('trim', explode(',', $role)));
if ($parts) {
$tag = strtoupper($parts[0]);
}
}
echo '<article class="coach-social-proof-card">';
echo '<div>';
echo '<div class="coach-rating">★★★★★</div>';
echo '<p class="coach-social-proof-quote">“' . esc_html(wp_strip_all_tags($item->post_content)) . '”</p>';
echo '</div>';
echo '<div class="coach-social-proof-footer">';
echo '<div class="coach-social-proof-person"><strong>' . esc_html($name) . '</strong>';
if ($role !== '') {
echo '<span>' . esc_html($role) . '</span>';
}
echo '</div>';
if ($tag !== '') {
echo '<span class="coach-social-proof-tag">' . esc_html($tag) . '</span>';
}
echo '</div>';
echo '</article>';
}
echo '</div>';
return ob_get_clean();
}
add_shortcode('coaching_featured_testimonials', 'coaching_mvp_featured_testimonials_shortcode');
function coaching_mvp_faq_shortcode($atts = []) { function coaching_mvp_faq_shortcode($atts = []) {
$atts = shortcode_atts(['limit' => 6], $atts, 'coaching_faq'); $atts = shortcode_atts(['limit' => 6], $atts, 'coaching_faq');
$items = get_posts([ $items = get_posts([