/**
* Snippet Name: Echomops Product Design (em-wrap)
* Purpose: Load product design CSS only on product pages that contain em-wrap markup.
* Usage: Paste into WPCode (PHP snippet) or include as a tiny must-use plugin.
*/
if (!defined('ABSPATH')) {
exit;
}
/**
* Check whether CSS should be loaded on this request.
*/
if (!function_exists('em_should_load_product_design_css')) {
function em_should_load_product_design_css()
{
if (!function_exists('is_product') || !is_product()) {
return false;
}
$post = get_post();
if (!$post || empty($post->post_content)) {
return false;
}
// Only load on product descriptions that explicitly use em-wrap.
return strpos($post->post_content, '
* { direction: ltr; }
.em-chapter-img {
overflow: hidden;
background: #dbd6ce;
min-height: 300px;
}
.em-chapter-img img {
width: 100%; height: 100%;
object-fit: cover;
display: block;
transition: transform 0.5s cubic-bezier(0.25,0.46,0.45,0.94);
}
.em-chapter:hover .em-chapter-img img { transform: scale(1.03); }
.em-chapter-body {
background: var(--em-dark);
padding: 44px 40px;
display: flex;
flex-direction: column;
justify-content: center;
}
.em-chapter-body--light { background: var(--em-warm); }
.em-chapter-body .em-over { color: var(--em-copper); }
.em-chapter-body--light .em-over { color: var(--em-copper-dim); }
.em-chapter h3 {
font-size: clamp(17px, 2.2vw, 24px);
font-weight: 800;
letter-spacing: -0.03em;
line-height: 1.1;
margin-bottom: 14px;
color: var(--em-white);
}
.em-chapter-body--light h3 { color: var(--em-ink); }
.em-chapter p { font-size: 14px; line-height: 1.75; color: #9ca3af; max-width: 42ch; }
.em-chapter-body--light p { color: #4b5563; }
.em-specs {
margin-bottom: 56px;
border-top: 3px solid var(--em-copper);
padding-top: 28px;
}
.em-specs-title {
font-size: 11px;
font-weight: 600;
letter-spacing: 0.14em;
text-transform: uppercase;
color: var(--em-copper);
margin-bottom: 6px;
display: block;
}
.em-specs-h2 {
font-size: clamp(18px, 2.5vw, 26px);
font-weight: 900;
letter-spacing: -0.04em;
color: var(--em-ink);
margin-bottom: 28px;
}
.em-specs-group-label {
font-size: 10.5px;
font-weight: 700;
letter-spacing: 0.12em;
text-transform: uppercase;
color: var(--em-copper);
padding: 18px 0 8px;
display: block;
border-top: 1px solid var(--em-rule);
margin-top: 8px;
}
.em-specs-group-label:first-of-type { border-top: none; margin-top: 0; padding-top: 0; }
.em-specs-table { width: 100%; border-collapse: collapse; }
.em-specs-table tr { border-bottom: 1px solid var(--em-rule); }
.em-specs-table tr:last-child { border-bottom: none; }
.em-specs-table td {
padding: 10px 0;
font-size: 14px;
vertical-align: top;
}
.em-specs-table td:first-child {
width: 44%;
padding-right: 16px;
color: var(--em-muted);
font-weight: 400;
}
.em-specs-table td:last-child {
color: var(--em-ink);
font-weight: 600;
font-variant-numeric: tabular-nums;
}
.em-faq {
margin-bottom: 56px;
border-top: 3px solid var(--em-copper);
padding-top: 28px;
}
.em-faq-title {
font-size: 11px;
font-weight: 600;
letter-spacing: 0.14em;
text-transform: uppercase;
color: var(--em-copper);
margin-bottom: 6px;
display: block;
}
.em-faq-h2 {
font-size: clamp(17px, 2.2vw, 22px);
font-weight: 900;
letter-spacing: -0.03em;
color: var(--em-ink);
margin-bottom: 24px;
}
.em-faq-item { border-bottom: 1px solid var(--em-rule); }
.em-faq-q {
padding: 15px 0;
font-size: 15px;
font-weight: 600;
color: var(--em-ink);
cursor: pointer;
display: flex;
justify-content: space-between;
align-items: center;
gap: 14px;
user-select: none;
letter-spacing: -0.01em;
}
.em-faq-q::after {
content: '+';
font-size: 20px;
font-weight: 300;
color: var(--em-copper);
flex-shrink: 0;
line-height: 1;
}
.em-faq-item.open .em-faq-q::after { content: '\2212'; }
.em-faq-item.open .em-faq-q { color: var(--em-copper-dim); }
.em-faq-a {
display: none;
padding: 0 0 16px;
font-size: 14px;
color: var(--em-muted);
line-height: 1.75;
max-width: 70ch;
}
.em-faq-item.open .em-faq-a { display: block; }
.em-source {
border-top: 1px solid var(--em-rule);
padding-top: 14px;
margin-top: 4px;
}
.em-source small {
font-size: 11.5px;
color: #9ca3af;
line-height: 1.7;
display: block;
}
.em-source a { color: var(--em-copper-dim); text-decoration: none; }
.em-source a:hover { text-decoration: underline; }
@media (max-width: 820px) {
.em-intro { grid-template-columns: 1fr; min-height: auto; }
.em-intro-text { padding: 28px 24px 32px; order: 2; }
.em-intro-image { min-height: 240px; order: 1; }
.em-chapter { grid-template-columns: 1fr; }
.em-chapter:nth-child(even) { direction: ltr; }
.em-chapter-img { min-height: 200px; }
.em-features-grid { grid-template-columns: 1fr 1fr; }
.em-feature { border-right: none; padding-right: 0; margin-right: 0; border-bottom: 1px solid var(--em-rule); padding-bottom: 16px; margin-bottom: 4px; }
.em-feature:last-child { border-bottom: none; }
}
@media (max-width: 520px) {
.em-intro h2 { font-size: 22px; }
.em-stats { flex-wrap: wrap; }
.em-stat { flex: 0 0 48%; }
.em-features-grid { grid-template-columns: 1fr; }
}
CSS;
echo '\n";
}
}
add_action('wp_head', 'em_print_product_design_css', 25);