/*
 * Sonoterapia child — app.css: HOJA DE TOKENS ÚNICA (consolida el ex components.css).
 * Es la única fuente de estilo para lo que theme.json no expresa: grid de servicios,
 * tarjeta, hero, feature, mecanismo, facilitador, reviews-head, presencia-medios,
 * canal WhatsApp, footer oscuro + newsletter compacto. Reemplaza al skin mu-plugin
 * (retirado con sono_ds_activo=0). TODO lee var(--wp--preset--*) con fallback 1:1;
 * cero CSS por sección divergente, cero inline en contenido.
 * Fuente de los valores: web-design-system.md §2/§4 (ex mu-plugin design-system v1.14).
 */

/* Alias locales: token del tema con fallback al valor exacto del skin. */
:root{
  --sc-ink: var(--wp--preset--color--ink, #111517);
  --sc-ink-2: var(--wp--preset--color--ink-2, #4b5155);
  --sc-muted: var(--wp--preset--color--muted, #7d8489);
  --sc-surface: var(--wp--preset--color--surface, #ffffff);
  --sc-line: var(--wp--preset--color--line, #e0e3e5);
  --sc-band: var(--wp--preset--color--band, #f1f3f4);
  --sc-accent: var(--wp--preset--color--accent, #8a6a2e);
  --sc-accent-soft: var(--wp--preset--color--accent-soft, #f2ead6);
  --sc-metal-ink: var(--wp--preset--color--metal-ink, #241d0d);
  --sc-metal: var(--wp--preset--gradient--metal, linear-gradient(135deg,#e7cd8f,#c69a4b 45%,#916f30));
  --sc-footer-bg: var(--wp--preset--color--footer-bg, #14181a);
  --sc-footer-ink: var(--wp--preset--color--footer-ink, #dfe3e5);
  --sc-accent-on-dark: var(--wp--preset--color--accent-on-dark, #f0d79a);
  --sc-muted-on-dark: var(--wp--preset--color--muted-on-dark, #8a9297);
  --sc-disp: var(--wp--preset--font-family--display, "Oswald", Impact, "Arial Narrow", sans-serif);
  --sc-body: var(--wp--preset--font-family--body, "Roboto", system-ui, -apple-system, sans-serif);
  --sc-wide: 1340px;
}

/* Elementos compartidos migrados del skin (eyebrow + enlace flecha). */
.sono-eyebrow{font-family:var(--sc-body);font-size:.75rem;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:var(--sc-accent);margin:0 0 12px}
.sono-link-arrow{font-family:var(--sc-body);font-weight:700;letter-spacing:.04em;text-transform:uppercase;font-size:.82rem;color:var(--sc-accent);text-decoration:none;border-bottom:2px solid transparent}
.sono-link-arrow:hover{border-bottom-color:var(--sc-accent)}

/* ===== Grid de servicios ===== */
/* El gap lo da el layout nativo (blockGap del grupo); acá va solo el fallback. */
.sono-fmt{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--wp--style--block-gap,20px);max-width:var(--sc-wide);margin-inline:auto}
@media(max-width:900px){.sono-fmt{grid-template-columns:repeat(2,1fr)}}
@media(max-width:600px){.sono-fmt{grid-template-columns:1fr}}
/* Vence :root :where(.is-layout-flow) > * del core cuando el bloque llega como flow/constrained: el ritmo lo da blockGap, no el margin del core. */
.sono-fmt>*,.sono-card__body>*,.sono-head>*,.sono-channel>*,.sono-hero__inner>*{margin-block:0}

/* ===== Tarjeta de servicio (crux · imagen editable) ===== */
.sono-card{display:flex;flex-direction:column;background:var(--sc-surface);border:1px solid var(--sc-line);overflow:hidden;transition:transform .16s ease,box-shadow .16s ease}
.sono-card:hover{transform:translateY(-4px);box-shadow:0 20px 44px -16px rgba(17,21,23,.28)}
/* La imagen es un core/image (figure>img); el ratio 4:3 va sobre el <img>. */
.sono-card__img{margin:0;aspect-ratio:4/3;overflow:hidden}
.sono-card__img img{width:100%;height:100%;object-fit:cover;display:block}
.sono-card__body{display:flex;flex-direction:column;gap:16px;padding:24px;flex:1}
.sono-card__body h3,.sono-card__body .wp-block-heading{font-family:var(--sc-disp);font-size:1.4rem;text-transform:uppercase;margin:0;letter-spacing:.02em;line-height:1.1}
.sono-card__promise{color:var(--sc-ink-2);font-size:.95rem;margin:0}
.sono-meta{display:flex;flex-wrap:wrap;gap:5px 14px;font-size:.82rem;color:var(--sc-muted);margin:0}
.sono-price{font-family:var(--sc-disp);font-size:1.5rem;color:var(--sc-ink);letter-spacing:.02em}
.sono-price small{font-family:var(--sc-body);font-size:.78rem;color:var(--sc-muted)}
.sono-card .wp-block-button.is-style-outline{align-self:flex-start}

/* ===== Hero (2º pattern simple) ===== */
.sono-hero{position:relative;min-height:74vh;display:flex;align-items:flex-end;overflow:hidden}
/* hero al ancho de CONTENIDO (1160): el borde izq del eyebrow/H1/sub se alinea con el cuerpo
   de las secciones. padding-inline = max(gutter, (100%-contentSize)/2) → centra a 1160 en desktop
   y deja gutter en móvil. Alineación IZQUIERDA intacta. */
/* Cover del hero: contentPosition "bottom left" encoge el inner-container (shrink-to-fit, align-items:flex-start)
   y lo pega a la izquierda -> el padding-max de abajo no puede centrar (su 100% es esa caja chica). Forzamos el
   inner-container a ANCHO COMPLETO: asi la caja de contenido se centra a wide-size (1340) como el cuerpo
   (columnas alignwide), con el texto a la izquierda. Default para TODO el sitio (hero SIMPLE, sin grupos anidados
   ni contentPosition especial). El contenido sigue abajo. */
.sono-hero .wp-block-cover__inner-container{align-self:stretch!important;width:100%!important;max-width:none!important;margin-inline:0!important;display:flex;flex-direction:column;justify-content:flex-end}
.sono-hero .sono-hero__inner{max-width:none;width:100%;margin-inline:auto;padding-block:clamp(40px,6vw,72px);padding-inline:max(clamp(20px,5vw,40px),(100% - var(--wp--style--global--wide-size,1340px)) / 2)}
.sono-hero .sono-eyebrow{font-family:var(--sc-body);font-size:.75rem;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:var(--sc-accent-on-dark);text-shadow:0 1px 12px rgba(10,15,17,.7);margin:0 0 12px}
.sono-hero h1,.sono-hero .wp-block-heading{font-family:var(--sc-disp);text-transform:uppercase;letter-spacing:.02em;color:#fff;text-shadow:0 1px 20px rgba(10,15,17,.5);margin:0;font-size:clamp(2.6rem,7vw,3.8rem);line-height:1.02;max-width:840px}
.sono-hero .sono-hero__inner{display:flex;flex-direction:column;gap:16px;align-items:flex-start}
/* Hero: contenido a la IZQUIERDA dentro de la caja (ancho amplio 1340). El grupo interno es
   layout:constrained -> WP mete margin-inline:auto en cada hijo y los CENTRA (se nota en el H1 con
   max-width). Lo anulamos para alinear a la izquierda, consistente con la maqueta y el cuerpo editorial. */
.sono-hero .sono-hero__inner>*{margin-inline:0!important}
.sono-hero__sub{color:#fff;font-size:18px;max-width:54ch;margin:0;text-shadow:0 1px 14px rgba(10,15,17,.6)}
.sono-hero__cta{margin-top:6px;gap:12px}
/* Hero sobre imagen oscura: primario blanco/tinta, secundario outline blanco. */
/* Botón del hero: font-size chico + nítido (la maqueta usa .82rem; sin esto hereda 17px y se ve grande/envuelve). */
.sono-hero .wp-block-button__link{font-size:.82rem;line-height:1.15;letter-spacing:.08em}
.sono-hero .wp-block-button.is-style-fill .wp-block-button__link{background:#fff;color:var(--sc-ink);border-color:#fff}
.sono-hero .wp-block-button.is-style-fill .wp-block-button__link:hover{background:rgba(255,255,255,.9);color:var(--sc-ink)}
.sono-hero .wp-block-button.is-style-outline .wp-block-button__link{color:#fff;border:1.5px solid #fff;background:transparent}
.sono-hero .wp-block-button.is-style-outline .wp-block-button__link:hover{background:rgba(255,255,255,.12);color:#fff}
.sono-hero__social{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;margin:6px 0 0;font-family:var(--sc-body);font-size:.92rem;color:rgba(255,255,255,.92);text-shadow:0 1px 14px rgba(10,15,17,.6)}
/* Enlace dentro de la fila social (ej. autor → bio): hereda el blanco on-photo; el acento no contrasta sobre la foto. */
.sono-hero__social a,.sono-hero__social a:hover,.sono-hero__social a:focus{color:inherit;text-decoration:underline;text-underline-offset:3px}
.sono-hero__stars{color:var(--sc-accent-on-dark);letter-spacing:1px}
.sono-hero__dot{opacity:.5}
/* hero-fix (2026-09): overlay reforzado para legibilidad del texto sobre foto (home + 103),
   sin depender del dimRatio de cada instancia. Degradado izq→der + inferior; texto por encima. */
.sono-hero::before{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;background:linear-gradient(90deg,rgba(10,15,17,.6),rgba(10,15,17,.12) 55%,transparent),linear-gradient(180deg,transparent 45%,rgba(10,15,17,.5))}
.sono-hero .wp-block-cover__inner-container{position:relative;z-index:2}
.sono-hero .sono-hero__inner{position:relative;z-index:2}
/* hero-fix: sin gap blanco hero -> sección siguiente (conecta a ras, home + 103) */
.sono-hero{margin-top:0!important;margin-bottom:0!important}
.sono-hero+*{margin-top:0!important}

/* ===== Feature destacado — Comunitario (mockup .sono-feature) ===== */
.sono-feature{display:flex;gap:0!important;align-items:stretch;border:1px solid var(--sc-line);background:var(--sc-surface);max-width:var(--sc-wide);margin-inline:auto;overflow:hidden;transition:transform .16s ease,box-shadow .16s ease}
.sono-feature:hover{transform:translateY(-4px);box-shadow:0 20px 44px -16px rgba(17,21,23,.28)}
.sono-feature.are-vertically-aligned-center{align-items:stretch!important}
.sono-feature>.wp-block-column,.sono-feature>.wp-block-column.is-vertically-aligned-center{align-self:stretch!important}
.sono-feature>.wp-block-column{padding:0;margin:0;box-sizing:border-box}
/* Columna-imagen: la foto es un core/image (figure>img) EDITABLE; el tag oro va encima. */
/* d4: la imagen NO fija la altura — cubre en absoluto la columna (que estira a la altura de la columna de texto). */
.sono-feature__img{position:relative}
.sono-feature__img .wp-block-image,.sono-feature__pic{position:absolute;inset:0;margin:0}
.sono-feature__img img{width:100%!important;height:100%!important;object-fit:cover;display:block}
.sono-tag{position:absolute;top:0;left:0;z-index:3;background:var(--sc-metal);color:var(--sc-metal-ink);font-family:var(--sc-disp);font-size:.8rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;padding:6px 22px 6px 14px;margin:0;clip-path:polygon(0 0,100% 0,calc(100% - 14px) 100%,0 100%)}
/* Cuerpo con padding (botón no pegado a la imagen) + orden mockup */
.sono-feature__col{padding:24px!important;display:flex;flex-direction:column;gap:12px;justify-content:flex-start}
.sono-feature__col h3,.sono-feature__col .wp-block-heading{font-family:var(--sc-disp);font-size:1.5rem;text-transform:uppercase;margin:0;letter-spacing:.02em}
.sono-feature__col .wp-block-button__link{display:inline-block}
/* Línea "Próximo: <fecha>" del shortcode [sono_comunitario_cta] (fecha viva desde TEC). */
.sono-next{color:var(--sc-accent);font-weight:700;font-size:.82rem;letter-spacing:.04em;text-transform:uppercase;margin:4px 0 0}
@media(max-width:781px){.sono-feature{flex-direction:column;align-items:stretch}.sono-feature.are-vertically-aligned-center{align-items:stretch}.sono-feature>.wp-block-column{flex:0 0 100%!important;max-width:100%!important;width:100%!important;margin:0!important}.sono-feature__img{aspect-ratio:4/3}}

/* ===== Nota entre semana (.sono-wknote) + filas Miércoles/Jueves ===== */
/* home-cierre (2): el espacio SOBRE el bloque entre-semana = el de ABAJO (padding preset `section` de la
   sección + el blockGap entre secciones), para que quede simétrico entre las tarjetas y la banda siguiente. */
/* El espacio arriba/abajo del bloque entre-semana = la MITAD del padding `section` + blockGap (simétrico, presets).
   El de abajo se recorta con un margin-block-end negativo (misma propiedad lógica que el layout de WP pone en 0;
   por eso lleva doble clase para ganar en especificidad). */
.sono-wknote{margin-top:calc((var(--wp--preset--spacing--section) + var(--wp--style--block-gap)) * 0.5);text-align:center}
.sono-wk-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;max-width:var(--sc-wide);margin-inline:auto}
.wp-block-group.sono-wk-grid{margin-block-end:calc((var(--wp--preset--spacing--section) + var(--wp--style--block-gap)) / -2)}
@media(max-width:600px){.sono-wk-grid{grid-template-columns:1fr}}
.sono-wk{display:flex;justify-content:space-between;align-items:center;gap:16px;border:1px solid var(--sc-line);padding:16px 20px;background:var(--sc-band)}
.sono-wk__t{font-family:var(--sc-disp);font-size:1.02rem;text-transform:uppercase;letter-spacing:.03em}
.sono-wk__s{font-size:.82rem;color:var(--sc-muted);margin-top:2px}
.sono-wk__r{text-align:right;flex:none}
.sono-wk__p{font-family:var(--sc-disp);font-size:1.15rem;letter-spacing:.02em}
.sono-wk__a{font-family:var(--sc-body);font-weight:700;font-size:.76rem;letter-spacing:.05em;text-transform:uppercase;color:var(--sc-accent);text-decoration:none}
.sono-wk__a:hover{text-decoration:underline}

/* ===== Educación — "Qué pasa en una sesión" (.sono-mech-band) ===== */
.sono-mech-band:not(.has-background){background:var(--sc-band)}
.sono-mech-band .wp-block-columns{max-width:var(--sc-wide);margin-inline:auto}
.sono-mech__h2{font-family:var(--sc-disp);font-size:1.95rem;text-transform:uppercase;margin:0 0 14px;line-height:1.06}
.sono-mech__lead{color:var(--sc-ink-2);margin:0 0 22px;max-width:46ch}
.sono-mech__list{display:flex;flex-direction:column;gap:18px;margin-bottom:22px}
.sono-mech__item{display:flex;gap:16px}
.sono-mech__ic{flex:none;width:44px;height:44px;background:var(--sc-accent-soft);color:var(--sc-accent);display:grid;place-items:center;font-size:1.25rem}
.sono-mech__ic svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.75}
.sono-mech__item h4{font-family:var(--sc-body);font-size:1rem;font-weight:700;margin:0 0 3px;text-transform:none;letter-spacing:0}
.sono-mech__item p{color:var(--sc-ink-2);font-size:.93rem;margin:0}

/* ===== Facilitador: caja con borde (.sono-facil) ===== */
.sono-facil{padding:clamp(24px,4vw,44px);max-width:var(--sc-wide);margin-inline:auto}
.sono-facil--boxed{border:1px solid var(--sc-line);background:var(--sc-surface)}
.sono-facil img{width:100%;height:100%;object-fit:cover;display:block}
@media(max-width:820px){.sono-facil{padding:clamp(20px,5vw,28px)}}

/* ===== Header de reseñas (.sono-rev-head) — solo encabezado; el cuerpo = Trustindex ===== */
.sono-rev-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:14px 24px;max-width:var(--sc-wide);margin:0 auto 28px}
.sono-rev-h2{font-family:var(--sc-disp);font-size:1.95rem;text-transform:uppercase;margin:6px 0 0;letter-spacing:.02em;line-height:1.06}
.sono-rev-score{display:flex;align-items:center;gap:12px}
.sono-rev-num{font-family:var(--sc-disp);font-size:2.7rem;line-height:1;color:var(--sc-ink)}
.sono-rev-stars{color:#e6a935;letter-spacing:2px}
.sono-rev-sub{font-size:.82rem;color:var(--sc-muted)}
@media(max-width:600px){.sono-rev-head{align-items:flex-start}}

/* ===== Presencia en medios (facade YouTube + panel oscuro) ===== */
.sono-medios:not(.has-background){background:var(--sc-band)}
.sono-medios .sono-eyebrow{margin-bottom:12px}
.sono-medios h2{margin:0}
.sono-medios .sono-medios__lead{color:var(--sc-ink-2);font-size:1.05rem;max-width:52ch;margin:16px 0 clamp(28px,4vw,40px);margin-left:0!important;margin-right:auto!important}
.sono-medios__grid{display:grid;grid-template-columns:1.55fr 1fr;gap:24px;align-items:stretch;max-width:var(--sc-wide);margin-inline:auto}
@media(max-width:820px){.sono-medios__grid{grid-template-columns:1fr}.sono-medios__lead{margin-bottom:24px}}
.sono-video-slot{display:block}
.sono-video{position:relative;aspect-ratio:16/9;border:1px solid var(--sc-line);overflow:hidden;display:block;width:100%;cursor:pointer;color:inherit;padding:0;text-align:left;font:inherit;background:var(--sc-footer-bg) center/cover no-repeat;background-image:linear-gradient(180deg,rgba(10,15,17,.05),rgba(10,15,17,.55)),url('https://i.ytimg.com/vi/t0NGhy_LnMc/hqdefault.jpg')}
.sono-video__note{position:absolute;top:0;left:0;z-index:2;background:rgba(10,15,17,.72);color:#fff;font-size:.72rem;letter-spacing:.04em;padding:7px 14px;max-width:80%}
.sono-video__play{position:absolute;z-index:2;left:50%;top:50%;transform:translate(-50%,-50%);width:76px;height:76px;border-radius:50%;background:var(--sc-metal);display:grid;place-items:center;transition:transform .18s ease;box-shadow:0 10px 30px -10px rgba(0,0,0,.6)}
.sono-video__play svg{width:26px;height:26px;margin-left:4px;fill:var(--sc-metal-ink)}
.sono-video:hover .sono-video__play,.sono-video:focus-visible .sono-video__play{transform:translate(-50%,-50%) scale(1.08)}
.sono-video:focus-visible{outline:3px solid var(--sc-accent);outline-offset:3px}
.sono-video__cap{position:absolute;z-index:2;left:0;right:0;bottom:0;padding:16px 18px;color:#fff}
.sono-video__cap .k{font-family:var(--sc-disp);text-transform:uppercase;letter-spacing:.04em;font-size:.92rem;font-weight:500}
.sono-video__cap .s{font-size:.8rem;color:rgba(255,255,255,.82)}
.sono-video__player{position:relative;aspect-ratio:16/9;border:1px solid var(--sc-line);width:100%;background:#000}
.sono-video__player iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.sono-seen{background:var(--sc-footer-bg);color:var(--sc-footer-ink);padding:clamp(22px,3vw,30px);display:flex;flex-direction:column;gap:16px;border:1px solid #2b3236}
.sono-seen__eyebrow{font-family:var(--sc-body);font-size:.75rem;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:var(--sc-accent-on-dark);margin:0}
.sono-seen__intro{font-size:.92rem;color:rgba(255,255,255,.78);margin:0}
.sono-outlets{list-style:none;margin:auto 0 0;padding:0;display:flex;flex-direction:column}
.sono-outlets li{border-top:1px solid #2b3236}
.sono-outlets li:first-child{border-top:0}
.sono-outlets button{width:100%;display:flex;align-items:baseline;gap:12px;padding:13px 0;background:none;border:0;cursor:pointer;color:inherit;font:inherit;text-align:left;transition:padding-left .15s ease}
.sono-outlets button:hover,.sono-outlets button:focus-visible{padding-left:8px;outline:none}
.sono-outlets button:focus-visible{outline:2px solid var(--sc-accent-on-dark);outline-offset:2px}
.sono-outlets .name{font-family:var(--sc-disp);font-weight:500;text-transform:uppercase;letter-spacing:.05em;font-size:1.12rem;color:#fff}
.sono-outlets button:hover .name,.sono-outlets button:focus-visible .name{color:var(--sc-accent-on-dark)}
.sono-outlets .kind{margin-left:auto;font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;color:var(--sc-muted-on-dark);align-self:center}
.sono-outlets .arrow{color:var(--sc-muted-on-dark);font-size:.95rem;align-self:center}
.sono-outlets button:hover .arrow,.sono-outlets button:focus-visible .arrow{color:var(--sc-accent-on-dark)}

/* ===== Canal de WhatsApp — caja oscura (class-ificada del inline del skin) ===== */
.sono-channel{max-width:1160px;margin:0 auto;background:var(--sc-footer-bg);color:#fff;text-align:center;padding:clamp(32px,5vw,60px);display:flex;flex-direction:column;align-items:center;gap:16px}
.sono-channel__eyebrow{font-family:var(--sc-body);font-size:.75rem;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:rgba(255,255,255,.75);margin:0}
.sono-channel__h2{color:#fff;font-family:var(--sc-disp);text-transform:uppercase;margin:0;font-size:clamp(1.9rem,4vw,2.7rem);line-height:1.05;letter-spacing:.02em}
.sono-channel__p{color:rgba(255,255,255,.88);max-width:46ch;margin:0}
.sono-channel__btn .wp-block-button__link{background:#fff;color:var(--sc-accent);border:1.5px solid #fff;border-radius:0;font-family:var(--sc-body);font-weight:500;font-size:.82rem;letter-spacing:.08em;text-transform:uppercase}
.sono-channel__btn .wp-block-button__link:hover{background:transparent;color:#fff}

/* ===== Footer (template part parts/footer.html): banda newsletter clara + pie oscuro ===== */
/* Banda: card centrada con aire antes del pie oscuro (skin v1.14 §nl-band). */
.sono-nl-band{max-width:min(var(--sc-wide),calc(100% - 48px));margin:64px auto;background:var(--sc-band);color:var(--sc-ink)}
.sono-nl-band h2{color:var(--sc-ink)}
.sono-nl-band p{color:var(--sc-ink-2)}
/* Form del newsletter (Fluent Form #8) compacto inline — migrado del <style> del
   footer part 153 (que el footer.html del tema no reproduce): fila de campos + labels
   ocultos (visually-hidden). Sin esto, tras apagar el skin el form vuelve al default apilado. */
.sono-nl-band form.frm-fluent-form fieldset{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end;padding:0;margin:14px 0 0;border:none;max-width:760px}
.sono-nl-band form.frm-fluent-form fieldset>legend{display:none}
.sono-nl-band form.frm-fluent-form fieldset>p{display:none;margin:0}
.sono-nl-band .ff-el-group{flex:1 1 180px;margin:0!important}
.sono-nl-band .ff-el-group.ff_submit_btn_wrapper{flex:0 0 auto}
.sono-nl-band .ff-el-input--label{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(1px,1px,1px,1px);white-space:nowrap}
.sono-nl-band input.ff-el-form-control{width:100%;padding:13px 14px;border:1px solid var(--sc-line);border-radius:0;background:#fff;box-shadow:none}
/* Botón submit del form: recto + tinta + uppercase (independiente del skin). */
.sono-nl-band .frm-fluent-form .ff-btn-submit,
.sono-nl-band .ff_submit_btn_wrapper button,
.sono-nl-band form button[type="submit"]{background:var(--sc-ink)!important;color:#fff!important;border:0!important;border-radius:0!important;box-shadow:none!important;font-family:var(--sc-body);font-weight:500;letter-spacing:.08em;text-transform:uppercase;padding:13px 26px;cursor:pointer}
.sono-nl-band .frm-fluent-form .ff-btn-submit:hover,
.sono-nl-band .ff_submit_btn_wrapper button:hover,
.sono-nl-band form button[type="submit"]:hover{background:var(--sc-ink)!important;opacity:.9}
.sono-footer-dark{background:var(--sc-footer-bg)!important;color:var(--sc-footer-ink)!important}
.sono-footer-dark a{color:var(--sc-footer-ink)!important;text-decoration:none}
.sono-footer-dark a:hover{color:#fff!important;text-decoration:underline}
.sono-footer-dark h1,.sono-footer-dark h2,.sono-footer-dark h3,
.sono-footer-dark .wp-block-site-title,.sono-footer-dark .wp-block-site-title a{color:#fff!important}
.sono-footer-dark .wp-block-site-tagline{color:var(--sc-footer-ink)!important;opacity:.85}
.sono-footer-dark .has-small-font-size,.sono-footer-dark .has-small-font-size a{color:var(--sc-muted-on-dark)!important}
.sono-foot-line{border:0;border-top:1px solid rgba(255,255,255,.14);margin:18px 0 0}
.sono-foot-bottom{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;padding-top:16px;font-size:.8rem;color:var(--sc-muted-on-dark)}
.sono-foot-bottom a{color:var(--sc-muted-on-dark)}
.sono-foot-bottom a:hover{color:#fff}


/* ===== Cabecera: logo + nav en contenedor ANCHO AMPLIO (1340), centrado ===== */
/* parts/header.html ya define el contenido como alignwide. Si en vivo quedó full-width
   (override del part en la DB via Site Editor), este CSS del tema lo contiene igual:
   cap del grupo exterior del part a wide-size, centrado (estructura-independiente). */
header.wp-block-template-part > .wp-block-group{max-width:var(--wp--style--global--wide-size, var(--sc-wide))!important;margin-inline:auto!important}


/* ===== Comunitario · maqueta: componentes editoriales (base-8, tokens; sin hex/inline) ===== */
/* "Tu primera vez": puntos a la izquierda + ficha de próxima sesión */
.sono-points{display:flex;flex-direction:column;margin:18px 0 0}
.sono-point{display:flex;flex-direction:column;gap:2px;padding:14px 0;border-top:1px solid var(--sc-line)}
.sono-point:first-child{border-top:0}
.sono-point b{font-family:var(--sc-body);font-weight:700;color:var(--sc-ink)}
.sono-point span{color:var(--sc-ink-2);font-size:.96rem}
.sono-specs{display:flex;flex-wrap:wrap;gap:8px 18px;font-size:.86rem;color:var(--sc-muted);margin:14px 0 0}
.sono-ftcard{border:1px solid var(--sc-line);background:var(--sc-surface);padding:clamp(22px,3vw,30px);display:flex;flex-direction:column;gap:12px}
.sono-ftcard .sono-eyebrow{margin:0}
.sono-ftcard .sono-price{margin:0;font-size:2.4rem;line-height:1}
/* pasos "Así funciona" (grid 3-col) */
.sono-steps{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-top:8px}
.sono-step{display:flex;flex-direction:column;gap:6px}
.sono-step__n{font-family:var(--sc-disp);font-size:1.1rem;color:var(--sc-accent);letter-spacing:.05em}
.sono-step b{font-family:var(--sc-disp);font-size:1.15rem;text-transform:uppercase;letter-spacing:.02em;color:var(--sc-ink)}
.sono-step p{color:var(--sc-ink-2);font-size:.94rem;margin:0}
@media(max-width:760px){.sono-steps{grid-template-columns:1fr}}
/* razones "por qué en grupo" (grid 3-col, viñeta cuadrada) */
.sono-reasons{display:grid;grid-template-columns:repeat(3,1fr);gap:28px;margin:24px 0 4px}
.sono-reason{position:relative;padding-left:22px;color:var(--sc-ink-2);line-height:1.5}
.sono-reason::before{content:"";position:absolute;left:0;top:.55em;width:8px;height:8px;background:var(--sc-accent)}
@media(max-width:820px){.sono-reasons{grid-template-columns:1fr;gap:16px}}
/* TOC como caja lateral */
.sono-toc{border:1px solid var(--sc-line);background:var(--sc-band);padding:clamp(20px,3vw,28px)}
.sono-toc__h{font-family:var(--sc-body);font-weight:700;text-transform:uppercase;letter-spacing:.12em;font-size:.74rem;color:var(--sc-muted);margin:0 0 12px}
.sono-toc ul{margin:0;padding:0;list-style:none;columns:2;column-gap:32px}
.sono-toc li{margin:0 0 8px;break-inside:avoid}
.sono-toc a{color:var(--sc-ink);border-bottom:1px solid transparent}
.sono-toc a:hover{color:var(--sc-accent);border-bottom-color:var(--sc-accent)}
@media(max-width:600px){.sono-toc ul{columns:1}}
/* resultados: tarjetas con borde sobre la banda */
.sono-rcard{border:1px solid var(--sc-line);height:100%}
.sono-rcard .sono-eyebrow{color:var(--sc-accent);margin:0 0 4px}
/* FAQ: markers +/- (core/details) */
.sono-faq .wp-block-details{border-bottom:1px solid var(--sc-line)}
.sono-faq .wp-block-details summary{cursor:pointer;list-style:none;padding:18px 40px 18px 0;position:relative;font-family:var(--sc-disp);font-size:1.1rem;text-transform:uppercase;letter-spacing:.02em;color:var(--sc-ink)}
.sono-faq .wp-block-details summary::-webkit-details-marker{display:none}
.sono-faq .wp-block-details summary::after{content:"+";position:absolute;right:6px;top:14px;font-family:var(--sc-body);font-size:1.5rem;color:var(--sc-accent);font-weight:400}
.sono-faq .wp-block-details[open] summary::after{content:"\2013"}
.sono-faq .wp-block-details>*:not(summary){padding-bottom:20px;color:var(--sc-ink-2)}
.sono-faq .wp-block-details[id="seguridad"]>*:not(summary){border-left:3px solid var(--sc-accent);padding-left:14px}

/* ===== Comunitario · CONSISTENCIA con la maqueta (2026-09-14) ===== */
/* 1. Trust row: 2 columnas en movil (WP apila a 1 por defecto). Requiere class .sono-trust en el wp:columns. */
@media(max-width:781px){
  .sono-trust.wp-block-columns{flex-wrap:wrap;gap:16px 12px}
  .sono-trust.wp-block-columns>.wp-block-column{flex-basis:calc(50% - 6px)!important;min-width:0}
}
/* 5/6. Facilitador: lista con vineta cuadrada de acento + pull-quote. Class .sono-cred / .sono-pull en contenido. */
.sono-cred{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.sono-cred li{position:relative;padding-left:20px;color:var(--sc-ink-2)}
.sono-cred li::before{content:"";position:absolute;left:0;top:.55em;width:8px;height:8px;background:var(--sc-accent)}
.sono-pull,.wp-block-quote.sono-pull{border-left:3px solid var(--sc-accent);padding-left:14px;color:var(--sc-ink-2);font-style:italic;margin:0}
.sono-pull p{margin:0}
/* 7/8. Tarjetas de resultados: titulo Oswald (no eyebrow diminuto) + vineta circulo. Solo CSS (targetea el markup vivo). */
.sono-rcard>.sono-eyebrow{font-family:var(--sc-disp);font-size:1.15rem;font-weight:500;letter-spacing:.02em;text-transform:uppercase;color:var(--sc-accent);margin:0 0 10px}
.sono-rcard ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
.sono-rcard li{position:relative;padding-left:20px;color:var(--sc-ink-2)}
.sono-rcard li::before{content:"\25CB";position:absolute;left:0;top:0;color:var(--sc-accent);font-size:.8rem;line-height:1.7}
/* 9. Testimonios: fila de estrellas + borde. Class .sono-testi en cada wp:column + p.sono-testi__stars en contenido. */
.sono-testi{border:1px solid var(--sc-line);display:flex;flex-direction:column;gap:12px}
.sono-testi__stars{color:#e6a935;letter-spacing:2px;font-size:.9rem;margin:0}
/* 10. Tabla comparativa: columna "Comunitario" en acento + nums tabulares + encabezado con banda. Class .sono-compare en el figure. */
.sono-compare table{border-collapse:collapse;width:100%}
.sono-compare thead th{font-family:var(--sc-disp);text-transform:uppercase;letter-spacing:.03em;font-size:.86rem;background:var(--sc-band);text-align:left;padding:14px 16px;vertical-align:bottom}
.sono-compare tbody td{padding:14px 16px;border-bottom:1px solid var(--sc-line);text-align:left;vertical-align:top;font-size:.9rem;font-variant-numeric:tabular-nums}
.sono-compare thead th:nth-child(2),.sono-compare tbody td:nth-child(2){color:var(--sc-accent);font-weight:600}
/* 11. Modelo accesible: precio con mas peso (== maqueta). Class .sono-price--xl en el p.sono-price. */
.sono-price--xl{font-size:clamp(2.6rem,5vw,3.4rem);line-height:.95}
.wp-block-group.sono-channel{display:flex!important;flex-direction:column!important;align-items:center!important;text-align:center}
.sono-channel .wp-block-buttons{justify-content:center;width:100%}
.sono-channel>*{margin-inline:auto!important}
.sono-pricebox{display:grid;grid-template-columns:auto 1fr;gap:clamp(20px,4vw,48px);align-items:center;border:1px solid var(--sc-line);background:var(--sc-surface);padding:clamp(24px,4vw,44px)}
.sono-pricebox>*{margin-inline:0!important;max-width:100%}
.sono-pricebox .sono-price{margin:0}
@media(max-width:600px){.sono-pricebox{grid-template-columns:1fr;gap:16px}}
/* ===== Consistencia maqueta v2 (2026-09-15): mandatorios globales ===== */
/* Enlaces (estándar del sitio · 2026-09-15): los links de CUERPO van SUBRAYADOS (estándar web,
   global para toda página/post vía .wp-block-post-content). Los componentes con estilo propio
   (flecha, botón, TOC) se eximen; el chrome (header/footer) queda fuera de post-content -> sin
   subrayado como el tema padre. */
.wp-block-post-content a{text-decoration:underline}
.wp-block-post-content .sono-link-arrow,.wp-block-post-content .wp-block-button__link,.wp-block-post-content .sono-toc a{text-decoration:none}
/* Boton: .82rem GLOBAL y MANDATORIO (mockup). (0,2,0) gana al elements.button de theme.json (0,1,0);
   cubre el boton del shortcode [sono_comunitario_cta] que no heredaba y se veia grande. */
.wp-block-button .wp-block-button__link{font-size:.82rem}
/* Modelo accesible (pricebox): "/persona" en su propia linea bajo el monto + columna derecha (lead + 2 parrafos). */
.sono-pricebox .sono-price--xl small{display:block;font-family:var(--sc-body);font-size:.8rem;color:var(--sc-muted);letter-spacing:0;margin-top:4px}
.sono-pb-stack{display:flex;flex-direction:column;gap:8px}
.sono-pb-stack p{margin:0;color:var(--sc-ink-2)}
.sono-pb-lead{color:var(--sc-ink)!important;font-weight:500}


/* ===== web-tema: estándares (Regla única · 2026-09-15) ===== */
/* Botón outline (tinta) — UNA vez, sin prefijo de contexto; padding = theme.json (12/24). */
/* padding 12/24 explícito: el is-style-outline del core lo sobreescribe si no; así queda == theme.json (todos los botones iguales, ≥44px). */
.wp-block-button.is-style-outline .wp-block-button__link{font-family:var(--sc-body);font-weight:500;font-size:.82rem;letter-spacing:.08em;text-transform:uppercase;padding:12px 24px;border:1.5px solid var(--sc-ink);border-radius:0;color:var(--sc-ink);background:transparent;transition:background .15s,color .15s}
.wp-block-button.is-style-outline .wp-block-button__link:hover{background:var(--sc-ink);color:#fff}
/* Botón "sobre foto" (blanco sólido / ghost) — para heros sobre imagen (variante registrada). */
.wp-block-button.is-style-on-photo .wp-block-button__link{background:#fff;color:var(--sc-ink);border:1.5px solid #fff;padding:12px 24px}
.wp-block-button.is-style-on-photo .wp-block-button__link:hover{background:transparent;color:#fff;border-color:#fff}
/* Foco visible en todas las variantes de botón. */
.wp-block-button__link:focus-visible{outline:2px solid var(--wp--preset--color--accent);outline-offset:2px}
/* Espacio del botón = del contenedor (no margin en el botón). */
.sono-card__body .wp-block-buttons,.sono-feature__col .wp-block-buttons,.sono-channel .wp-block-buttons,.sono-hero__inner .wp-block-buttons{margin:0}
/* d4: grupo de acción (precio + botón, y en el feature también «Próximo») anclado al pie de la columna,
   con gap fijo → precio↔botón conservan SIEMPRE la misma distancia en el feature y en las 3 tarjetas. */
.sono-cta{display:flex;flex-direction:column;gap:8px}
.sono-cta>*{margin:0}
.sono-card__body .sono-cta,.sono-feature__col .sono-cta{margin-top:auto}
/* Cabecera de sección (eyebrow + h2 + lead). */
.sono-head{display:flex;flex-direction:column;gap:8px}
.sono-head>*{margin:0}
.sono-head .sono-lead{margin-top:8px;max-width:62ch}
/* Meta-fila: iconos SVG (trazos), no glifos Unicode (se dibujan distinto por SO). */
.sono-meta svg{width:16px;height:16px;vertical-align:-3px;fill:none;stroke:currentColor;stroke-width:1.75}


/* ===== web-tema · P198 bio 97: CT1 testimonios grid · CT2 referentes · CT3 hero banner (Regla única) ===== */
/* CT3 · Hero variante AUTORIDAD (bio/misión/hub): banner ~4:1 del asset, más bajo que el hero de venta (.sono-hero=74vh). La omisión de CTA/social es contenido (no se ensamblan esos bloques); acá solo va la ALTURA. (0,2,0) gana a .sono-hero. */
.sono-hero.sono-hero--banner{min-height:clamp(300px,25vw,420px)}

/* CT1 · Testimonios: grid nativo de recomendaciones (.sono-testis > .sono-testi) — reemplaza el carrusel Swiper del plugin (cero JS ajeno). El card .sono-testi (borde) ya existía; el relleno va scoped a .sono-testis para NO alterar el 103 vivo. */
.sono-testis{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--wp--style--block-gap,24px);max-width:var(--sc-wide);margin-inline:auto}
@media(max-width:820px){.sono-testis{grid-template-columns:1fr}}
.sono-testis>*{margin-block:0}
.sono-testis .sono-testi{padding:clamp(20px,3vw,28px);background:var(--sc-surface);height:100%}
.sono-testi__avatar{width:64px;aspect-ratio:1;margin:0;overflow:hidden;border-radius:9999px}
.sono-testi__avatar img{width:100%;height:100%;object-fit:cover;display:block}
.sono-testi__q,.wp-block-quote.sono-testi__q{border:0;padding:0;margin:0;font-style:italic;color:var(--sc-ink-2)}
.sono-testi__q p{margin:0}
.sono-testi__q cite{display:block;margin-top:12px;font-style:normal;font-size:.9rem;color:var(--sc-muted)}
.sono-testi__q cite a{color:var(--sc-ink);font-weight:700}

/* CT2 · Referentes / mentores: grid 3-col. El ratio vive en el CONTENEDOR (.sono-ref__fig), no en el <img> (recon §5.3: nada de aspect-ratio inline). */
.sono-refs{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--wp--style--block-gap,24px);max-width:var(--sc-wide);margin-inline:auto}
@media(max-width:900px){.sono-refs{grid-template-columns:repeat(2,1fr)}}
@media(max-width:600px){.sono-refs{grid-template-columns:1fr}}
.sono-refs>*{margin-block:0}
.sono-ref{display:flex;flex-direction:column;gap:8px}
.sono-ref__fig{margin:0;aspect-ratio:16/9;overflow:hidden;border:1px solid var(--sc-line)}
.sono-ref__fig img{width:100%;height:100%;object-fit:cover;display:block}
.sono-ref h3,.sono-ref .wp-block-heading{margin:0}
.sono-ref__desc{color:var(--sc-ink-2);font-size:.9rem;margin:0}
.sono-ref__desc em{color:var(--sc-muted);font-style:italic}

/* ===== web-tema · CT-L1 (Luna 518): facilitadores co-facilitación 2-up ===== */
/* 2 facilitadores simétricos lado a lado (Juan + Matea); colapsa a 1-col en móvil.
   Reusa tokens de .sono-facil; el ratio vive en el CONTENEDOR (.sono-facil-card__fig),
   nunca en el <img> (§5.3). Sin hex fuera de paleta, sin !important nuevo. */
.sono-facils{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--wp--style--block-gap,24px);max-width:var(--sc-wide);margin-inline:auto}
.sono-facils>*{margin-block:0}
.sono-facil-card{display:flex;flex-direction:column;gap:12px;border:1px solid var(--sc-line);background:var(--sc-surface);padding:clamp(20px,3vw,28px);height:100%}
.sono-facil-card__fig{margin:0;aspect-ratio:4/3;overflow:hidden;border:1px solid var(--sc-line)}
.sono-facil-card__fig img{width:100%;height:100%;object-fit:cover;display:block}
.sono-facil-card h3,.sono-facil-card .wp-block-heading{font-family:var(--sc-disp);font-size:1.4rem;text-transform:uppercase;letter-spacing:.02em;margin:0}
.sono-facil-card__role{font-family:var(--sc-body);font-weight:700;font-size:.8rem;letter-spacing:.04em;text-transform:uppercase;color:var(--sc-accent);margin:0}
@media(max-width:781px){.sono-facils{grid-template-columns:1fr}}

/* ===== web-tema · fix-batch Luna (alineación 103): variante compacta de .sono-points ===== */
/* «Es para vos si…» ocupaba mucho alto en 1 columna; la variante fluye en 2 columnas (landing).
   Sin px sueltos (column-gap = preset), sin hex, sin !important. */
.sono-points.sono-points--2col{display:block;columns:2;column-gap:var(--wp--preset--spacing--50)}
.sono-points--2col .sono-point{break-inside:avoid}
@media(max-width:600px){.sono-points.sono-points--2col{columns:1}}
/* «Así se siente» (Luna): pasos numerados del 103 en UNA columna (apilados). Sin px/hex/!important. */
.sono-steps.sono-steps--1col{grid-template-columns:1fr}
/* Pausa Profunda: el calendario SSA a -20% (col der de «Cómo funciona»). zoom reflow-a el alto (no deja hueco). */
.sono-ssa{zoom:.8}

/* ===== Evento · plantilla (Page Contract build #3) =====
 * Variante evento de .sono-ftcard (ficha de hechos vivos), mapa del venue y grilla de
 * fases que aguanta 4 (o 5 en Luna) sin romper la de 3 de .sono-steps. El markup lo emite
 * el mu-plugin sonoterapia-evento.php con clases .sono-*; TODO el valor visual vive acá. */
.sono-ftcard--evento{gap:16px}
.sono-ftlist{display:flex;flex-direction:column;margin:0}
.sono-ftrow{display:flex;flex-wrap:wrap;justify-content:space-between;gap:2px 16px;padding:12px 0;border-top:1px solid var(--sc-line)}
.sono-ftlist .sono-ftrow:first-child{border-top:0;padding-top:0}
.sono-ftrow dt{font-family:var(--sc-body);font-size:.74rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--sc-muted)}
.sono-ftrow dd{margin:0;font-family:var(--sc-body);color:var(--sc-ink);text-align:right}
.sono-ftcard--evento .sono-price small{display:block;letter-spacing:0;margin-top:4px}
.sono-ev-sub{font-size:.86rem;color:var(--sc-muted);margin:12px 0 0}
/* Cómo llegar: mapa + columna de datos (venue · dirección · parqueo · 2 botones). */
.sono-evmapa{display:grid;grid-template-columns:58% 1fr;gap:24px;align-items:start}
.sono-evmapa__col{display:flex;flex-direction:column;gap:12px}
.sono-evmapa__col>*{margin:0}
.sono-evmapa__venue{font-family:var(--sc-disp);font-size:1.15rem;text-transform:uppercase;letter-spacing:.02em;color:var(--sc-ink)}
.sono-evmapa__parqueo{color:var(--sc-ink-2);font-size:.94rem}
.sono-map{position:relative;aspect-ratio:16/10;border:1px solid var(--sc-line)}
.sono-map iframe{position:absolute;inset:0;display:block;width:100%;height:100%;border:0}
@media(max-width:820px){.sono-evmapa{grid-template-columns:1fr;gap:16px}}
/* Fases de la sesión: 4 en el piloto, 5 en Luna (suma «Cacao»). */
.sono-steps.sono-steps--auto{grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}

/* ===== Evento · fix-batch de la plantilla (Lote 3a) — scope body.sono-ev-v2 =====
 * (clase que agrega `sonoterapia-evento.php` SOLO a los eventos que ya usan la plantilla nueva:
 * los eventos con el HTML viejo no cambian de ancho ni de título hasta que se migren)
 * Los 7 defectos del Lote 2 medidos sobre el HTML renderizado del piloto 7216 (espejo
 * local + Chrome headless, 1600 y 390). Cero valores nuevos: todo sale de los tokens y
 * la escala de theme.json (Regla única, web-design-system §10).
 *
 * D1 · El H1 lo imprime TEC FUERA del contenido y su hoja lo deja en el sans-serif del
 *      plugin con `font-size:revert` → 34px (2em del contenedor), es decir la misma
 *      altura que los h2 Oswald (33.6 a 1600) y en otra familia. Le damos familia y
 *      escala de títulos del tema. `#tribe-events-content` es lo mínimo que gana a
 *      `.sono-ev-v2 .tribe-blocks-editor .tribe-events-single-event-title`. */
.sono-ev-v2 #tribe-events-content .tribe-events-single-event-title{font-family:var(--sc-disp);font-size:clamp(var(--wp--preset--font-size--x-large),8vw,var(--wp--preset--font-size--xx-large));font-weight:500;line-height:1.06;letter-spacing:.02em;text-transform:uppercase;color:var(--sc-ink)}

/* P1 (Lote 3c · pedido JD) · Encabezado con el formato `.sono-head` de las landings:
 *   rótulo chico dorado (venue) + título (nombre de la sesión). El markup lo arma
 *   `sono_ev_titulo_html()` del mu-plugin (partial `single-event/title`); acá solo el valor visual.
 *   ESCALA: los MISMOS dos tokens de la escala del tema que usa la cabecera de las landings
 *   (`patterns/cabecera-seccion.php` = eyebrow + título `xx-large`). El techo es idéntico al
 *   de esa cabecera (52.8px a 1600, sin cambio en escritorio) y el piso baja a `x-large`
 *   para que en 390 el titular no ocupe la pantalla: entre ambos interpola con `8vw`
 *   (mismo idioma fluido que los clamps de theme.json). Cero valores nuevos de la paleta o
 *   de la escala de espaciado. */
.sono-ev-v2 #tribe-events-content .sono-ev-title{display:flex;flex-direction:column;gap:var(--wp--preset--spacing--10)}
.sono-ev-v2 #tribe-events-content .sono-ev-title>*{margin:0}
/* Lote 3e (opción 1, JD) · rótulo = <p class="sono-eyebrow"> con el VENUE, fuera del <h1>;
 * el <h1> queda solo con el nombre de la sesión. El rótulo toma todo de `.sono-eyebrow`. */
.sono-ev-v2 #tribe-events-content .sono-ev-title__rotulo{line-height:1.6;margin:0 0 var(--wp--preset--spacing--10)}

/* D2 · `#tribe-events-pg-template` trae `max-width:1048px` + 20px de padding: encerraba
 *      TODAS las bandas `alignfull` en 1048px a 1600 (medido). Se libera el ancho del
 *      contenedor y el gutter se le devuelve a los dos elementos NATIVOS de TEC (volver
 *      + título), que antes lo heredaban de él; las secciones del pattern ya traen el
 *      suyo (`has-global-padding`), así que el contenido no se mueve. */
.sono-ev-v2 #tribe-events-pg-template{max-width:none;padding-inline:0}
.sono-ev-v2 .tribe-events-back,
.sono-ev-v2 #tribe-events-content .sono-ev-title,
.sono-ev-v2 #tribe-events-content > .tribe-events-single-event-title{max-width:var(--wp--style--global--content-size);margin-inline:auto;padding-inline:var(--wp--style--root--padding-left)}
/* P4d (Lote 3c) · Al liberar el ancho del contenedor de TEC (D2) también perdieron el gutter
 *      los dos bloques que TEC/AddToAny imprimen DEBAJO del contenido: la «Navegación del
 *      Evento» (prev/next) y los íconos de compartir. Mismo gutter que el contenido. */
.sono-ev-v2 #tribe-events-footer,
.sono-ev-v2 .addtoany_content_bottom{max-width:var(--wp--style--global--content-size);margin-inline:auto;padding-inline:var(--wp--style--root--padding-left)}

/* D3 · Móvil: la ficha compacta (rótulo y valor en la MISMA línea — se retiró el
 *      `flex-direction:column` de `.sono-ftrow` a ≤600) + menos aire sobre el titular
 *      (padding del contenedor de TEC y margen del «volver», a la escala del tema).
 *      El padding superior del bloque 01 NO se toca desde acá: el pattern lo emite como
 *      `style=` del bloque y solo se venceria con !important (el ratchet ya está al tope). */
@media(max-width:600px){
  .sono-ev-v2 #tribe-events-pg-template{padding-top:var(--wp--preset--spacing--30)}
  .sono-ev-v2 .tribe-events-back{margin-bottom:var(--wp--preset--spacing--20)}
}

/* D4 · El wrapper del plugin LYTE trae `style="width:640px;max-width:100%;margin:5px"`.
 *      El eje horizontal ya lo resuelve el layout `constrained` de WP (margin-inline:auto
 *      con !important propio del core, medido: `5px 164px`), así que alcanza con vencer
 *      el ANCHO: 1 solo `!important` (44→45, == `important_max`, el ratchet no sube).
 *      Sin él no hay override posible: es un atributo `style` del plugin.
 *      Va al ancho de CONTENIDO (no 100% del padre): el `max-width:100%` inline del plugin
 *      le gana al cap del layout `constrained`, así que el 100% se pasaría de la columna
 *      editorial a 1600. Ese mismo `max-width:100%` es el que lo achica a la columna en
 *      móvil, donde el token es más ancho que el viewport. */
.sono-ev-v2 .lyte-wrapper,
.sono-ev-v2 .lyte-wrapper+.lL{width:var(--wp--style--global--content-size)!important}

/* P2 (Lote 3c · pedido JD) · Los botones que emiten los shortcodes (`sono_ev_btn` y los dos
 *      de «Cómo llegar») son `wp-block-buttons` CRUDO: sin el `is-layout-flex` que WP le
 *      agrega a un bloque real, y por lo tanto sin `display:flex` ni `gap` → los dos botones
 *      del mapa salían pegados. `:not(.is-layout-flex)` acota la regla exactamente a los
 *      grupos que emite el mu-plugin (los del pattern los renderiza WP con su layout).
 *      En móvil: apilados a ancho completo, así los dos miden lo mismo. */
.sono-ev-v2 .wp-block-buttons:not(.is-layout-flex){display:flex;flex-wrap:wrap;gap:var(--wp--preset--spacing--20)}
@media(max-width:600px){
  .sono-ev-v2 .wp-block-buttons:not(.is-layout-flex){gap:var(--wp--preset--spacing--10)}
  .sono-ev-v2 .wp-block-buttons:not(.is-layout-flex)>.wp-block-button{flex:1 1 100%}
  .sono-ev-v2 .wp-block-buttons:not(.is-layout-flex)>.wp-block-button>.wp-block-button__link{display:block;width:100%;text-align:center}
}

/* D6 · Las dos columnas de «Cómo prepararte» arrancan a la misma altura. La lista de la
 *      izquierda la emite el shortcode como `<div>` crudo (no es un grupo flex de WP), y
 *      sus `<p>` conservaban el margen por defecto del navegador: el primer ítem bajaba
 *      ~17px respecto del de «Traé». Mismo reset que ya usan `.sono-fmt`/`.sono-head`. */
.sono-points>*{margin-block:0}

/* P3 (Lote 3c · pedido JD) · Trust band SIMÉTRICO: todos los ítems con la misma estructura
 *      (rótulo corto dorado arriba + UNA línea de valor abajo). Antes eran 3 columnas de WP
 *      con contenidos de distinto alto y rótulos de 2 líneas; en móvil `.sono-trust` las pone
 *      de a 2 y quedaba un ítem suelto. Grid propio: 3 (o 4, cuando entra
 *      [sono_sesiones_facilitadas]) columnas iguales en escritorio y filas centradas en móvil.
 *      Si el 4º ítem no se imprime, el `auto-fit` reparte el ancho entre los 3 (sin hueco). */
.sono-trust-ev{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:var(--wp--preset--spacing--30);align-items:start}
.sono-trust-ev__item{display:flex;flex-direction:column;align-items:center;gap:var(--wp--preset--spacing--10);text-align:center}
.sono-trust-ev__item>*{margin:0}
.sono-trust-ev__v{font-family:var(--sc-body);font-size:var(--wp--preset--font-size--medium);color:var(--sc-ink)}
.sono-trust-ev__v .sono-stars{color:var(--sc-accent);letter-spacing:1px;white-space:nowrap}
@media(max-width:600px){.sono-trust-ev{grid-template-columns:1fr;gap:var(--wp--preset--spacing--20)}}

/* ===== Agenda /event/ (build #4) =====
 * `.sono-agenda` es el COMPONENTE (lista de fechas vivas que imprime [sono_agenda]); reutilizable
 * fuera de /event/. Solo tokens del tema: cero hex, cero px sueltos. Fila = fecha | contenido | CTA;
 * a ≤781 (mismo corte que las columnas de WP) apila a una columna. */
.sono-agenda{display:flex;flex-direction:column;gap:var(--wp--preset--spacing--30)}
.sono-agenda__item{display:grid;grid-template-columns:auto 1fr auto;gap:var(--wp--preset--spacing--30);align-items:center;background:var(--sc-surface);border:1px solid var(--sc-line);padding:var(--wp--preset--spacing--30)}
.sono-agenda__item>*{margin:0}
.sono-agenda__date{display:flex;flex-direction:column;align-items:center;min-width:4.5rem;font-family:var(--sc-disp);font-variant-numeric:tabular-nums;text-transform:uppercase;line-height:1.1;color:var(--sc-ink)}
.sono-agenda__date span{font-size:var(--wp--preset--font-size--small);letter-spacing:.12em;color:var(--sc-accent)}
.sono-agenda__date b{font-size:var(--wp--preset--font-size--xx-large);font-weight:500}
.sono-agenda__body{display:flex;flex-direction:column;gap:var(--wp--preset--spacing--10)}
.sono-agenda__body>*{margin:0}
.sono-agenda__title{font-size:var(--wp--preset--font-size--x-large);line-height:1.15}
.sono-agenda__title a{color:var(--sc-ink);text-decoration:none}
.sono-agenda__title a:hover{color:var(--sc-accent)}
.sono-agenda__where{color:var(--sc-ink-2)}
.sono-agenda__from{margin:0;color:var(--sc-ink-2)}
.sono-agenda__item--venue{border-left:var(--wp--preset--spacing--10) solid var(--sc-accent)}
.sono-agenda__time{font-variant-numeric:tabular-nums;color:var(--sc-ink)}
.sono-agenda__facts{display:flex;flex-wrap:wrap;gap:var(--wp--preset--spacing--10) var(--wp--preset--spacing--20)}
.sono-agenda__facts>*{margin:0}
.sono-agenda__price{font-weight:700;color:var(--sc-ink)}
.sono-agenda__cap{color:var(--sc-muted)}
.sono-agenda__cta{display:flex;flex-direction:column;align-items:flex-start;gap:var(--wp--preset--spacing--20)}
.sono-agenda__cta>*{margin:0}
/* Foto por fila (variante B aprobada por JD 2026-09-18): a la izquierda, a sangre. La compacta (home) no lleva foto. */
.sono-agenda__media{margin:0;overflow:hidden;background:var(--sc-line);position:relative;min-height:11rem}
.sono-agenda__media a{display:block;height:100%}
.sono-agenda__media img{display:block;width:100%;height:100%;object-fit:cover;position:absolute;inset:0}
.sono-agenda__item--foto{grid-template-columns:minmax(0,17rem) auto 1fr auto;padding:0;align-items:stretch}
.sono-agenda__item--foto>:not(.sono-agenda__media){padding-block:var(--wp--preset--spacing--30);align-self:center}
.sono-agenda__item--foto .sono-agenda__cta{padding-inline-end:var(--wp--preset--spacing--30)}
.sono-agenda--vacia{align-items:flex-start}
@media(max-width:781px){
  .sono-agenda__item{grid-template-columns:1fr;gap:var(--wp--preset--spacing--20)}
  .sono-agenda__date{flex-direction:row;align-items:baseline;gap:var(--wp--preset--spacing--10);min-width:0}
  .sono-agenda__date b{font-size:var(--wp--preset--font-size--x-large)}
  .sono-agenda__cta{align-items:stretch}
  .sono-agenda__cta .wp-block-buttons,.sono-agenda__cta .wp-block-button,.sono-agenda__cta .wp-block-button__link{display:block;width:100%;text-align:center}
  .sono-agenda__item--foto{grid-template-columns:1fr;gap:0}
  .sono-agenda__media{min-height:0}
  .sono-agenda__media img{position:static;aspect-ratio:16/9}
  .sono-agenda__item--foto>:not(.sono-agenda__media){padding:var(--wp--preset--spacing--20) var(--wp--preset--spacing--30)}
  .sono-agenda__item--foto .sono-agenda__cta{padding-bottom:var(--wp--preset--spacing--30)}
}
/* Variante compacta (build #6, home): misma tarjeta `.sono-agenda__item`, solo cambia la disposición.
 * 3 columnas ≥1024, 1 en móvil; dentro de la tarjeta: fecha arriba · contenido · botón al pie. */
.sono-agenda--compacta{display:grid;grid-template-columns:1fr;gap:var(--wp--preset--spacing--30)}
.sono-agenda--compacta .sono-agenda__from{grid-column:1/-1}
.sono-agenda--compacta .sono-agenda__item{grid-template-columns:1fr;grid-template-rows:auto 1fr auto;align-items:start;gap:var(--wp--preset--spacing--20)}
.sono-agenda--compacta .sono-agenda__date{flex-direction:row;align-items:baseline;gap:var(--wp--preset--spacing--10);min-width:0}
.sono-agenda--compacta .sono-agenda__date b{font-size:var(--wp--preset--font-size--x-large)}
.sono-agenda--compacta .sono-agenda__title{font-size:var(--wp--preset--font-size--large)}
.sono-agenda--compacta .sono-agenda__cta{align-self:end;align-items:stretch}
.sono-agenda--compacta .sono-agenda__cta .wp-block-buttons,.sono-agenda--compacta .sono-agenda__cta .wp-block-button,.sono-agenda--compacta .sono-agenda__cta .wp-block-button__link{display:block;width:100%;text-align:center}
@media(min-width:1024px){
  .sono-agenda--compacta{grid-template-columns:repeat(3,minmax(0,1fr))}
}
/* Ajuste de PÁGINA (solo /event/ con la agenda propia): TEC envuelve su template en
 * `#tribe-events-pg-template` con max-width + padding que encerrarían las bandas `alignfull`
 * (mismo defecto D2 que en el evento). Se libera el ancho; cada banda ya trae su gutter. */
.sono-agenda-v2 #tribe-events-pg-template{max-width:none;padding-inline:0}
/* Prosa de artículo (build #8 guía 2841): ancho de lectura para texto largo dentro de una sección
 * constrained (contentSize es ancho de layout, no de lectura). Grupo con layout default: los hijos
 * quedan alineados al borde de la .sono-head y no se centran uno por uno. Estándar, no por-página. */
.sono-prose>*{max-width:70ch}
/* .sono-pull trae margin:0 (vence el blockGap del flow): dentro de la prosa recupera el ritmo antes de la cita. */
.sono-prose>*+.sono-pull{margin-block-start:var(--wp--style--block-gap)}
/* Subbloque de video (build #8 cierre · guía 2841 §03): h3 → video → caption → link-arrow apilados
 * y centrados como una unidad. Móvil (base) = como el resto de la prosa, alineado al margen;
 * desde 761px (mismo corte que .sono-steps) se centra: en escritorio el subbloque quedaba con el
 * texto pegado al borde izquierdo y el video suelto al centro, leyéndose como dos columnas.
 * Componente, no página: cualquier sección puede envolver un video con esta clase.
 * El centrado del video se hace con flex (no con margin-inline:auto): el embed de YouTube Lyte
 * imprime `style="width:640px;margin:5px"` inline y un margen auto en la hoja no le gana. */
.sono-videoblock>*{margin-inline:auto}
@media(min-width:761px){.sono-videoblock{text-align:center;display:flex;flex-direction:column;align-items:center}}
