/* Landings NATIVAS: se carga DESPUÉS de home.css y servicio.css.
   (1) temas y estados iniciales por clase (antes de que native.js ponga los data-*),
   (2) utilidades = los estilos inline del prototipo servicio.html,
   (3) reglas del prototipo que dependían del tipo de elemento (a, li, b) para los contenedores/widgets nativos. */

/* (1) temas por clase (native.js añade data-theme para home.js) */
.va-theme-dark{background:var(--bg);color:var(--fg)}
.va-theme-dark2{background:var(--bg2);color:var(--fg)}
.va-theme-light{background:var(--lbg);color:var(--lfg)}
.va-theme-light2{background:var(--lbg2);color:var(--lfg)}
.va-theme-light,.va-theme-light2{--fg:var(--lfg);--fg2:var(--lfg2);--fg3:var(--lfg3);--fg4:var(--lfg4);--line:var(--lline);--line2:rgba(0,0,0,.10);--bg:#f4f2ed;--bg2:#ebe9e3}
.va-theme-light .btn-solid,.va-theme-light2 .btn-solid{background:#0f0f0f;color:#f4f2ed}
.va-theme-light .btn-solid::before,.va-theme-light2 .btn-solid::before{background:#f4f2ed}
.va-theme-light .btn-solid:hover,.va-theme-light2 .btn-solid:hover{color:#0f0f0f}
.va-theme-light blockquote,.va-theme-light2 blockquote{border-color:#0f0f0f}
.va-theme-light .price:hover,.va-theme-light2 .price:hover{color:#f4f2ed}
.va-reveal{opacity:0;transform:translateY(24px)}
.va-img{clip-path:inset(100% 0 0 0)}
.no-js .va-reveal,.no-js .va-img{opacity:1;transform:none;clip-path:none}

/* (2) utilidades (estilos inline del prototipo) */
.h1-land{font-size:clamp(44px,6.2vw,88px)}
.bq-sm{font-size:clamp(20px,1.8vw,24px)}
.h3-sub{font-size:clamp(20px,1.8vw,24px);padding-top:8px;letter-spacing:-.03em;line-height:1.06}
.acc-h5{font-family:var(--va-display);font-size:16px;font-weight:500;margin:0 0 8px;letter-spacing:0;line-height:1.6}
.mw680{max-width:680px}.mw720{max-width:720px}.mw760{max-width:760px}
.mt40{margin-top:40px}.mt14{margin-top:14px}.mb40{margin-bottom:40px}.mb48{margin-bottom:48px}
.ai-end{align-items:end}.ai-start{align-items:start}.ai-center{align-items:center}
.gap16{gap:16px}.gap18{gap:18px}.gap20{gap:20px}.pt18{padding-top:18px}
.fs15{font-size:15px}.fs14{font-size:14px}.as-start{align-self:flex-start}
.rel{position:relative}.ov-hidden{overflow:hidden}
.card-t{font-size:19px}.card-d{font-size:13px;line-height:1.5;color:var(--fg3)}
.post-d{font-size:14px;line-height:1.6;color:var(--fg3)}
.star-eyebrow{display:flex;align-items:center;gap:10px;letter-spacing:.12em}
.eyebrow-inherit{color:inherit}
.trail-grid{display:grid;grid-template-columns:minmax(0,420px) minmax(0,1fr);gap:clamp(32px,6vw,96px);align-items:center;padding-top:clamp(56px,6vw,88px);padding-bottom:clamp(56px,6vw,88px)}
.bleed-media{position:absolute;top:0;right:0;width:40%;height:100%;opacity:.4}
.bleed-media.bleed-portrait{opacity:.85}
.bleed-grad{position:absolute;inset:0;background:linear-gradient(90deg,#0e0e0e 0%,#0e0e0e 55%,rgba(14,14,14,.6) 72%,rgba(14,14,14,.2) 100%)}
.blog-head{display:flex;justify-content:space-between;align-items:end;gap:24px;flex-wrap:wrap;margin-bottom:40px}
.trail-sec .wrap{padding-left:var(--gutter);padding-right:var(--gutter)}
@media (max-width:820px){.trail-grid{grid-template-columns:1fr}}

/* (3) equivalentes nativos de las reglas por tipo de elemento */
.trust>.e-con{display:flex;align-items:baseline;gap:12px}
.trust .b{font-family:var(--va-display);font-weight:300;font-size:30px;letter-spacing:0;text-transform:none;color:inherit}
.list:hover .item{opacity:.55}
.list .item:hover{opacity:1}
.list .item:hover .t{transform:translateX(8px)}
.list .item:hover .t svg{opacity:1}
.list .item,.card,.posts>.e-con{position:relative}
.list .item .t a,.card .t a,.price .t a,.posts .t a{color:inherit;text-decoration:none}
.list .item .t a::after,.card .t a::after,.price .t a::after,.posts .t a::after{content:"";position:absolute;inset:0}
.card>.elementor-widget-text-editor>.elementor-widget-container,.list .item>.elementor-widget-text-editor>.elementor-widget-container{display:block}
.price .row .b{font-family:var(--va-display);font-weight:300;font-size:32px;letter-spacing:0;text-transform:none}
.posts>.e-con{display:flex;flex-direction:column;gap:14px;padding-top:24px;border-top:1px solid var(--line)}
.posts>.e-con:hover .t{transform:translateX(6px)}
.steps>.e-con{display:grid;grid-template-columns:56px minmax(0,1fr);gap:20px;padding:24px 0;border-top:1px solid transparent;position:relative}
.steps>.e-con:last-child{border-bottom:1px solid transparent}
.steps .t{display:block;margin-bottom:6px}
.acc-btn .e-n-accordion-item-title-text{display:block}
.acc-panel>.e-con>.elementor-widget-text-editor>.elementor-widget-container{display:contents}

/* formulario CF7 con el aspecto del formulario del prototipo (.contact) */
.contact form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:28px 32px;align-items:end}
.contact form>p{margin:0;min-width:0}
.contact form>p:nth-of-type(2){grid-column:1/-1;grid-row:2}
.contact form>p:nth-of-type(3){grid-column:2;grid-row:1}
.contact form>p:nth-of-type(4){grid-column:1/-1}
.contact form>p:nth-of-type(5){grid-column:1;font-size:13px;color:var(--fg3)}
.contact form>p:nth-of-type(6){grid-column:2;justify-self:end}
.contact .wpcf7-form-control-wrap{display:block}
.contact input[type=text],.contact input[type=email],.contact input[type=tel],.contact textarea{width:100%;height:48px;padding:0;background:none;border:0;border-bottom:1px solid var(--line);color:inherit;font:inherit;outline:none;transition:border-color .3s;border-radius:0}
.contact textarea{height:auto;min-height:96px;padding:12px 0;resize:none}
.contact input:focus,.contact textarea:focus{border-color:currentColor}
.contact ::placeholder{color:var(--fg4)}
.contact .wpcf7-list-item{margin:0}
.contact .wpcf7-list-item label{display:flex;align-items:center;gap:12px}
.contact form>p:nth-of-type(5) label{font-size:13px;color:var(--fg3)}
.contact form>p:nth-of-type(5) br{display:none}
.contact form>p:nth-of-type(5)>label>a{display:inline-block;margin-top:6px;color:var(--fg3);text-decoration:underline}
.contact .wpcf7-submit{display:inline-flex;align-items:center;justify-content:center;height:56px;padding:0 32px;font-size:12px;font-weight:700;letter-spacing:.18em;text-transform:uppercase;background:var(--fg);color:#0a0a0a;border:0;border-radius:0;cursor:pointer;font-family:var(--va-body)}
.contact .wpcf7-spinner{display:none}
.contact .wpcf7-response-output,.contact .wpcf7-not-valid-tip{grid-column:1/-1;margin:0;padding:12px 0 0;border:0;font-size:13px;color:var(--fg3)}
@media (max-width:820px){.contact form{grid-template-columns:1fr}.contact form>p{grid-column:auto!important;grid-row:auto!important}}

/* correcciones tras la primera comparación nativa vs referencia HTML */
.elementor-widget-container.crumbs{display:flex}
/* CLS (01/10): mismo aspecto ANTES de que native.js traslade «crumbs» al contenedor (migas = texto con varios nodos, no se puede hacer en servidor) */
.elementor-widget.crumbs{display:contents}
.elementor-widget.crumbs>.elementor-widget-container{display:flex;gap:12px}
.bq-sm blockquote{font-size:clamp(20px,1.8vw,24px)}
.card .card-t{font-size:19px}
.card .card-d{font-size:13px;line-height:1.5;color:var(--fg3)}
.posts .post-d{font-size:14px;line-height:1.6;color:var(--fg3)}
.steps>.e-con .ln{position:absolute;left:0;top:-1px;height:1px;width:100%;background:var(--line);transform-origin:left;transform:scaleX(0)}
.steps>.e-con:last-child .ln2{position:absolute;left:0;bottom:-1px;height:1px;width:100%;background:var(--line);transform-origin:left;transform:scaleX(0)}
.steps>.e-con>.e-con{display:block}
/* en el prototipo el enlace ERA la tarjeta (.list a / .posts a); aquí el enlace vive dentro del título */
.list .item .t a,.posts .t a{display:inline;flex-direction:row;gap:0;padding:0;border:0;opacity:1}
.steps>.e-con p.d,.steps>.e-con .d p{line-height:25.6px} /* el prototipo maqueta .d como span inline: la línea la marca el strut de 16px del padre */

/* ---- HOME nativa ---- */
.stat .b{display:block;margin-top:0;font-family:var(--va-display);font-weight:300;font-size:clamp(32px,3vw,44px);line-height:1;letter-spacing:-.02em;text-transform:none;color:inherit}
.stat .s{display:block;margin-top:8px;font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--fg3)}
.hero .elementor-widget-text-editor>.elementor-widget-container{display:contents}
.mb64{margin-bottom:64px}.mw-none{max-width:none}
.bleed-media44{position:absolute;top:0;right:0;width:44%;height:100%;opacity:.35}
.bleed-grad2{position:absolute;inset:0;background:linear-gradient(90deg,#0e0e0e 0%,#0e0e0e 50%,rgba(14,14,14,.75) 66%,rgba(14,14,14,.25) 100%)}
.media-cutout{height:clamp(360px,44vw,628px);clip-path:none}
.media-cutout img.img-contain,.media img.img-contain{object-fit:contain;object-position:50% 100%;filter:none}
.name30{font-family:var(--va-display);font-size:30px;letter-spacing:-.02em}
.ls12{letter-spacing:.12em}
.cols360{grid-template-columns:minmax(0,360px) minmax(0,1fr)}
.quotes>.elementor-widget-text-editor>.elementor-widget-container{display:contents}
.pricelist .row{position:relative}
.pricelist .row .t a{color:inherit;text-decoration:none}
.pricelist .row .t a::after{content:"";position:absolute;inset:0}
.pricelist .row .p{white-space:nowrap}
.tailor .txt>.elementor-widget-text-editor>.elementor-widget-container{display:contents}
.posts .post{display:flex;flex-direction:column;gap:14px;padding-top:24px;border-top:1px solid var(--line)}
.posts .post .d{font-size:14px;line-height:1.6;color:var(--fg3)}
.elementor-shortcode.contact,.wpcf7.contact{display:block}
@media (max-width:820px){.cols360{grid-template-columns:1fr}}

/* ---- HOME completa ---- */
.list .item .d a,.card .d a,.posts .post .d a{display:inline;flex-direction:row;gap:0;padding:0;border:0;opacity:1;transition:none;position:relative;z-index:1;text-decoration:underline;text-decoration-color:var(--fg4);text-underline-offset:3px}
.list:hover .item .d a{opacity:1}
.pricelist .row h3.t{font-weight:inherit;letter-spacing:inherit;font-size:inherit;line-height:inherit;margin:0}
h3.name30{font-weight:400;line-height:1.6;letter-spacing:-.02em}
.marquee .marquee-label{flex-shrink:0;width:180px;font-family:var(--va-body);font-size:11px;font-weight:600;letter-spacing:.2em;text-transform:uppercase;color:var(--fg4);line-height:1.6}
.posts .post h3.t{font-weight:300;letter-spacing:0;line-height:1.25;margin:0}
.stat h3.s{font-family:var(--va-body);font-weight:400;letter-spacing:.16em}
@media (max-width:820px){.marquee .marquee-label{display:none}}
/* ---- HOME completa · equipo en dos columnas + partidos judiciales en el footer ---- */
.team{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:40px;align-items:start}
.team .more-body p{font-size:15px}
@media (max-width:820px){.team{grid-template-columns:1fr}}
footer .served{margin:56px 0 0;max-width:960px;font-size:13px;line-height:1.7;color:#7d7c78}
footer .served a{color:#b5b3ae;text-decoration:underline;text-underline-offset:3px}
/* El scroll suave por CSS del prototipo rompe las medidas de ScrollTrigger tras abrir un «Leer más» o un acordeón (refresh() sube a 0 y la página no llega a tiempo): el suave lo hace native.js con scrollIntoView */
html{scroll-behavior:auto}
/* footer en móvil: una columna (a dos columnas el bloque de contacto se sale por la derecha) */
@media (max-width:600px){footer .cols{grid-template-columns:1fr;gap:36px}footer ul a[href^="mailto"]{word-break:break-all}}

/* ---- Landing «asistencia al detenido»: tablas, línea de tiempo y rejillas ---- */
/* tablas de producción (derechos del art. 520 LECrim, oficio vs confianza) con el lenguaje del prototipo */
.tbl-wrap{margin-top:32px;overflow-x:auto}
.va-table{width:100%;border-collapse:collapse;text-align:left}
.va-table th{padding:0 28px 14px 0;font-family:var(--va-body);font-size:11px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--fg4);border-bottom:1px solid var(--line);white-space:nowrap}
.va-table td{padding:20px 28px 20px 0;border-bottom:1px solid var(--line);vertical-align:top;font-size:15px;line-height:1.6;color:var(--fg2)}
.va-table td:first-child{font-family:var(--va-display);font-size:19px;line-height:1.35;letter-spacing:-.01em;color:var(--fg);min-width:190px}
.va-table tbody tr:last-child td{border-bottom:0}
.va-table th:last-child,.va-table td:last-child{padding-right:0}
@media (max-width:860px){.va-table{min-width:660px}}
/* línea de tiempo de plazos (0 h → 72 h) */
.tl{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0 40px}
.tl>.e-con{display:flex;flex-direction:column;gap:12px;padding:24px 0 28px;border-top:1px solid var(--line)}
.tl .k{font-family:var(--va-display);font-size:20px;line-height:1.25;letter-spacing:-.01em}
.tl .d{font-size:14px;line-height:1.6;color:var(--fg3)}
.tl>.e-con>.elementor-widget-text-editor>.elementor-widget-container{display:contents}
@media (max-width:900px){.tl{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:560px){.tl{grid-template-columns:1fr}}
/* rejilla de tarjetas a 3 columnas (5 situaciones de detención) */
.cards.cols3{grid-template-columns:repeat(3,minmax(0,1fr))}
@media (max-width:900px){.cards.cols3{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:560px){.cards.cols3{grid-template-columns:1fr}}
/* títulos de lista sin enlace: sin desplazamiento ni flecha */
.list .item .t.no-arrow{cursor:default}
.list:hover .item:has(.t.no-arrow){opacity:1}

/* bloque de conversión de NDE (snippet global «nde-conv», solo en algunas money pages): native.js lo baja al final del
   hero y aquí se le da el lenguaje del diseño (sin dorado Divi ni esquinas redondeadas); el verde de WhatsApp se mantiene */
.page-head .nde-conv{max-width:none;margin:12px 0 0;align-items:flex-start;text-align:left;gap:16px}
.page-head .nde-conv .nde-r{font-family:var(--va-body);font-size:11px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--fg3)}
.page-head .nde-conv .nde-r .nde-s{color:var(--fg);font-size:13px}
.page-head .nde-conv .nde-bs{width:auto;justify-content:flex-start;gap:16px}
.page-head .nde-conv a{height:56px;padding:0 28px;border-radius:0;font-family:var(--va-body);font-weight:700;letter-spacing:.06em}
.page-head .nde-conv .nde-tel{background:var(--fg);color:#0a0a0a;font-size:18px}
.page-head .nde-conv .nde-tel svg{fill:#0a0a0a}
.page-head .nde-conv .nde-tel small{font-size:10px;font-weight:600;letter-spacing:.16em;opacity:.6}
.page-head .nde-conv .nde-wa{background:#0a5d00;color:#fff;font-size:16px}
.page-head .nde-conv .nde-m{font-size:13px;color:var(--fg3)}
.page-head .nde-conv .nde-m b{color:var(--fg2);font-weight:600}
/* con el bloque presente, el botón de teléfono del hero sobra (mismo número) */
.page-head .stack:has(.nde-conv) .hero-cta .btn-line[href^="tel"]{display:none}
@media (max-width:820px){.page-head .nde-conv .nde-bs{flex-direction:column;width:100%}.page-head .nde-conv a{width:100%}}

/* enlaces dentro de párrafos de texto: subrayado fino como en los acordeones (coherencia y legibilidad) */
.sec .muted a,.sec .lead a,.page-head .lead a{text-decoration:underline;text-decoration-color:var(--fg4);text-underline-offset:3px}
/* tablas en móvil: formato ficha con la etiqueta de columna (un CSS global del tema las convierte en tarjetas y se comía la primera fila) */
@media (max-width:860px){
  .tbl-wrap{overflow:visible}
  .tbl-wrap .va-table{display:block;min-width:0}
  .tbl-wrap .va-table thead{display:none}
  .tbl-wrap .va-table tbody{display:block}
  .tbl-wrap .va-table tr{display:block!important;padding:20px 0;border-bottom:1px solid var(--line)}
  .tbl-wrap .va-table tr:last-child{border-bottom:0}
  .tbl-wrap .va-table td{display:block;padding:0 0 12px;border:0;min-width:0}
  .tbl-wrap .va-table td:last-child{padding-bottom:0}
  .tbl-wrap .va-table td:first-child{font-size:19px;padding-bottom:14px}
  .tbl-wrap .va-table td[data-l]::before{content:attr(data-l);display:block;margin-bottom:4px;font-family:var(--va-body);font-size:10px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--fg4)}
  .tbl-wrap .va-table td:first-child[data-l]::before{content:none}
}
/* botones con texto largo en móvil: que rompan línea en vez de estirar la columna del grid (el «white-space:nowrap»
   del prototipo hacía que «Activar la asistencia ahora · 2.000 €» impusiera 380 px de ancho mínimo) */
@media (max-width:820px){
  .btn,.btn .elementor-button{white-space:normal;height:auto;min-height:56px;padding:16px 24px;line-height:1.35;text-align:center}
  .btn-line,.btn-line .elementor-button{min-height:0;padding:0 0 6px;text-align:left}
  .more-btn{white-space:normal}
}
/* tablas en ficha: sin las cajas que pinta el CSS global del tema */
@media (max-width:860px){
  .tbl-wrap .va-table tr{border:0;border-bottom:1px solid var(--line)!important;background:none!important}
  .tbl-wrap .va-table td{border:0!important;background:none!important}
}

/* escena «línea de tiempo» (.tl): la regla se dibuja de izquierda a derecha con el scroll y cada hito se enciende */
.tl>.e-con{position:relative;border-top-color:transparent}
.tl .tl-rail{position:absolute;left:0;top:-1px;height:1px;width:100%;background:var(--line);transform-origin:left center;transform:scaleX(0)}
.tl .tl-dot{position:absolute;left:0;top:-4px;width:7px;height:7px;border-radius:50%;background:var(--fg4);transform:scale(0);transition:transform .45s cubic-bezier(.16,1,.3,1),background .45s}
.tl>.e-con.on .tl-dot{transform:scale(1);background:var(--fg)}
.tl>.e-con .k{transition:color .45s,transform .45s cubic-bezier(.16,1,.3,1);color:var(--fg3);transform:translateY(2px)}
.tl>.e-con.on .k{color:var(--fg);transform:translateY(0)}
.no-js .tl .tl-rail{transform:scaleX(1)}.no-js .tl>.e-con .k{color:var(--fg)}

/* ---- escena «mapa de cobertura» [va_mapa]: silueta de la almendra de Madrid + Manzanares + rutas ---- */
.vamap{width:100%;max-width:640px;margin-left:auto}
.vamap svg{width:100%;height:auto;overflow:visible}
.vamap .route{fill:none;stroke:currentColor;stroke-width:1;opacity:.45}
.vamap .compass line,.vamap .compass path{stroke:currentColor;fill:currentColor;opacity:.5}
.vamap .compass text{font-size:13px;fill:currentColor;stroke:none;opacity:.6;font-family:var(--va-body)}
.vamap .pt{fill:currentColor}
.vamap .hq{fill:currentColor}
.vamap .hq-halo{fill:none;stroke:currentColor;stroke-width:1;opacity:.5}
.vamap text{font-family:var(--va-body);fill:currentColor;paint-order:stroke;stroke:var(--bg);stroke-width:4px;stroke-linejoin:round}
.vamap .lbl{font-size:14px;letter-spacing:.01em}
.vamap .hq-lbl{font-size:10px;letter-spacing:.2em;text-transform:uppercase;opacity:.65}
.vamap .hq-sub{font-size:12px;opacity:.75}
@media (max-width:820px){.vamap{max-width:none;margin:0}
  .vamap .lbl{font-size:24px}.vamap .hq-sub{font-size:22px}.vamap .hq-lbl{font-size:18px;letter-spacing:.14em}
  .vamap .pt{r:8}.vamap .hq{r:9}}

/* ---- contador del plazo legal [va_urgencia] ---- */
.urg{display:flex;flex-direction:column;gap:10px;max-width:420px;padding-top:26px;border-top:1px solid var(--line)}
.urg .k{font-family:var(--va-body);font-size:11px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--fg3)}
.urg-n{display:flex;align-items:baseline;gap:12px}
.urg-n b{font-family:var(--va-display);font-weight:300;font-size:clamp(34px,3.4vw,46px);line-height:1;letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.urg-n .u{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--fg4)}
.urg-bar{height:1px;background:var(--line);position:relative;overflow:hidden}
.urg-bar i{position:absolute;inset:0;background:currentColor;transform:scaleX(0);transform-origin:left center}
.urg .n{font-size:13px;line-height:1.6;color:var(--fg3)}
.no-js .urg-bar i{transform:scaleX(1)}

/* home.js excluye los [data-reveal] que viven en .hero/.page-head (los anima el timeline del hero): si una clase
   va-reveal cae ahí, el elemento se quedaría invisible para siempre. Salvaguarda: en el hero nada se oculta. */
.page-head .va-reveal,.hero .va-reveal{opacity:1;transform:none}
/* etiquetas del mapa legibles cuando cruzan una ruta o el anillo */
.vamap text{paint-order:stroke;stroke:var(--bg);stroke-width:4px;stroke-linejoin:round}

/* retrato de Víctor (imagen canónica victor-bw.jpg) en la sección «El abogado» */
.media-portrait{height:clamp(420px,48vw,640px)}
/* contador del plazo legal como segundo panel de la columna derecha del hero */
.sticky-wrap .urg-card{margin-top:18px;padding:26px 30px;border:1px solid rgba(255,255,255,.16);background:#0e0e0e;max-width:none}

/* Franja de madrugada: la sección con la provisión/urgencia solo se muestra de 00:00 a 06:59 (hora de Madrid);
   functions.php marca html.va-night en esa franja. Fuera de ella, oculta (sigue en el DOM = paridad de contenido). */
.va-night-only{display:none}
html.va-night .va-night-only{display:block}

/* ---- H1 largos: bajan de tamaño para caber en ~3 líneas (regla para títulos largos) ---- */
.h1-land.h1-long{font-size:clamp(30px,3.8vw,58px);line-height:1.02}

/* ---- tarjeta de dato (estafa informática 508 %, etc.): que el dato no flote solo ---- */
.stat-card{padding:0;display:flex;flex-direction:column;gap:8px}
.stat-card .fig{font-family:var(--va-display);font-weight:300;font-size:clamp(46px,5.6vw,80px);line-height:1;letter-spacing:-.03em}
.stat-card .cap{font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--fg3);line-height:1.5}
.stat-card .sep{height:1px;background:var(--line);margin:18px 0}
.stat-card .fig.sm{font-size:clamp(30px,3.4vw,44px)}

/* bloque enmarcado (regulación art. por art. de blanqueo, etc.): evita el "texto plano suelto" */
.callout{border:1px solid var(--line);padding:clamp(24px,2.6vw,36px);display:flex;flex-direction:column;gap:14px}
.callout>.elementor-widget-text-editor>.elementor-widget-container{display:block}
.callout ol,.callout ul{margin:0;padding-left:20px}
.callout li{padding:6px 0;font-size:15px;line-height:1.6;color:var(--fg2)}
/* ancho estrecho para secciones enmarcadas centradas */
.wrap.narrow{max-width:920px}
.wrap.narrow .callout{max-width:none}

/* banda de énfasis: columna centrada estrecha, sin caja (lenguaje del prototipo, no un recuadro) */
.wrap.narrow.band-stack{display:flex;flex-direction:column;gap:16px;max-width:820px;text-align:left}
.wrap.narrow.band-stack .lead{max-width:none}

/* =====================================================================================================
   Auditoría UX 27/09/2026 (https://claude.ai/artifact/H3WgCY2ifit6GsQPm1JBX8) — capa aditiva, mismos tokens
   y tipografías del sistema; nada nuevo de marca. Cada bloque cita el hallazgo (H0x).
   ===================================================================================================== */

/* H02 · jerarquía: el H1 siempre manda sobre el H2 (H1 ≥ ~1,2 × H2 en 1440 y en 390) */
.h-m{font-size:clamp(28px,3.4vw,50px)}
.h1-land.h1-long{font-size:clamp(34px,4vw,58px)}
/* el desarrollo (columna derecha) no puede leerse más pequeño que la entradilla de la izquierda */
.grid-side>.e-con:last-child .elementor-widget-text-editor p,.grid-side>.e-con:last-child li,
.grid2>.e-con:last-child .elementor-widget-text-editor p,.grid2>.e-con:last-child li,
.grid-one>.e-con:last-child .elementor-widget-text-editor p,.grid-one>.e-con:last-child li{font-size:clamp(16px,1.2vw,17.5px);line-height:1.65}

/* H04 · columnas equilibradas: `grid-one` = una columna de lectura (lo emite generators/postfix.py cuando la
   columna derecha tiene poco texto frente al titular); `grid2 ai-start` = 50/50 */
.grid-one{display:flex;flex-direction:column;gap:clamp(24px,3vw,40px)}
.wrap.grid-one{max-width:var(--max)}
.grid-one>.e-con{max-width:880px}
.grid2.ai-start{align-items:start}

/* H05 · rejilla de servicios de las ubicaciones (módulo `.list` existente): títulos H2 al tamaño de tarjeta */
.list.svc .t{font-size:clamp(20px,1.6vw,24px);line-height:1.2}
.list.svc .d a{text-decoration:underline;text-underline-offset:3px}

/* H13 · legibilidad y contraste del microtexto (≥ 4,5:1 sobre claro y oscuro) */
.trust span,.trust .s{font-size:12px;color:var(--fg2)}
.posts .k{color:var(--fg3)}

@media (max-width:820px){
  /* H01 · cabecera móvil: el botón pisaba el logo; la barra fija inferior ya lleva las dos acciones */
  .nav .btn-ghost{display:none}
  .nav{height:72px}
  .page-head{padding-top:112px}
  /* migas en una línea, sin partir el hero */
  .page-head .wrap>*,.page-head .stack>*{min-width:0;max-width:100%}
  .elementor-widget.crumbs>.elementor-widget-container,.elementor-widget-container.crumbs{flex-wrap:nowrap;overflow:hidden;white-space:nowrap;align-items:center;max-width:100%}
  .elementor-widget.crumbs>.elementor-widget-container>*,.elementor-widget-container.crumbs>*{flex:0 0 auto}
  .elementor-widget.crumbs>.elementor-widget-container>span:last-child,.elementor-widget-container.crumbs>span:last-child{flex:0 1 auto;overflow:hidden;text-overflow:ellipsis;min-width:0}
  /* H06 · franja de datos: recupera el margen lateral (el `padding:24px 0` anulaba el de .wrap) */
  .trust{padding-left:var(--gutter);padding-right:var(--gutter)}
  .trust>.e-con{flex-direction:column;gap:4px}
  /* H06 · el botón de la columna izquierda baja al final de la sección (no parte la frase de su lista) */
  .grid-side,.grid2{display:flex;flex-direction:column;gap:28px}
  .grid-side>.e-con:first-child,.grid2>.e-con:first-child{display:contents}
  .grid-side>.e-con:first-child .elementor-button,.grid2>.e-con:first-child .elementor-button{order:9;align-self:flex-start}
  .grid-side>.e-con:last-child,.grid2>.e-con:last-child{order:5}
  /* foto como primera columna: conserva su caja (si no, el parallax la saca del marco y pisa el texto; bio 596, 02/10) */
  .grid-side>.e-con.media:first-child,.grid2>.e-con.media:first-child{display:block}
  /* H13 · áreas táctiles ≥ 44 px */
  .btn-line,.btn-line.elementor-button,.more-btn{min-height:44px;display:inline-flex;align-items:center;padding-top:10px}
  .elementor-widget.crumbs a,.elementor-widget-container.crumbs a{padding:12px 0}
}

/* H03 · molde urgente (asistencia al detenido, aeropuerto, habeas corpus: body.va-urgent, functions.php):
   una sola vía por canal. Fuera el «Agendar consulta» de cabecera, la cita de la tarjeta y el bloque
   duplicado de teléfono/WhatsApp inyectado en el hero (su número es el de oficina 8-20 h). */
.va-urgent .nav .btn-ghost{display:none}
.va-urgent .page-head .nde-conv .nde-bs{display:none}
.va-urgent .sticky-card a.btn-solid[href*="consulta"],.va-urgent .sticky-card a.btn-solid[href*="calendar"],.va-urgent .sticky-card a.btn-solid[href="#contacto"],.va-urgent .sticky-card a.btn-solid[href="#consulta"]{display:none}

/* ---- Fase 2 (01/10): ritmo ---- */
/* .list a 5 columnas: rejillas de 5 (p. ej. 4 áreas + «¿Tu caso no está aquí?») o 10 elementos sin fila huérfana */
.list.five{grid-template-columns:repeat(5,minmax(0,1fr));gap:0 32px}
@media (max-width:1100px){.list.five{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:820px){.list.five{grid-template-columns:1fr}}
/* fila de botones (mismo espaciado que .hero-cta) */
.row-btns{display:flex;align-items:center;gap:28px;flex-wrap:wrap;margin-top:12px}

/* cabecera con 7 enlaces (01/10: «Ubicaciones» y «Contacto» como en producción): el teléfono no se parte, el logo no toca el menú,
   y en pantallas medianas se ocultan «Método» y «Opiniones» (anclas de la home; siguen en el menú grande) */
.nav .wrap{gap:32px}
.nav .tel{white-space:nowrap}
@media (max-width:1560px){.nav ul{gap:24px;letter-spacing:.1em}}
@media (max-width:1380px){.nav ul .menu-item-14417,.nav ul .menu-item-14419{display:none}}
.nav .wrap>a:first-child,.nav .logo{flex:none}
@media (max-width:1180px){.nav ul{gap:18px;letter-spacing:.08em}.nav ul .menu-item-14418{display:none}.nav .right{gap:18px}.nav .btn-ghost{padding:0 16px}}
@media (max-width:960px){.nav .btn-ghost{display:none}}

/* a11y 02/10: grises del tema claro con contraste AA (≥4,5:1 sobre #ebe9e3): antes #6f6e6a 4,2 y #8a8985 2,9 */
:root{--lfg3:#62615d;--lfg4:#6a6964}
/* a11y 02/10: menú y «· 24h» de la cabecera legibles también sobre fondo claro */
.nav ul{opacity:.88}.nav .tel span{opacity:.72}
/* ---- /medios/ · rejilla de apariciones (tarjeta = imagen + H2 + «Ver más»; 02/10) ---- */
.press-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:72px 48px}
.press-card{position:relative;display:flex;flex-direction:column;gap:20px;align-items:flex-start}
.press-card .press-img img,.press-card img.press-img{display:block;width:100%;height:auto;aspect-ratio:3/2;object-fit:cover;object-position:50% 30%;filter:grayscale(1);transition:filter .6s ease}
.press-card:hover img{filter:grayscale(0)}
.press-card .t,.press-card h2.t{font-family:var(--va-display);font-weight:300;font-size:clamp(18px,1.35vw,21px);line-height:1.3;letter-spacing:-.01em;margin:0;color:var(--fg)}
.press-card .t a{color:inherit;text-decoration:none}
.press-card .t a::after{content:"";position:absolute;inset:0}
.press-card .btn-line{position:relative;z-index:1;white-space:nowrap}
@media (max-width:1024px){.press-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:56px 32px}}
@media (max-width:640px){.press-grid{grid-template-columns:minmax(0,1fr);gap:48px}}
/* 05/10 · móvil: la foto de cierre (retrato o foto real) pasa a fondo tenue; antes el titular y el texto quedaban encima de la cara */
@media (max-width:820px){.bleed-media,.bleed-media44{width:62%;opacity:.16}.bleed-media.bleed-portrait{opacity:.2}}
/* 05/10 · (páginas nativas no cargan style.css) */
.burger,.burger:hover,.burger:focus{color:inherit;background:none;border:0}
/* listas dentro de la descripción de un paso («Se examinan:»): lista normal, no la rejilla de .steps li */
.steps .d li{display:list-item;grid-template-columns:none;gap:0;padding:2px 0;border:0}
.steps .d li .ln,.steps .d li .ln2{display:none}
.steps .d ul,.steps .d ol{margin:8px 0 0;padding-left:18px}
/* «Seguimos el dinero» en móvil: tamaño legible y desliza en horizontal */
@media (max-width:820px){.trail{overflow-x:auto;-webkit-overflow-scrolling:touch}.trail svg{min-width:640px}}
/* ===== 05/10 · maquetación: ritmo y equilibrio (Nico: «páginas sobrecargadas, texto pegado») ===== */
/* columna izquierda fija mientras se lee la derecha, en secciones de 2 columnas descompensadas */
@media (min-width:1101px){.stk>:first-child{position:sticky;top:120px;align-self:start}}
/* subsecciones (H3) de una sección larga a todo el ancho → filas: subtítulo a la izquierda, texto a la derecha */
.subrows{display:flex;flex-direction:column;margin-top:clamp(32px,4vw,48px)}
.subrow{display:grid!important;grid-template-columns:minmax(0,1fr) minmax(0,1.9fr);gap:clamp(24px,4vw,64px);padding:clamp(32px,4vw,48px) 0;border-top:1px solid var(--line)}
.subrow>:first-child .elementor-heading-title{font-size:clamp(20px,1.8vw,26px);line-height:1.2}
.subrow>:last-child{display:flex;flex-direction:column;gap:14px;max-width:760px}
@media (min-width:1101px){.subrow>:first-child{position:sticky;top:120px;align-self:start}}
@media (max-width:820px){.subrow{grid-template-columns:minmax(0,1fr);gap:12px}}
/* texto corrido a todo el ancho: línea de lectura cómoda (las tablas siguen a todo el ancho) */
.wrap.stack>.elementor-widget-text-editor:not(:has(table)) .elementor-widget-container,.wrap.stack>.va-w:not(:has(table))>.elementor-widget-container{max-width:860px}
/* llamada a la acción intermedia */
.cta-row{display:flex!important;flex-wrap:wrap;align-items:center;gap:16px 28px;margin-top:clamp(28px,3vw,40px)}
.measure{max-width:860px}
.tac .measure,.ai-center>.measure{margin-inline:auto}
/* banda de cierre «Da el primer paso» con retrato: contenido alineado al margen y a la izquierda de la foto (antes centrado y pisando la foto) */
@media (min-width:821px){.sec:has(>.bleed-portrait)>.wrap{max-width:none;margin-left:0;margin-right:0;padding-right:44%}}
@media (max-width:820px){.page-head .sticky-wrap{display:none}}
.cta-sec{padding-top:0!important}
.cta-sec .cta-row{margin-top:0}
@media (max-width:860px){.tbl-wrap .va-table td:first-child{min-width:0}}
/* 05/10 dos secciones seguidas del mismo fondo: sin el doble padding (~220px) que parecía un hueco vacío */
.sec.va-theme-light+.sec.va-theme-light,.sec.va-theme-dark+.sec.va-theme-dark{padding-top:clamp(32px,4vw,56px)}
/* 05/10 esquema «seguimos el dinero» en móvil: se desliza; que se note que sigue */
@media (max-width:820px){.trail::before{content:'Desliza →';display:block;position:sticky;left:0;font:600 10px/1 var(--body,'Manrope',sans-serif);letter-spacing:.2em;text-transform:uppercase;color:#9a9a96;margin-bottom:10px}.trail{-webkit-mask-image:linear-gradient(90deg,#000 80%,transparent);mask-image:linear-gradient(90deg,#000 80%,transparent)}}
/* 05/10 lista de enlaces en dos columnas (urgente 24 h) */
.links-2{columns:2;column-gap:28px;list-style:none;margin:8px 0 0;padding:0}
.links-2 li{break-inside:avoid;margin:0 0 10px;font-size:14px;line-height:1.35}
@media (max-width:600px){.links-2{columns:1}}
/* ===== 05/10 · ritmo de maquetación: las secciones de texto ya no son todas el mismo bloque de dos columnas =====
   (clase en la sección, la pone fix_rhythm en revision_fixes.py según el contenido; nunca dos iguales seguidas) */
@media (min-width:821px){
  :is(.lay-top,.lay-keys,.lay-center) :is(.grid-side,.grid2,.grid-one){display:grid;grid-template-columns:minmax(0,1fr);row-gap:clamp(28px,3vw,44px);align-items:start}
  :is(.lay-top,.lay-keys,.lay-center) :is(.grid-side,.grid2,.grid-one)>.e-con{position:static!important}
  :is(.lay-top,.lay-keys) :is(.grid-side,.grid2,.grid-one)>.e-con:first-child{max-width:920px}
  .lay-top :is(.grid-side,.grid2,.grid-one)>.e-con:last-child{max-width:860px}
  /* titular arriba + texto a dos columnas */
  .lay-top.lay-cols2 :is(.grid-side,.grid2,.grid-one)>.e-con:last-child{display:block;max-width:none;columns:2;column-gap:clamp(40px,5vw,88px);border-top:1px solid var(--line);padding-top:clamp(24px,2.4vw,36px)}
  .lay-top.lay-cols2 :is(.grid-side,.grid2,.grid-one)>.e-con:last-child>*{margin-bottom:16px}
  .lay-top.lay-cols2 .h3-sub{break-after:avoid}
  .lay-top.lay-cols2 li,.lay-top.lay-cols2 .h3-sub,.lay-top.lay-cols2 .elementor-widget-button{break-inside:avoid}
  /* centrada: titular y entradilla al centro, cuerpo debajo en medida de lectura */
  .lay-center :is(.grid-side,.grid2,.grid-one)>.e-con:first-child{align-items:center;text-align:center;max-width:860px;margin:0 auto}
  .lay-center :is(.grid-side,.grid2,.grid-one)>.e-con:first-child .as-start{align-self:center}
  .lay-center :is(.grid-side,.grid2,.grid-one)>.e-con:last-child{max-width:720px;margin:0 auto;width:100%}
  /* claves numeradas: la lista pasa a rejilla 01, 02, 03… a todo el ancho */
  .lay-keys :is(.grid-side,.grid2,.grid-one)>.e-con:last-child{max-width:none}
  .lay-keys :is(.grid-side,.grid2,.grid-one)>.e-con:last-child>.elementor-widget:not(:has(ul,ol)){max-width:860px}
  .lay-keys :is(.grid-side,.grid2,.grid-one)>.e-con:last-child :is(ul,ol){list-style:none;margin:8px 0 0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));gap:28px clamp(28px,3vw,48px);counter-reset:k}
  .lay-keys :is(.grid-side,.grid2,.grid-one)>.e-con:last-child :is(ul,ol)>li{counter-increment:k;border-top:1px solid var(--line2,var(--line));padding-top:18px;margin:0;font-size:15.5px;line-height:1.6}
  .lay-keys :is(.grid-side,.grid2,.grid-one)>.e-con:last-child :is(ul,ol)>li::before{content:counter(k,decimal-leading-zero);display:block;font:500 11px/1 var(--body,'Manrope',sans-serif);letter-spacing:.2em;color:var(--fg3);margin-bottom:12px}
}
@media (min-width:821px){.lay-top.lay-cols2 :is(.grid-side,.grid2,.grid-one)>.e-con:last-child p{margin:0 0 14px}}
/* 05/10 · dos columnas: un párrafo nunca se parte entre columnas (Nico: «se corta la columna de la derecha») */
@media (min-width:821px){.lay-top.lay-cols2 :is(.grid-side,.grid2,.grid-one)>.e-con:last-child :is(p,li,.elementor-widget-heading,.elementor-widget-button){break-inside:avoid}}
/* ===== 05/10 · revisión UX de las páginas que no son de servicio ===== */
/* precios (home): el concepto ya no se pega al importe («200 páginas250 €») */
.pricelist .row{gap:24px}
.pricelist .row>.elementor-widget:first-child{flex:1 1 auto;min-width:0}
.pricelist .row>.elementor-widget:last-child{flex:none;white-space:nowrap}
/* secciones con acordeón de preguntas: el titular de la izquierda acompaña al leer (antes ~1.000 px vacíos) */
@media (min-width:1101px){:is(.grid-side,.grid2):has(>.e-con .elementor-widget-nested-accordion)>.e-con:first-child{position:sticky;top:120px;align-self:start}}
/* /ubicaciones/: 54 localidades en rejilla compacta, sin numerar */
.ubic-list .item .n{display:none}
.ubic-list{display:grid!important;grid-template-columns:repeat(4,minmax(0,1fr))!important;gap:0 32px!important}
.ubic-list .item{padding:14px 0!important;border-top:1px solid var(--line)}
.ubic-list .item .t{font-size:16px!important;line-height:1.35}
@media (max-width:1100px){.ubic-list{grid-template-columns:repeat(3,minmax(0,1fr))!important}}
@media (max-width:820px){.ubic-list{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:0 16px!important}.ubic-list .item .t{font-size:14px!important}}
/* ===== 06/10 · piloto salud pública: foto de producción junto al texto, desplegables dentro de sección ===== */
.media-land{height:clamp(280px,32vw,480px);overflow:hidden;position:relative}
.media-land img{width:100%;height:100%;object-fit:cover;filter:grayscale(1)}
.split-photo{align-items:center}
.split-photo>.stack{gap:20px}
.head-photo{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:clamp(32px,5vw,72px);align-items:center;max-width:none!important}
.head-photo>.media-land{height:clamp(220px,24vw,340px)}
@media (max-width:820px){.split-photo>.media-land{order:-1!important;height:240px}.head-photo{grid-template-columns:1fr}.head-photo>.media-land{height:220px}}
/* desplegables dentro de una sección (subapartados): más ligeros que las FAQ */
.acc-sub{margin-top:8px}
.acc-sub .e-n-accordion-item-title-text,.acc-sub summary{font-size:clamp(18px,1.5vw,21px)!important}
/* 06/10 · tarjetas que enlazan a su página: descripción a 4 líneas (el texto completo está en la página enlazada) */
.list .item:has(.t a) .d,.list .item:has(.t a)>.elementor-widget-text-editor .elementor-widget-container{display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}
/* 07/10 · «Leer más» dentro de tarjetas (.list): no hereda el estilo de enlace-tarjeta de `.list a` (Sara: desplegables en penas de violencia doméstica) */
.list .item a.more-btn{display:inline-flex;flex-direction:row;align-items:center;gap:10px;align-self:flex-start;padding:0 0 6px;margin-top:18px;border-top:0;border-bottom:1px solid var(--line)}
.list .item .more .more-body .d{margin-top:0}
