/* ============================================================
   OP.CSS · CódigoPlaza — apuntes de oposiciones de informática
   (dominio destino codigoplaza.es · build en pruebasg.online)
   Port del diseño aprobado objetivoplaza-landing.html:
   A tokens · B fuentes · C base/puente Astra · D cabecera propia ·
   E componentes portada · F puente WooCommerce · G footer ·
   H reveals + reduced-motion.
   Ratios de contraste medidos en el diseño original; re-medir si
   se cambia una tinta.
   ============================================================ */

/* ---------- A · TOKENS ---------- */
:root{
  --crema:   #FAF9F6;  /* fondo — 14.6:1 con tinta */
  --blanco:  #FFFFFF;  /* superficies/cards */
  --tinta:   #16233F;  /* texto ppal (navy ink) */
  --bruma:   #51607B;  /* texto secundario — 6.0:1 sobre crema */
  --marca:   #FFE24A;  /* subrayador — tinta encima 12.5:1 */
  --azul:    #2451E6;  /* CTA/enlaces — 5.8:1 sobre crema; blanco encima 6.2:1 */
  --azul-2:  #1B3FBB;  /* hover */
  --exito:   #157347;  /* checks/badges — 5.4:1 sobre crema */
  --line:    rgba(22,35,63,.16);
  --line-2:  rgba(22,35,63,.32);
  --maxw:    1160px;
  --d1: 160ms; --d2: 260ms;
  --ease: cubic-bezier(.3,1,.4,1);
}

/* ---------- B · FUENTES (auto-alojadas, variables) ---------- */
@font-face{
  font-family:'Lexend';
  src:url('../fonts/lexend-var.woff2') format('woff2');
  font-weight:100 900;
  font-style:normal;
  font-display:swap;
}
@font-face{
  font-family:'Spline Sans Mono';
  src:url('../fonts/splinesansmono-var.woff2') format('woff2');
  font-weight:300 700;
  font-style:normal;
  font-display:swap;
}

/* ---------- C · BASE + PUENTE ASTRA ---------- */
html{scroll-behavior:smooth;scroll-padding-top:92px;}
html,body{overflow-x:clip;}
body{
  background:var(--crema);color:var(--tinta);
  font-family:'Lexend',system-ui,sans-serif;
  font-size:16px;line-height:1.65;-webkit-font-smoothing:antialiased;
}
@media (min-width:768px){body{font-size:17px;}}
h1,h2,h3{font-family:'Lexend',system-ui,sans-serif;font-weight:800;line-height:1.06;letter-spacing:-.02em;color:var(--tinta);}
.mono{font-family:'Spline Sans Mono',monospace;}
.wrap{width:min(var(--maxw),calc(100% - 44px));margin:0 auto;}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0;}

/* enlaces del contenido */
body a{color:inherit;text-decoration:none;}
.entry-content a:not(.btn):not(.btn-card):not(.button):not(.guia-btn){color:var(--azul);text-decoration:underline;text-underline-offset:3px;}

/* focus visible */
a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{
  outline:3px solid var(--azul);outline-offset:3px;border-radius:6px;
}
.on-tinta:focus-visible{outline-color:var(--marca);}

/* Skip link propio, en español y apuntando a #contenido.
   El de Astra (.skip-link.screen-reader-text) se oculta: su clip/clip-path
   lo mantiene invisible incluso al recibir foco y su texto va en inglés. */
.skip-link.screen-reader-text{display:none!important;}
.gab-skip{position:fixed;top:-64px;left:16px;z-index:400;background:var(--tinta);color:var(--crema);
  font-weight:600;padding:13px 20px;min-height:44px;display:inline-flex;align-items:center;
  border-radius:0 0 10px 10px;transition:top var(--d1) var(--ease);}
.gab-skip:focus,.gab-skip:focus-visible{top:0;}

/* ---------- D · CABECERA PROPIA (el plugin la pinta vía hooks Astra) ---------- */
header.top{position:sticky;top:0;z-index:200;background:rgba(250,249,246,.95);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border-bottom:1.5px solid var(--tinta);}
.top-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;height:74px;}
.brand{display:flex;align-items:center;gap:11px;min-height:44px;}
.brand .mark{width:34px;height:34px;flex:0 0 auto;}
.brand .name{font-weight:800;font-size:18px;letter-spacing:-.02em;color:var(--tinta);}
.brand .name em{font-style:normal;color:var(--azul);}
.nav-desktop{display:none;align-items:center;gap:0;}
.nav-desktop a{
  display:inline-flex;align-items:center;min-height:44px;padding:12px 13px;
  font-size:14.5px;font-weight:600;color:var(--bruma);
  transition:color var(--d1) var(--ease);
}
.nav-desktop a:hover{color:var(--azul);}
/* En pantallas estrechas el CTA se oculta: marca + CTA + botón de menú no
   caben en 360px (desbordaban 42px, tapados por overflow-x:clip). El menú
   móvil lleva su propio "Ver temarios", así que no se pierde la acción. */
