/* Tema Oliver · wp.css — lo imprescindible para WordPress. Nada de aquí cambia el aspecto de la maqueta:
   solo traduce los ganchos de WP (barra de administración, Contact Form 7, bloques, lector de pantalla)
   a las clases que la maqueta ya define. Se carga después de a11y.css. */

/* Barra de administración (solo con sesión iniciada): la cabecera fija y la subnav bajan lo que mide la barra */
body.admin-bar .top{top:calc(32px + env(safe-area-inset-top,0px))}
body.admin-bar .subnav{top:calc(104px + env(safe-area-inset-top,0px))}
body.admin-bar .skip:focus{top:calc(44px + env(safe-area-inset-top,0px))}
@media(max-width:782px){
  body.admin-bar .top{top:calc(46px + env(safe-area-inset-top,0px))}
  body.admin-bar .subnav{top:calc(118px + env(safe-area-inset-top,0px))}
  body.admin-bar .skip:focus{top:calc(58px + env(safe-area-inset-top,0px))}
}

/* Texto solo para lectores de pantalla (clase estándar de WP, equivalente a .sr-only de la maqueta) */
.screen-reader-text{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.screen-reader-text:focus{clip:auto;height:auto;width:auto;left:16px;top:16px;z-index:300;padding:12px 18px;background:var(--navy);color:#fff;border-radius:999px;font-weight:600;text-decoration:none}

/* Imágenes servidas por la Biblioteca de medios: los atributos width/height no deben romper los marcos */
.pill img,.card-img img,.gallery .ph img,.plant .map img,.video img{width:100%;height:100%}
.marquee img,.logo-row img{height:auto}

/* Contact Form 7 → clases del formulario de la maqueta (se anula la hoja de estilos propia de CF7) */
.wpcf7 form{display:grid;gap:18px}
.wpcf7 form .hidden-fields-container{display:none} /* solo inputs ocultos; si no, ocupa una fila de la rejilla (18 px de hueco) */
.wpcf7 form .wpcf7-form-control-wrap{display:grid;gap:8px;min-width:0}
.wpcf7 .wpcf7-not-valid-tip{color:var(--err);font-size:.88rem;font-weight:600}
.wpcf7 .wpcf7-radio{display:flex;flex-direction:column;align-items:flex-start;flex-wrap:nowrap;gap:8px}
.wpcf7 .wpcf7-list-item{display:block;margin:0}
.wpcf7 .wpcf7-list-item label{display:inline-flex;gap:8px;align-items:center;min-height:44px;border:1.5px solid var(--outline);border-radius:var(--r-pill);padding:10px 16px;font-weight:500;cursor:pointer;color:var(--outline-text)}
.wpcf7 .wpcf7-list-item input{width:auto;accent-color:var(--outline-text)}
.wpcf7 .wpcf7-list-item label:has(input:checked){border-color:var(--ink);background:var(--surface)}
.wpcf7 form .wpcf7-response-output{background:var(--surface);border-radius:20px;padding:18px 20px;font-weight:500;margin:0;border:0}
.wpcf7 form.invalid .wpcf7-response-output,.wpcf7 form.unaccepted .wpcf7-response-output,.wpcf7 form.failed .wpcf7-response-output,.wpcf7 form.aborted .wpcf7-response-output,.wpcf7 form.spam .wpcf7-response-output{color:var(--err)}
.wpcf7 form.init .wpcf7-response-output,.wpcf7 form.resetting .wpcf7-response-output,.wpcf7 form.submitting .wpcf7-response-output,.wpcf7 form.sent .wpcf7-response-output:empty{display:none}
.wpcf7 form.sent button[type="submit"]{opacity:.55;pointer-events:none}
.wpcf7 .screen-reader-response{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.wpcf7 .oliver-hp{position:absolute!important;left:-9999px;width:1px;height:1px;opacity:0;pointer-events:none}
.form-col{display:grid;gap:18px;align-content:start}
.wpcf7 form .wpcf7-spinner{display:none}
/* Diseño 5 · casilla de privacidad (.check). El [acceptance] de CF7 mete casilla y texto en un <label>: los envoltorios
   desaparecen (display:contents, son <span> sin semántica) y el <label> reparte casilla y texto en las dos columnas de
   .check con subgrid, como la maqueta; el error queda bajo el texto, como .check .err. Anula el aspecto de píldora de las opciones. */
.wpcf7 .check .wpcf7-form-control-wrap,.wpcf7 .check .wpcf7-acceptance,.wpcf7 .check .wpcf7-list-item{display:contents}
.wpcf7 .check .wpcf7-list-item label{grid-column:1/-1;display:grid;grid-template-columns:subgrid;align-items:start;min-height:0;border:0;border-radius:0;padding:0;background:none;color:inherit;font-weight:500;font-size:.95rem;cursor:pointer}
.wpcf7 .check .wpcf7-list-item label:has(input:checked){background:none}
.wpcf7 .check .wpcf7-list-item input{width:22px;height:22px;margin:2px 0 0;accent-color:#0B1423}
.wpcf7 .check .wpcf7-not-valid-tip{grid-column:2}
/* Diseño 5 · páginas legales: la tabla es un bloque «Tabla» (figure.wp-block-table.legal-table) y WP ≥ 6.9 carga el CSS
   del bloque bajo demanda después del tema (bordes en todas las celdas, 3 px bajo la cabecera, margen inferior). Se
   anula para que quede como .legal-table de la maqueta. */
.legal-body .wp-block-table{margin:0}
.legal-body .wp-block-table thead{border-bottom:0}
.legal-body .wp-block-table th,.legal-body .wp-block-table td{border:0;border-bottom:1px solid var(--line);padding:12px 14px}

/* Contenido libre del editor (páginas legales y bloques añadidos por el cliente) */
.prose{display:grid;gap:18px}
.prose h2,.prose h3{margin-top:18px}
.prose ul,.prose ol{margin:0;padding-left:1.2em;max-width:62ch}
.prose li+li{margin-top:6px}
.prose a{text-decoration:underline;text-underline-offset:3px}
.prose .wp-block-image img,.prose figure img{border-radius:28px}
.prose .alignwide{max-width:none}

/* Noticias: el cuerpo lo escribe el cliente con bloques del editor; inc/news.php les añade las clases .nd-* de la maqueta. Aquí, lo que la maqueta no cubre. */
.nd-body ul,.nd-body ol{margin:0;padding-left:1.2em;max-width:65ch}
.nd-body .wp-block-image{margin:0;max-width:none}
.nd-body .wp-block-image figcaption{margin:10px 0 0;text-align:left} /* el CSS del bloque de imagen del core (bajo demanda) añade margin-bottom:1em */
.nd-body .wp-block-quote cite{display:block;margin-top:8px;font:400 .9rem var(--sans);color:var(--muted);font-style:normal}
.nd-body a{text-decoration:underline;text-underline-offset:3px}
.news-grid .ncard .ph img,.nf-media img,.nd-cover .ph img,.nd-img .ph img{width:100%;height:100%}
.chips-filter .chip[aria-current="page"]{background:var(--sel-bg);color:var(--sel-fg);border-color:var(--sel-bg)}