.cta-top{display:none;}
@media (min-width:560px){
  .cta-top{
    display:inline-flex;align-items:center;gap:9px;min-height:46px;padding:11px 20px;margin-left:10px;
    background:var(--azul);color:#fff!important;font-weight:600;font-size:15px;
    border-radius:10px;transition:background var(--d1) var(--ease),transform var(--d1) var(--ease);
  }
}
.cta-top:hover{background:var(--azul-2);transform:translateY(-1px);}
/* Astra estiliza TODOS los <button> con `button:focus/:hover{background:azul;
   color:#fff}` (0,1,1), que gana a una clase suelta (0,1,0): al pulsar, los
   botones propios se volvían azul Astra con texto blanco. Por eso cada botón
   propio declara sus estados de forma explícita. */
.menu-btn,.menu-btn:hover,.menu-btn:focus,.menu-btn:active{
  display:inline-flex;align-items:center;justify-content:center;
  min-width:46px;min-height:46px;cursor:pointer;
  color:var(--tinta);background-color:transparent;box-shadow:none;
  border:1.5px solid var(--tinta);border-radius:10px;
  transition:background-color var(--d1) var(--ease);
}
.menu-btn:hover,.menu-btn:focus{background-color:rgba(36,81,230,.08);}
.menu-btn svg{width:21px;height:21px;stroke:var(--tinta);}
/* Carrito de la cabecera: siempre accesible, con contador de marca */
.cart-link{position:relative;display:inline-flex;align-items:center;justify-content:center;
  width:46px;height:46px;flex:0 0 auto;border-radius:10px;color:var(--tinta);
  transition:background-color var(--d1) var(--ease);}
.cart-link:hover{background-color:rgba(36,81,230,.08);}
.cart-link svg{width:23px;height:23px;stroke:var(--tinta);fill:none;}
.cart-count{position:absolute;top:3px;right:3px;min-width:18px;height:18px;padding:0 4px;
  border-radius:9px;background:var(--marca);color:var(--tinta);
  font-size:11px;font-weight:800;line-height:1;display:inline-flex;align-items:center;justify-content:center;
  box-shadow:0 0 0 2px var(--crema);}
.cart-count[hidden]{display:none;}
@media (min-width:980px){.nav-desktop{display:flex;}.menu-btn{display:none;}}
/* menú móvil */
.mnav{display:none;background:var(--crema);border-bottom:1.5px solid var(--tinta);}
.mnav.open{display:block;}
.mnav nav{display:flex;flex-direction:column;padding:8px 0 18px;}
.mnav a{
  display:flex;align-items:center;min-height:56px;padding:15px 6px;
  font-weight:800;font-size:1.3rem;letter-spacing:-.01em;color:var(--tinta);
  border-bottom:1px solid var(--line);
  transition:color var(--d1) var(--ease),padding-left var(--d2) var(--ease);
}
.mnav a:hover{color:var(--azul);padding-left:14px;}
.mnav .mnav-cta{
  margin-top:14px;display:inline-flex;align-items:center;justify-content:center;gap:10px;
  min-height:54px;padding:14px 24px;background:var(--azul);color:#fff;
  font-weight:600;font-size:1.05rem;border-radius:10px;border-bottom:none;
}
/* El hover genérico (.mnav a:hover) volvía el texto azul sobre el fondo azul del
   botón y desaparecía: el CTA mantiene texto blanco y oscurece el fondo. */
.mnav .mnav-cta:hover{background:var(--azul-2);color:#fff;padding-left:24px;}

/* subrayador (dispositivo de marca) */
.marca{
  position:relative;display:inline;
  background-image:linear-gradient(to top, var(--marca) 0%, var(--marca) 46%, transparent 46%);
  background-repeat:no-repeat;background-size:100% 100%;
  padding:0 .06em;box-decoration-break:clone;-webkit-box-decoration-break:clone;
}
/* Trazo sobre fondo tinta.
   Aquí el texto va en tinta (para leerse sobre el amarillo), así que el trazo
   DEBE cubrir toda la tinta de la palabra: lo que quede fuera es tinta sobre
   tinta e desaparece. Pero cubrir la caja entera de la línea lo dejaba
   pegado al renglón de arriba, porque esa caja incluye el hueco vacío del
   ascendente (1,25em en Lexend, y la tinta nunca pasa del ~85%).
   Se recorta con paradas del gradiente, no con background-size, para no
   pisar el barrido de .marca-anim (que anima el ANCHO).
   Los topes van ajustados a la tinta real de cada palabra, medida con
   canvas measureText (actualBoundingBoxAscent/Descent) sobre la caja
   fontBoundingBox. Son porcentajes, así que aguantan el cambio de tamaño
   del clamp(); si se cambia la PALABRA, hay que volver a medir. */
.muestra-box .marca,.cierre .marca{
  background-image:linear-gradient(to top,
    transparent var(--trazo-pie), var(--marca) var(--trazo-pie),
    var(--marca) var(--trazo-alto), transparent var(--trazo-alto));
  padding:0 .14em;border-radius:3px;
}
/* "sola": sin descendentes; tinta del 18,8 % al 80 % → margen de ~2 % */
.cierre .marca{--trazo-pie:14%;--trazo-alto:82%;}
/* "gratis": la 'g' baja hasta el borde inferior de la caja (tinta 0 %-84,6 %)
   → el pie no se puede subir sin cortarle la cola. */
.muestra-box .marca{--trazo-pie:0%;--trazo-alto:87%;}

/* Barrido de entrada del subrayador: se dispara cuando el bloque .reveal que
   lo contiene se hace visible, así entra con la sección en vez de solo al
   cargar la página. */
.js .marca-anim{background-size:0% 100%;}
.js .reveal.visible .marca-anim{background-size:100% 100%;transition:background-size .8s var(--ease) .25s;}

/* ---------- E · COMPONENTES PORTADA ---------- */
/* hero */
.hero{padding:clamp(64px,9vw,120px) 0 clamp(56px,7vw,88px);text-align:center;}
.hero .pre{font-family:'Spline Sans Mono',monospace;font-size:12.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--bruma);margin-bottom:20px;}
.hero h1{font-size:clamp(2.8rem,8.4vw,5.6rem);max-width:16ch;margin:0 auto;}
.hero .lede{color:var(--bruma);font-size:clamp(1.05rem,1.7vw,1.3rem);margin:24px auto 36px;max-width:52ch;}
.hero .lede b{color:var(--tinta);font-weight:600;}
.hero-cta{display:flex;gap:14px;flex-wrap:wrap;justify-content:center;margin-bottom:clamp(40px,5vw,56px);}
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:10px;
  font-weight:600;font-size:16.5px;border-radius:12px;cursor:pointer;border:none;
  padding:16px 30px;min-height:54px;
  transition:background var(--d1) var(--ease),transform var(--d1) var(--ease),color var(--d1) var(--ease),border-color var(--d1) var(--ease);
}
.btn-azul{background:var(--azul);color:#fff;}
.btn-azul:hover{background:var(--azul-2);color:#fff;transform:translateY(-2px);}
.btn-line{background:transparent;color:var(--tinta);border:1.5px solid var(--tinta);}
.btn-line:hover{background:var(--tinta);color:var(--crema);transform:translateY(-2px);}
/* chips de confianza */
.confianza{display:flex;flex-wrap:wrap;gap:10px 26px;justify-content:center;}
.confianza .chip{
  display:inline-flex;align-items:center;gap:8px;min-height:44px;
  font-size:14px;font-weight:600;color:var(--bruma);
}
.confianza .chip svg{width:19px;height:19px;stroke:var(--exito);flex:0 0 auto;}

/* secciones */
section.bloque{padding:clamp(72px,9vw,120px) 0;}
section.bloque.sin-top{padding-top:0;}
.bloque-head{max-width:56ch;margin-bottom:clamp(34px,5vw,48px);}
.bloque-head.centrado{margin-left:auto;margin-right:auto;text-align:center;}
.b-tag{font-family:'Spline Sans Mono',monospace;font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--azul);margin-bottom:12px;}
.bloque-head h2{font-size:clamp(1.9rem,4.6vw,3rem);}
.bloque-head .sub{color:var(--bruma);margin-top:12px;font-size:1.05rem;}

/* filtros del catálogo */
.filtros{display:flex;flex-wrap:wrap;gap:9px;margin-bottom:28px;}
/* Estados explícitos: ver nota sobre los <button> de Astra en la cabecera. */
.filtro,.filtro:hover,.filtro:focus,.filtro:active{
  display:inline-flex;align-items:center;min-height:46px;padding:11px 20px;cursor:pointer;
  border:1.5px solid var(--line-2);border-radius:99px;font-size:14.5px;font-weight:600;
  color:var(--bruma);background-color:var(--blanco);box-shadow:none;
  transition:border-color var(--d1) var(--ease),background-color var(--d1) var(--ease),color var(--d1) var(--ease);
}
.filtro:hover,.filtro:focus{border-color:var(--azul);color:var(--tinta);}
.filtro[aria-pressed="true"],.filtro[aria-pressed="true"]:hover,.filtro[aria-pressed="true"]:focus{
  background-color:var(--tinta);border-color:var(--tinta);color:var(--crema);
}

/* catálogo (portada; alimentado por productos Woo) */
.catalogo{display:grid;grid-template-columns:1fr;gap:18px;}
@media (min-width:720px){.catalogo{grid-template-columns:1fr 1fr;gap:20px;}}
@media (min-width:1040px){.catalogo{grid-template-columns:1fr 1fr 1fr;}}
.temario{
  position:relative;background:var(--blanco);border:1.5px solid var(--line);border-radius:16px;
  padding:26px 24px 24px;display:flex;flex-direction:column;
  transition:border-color var(--d2) var(--ease),transform var(--d2) var(--ease),box-shadow var(--d2) var(--ease);
}
.temario:hover{border-color:var(--azul);transform:translateY(-5px);box-shadow:0 18px 40px rgba(22,35,63,.1);}
.temario.oculto{display:none;}
.temario .fila-top{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:14px;}
.temario .cat{font-family:'Spline Sans Mono',monospace;font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--bruma);}
.temario .boe{
  font-family:'Spline Sans Mono',monospace;font-size:10.5px;letter-spacing:.06em;font-weight:600;
  background:rgba(21,115,71,.1);color:var(--exito);border:1px solid rgba(21,115,71,.35);
  border-radius:99px;padding:4px 10px;white-space:nowrap;
}
.temario .top-badge{
  position:absolute;top:-13px;left:22px;
  background:var(--marca);color:var(--tinta);font-size:11.5px;font-weight:800;letter-spacing:.04em;
  border:1.5px solid var(--tinta);border-radius:99px;padding:4px 12px;text-transform:uppercase;
}
.temario h3{font-size:1.22rem;line-height:1.2;margin-bottom:12px;}
.temario h3 a{color:inherit;}
.temario h3 a:hover{color:var(--azul);}
.temario ul{list-style:none;margin:0 0 18px;padding:0;display:grid;gap:7px;}
.temario ul li{display:flex;gap:9px;align-items:flex-start;font-size:.92rem;color:var(--bruma);}
.temario ul li svg{width:16px;height:16px;stroke:var(--exito);flex:0 0 auto;margin-top:3px;}
.temario .pie{margin-top:auto;display:flex;align-items:center;justify-content:space-between;gap:12px;}
.temario .precio{font-weight:800;font-size:1.7rem;letter-spacing:-.02em;color:var(--tinta);}
.temario .precio small{font-size:.8rem;font-weight:600;color:var(--bruma);display:block;letter-spacing:0;}
.temario .btn-card{
  display:inline-flex;align-items:center;justify-content:center;min-height:46px;padding:11px 20px;
  background:var(--azul);color:#fff;font-weight:600;font-size:14.5px;border-radius:10px;
  transition:background var(--d1) var(--ease),transform var(--d1) var(--ease);
}
.temario .btn-card:hover{background:var(--azul-2);color:#fff;transform:translateY(-1px);}
.temario .muestra{
  display:inline-flex;align-items:center;min-height:44px;margin-top:10px;
  font-size:13.5px;font-weight:600;color:var(--azul);text-decoration:underline;text-underline-offset:3px;
}
.catalogo-nota{margin-top:24px;font-size:.95rem;color:var(--bruma);}

/* cómo funciona */
.pasos{display:grid;grid-template-columns:1fr;gap:16px;}
@media (min-width:860px){.pasos{grid-template-columns:1fr 1fr 1fr;gap:20px;}}
.paso{
  background:var(--blanco);border:1.5px solid var(--line);border-radius:16px;padding:28px 26px;
  transition:border-color var(--d2) var(--ease),transform var(--d2) var(--ease);
}
.paso:hover{border-color:var(--azul);transform:translateY(-4px);}
.paso .n{
  font-family:'Spline Sans Mono',monospace;font-weight:600;font-size:13px;color:var(--azul);
  display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;
  border:1.5px solid var(--azul);border-radius:99px;margin-bottom:16px;
}
.paso h3{font-size:1.15rem;margin-bottom:8px;}
.paso p{color:var(--bruma);font-size:.96rem;}
.paso p b{color:var(--tinta);font-weight:600;}

/* por qué + garantía */
.porque{display:grid;grid-template-columns:1fr;gap:14px;}
@media (min-width:720px){.porque{grid-template-columns:1fr 1fr;gap:18px;}}
.razon{display:flex;gap:16px;align-items:flex-start;background:var(--blanco);border:1.5px solid var(--line);border-radius:14px;padding:22px;}
.razon .ic{flex:0 0 auto;width:44px;height:44px;border-radius:12px;background:rgba(36,81,230,.1);display:grid;place-items:center;}
.razon .ic svg{width:22px;height:22px;stroke:var(--azul);}
.razon h3{font-size:1.05rem;margin-bottom:4px;}
.razon p{color:var(--bruma);font-size:.93rem;}
.garantia{
  margin-top:22px;display:flex;gap:16px;align-items:flex-start;
  background:rgba(21,115,71,.07);border:1.5px solid rgba(21,115,71,.4);border-radius:14px;padding:22px;
}
.garantia svg{width:26px;height:26px;stroke:var(--exito);flex:0 0 auto;margin-top:2px;}
.garantia p{font-size:.98rem;}
.garantia b{color:var(--exito);}

/* muestra gratis (lead magnet) */
.muestra-box{
  background:var(--tinta);color:var(--crema);border-radius:22px;
  padding:clamp(32px,5vw,56px);display:grid;grid-template-columns:1fr;gap:32px;
}
@media (min-width:920px){.muestra-box{grid-template-columns:1.05fr .95fr;gap:56px;align-items:center;}}
.muestra-box h2{color:#fff;font-size:clamp(1.8rem,4vw,2.6rem);}
.muestra-box h2 .marca{color:var(--tinta);}
.muestra-box p{color:#B9C2D6;margin-top:12px;font-size:1.02rem;}
.mform .field{margin-bottom:14px;}
.mform label{display:block;font-weight:600;font-size:.92rem;margin-bottom:6px;color:#fff;}
.mform input,.mform select{
  width:100%;min-height:52px;background:#0F1830;border:1.5px solid rgba(250,249,246,.25);border-radius:10px;
  padding:14px 16px;color:#fff;font-family:'Lexend',sans-serif;font-size:16px;
  transition:border-color var(--d1) var(--ease),box-shadow var(--d1) var(--ease);
}
.mform input::placeholder{color:#8b96ad;}
.mform input:focus,.mform select:focus{outline:none;border-color:var(--marca);box-shadow:0 0 0 3px rgba(255,226,74,.2);}
.mform select{appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none' stroke='%23B9C2D6' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='4 6 8 10 12 6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 16px center;}
.mform .btn{width:100%;background:var(--marca);color:var(--tinta);}
.mform .btn:hover{background:#F5D63A;color:var(--tinta);transform:translateY(-2px);}
.mform .btn:focus-visible{outline-color:var(--marca);}
.mform .aviso{font-family:'Spline Sans Mono',monospace;font-size:11px;color:#8b96ad;margin-top:10px;letter-spacing:.03em;}
.form-msg{display:none;margin-top:14px;padding:14px 16px;border-radius:10px;font-size:.95rem;
  background:rgba(255,226,74,.12);border:1.5px solid var(--marca);color:#fff;}
.form-msg.show{display:block;}

/* faq */
.dudas{max-width:760px;margin:0 auto;}
.duda{border-bottom:1px solid var(--line);}
/* Estados explícitos: ver nota sobre los <button> de Astra en la cabecera.
   Sin esto, al abrir una pregunta el botón se quedaba con fondo azul de Astra
   y el texto ilegible. */
.duda-q,.duda-q:hover,.duda-q:focus,.duda-q:active{
  width:100%;display:flex;align-items:center;gap:18px;text-align:left;
  min-height:64px;padding:20px 4px;cursor:pointer;
  background-color:transparent;border:none;box-shadow:none;
  font-family:'Lexend',system-ui,sans-serif;font-weight:600;font-size:1.1rem;color:var(--tinta);
  transition:color var(--d1) var(--ease);
}
.duda-q:hover,.duda-q:focus{color:var(--azul);}
.duda-q .fl{flex:0 0 auto;width:22px;height:22px;stroke:var(--azul);transition:transform var(--d2) var(--ease);}
.duda-q[aria-expanded="true"] .fl{transform:rotate(180deg);}
.duda-a{max-height:0;overflow:hidden;transition:max-height var(--d2) ease;}
.duda-a p{padding:0 4px 22px 40px;color:var(--bruma);}

/* cierre */
/* El bloque navy va contenido (1200px) con aire blanco a los lados; sin este
   margin quedaba pegado al footer (navy sobre borde navy = sin separación). Le
   damos el mismo respiro blanco debajo, antes del footer. */
.cierre{background:var(--tinta);color:var(--crema);padding:clamp(88px,11vw,150px) 0;text-align:center;margin-bottom:clamp(48px,6vw,80px);}
.cierre h2{color:#fff;font-size:clamp(2.2rem,6vw,4rem);max-width:18ch;margin:0 auto 16px;}
.cierre h2 .marca{color:var(--tinta);}
.cierre p{color:#B9C2D6;max-width:46ch;margin:0 auto 36px;font-size:1.1rem;}
.cierre .btn-marca{background:var(--marca);color:var(--tinta);}
.cierre .btn-marca:hover{background:#F5D63A;color:var(--tinta);transform:translateY(-2px);}
.cierre .btn-marca:focus-visible{outline-color:var(--marca);outline-offset:5px;}

/* ---------- F · PUENTE WOOCOMMERCE (tienda/ficha/carrito/checkout) ---------- */
/* botones Woo clásicos → look .btn-azul (.alt/.checkout = acción PRINCIPAL) */
.woocommerce a.button,.woocommerce button.button,.woocommerce input.button,
.woocommerce #respond input#submit,.woocommerce a.button.alt,.woocommerce button.button.alt{
  background:var(--azul);color:#fff;font-weight:600;border-radius:10px;
  padding:12px 22px;min-height:46px;display:inline-flex;align-items:center;justify-content:center;
  transition:background var(--d1) var(--ease),transform var(--d1) var(--ease);
}
.woocommerce a.button:hover,.woocommerce button.button:hover,.woocommerce input.button:hover,
.woocommerce a.button.alt:hover,.woocommerce button.button.alt:hover{
  background:var(--azul-2);color:#fff;transform:translateY(-1px);
}
/* inputs clásicos en claro */
.woocommerce form .form-row input.input-text,.woocommerce form .form-row textarea,
.woocommerce form .form-row select{
  background:var(--blanco);border:1.5px solid var(--line-2);border-radius:10px;
  min-height:48px;padding:12px 14px;color:var(--tinta);font-family:'Lexend',sans-serif;
}
.woocommerce form .form-row input.input-text:focus,.woocommerce form .form-row textarea:focus{
  border-color:var(--azul);box-shadow:0 0 0 3px rgba(36,81,230,.15);outline:none;
}
/* grid de la tienda (Astra ya usa grid; afinar tarjeta) */
.woocommerce ul.products li.product{
  background:var(--blanco);border:1.5px solid var(--line);border-radius:16px;padding:22px;
  transition:border-color var(--d2) var(--ease),transform var(--d2) var(--ease),box-shadow var(--d2) var(--ease);
}
.woocommerce ul.products li.product:hover{border-color:var(--azul);transform:translateY(-4px);box-shadow:0 18px 40px rgba(22,35,63,.1);}
.woocommerce ul.products li.product .price,.woocommerce div.product p.price{
  color:var(--tinta);font-weight:800;
}
/* avisos */
.woocommerce-message,.woocommerce-info{border-top-color:var(--azul);}
.woocommerce-error{border-top-color:#b32d2e;}
/* Woo BLOCKS (carrito/checkout nuevos): variables propias del sistema de bloques */
.wc-block-components-button:not(.is-link){
  background:var(--azul);color:#fff;border-radius:10px;font-weight:600;
}
.wc-block-components-button:not(.is-link):hover{background:var(--azul-2);color:#fff;}
.wp-block-woocommerce-checkout,.wp-block-woocommerce-cart{
  --wc-primary:var(--azul);
}

/* ---------- F2 · FICHA WOO: A11Y CONTRASTE ---------- */
/* Astra pinta el breadcrumb en #777 sobre blanco (contraste 4.48 < 4.5:1) con
   `.woocommerce-js .woocommerce-breadcrumb a` (0,2,1). Igualamos su especificidad
   y ganamos por orden de carga (op.css va después). --bruma (#51607B) ≈ 6.4:1. */
.woocommerce-js .woocommerce-breadcrumb,
.woocommerce-js .woocommerce-breadcrumb a,
.ast-woo-product-category,
.ast-woo-product-category a{color:var(--bruma);}
.woocommerce-js .woocommerce-breadcrumb a:hover,
.ast-woo-product-category a:hover{color:var(--azul);}
/* Astra amortigua la categoría del producto con `opacity:.6`, lo que baja el
   contraste efectivo de --bruma de 6.4:1 a ~3.4:1 (falla). El gris de marca ya
   está lo bastante apagado, así que la dejamos a opacidad plena. Se cubre tanto
   la ficha como el grid de productos relacionados (selector de Astra, misma
   especificidad, gana por orden de carga). */
.ast-woo-product-category{opacity:1;}
.woocommerce-page ul.products li.product .ast-woo-product-category{color:var(--bruma);opacity:1;}

/* ---------- G · FOOTER PROPIO ---------- */
footer.op-foot{border-top:1.5px solid var(--tinta);padding:34px 0 38px;background:var(--crema);}
/* Mobile-first: apilado y alineado a la izquierda; en escritorio pasa a fila con space-between (min-width:720px, más abajo). */
.foot{display:flex;flex-direction:column;align-items:flex-start;gap:12px;}
.foot .brandline{font-weight:800;font-size:1.05rem;color:var(--tinta);}
.foot .brandline em{font-style:normal;color:var(--azul);}
.foot-links{display:flex;gap:2px 4px;flex-wrap:wrap;margin-inline-start:-12px;}
.foot-links a{display:inline-flex;align-items:center;min-height:44px;padding:10px 12px;font-size:14.5px;color:var(--bruma);transition:color var(--d1) var(--ease);}
.foot-links a:hover{color:var(--azul);}
.foot-legal{display:flex;flex-direction:column;align-items:flex-start;gap:10px;margin-top:22px;padding-top:20px;border-top:1px solid color-mix(in srgb,var(--tinta) 14%,transparent);}
.legal-links{display:flex;flex-direction:column;align-items:flex-start;gap:0;margin-inline-start:-12px;}
.legal-links a{display:inline-flex;align-items:center;min-height:44px;padding:8px 12px;font-size:13.5px;color:var(--bruma);transition:color var(--d1) var(--ease);}
.legal-links a:hover{color:var(--azul);}
.legal-copy{font-family:'Spline Sans Mono',monospace;font-size:11.5px;color:var(--bruma);letter-spacing:.04em;}
@media (min-width:720px){
	.foot{flex-direction:row;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:16px 32px;}
	.foot-links{margin-inline-start:0;}
	.foot-legal{flex-direction:row;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 24px;}
	.legal-links{flex-direction:row;flex-wrap:wrap;align-items:center;gap:2px 6px;margin-inline-start:0;}
}

/* ---------- H · REVEALS + REDUCED MOTION ---------- */
/* estado por defecto = VISIBLE; solo con .js se parte de oculto */
.js .reveal{opacity:0;transform:translateY(24px);transition:opacity .6s var(--ease),transform .6s var(--ease);}
.js .reveal.visible{opacity:1;transform:translateY(0);}
.js .d1{transition-delay:70ms}.js .d2{transition-delay:140ms}.js .d3{transition-delay:210ms}

@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto;}
  *,*::before,*::after{animation:none!important;transition:none!important;}
  .js .reveal{opacity:1!important;transform:none!important;}
  .js .marca-anim,.js .reveal.visible .marca-anim{background-size:100% 100%!important;transition:none!important;}
  .btn:hover,.cta-top:hover,.temario:hover,.paso:hover,.razon:hover,
  .woocommerce ul.products li.product:hover{transform:none!important;}
}

/* ---------- I · GUÍAS (blog /guias/) ---------- */
/* Cabecera del post: título a medida de artículo (no el H1 gigante del hero) */
.single-post .entry-header,
.blog .entry-header{max-width:760px;margin:0 auto;padding-top:clamp(28px,5vw,52px);}
.single-post .entry-title{font-size:clamp(1.9rem,4.4vw,3rem);line-height:1.1;margin-bottom:14px;}
/* El meta genérico de Astra ("Por / fecha") se oculta: la frescura ya la da,
   de forma intencionada y de marca, el .guia-kicker ("Actualizada a …"). La
   fecha real de publicación/modificación sigue en el schema Article y el sitemap. */
.single-post .entry-meta{display:none;}

/* Columna de lectura */
.guia{width:min(760px,100%);margin:0 auto;padding:8px 0 40px;}
.guia > * + *{margin-top:1.1em;}
.guia p,.guia li{line-height:1.72;}
.guia strong{font-weight:700;color:var(--tinta);}
.guia h2{font-size:clamp(1.5rem,3.2vw,2rem);margin:2.2em 0 .35em;scroll-margin-top:92px;}
.guia h3{font-size:1.18rem;font-weight:700;margin:1.6em 0 .2em;color:var(--tinta);}
.guia ul{padding-left:1.3em;}
.guia ul li{margin:.35em 0;}

.guia-kicker{font-family:'Spline Sans Mono',monospace;font-size:12.5px;letter-spacing:.03em;
  color:var(--azul);text-transform:uppercase;margin-bottom:1.2em!important;}
.guia-lead{font-size:1.16rem;line-height:1.6;color:var(--tinta);}

/* Tablas (marco + scroll horizontal en móvil) */
.guia-tabla{overflow-x:auto;margin:1.3em 0;border:1px solid var(--line);border-radius:12px;-webkit-overflow-scrolling:touch;}
.guia-tabla table{width:100%;border-collapse:collapse;font-size:15px;}
.guia-tabla th,.guia-tabla td{text-align:left;padding:11px 14px;border-bottom:1px solid var(--line);vertical-align:top;}
.guia-tabla thead th{background:var(--tinta);color:var(--crema);font-weight:600;position:sticky;top:0;}
.guia-tabla tbody tr:last-child td{border-bottom:none;}
.guia-tabla tbody tr:nth-child(even){background:rgba(22,35,63,.03);}
.guia-esquema td:first-child{font-weight:600;}

/* Preguntas de examen */
.guia-q{border:1.5px solid var(--line);border-radius:14px;padding:20px 22px;margin:16px 0;background:var(--blanco);}
.guia-q__head{display:flex;align-items:center;gap:10px;margin-bottom:12px;}
.guia-q__n{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;flex:0 0 auto;
  border-radius:50%;background:var(--tinta);color:var(--crema);font-weight:700;font-size:14px;}
.guia-q__src{font-family:'Spline Sans Mono',monospace;font-size:12px;color:var(--bruma);letter-spacing:.02em;}
.guia-q__enun{font-weight:600;margin:0 0 12px;}
.guia-q__ops{list-style:lower-alpha;padding-left:1.5em;margin:0;}
.guia-q__ops li{margin:.35em 0;}
.guia-q__sol{margin-top:14px;border-top:1px solid var(--line);padding-top:6px;}
.guia-q__sol summary{display:inline-flex;align-items:center;gap:9px;min-height:44px;cursor:pointer;
  font-weight:600;color:var(--azul);list-style:none;}
.guia-q__sol summary::-webkit-details-marker{display:none;}
.guia-q__sol summary::after{content:"";width:8px;height:8px;flex:0 0 auto;
  border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg);
  transition:transform var(--d1) var(--ease);}
.guia-q__sol[open] summary::after{transform:rotate(-135deg);}
.guia-q__sol > div{padding:8px 0 4px;color:var(--tinta);}
.guia-q__r{font-weight:700;color:var(--exito);margin-right:5px;}

/* Bloque de conversión (funnel a producto) */
.guia-cta{margin:2.4em 0;background:var(--tinta);color:#fff;border-radius:18px;padding:clamp(24px,4vw,38px);}
.guia-cta__eyebrow{font-family:'Spline Sans Mono',monospace;font-size:12px;letter-spacing:.04em;
  color:var(--marca);text-transform:uppercase;margin:0 0 8px;}
.guia-cta__title{color:#fff;font-size:clamp(1.5rem,3.4vw,2.1rem);margin:0 0 12px;}
.guia-cta__text{color:#C7D0E4;margin:0 0 22px;line-height:1.6;}
.guia-cta__text strong{color:#fff;font-weight:600;}
.guia-cta__btns{display:flex;flex-wrap:wrap;gap:12px;}
.guia-btn{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:13px 22px;
  border-radius:11px;font-weight:600;font-size:15px;text-decoration:none!important;
  transition:transform var(--d1) var(--ease),background var(--d1) var(--ease),border-color var(--d1) var(--ease);}
.guia-btn--primary{background:var(--marca);color:var(--tinta)!important;}
.guia-btn--primary:hover{transform:translateY(-1px);background:#ffe97a;}
.guia-btn--ghost{background:transparent;color:#fff!important;border:1.5px solid rgba(255,255,255,.42);}
.guia-btn--ghost:hover{border-color:#fff;background:rgba(255,255,255,.08);}

/* FAQ */
.guia-faq{margin-top:.6em;}
.guia-faq details{border-bottom:1px solid var(--line);}
.guia-faq summary{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:56px;
  padding:14px 4px;cursor:pointer;font-weight:600;font-size:1.05rem;list-style:none;}
.guia-faq summary::-webkit-details-marker{display:none;}
.guia-faq summary::after{content:"";width:10px;height:10px;flex:0 0 auto;
  border-right:2px solid var(--bruma);border-bottom:2px solid var(--bruma);transform:rotate(45deg);
  transition:transform var(--d2) var(--ease);}
.guia-faq details[open] summary::after{transform:rotate(-135deg);}
.guia-faq details > div{padding:0 4px 18px;color:var(--bruma);}
.guia-faq details > div p{margin:0;line-height:1.65;}

/* ---------- K · HUB DE GUÍAS (/guias/) ---------- */
.guias-hub-head{grid-column:1/-1;flex-basis:100%;width:100%;margin:0 0 clamp(20px,3.5vw,36px);padding-top:clamp(18px,3.5vw,40px);}
.guias-hub-kicker{font-family:'Spline Sans Mono',monospace;font-size:12.5px;letter-spacing:.04em;text-transform:uppercase;color:var(--azul);margin:0 0 .9em;}
.guias-hub-head h1{font-size:clamp(2rem,5.2vw,3.4rem);line-height:1.04;letter-spacing:-.02em;margin:0 0 .35em;max-width:18ch;}
.guias-hub-lead{font-size:1.12rem;color:var(--bruma);line-height:1.55;max-width:62ch;margin:0;}
/* Tarjetas del blog de Astra con un toque de marca (elevación al pasar) */
.blog .ast-article-post{transition:transform var(--d1) var(--ease),box-shadow var(--d1) var(--ease);}
.blog .ast-article-post:hover{transform:translateY(-3px);box-shadow:0 14px 34px rgba(22,35,63,.12);}
@media (prefers-reduced-motion:reduce){.blog .ast-article-post:hover{transform:none;}}
