/* ESECE Express — /express/, las quince fichas y /express/solicitud/
   Hoja de familia: las fichas las escribe scripts/express-generar.js, así
   que el CSS vive aquí y no incrustado quince veces. Copiada de
   esece-subvencion.css en todo lo común (barra, cabecera, bloques, pasos,
   preguntas, botones, pie); lo propio de Express va marcado con «ex-».
   Se carga ANTES del <style> de la página, como las otras hojas de familia. */

:root{--verde:#1a3a2e;--verde2:#254d3d;--mar:#1c3040;--oro:#c9a96e;--oro2:#e2c28a;--crema:#f5f0e8;--calido:#ede6d8;--blanco:#fff;--gris:#6b6560;--tinta:#161412;--oro-text:#806329}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{background-color:#0d1613;scroll-behavior:smooth;scroll-padding-top:80px}
body{font-family:'Outfit','Outfit Fallback',sans-serif;background:var(--crema);color:var(--tinta)}
a{text-decoration:none;color:inherit}
img,svg{max-width:100%;height:auto}

/* Barra de navegación */
.nav{position:fixed;top:0;left:0;right:0;z-index:999;display:flex;align-items:center;justify-content:space-between;padding:1rem 5vw;background:rgba(245,240,232,0.97);backdrop-filter:blur(16px);box-shadow:0 1px 0 rgba(0,0,0,0.08)}
.nav-logo{font-family:'Playfair Display','Playfair Fallback',serif;font-size:1.6rem;font-weight:700;color:var(--tinta)}.nav-logo span{color:var(--oro)}
.nav-links{display:flex;gap:1.75rem;list-style:none;align-items:center}.nav-links a{font-size:0.78rem;font-weight:500;letter-spacing:0.08em;text-transform:uppercase;color:var(--gris)}
.nav-cta{background:var(--oro)!important;color:var(--blanco)!important;padding:0.55rem 1.25rem!important}
.nav-burger{display:none;flex-direction:column;gap:5px;cursor:pointer;background:none;border:none;padding:11px 9px;min-width:44px;min-height:44px;align-items:center;justify-content:center}
.nav-burger span{display:block;width:26px;height:1.5px;background:var(--tinta)}
.breadcrumb{background:var(--calido);padding:0.75rem 5vw;font-size:0.78rem;color:var(--gris);border-bottom:1px solid rgba(0,0,0,0.07)}
.breadcrumb a{color:var(--gris)}.breadcrumb span{margin:0 0.4rem}

/* Cabecera. Compacta a propósito: el catálogo tiene que asomar en la primera
   pantalla de un portátil, así que el hero mide menos que el de las fichas de
   subvenciones (7rem arriba) y el título no pasa de 46 px. */
.hero{background:linear-gradient(160deg,#1a3a2e 0%,#1c3040 50%,#16252e 100%);padding:5.5rem 5vw 2.25rem;color:var(--blanco)}
.hero-inner{max-width:1080px;margin:0 auto}
.hero-tag{display:inline-block;font-size:0.72rem;letter-spacing:0.18em;text-transform:uppercase;color:var(--oro2);margin-bottom:1rem;font-weight:600;background:rgba(201,169,110,0.15);padding:0.42rem 1rem;border:1px solid rgba(201,169,110,0.3)}
.hero h1{font-family:'Playfair Display','Playfair Fallback',serif;font-size:clamp(2rem,3.6vw,2.9rem);font-weight:700;line-height:1.15;margin-bottom:0.9rem;text-wrap:balance;max-width:20ch}
.hero h1 em{font-style:italic;color:var(--oro2)}
.hero p.hero-desc{font-size:1.02rem;line-height:1.7;color:rgba(255,255,255,0.8);font-weight:400;max-width:640px}
.hero-linea{margin-top:1.1rem;font-size:0.8rem;letter-spacing:0.04em;color:rgba(255,255,255,0.62);font-weight:400;max-width:640px;line-height:1.7}
.hero-btns{display:flex;flex-wrap:wrap;gap:0.75rem;margin-top:1.25rem}
.hero-btns .btn{display:inline-block}

/* Secciones */
.section{padding:3.25rem 5vw;background:var(--crema)}
.section-blanca{background:#fff}
.inner{max-width:1080px;margin:0 auto}
.bloque+.bloque{margin-top:2.5rem}
.bloque h2{font-family:'Playfair Display','Playfair Fallback',serif;font-size:1.55rem;color:var(--tinta);font-weight:700;line-height:1.25;margin-bottom:0.9rem}
.bloque h2 em{font-style:italic;color:var(--oro-text)}
.bloque h3{font-size:1rem;font-weight:600;color:var(--tinta);margin:1.4rem 0 0.5rem}
.bloque p{font-size:0.97rem;line-height:1.75;color:var(--gris);font-weight:400}
.bloque p+p{margin-top:0.8rem}
.bloque p strong{color:var(--tinta);font-weight:600}
.bloque a{color:var(--oro-text);font-weight:600;border-bottom:1px solid rgba(128,99,41,.35)}
@media (hover: hover){
.bloque a:hover{border-bottom-color:var(--oro-text)}
}
.stag{font-size:0.7rem;letter-spacing:0.25em;text-transform:uppercase;color:var(--oro-text);display:block;margin-bottom:0.75rem;font-weight:500}

/* Listas: «qué incluye» con el cuadrado oro de las fichas; «qué no incluye»
   con una raya gris, para que se distingan sin color y sin iconos. */
.lista{list-style:none;display:flex;flex-direction:column;gap:0.6rem;margin-top:0.4rem}
.lista li{font-size:0.97rem;line-height:1.7;color:var(--gris);font-weight:400;padding-left:1.15rem;position:relative}
.lista li::before{content:'';position:absolute;left:0;top:0.62em;width:5px;height:5px;background:var(--oro)}
.lista li strong{color:var(--tinta);font-weight:600}
.lista-no li::before{width:8px;height:1px;top:0.8em;background:var(--gris)}

/* Caja destacada y aviso */
.caja{background:#fff;border-left:3px solid var(--oro);padding:1.25rem 1.4rem}
.section-blanca .caja{background:var(--crema)}
.caja p{font-size:1rem;line-height:1.7;color:var(--tinta);font-weight:400}
.caja p+p{margin-top:0.55rem}
.aviso{margin-top:1.5rem;font-size:0.86rem;line-height:1.75;color:var(--gris);font-weight:400;border-left:3px solid var(--oro);padding:0.9rem 1.1rem;background:#fff}
.section-blanca .aviso{background:var(--crema)}
.aviso strong{color:var(--tinta);font-weight:600}
.aviso+.aviso{margin-top:0.75rem}
.bloque .nota{margin-top:1rem;font-size:0.9rem;padding-left:0.9rem;border-left:2px solid var(--calido)}

/* Pasos («Cómo funciona»): cinco en fila en escritorio, columna en móvil. */
.pasos{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,190px),1fr));gap:1.1rem;margin-top:1.2rem}
.pasos-5{grid-template-columns:repeat(auto-fit,minmax(min(100%,170px),1fr))}
.paso{background:#fff;border:1px solid rgba(0,0,0,0.09);padding:1.35rem 1.3rem}
.section-blanca .paso{background:var(--crema)}
.paso-n{font-family:'Playfair Display','Playfair Fallback',serif;font-size:1.5rem;color:var(--oro-text);font-weight:700;line-height:1;margin-bottom:0.5rem}
.paso h3{font-size:0.95rem;font-weight:600;color:var(--tinta);margin:0 0 0.4rem}
.paso p{font-size:0.88rem;line-height:1.65}
.tras-rejilla{margin-top:1.4rem}

/* «Cómo funciona» como pila de fichas (JJ, 2026-09-29): cada paso se queda
   fijo bajo la barra (position:sticky) y el siguiente se desliza encima al
   bajar, con un escalón de 0,85rem por ficha para que se vea el mazo. Sin
   JavaScript ni carrusel; en las fichas ocupa la columna de texto y en
   /express/ la columna derecha. Con movimiento reducido no hay nada que
   apagar: es desplazamiento normal. */
.ex-pila{list-style:none;display:flex;flex-direction:column;gap:0.9rem;margin:1.2rem 0 0;padding:0}
.ex-pila .paso{position:sticky;top:86px;background:#fff;border:1px solid rgba(0,0,0,0.09);padding:1.3rem 1.3rem 1.35rem;display:grid;grid-template-columns:auto minmax(0,1fr);column-gap:1.1rem;align-items:start;box-shadow:0 -6px 18px rgba(22,20,18,0.05)}
.section-blanca .ex-pila .paso{background:var(--crema)}
.ex-pila .paso:nth-child(2){top:calc(86px + 0.85rem)}
.ex-pila .paso:nth-child(3){top:calc(86px + 1.7rem)}
.ex-pila .paso:nth-child(4){top:calc(86px + 2.55rem)}
.ex-pila .paso:nth-child(5){top:calc(86px + 3.4rem)}
.ex-pila .paso-n{grid-row:1/3;font-family:'Playfair Display','Playfair Fallback',serif;font-size:2rem;color:var(--oro-text);font-weight:700;line-height:1;margin:0.1rem 0 0;min-width:1.4rem}
.ex-pila .paso h3{grid-column:2;font-size:1rem;font-weight:600;color:var(--tinta);margin:0.2rem 0 0.35rem}
.ex-pila .paso p{grid-column:2;font-size:0.9rem;line-height:1.65;color:var(--gris)}

/* ── Catálogo (/express/) ── */
.ex-cats{display:flex;flex-wrap:wrap;gap:0.4rem;margin:1.4rem 0 0.5rem}
.ex-cats a{font-size:0.8rem;color:var(--tinta);background:#fff;border:1px solid rgba(0,0,0,0.12);padding:0.45rem 0.8rem;line-height:1.3;transition:border-color .15s,background .15s,color .15s}
.ex-cats a[aria-current="true"]{background:var(--verde);border-color:var(--verde);color:#fff}
.ex-cats-n{font-size:0.72rem;opacity:0.65;margin-left:0.15rem}
/* En el móvil el desplegable sustituye a los chips (el patrón de /blog/):
   siete chips ocupaban tres filas desiguales a 390 px. Nace oculto y lo
   enseña el guion de /express/; sin JavaScript se quedan los chips, que son
   anclas y funcionan solos. El chevron es el mismo SVG de trazo del blog. */
.ex-cats-movil{display:none}
@media(max-width:600px){
  .ex-cats-movil:not([hidden]){display:block;margin:1.4rem 0 0.25rem}
  .ex-cats-movil:not([hidden])+.ex-cats{display:none}
  .ex-cats-movil label{display:block;font-size:0.7rem;letter-spacing:0.18em;text-transform:uppercase;color:var(--oro-text);font-weight:600;margin-bottom:0.5rem}
  .ex-cats-movil select{width:100%;min-height:48px;padding:0.75rem 2.8rem 0.75rem 1rem;font-family:inherit;font-size:1rem;color:var(--tinta);background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23c9a96e' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") no-repeat right 0.9rem center/20px 20px;border:1px solid rgba(0,0,0,0.15);border-radius:0;-webkit-appearance:none;appearance:none}
  .ex-cats-movil select:focus{outline:2px solid var(--verde);outline-offset:2px}
}
.ex-cat[hidden]{display:none}
@media (hover: hover){
.ex-cats a:hover{border-color:var(--oro)}
}
.ex-cat{margin-top:2.4rem;scroll-margin-top:90px}
.ex-cat:first-of-type{margin-top:1.6rem}
.ex-cat h2{font-size:0.72rem;letter-spacing:0.2em;text-transform:uppercase;color:var(--oro-text);font-weight:700;padding-bottom:0.6rem;border-bottom:1px solid rgba(0,0,0,0.09);margin-bottom:1.1rem;font-family:inherit}
.ex-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1.1rem}
.ex-card{background:#fff;border:1px solid rgba(0,0,0,0.09);padding:1.45rem 1.4rem 1.3rem;display:flex;flex-direction:column;transition:border-color .2s}
@media (hover: hover){
.ex-card:hover{border-color:var(--oro)}
.ex-card:hover .ex-card-lnk{color:var(--verde)}
}
.ex-card-cat{font-size:0.66rem;letter-spacing:0.12em;text-transform:uppercase;color:var(--gris);font-weight:600;line-height:1.4;margin-bottom:0.55rem}
.ex-card h3{font-family:'Playfair Display','Playfair Fallback',serif;font-size:1.12rem;font-weight:700;color:var(--tinta);line-height:1.3;margin-bottom:0.5rem;text-wrap:balance}
.ex-card p{font-size:0.88rem;line-height:1.6;color:var(--gris);font-weight:400;margin-bottom:1rem}
.ex-card-precio{margin-top:auto;font-family:'Playfair Display','Playfair Fallback',serif;font-size:1.45rem;font-weight:700;color:var(--tinta);line-height:1.1;font-variant-numeric:tabular-nums}
.ex-card-precio small{font-family:'Outfit','Outfit Fallback',sans-serif;font-size:0.8rem;font-weight:500;color:var(--gris);margin-left:0.25rem}
.ex-card-aux{font-size:0.78rem;line-height:1.5;color:var(--gris);margin-top:0.35rem}
/* «IVA incluido» al lado de cada precio (2026-10-02): los precios son totales. */
.ex-iva{display:inline-block;font-family:'Outfit','Outfit Fallback',sans-serif;font-size:0.68rem;font-weight:600;letter-spacing:0.08em;text-transform:uppercase;color:var(--gris);line-height:1.2}
.ex-card .ex-iva{display:block;margin-top:0.25rem}
.ex-precio+.ex-iva{display:block;margin-top:0.35rem}
.ex-variantes .ex-var-p .ex-iva{display:block;font-size:0.58rem;text-align:right}
.otra-precio .ex-iva{display:block;font-size:0.6rem;margin-top:0.15rem}
.ex-card-lnk{display:inline-block;margin-top:0.9rem;font-size:0.74rem;letter-spacing:0.1em;text-transform:uppercase;font-weight:600;color:var(--oro-text);transition:color .2s}
.ex-precios-nota{margin-top:2rem;font-size:0.84rem;line-height:1.7;color:var(--gris);max-width:70ch}

/* ── Ficha: columna principal y tarjeta lateral ── */
.ex-layout{display:grid;grid-template-columns:minmax(0,1fr);gap:2.25rem}
.ex-principal{min-width:0}
.ex-lateral{min-width:0}
.ex-tarifa{background:#fff;border:1px solid rgba(0,0,0,0.09);padding:1.5rem 1.5rem 1.4rem}
.ex-tarifa-tag{font-size:0.66rem;letter-spacing:0.18em;text-transform:uppercase;color:var(--oro-text);font-weight:700;margin-bottom:0.6rem;display:block}
.ex-precio{font-family:'Playfair Display','Playfair Fallback',serif;font-size:2.1rem;font-weight:700;color:var(--tinta);line-height:1.05;font-variant-numeric:tabular-nums}
.ex-precio small{font-family:'Outfit','Outfit Fallback',sans-serif;font-size:0.82rem;font-weight:500;color:var(--gris);margin-left:0.35rem;letter-spacing:0}
.ex-precio-detalle{font-size:0.84rem;line-height:1.6;color:var(--gris);margin-top:0.55rem}
.ex-variantes{list-style:none;margin:0.35rem 0 0;display:flex;flex-direction:column}
.ex-variantes li{display:flex;justify-content:space-between;align-items:baseline;gap:1rem;padding:0.62rem 0;border-top:1px solid rgba(0,0,0,0.07);font-size:0.9rem;line-height:1.45}
.ex-variantes li:first-child{border-top:none;padding-top:0.15rem}
.ex-variantes .ex-var-n{color:var(--tinta);font-weight:500;flex:1 1 auto}
.ex-variantes .ex-var-c{display:block;font-size:0.78rem;color:var(--gris);font-weight:400;margin-top:0.15rem;line-height:1.5}
.ex-variantes .ex-var-p{font-family:'Playfair Display','Playfair Fallback',serif;font-size:1.15rem;font-weight:700;color:var(--tinta);white-space:nowrap;font-variant-numeric:tabular-nums}
.ex-variantes-nota{font-size:0.8rem;line-height:1.6;color:var(--gris);margin-top:0.7rem;padding-top:0.7rem;border-top:1px solid rgba(0,0,0,0.07)}
.ex-ampliaciones{margin-top:0.95rem;padding-top:0.9rem;border-top:1px solid rgba(0,0,0,0.07)}
.ex-ampliaciones .ex-tarifa-tag{margin-bottom:0.15rem}
.ex-ampliaciones .ex-variantes li:first-child{padding-top:0.35rem}
.ex-ampliaciones .ex-var-p{font-size:1.05rem}
.ex-tarifa .caja{margin-top:0.9rem;padding:0.85rem 1rem;border-left-color:var(--oro-text)}
.ex-tarifa .caja p{font-size:0.86rem;line-height:1.6}
.ex-tarifa-dato{display:flex;justify-content:space-between;gap:1rem;font-size:0.86rem;padding:0.7rem 0;border-top:1px solid rgba(0,0,0,0.07);margin-top:0.9rem;color:var(--gris)}
.ex-tarifa-dato strong{color:var(--tinta);font-weight:600;text-align:right}
.ex-tarifa .btn{display:block;width:100%;text-align:center;margin-top:1rem}
.ex-tarifa-aviso{font-size:0.8rem;line-height:1.6;color:var(--gris);margin-top:0.9rem}
.ex-tarifa-nota{font-size:0.74rem;line-height:1.6;color:var(--gris);margin-top:0.8rem;padding-top:0.8rem;border-top:1px solid rgba(0,0,0,0.07)}

/* Alcance: «qué incluye» y «qué no incluye» en dos cajas, como las de las
   páginas de servicio (.svc-box). */
.ex-dos{display:grid;grid-template-columns:1fr;gap:1.1rem;margin-top:1rem}
.ex-box{background:#fff;border:1px solid rgba(0,0,0,0.09);padding:1.5rem 1.4rem}
.section-blanca .ex-box{background:var(--crema)}
.ex-box h3{font-family:'Playfair Display','Playfair Fallback',serif;font-size:1.05rem;font-weight:700;color:var(--tinta);margin:0 0 1rem;padding-bottom:0.65rem;border-bottom:2px solid var(--oro)}
.ex-box .lista li{font-size:0.9rem;line-height:1.6}
.ex-box .nota{margin-top:1rem;font-size:0.84rem;line-height:1.6;color:var(--gris);padding-left:0.85rem;border-left:2px solid var(--calido)}
.ex-limites{margin-top:1rem}
.ex-limites .lista li{font-size:0.92rem}

/* Recursos y servicios relacionados */
.otras{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr));gap:1rem;margin-top:1.2rem}
.otra{background:#fff;border:1px solid rgba(0,0,0,0.09);padding:1.15rem 1.2rem;display:flex;flex-direction:column;transition:border-color .2s}
.section-blanca .otra{background:var(--crema)}
.otra-org{font-size:0.66rem;letter-spacing:0.12em;text-transform:uppercase;color:var(--oro-text);font-weight:700;line-height:1.4;margin-bottom:0.4rem}
.otra h3{font-family:'Playfair Display','Playfair Fallback',serif;font-size:1.02rem;font-weight:700;color:var(--tinta);line-height:1.3;margin:0 0 0.45rem}
.otra p{font-size:0.86rem;line-height:1.6;color:var(--gris);font-weight:400;margin-bottom:0.8rem}
.otra-precio{font-family:'Playfair Display','Playfair Fallback',serif;font-size:1.1rem;font-weight:700;color:var(--tinta);margin-bottom:0.6rem;font-variant-numeric:tabular-nums}
.otra span.otra-mas{margin-top:auto;font-size:0.76rem;letter-spacing:0.08em;text-transform:uppercase;font-weight:600;color:var(--verde)}
@media (hover: hover){
.otra:hover{border-color:var(--oro)}
}
.ex-recursos{list-style:none;display:flex;flex-direction:column;gap:0.6rem;margin-top:0.8rem}
.ex-recursos li{background:#fff;border:1px solid rgba(0,0,0,0.07);padding:0.8rem 1rem;font-size:0.9rem;line-height:1.55}
.section-blanca .ex-recursos li{background:var(--crema);border-color:transparent}
.ex-recursos a{color:var(--verde);font-weight:600;border-bottom:1px solid rgba(26,58,46,0.3)}
.ex-recursos span{display:block;color:var(--gris);font-size:0.84rem;margin-top:0.15rem}

/* Preguntas frecuentes */
.faq-list{display:flex;flex-direction:column;gap:0.7rem;margin-top:1.2rem}
details.faq-item{border:1px solid rgba(0,0,0,0.09);background:#fff}
.section-blanca details.faq-item{background:var(--crema)}
details.faq-item summary{font-weight:600;font-size:0.97rem;color:var(--tinta);list-style:none;display:flex;justify-content:space-between;align-items:center;padding:1.05rem 1.3rem;gap:1rem;cursor:pointer}
details.faq-item summary::-webkit-details-marker{display:none}
details.faq-item summary .faq-icon{color:var(--oro-text);font-size:1.3rem;font-weight:400;flex-shrink:0;transition:transform 0.2s ease;display:inline-block}
details.faq-item[open] summary .faq-icon{transform:rotate(45deg)}
details.faq-item p{padding:0 1.3rem 1.15rem;color:var(--gris);font-size:0.93rem;line-height:1.75;font-weight:400}

/* Botones y banda final */
.btn{display:inline-block;padding:0.95rem 2rem;font-size:0.82rem;letter-spacing:0.1em;text-transform:uppercase;font-weight:600;transition:all 0.25s;cursor:pointer;border:none;font-family:inherit}
.btn-verde{background:var(--verde);color:#fff}
@media (hover: hover){
.btn-verde:hover{background:var(--verde2)}
}
.btn-oro{background:var(--oro-text);color:#fff}
@media (hover: hover){
.btn-oro:hover{background:var(--oro2)}
}
.btn-claro{background:transparent;color:#fff;box-shadow:inset 0 0 0 1px rgba(255,255,255,0.45)}
@media (hover: hover){
.btn-claro:hover{background:rgba(255,255,255,0.1)}
}
.btn-borde{background:transparent;color:var(--tinta);box-shadow:inset 0 0 0 1px rgba(0,0,0,0.2)}
@media (hover: hover){
.btn-borde:hover{box-shadow:inset 0 0 0 1px var(--oro)}
}
.btn:disabled{opacity:.55;cursor:not-allowed;transform:none}
.cta-band{background:var(--verde);padding:3.25rem 5vw;text-align:center;color:#fff}
.cta-band h2{font-family:'Playfair Display','Playfair Fallback',serif;font-size:clamp(1.45rem,2.5vw,1.95rem);color:#fff;margin-bottom:0.7rem;font-weight:700;line-height:1.25}
.cta-band h2 em{font-style:italic;color:var(--oro2)}
.cta-band p{color:rgba(255,255,255,0.72);font-size:0.95rem;line-height:1.7;max-width:600px;margin:0 auto 1.6rem;font-weight:400}
.cta-band p a{color:var(--oro2);border-bottom:1px solid rgba(226,194,138,.5)}
.cta-band .btn+.btn{margin-left:0.5rem}
.cta-band .cta-aviso{font-size:0.8rem;color:rgba(255,255,255,0.6);max-width:560px;margin:1.2rem auto 0;line-height:1.65}

/* Banda «Tu área privada ESECE» (JJ, 2026-09-29): mismas clases y medidas
   que la banda del portal de /subvenciones/ (allí va incrustada; aquí en la
   hoja de familia porque la llevan la landing y las quince fichas). */
.portal-band{background:var(--verde);color:#fff;padding:3.5rem 5vw}
.portal-in{max-width:1100px;margin:0 auto}
.portal-head{text-align:center;margin-bottom:2.25rem}
.portal-tag{display:inline-block;font-size:0.7rem;letter-spacing:0.2em;text-transform:uppercase;color:var(--oro2);font-weight:600;margin-bottom:0.75rem}
.portal-head h2{font-family:'Playfair Display','Playfair Fallback',serif;font-size:clamp(1.5rem,2.5vw,2rem);color:#fff;font-weight:700;line-height:1.25;margin-bottom:0.6rem;text-wrap:balance}
.portal-head h2 em{font-style:italic;color:var(--oro2)}
.portal-head p{color:rgba(255,255,255,0.72);font-size:0.98rem;line-height:1.7;font-weight:400;max-width:640px;margin:0 auto}
.portal-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,250px),1fr));gap:1.1rem;margin-bottom:1.75rem}
.portal-item{background:rgba(255,255,255,0.06);border:1px solid rgba(255,255,255,0.12);padding:1.4rem 1.35rem}
.portal-item svg{width:26px;height:26px;color:var(--oro2);display:block;margin-bottom:0.7rem}
.portal-item h3{font-size:0.98rem;font-weight:600;color:#fff;margin-bottom:0.4rem;line-height:1.35}
.portal-item p{font-size:0.88rem;line-height:1.65;color:rgba(255,255,255,0.7);font-weight:400}
.portal-cta{text-align:center}
.portal-nota{font-size:0.82rem;color:rgba(255,255,255,0.55);font-weight:400;max-width:720px;margin:0 auto;line-height:1.65}
.portal-nota a{color:var(--oro2);border-bottom:1px solid rgba(226,194,138,.5)}
@media(max-width:760px){
  .portal-grid{grid-template-columns:1fr 1fr;gap:0.7rem;margin-bottom:1.5rem}
  .portal-item{padding:1rem 0.9rem}
  .portal-item svg{width:22px;height:22px;margin-bottom:0.5rem}
  .portal-item h3{font-size:0.85rem;margin-bottom:0.3rem}
  .portal-item p{font-size:0.78rem;line-height:1.5}
  .portal-head{margin-bottom:1.6rem}
  .portal-head p{font-size:0.9rem}
}
@media(max-width:600px){.portal-band{padding:2.6rem 5vw}}

/* ── Formulario de solicitud (/express/solicitud/) ──
   Los campos son los de /consulta/, con la misma medida y el mismo borde. */
.ex-form{background:var(--blanco);border:1px solid rgba(0,0,0,0.09);padding:clamp(24px,4vw,40px)}
.ex-form fieldset{border:none;margin:0 0 1.6rem;padding:0;min-width:0}
.ex-form legend{font-family:'Playfair Display','Playfair Fallback',serif;font-size:1.2rem;font-weight:700;color:var(--tinta);margin-bottom:1rem;padding:0}
.ex-form .campo{margin-bottom:16px}
.ex-form .fila{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.ex-form label,.ex-form .campo-titulo{display:block;font-size:.79rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--gris);margin-bottom:7px}
.ex-form input:not([type="checkbox"]):not([type="radio"]),.ex-form select,.ex-form textarea{width:100%;padding:13px 14px;font-family:inherit;font-size:1rem;color:var(--tinta);background:var(--blanco);border:1px solid rgba(0,0,0,0.14);border-radius:2px;transition:border-color .16s ease}
.ex-form input:focus,.ex-form select:focus,.ex-form textarea:focus{outline:none;border-color:var(--verde);box-shadow:0 0 0 3px rgba(26,58,46,.08)}
.ex-form input[type="file"]{padding:10px 12px;font-size:.9rem}
.ex-form textarea{resize:vertical;min-height:120px;line-height:1.55}
.ex-form .ayuda-campo{font-size:.81rem;color:var(--gris);margin:7px 0 0;line-height:1.5}
.ex-form .opciones{display:flex;flex-wrap:wrap;gap:0.5rem}
.ex-form .opciones label{display:flex;align-items:center;gap:0.5rem;text-transform:none;letter-spacing:0;font-size:.93rem;font-weight:400;color:var(--tinta);margin:0;padding:0.65rem 0.9rem;border:1px solid rgba(0,0,0,0.14);border-radius:2px;cursor:pointer;min-height:44px;background:var(--blanco)}
.ex-form .opciones input{width:16px;height:16px;flex:0 0 16px;margin:0}
.ex-form .opciones label:has(input:checked){border-color:var(--verde);background:var(--crema)}
.ex-servicio{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:0.6rem 1.5rem;background:var(--crema);border:1px solid rgba(0,0,0,0.09);padding:1.1rem 1.25rem;margin-bottom:1.6rem}
.ex-servicio-tag{display:block;font-size:.66rem;letter-spacing:.16em;text-transform:uppercase;color:var(--oro-text);font-weight:700;margin-bottom:.3rem}
.ex-servicio h2{font-family:'Playfair Display','Playfair Fallback',serif;font-size:1.25rem;font-weight:700;line-height:1.25;color:var(--tinta)}
.ex-servicio .ex-servicio-precio{font-family:'Playfair Display','Playfair Fallback',serif;font-size:1.25rem;font-weight:700;color:var(--tinta);white-space:nowrap;font-variant-numeric:tabular-nums}
.ex-servicio a{font-size:.8rem;color:var(--oro-text);font-weight:600;border-bottom:1px solid rgba(128,99,41,.35);flex-basis:100%}
.trampa{position:absolute;left:-9999px;top:auto;width:1px;height:1px;overflow:hidden}
.consentimiento{display:flex;gap:11px;align-items:flex-start;margin:20px 0 22px}
.consentimiento input{width:18px;height:18px;flex:0 0 18px;margin-top:2px}
.consentimiento label{text-transform:none;letter-spacing:0;font-size:.85rem;font-weight:400;color:var(--gris);margin:0;line-height:1.5}
.consentimiento a{color:var(--verde);text-decoration:underline}
.ex-form .btn{width:100%;padding:1.05rem;font-size:.9rem;font-weight:600}
.ex-form .legal{font-size:.78rem;color:var(--gris);margin:16px 0 0;line-height:1.55}
.ex-form .legal b{color:var(--tinta);font-weight:600}
.ex-form .error{color:var(--oro-text);font-size:.86rem;margin:12px 0 0;display:none;font-weight:600}
.ex-form .error.visible{display:block}
.ex-gracias{display:none;text-align:center;padding:34px 8px}
.ex-gracias.visible{display:block}
.ex-gracias h2{font-family:'Playfair Display','Playfair Fallback',serif;font-size:1.5rem;font-weight:700;line-height:1.2;margin:0 0 12px}
.ex-gracias-tick{display:flex;justify-content:center;font-size:2.4rem;margin-bottom:.5rem;color:var(--verde)}
.ex-gracias p{color:var(--gris);line-height:1.7;margin:0 auto;max-width:50ch}
.ex-gracias p+p{margin-top:.8rem}
.ex-gracias .btn{width:auto;margin-top:1.4rem;display:inline-block}
.ex-form.enviado>*:not(.ex-gracias){display:none}
.ex-solicitud-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:2rem;align-items:start}
.ex-solicitud-lado{min-width:0}
.tick{display:block;width:1em;height:1em}

/* Pie */
footer{background:#0d1613;padding:3rem 5vw 1.5rem;color:rgba(255,255,255,0.48)}
.fg-grid{display:grid;grid-template-columns:1.8fr 1fr 1fr 1fr;gap:3rem;margin-bottom:2rem}
.flogo{font-family:'Playfair Display','Playfair Fallback',serif;font-size:1.5rem;font-weight:700;color:#fff;display:block;margin-bottom:1rem}
.flogo span{color:var(--oro)}
.fbrand p{font-size:0.85rem;line-height:1.7;margin-bottom:1.25rem;font-weight:400}
.fcol h3{font-size:0.68rem;letter-spacing:0.2em;text-transform:uppercase;color:var(--oro);font-weight:600;margin-bottom:1.25rem}
.fcol ul{list-style:none;display:flex;flex-direction:column;gap:0.6rem}
.fcol ul li a{font-size:0.85rem;color:rgba(255,255,255,0.48);font-weight:400}
@media (hover: hover){
.fcol ul li a:hover{color:var(--oro2)}
}
.fbot{border-top:1px solid rgba(255,255,255,0.06);padding-top:1.25rem;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:1rem;font-size:0.78rem}
.flegal{display:flex;gap:1.5rem}
.flegal a{color:rgba(255,255,255,0.6)}
.wa{position:fixed;bottom:1.5rem;right:1.5rem;width:52px;height:52px;background:#25d366;border-radius:50%;display:flex;align-items:center;justify-content:center;z-index:900;box-shadow:0 4px 16px rgba(0,0,0,0.25)}
.wa svg{width:26px;height:26px;fill:#fff}
.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}

/* Escritorio: la ficha en dos columnas con la tarjeta de precio fija a la
   derecha (sticky, no invasiva: ocupa su columna y no tapa nada). */
@media (min-width:1024px){
  .ex-layout{grid-template-columns:minmax(0,1fr) 320px;gap:3rem;align-items:start}
  .ex-principal{grid-column:1;grid-row:1}
  .ex-lateral{grid-column:2;grid-row:1;position:sticky;top:96px}
  .ex-solicitud-grid{grid-template-columns:minmax(0,1fr) 300px;gap:3rem}
  .ex-solicitud-lado{position:sticky;top:96px}
}
@media (min-width:760px){
  .ex-dos{grid-template-columns:1fr 1fr}
}

/* El menú son diez elementos y una barra comprimida entre 1100 y 1599 px;
   por debajo de 1180 pasa al panel (con «Express» en el menú, 2026-10-02). Copiado de las fichas de subvenciones,
   que es donde se midió. */
@media (min-width:961px) and (max-width:1179px){
  .nav-links{display:none;flex-direction:column;gap:0;position:fixed;top:0;left:0;right:0;bottom:0;width:100vw;height:100dvh;background:var(--crema);padding:4rem 5vw 1rem;z-index:997;overflow-y:auto}
  .nav-links.open{display:flex}
  .nav-burger{display:flex;z-index:999;position:relative}
  .nav-links li{border-bottom:1px solid rgba(0,0,0,0.06)}
  .nav-links a{display:block;padding:0.8rem 0;font-size:1rem!important;color:var(--tinta)!important}.nav-links .nav-cta{text-align:center;padding:0.8rem 1.5rem!important;margin-top:0.5rem}
}
@media (min-width:1180px) and (max-width:1599px){
  .nav{padding:0.85rem 3vw}
  .nav-links{gap:1.1rem}
  .nav-links a{font-size:0.68rem;letter-spacing:0.04em}
  .nav-cta{padding:0.5rem 0.95rem!important}
}
@media(max-width:1023px){
  .ex-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:960px){
  .nav-links{display:none;flex-direction:column;gap:0;position:fixed;inset:0;width:100vw;height:100dvh;background:var(--crema);padding:4rem 5vw 1rem;z-index:997;overflow-y:auto}
  .nav-links.open{display:flex}
  .nav-burger{display:flex;z-index:999;position:relative}
  .nav-links li{border-bottom:1px solid rgba(0,0,0,0.06)}
  .nav-links a{display:block;padding:0.8rem 0;font-size:1rem!important;color:var(--tinta)!important}.nav-links .nav-cta{text-align:center;padding:0.8rem 1.5rem!important;margin-top:0.5rem}
  .fg-grid{grid-template-columns:1fr 1fr}
}
@media(max-width:640px){
  .ex-grid{grid-template-columns:1fr}
  .ex-form .fila{grid-template-columns:1fr}
}
@media(max-width:600px){
  .fg-grid{grid-template-columns:1fr}
  .fbot{flex-direction:column;text-align:center}
  .hero{padding:5.25rem 5vw 2rem}
  .section{padding:2.5rem 5vw}
  .caja{padding:1rem 1.1rem}
  .hero-btns{flex-direction:column;align-items:stretch}
  .hero-btns .btn{text-align:center}
  .cta-band .btn{display:block;margin:0 auto}
  .cta-band .btn+.btn{margin:0.6rem auto 0}
  details.faq-item summary{font-size:0.92rem;padding:0.95rem 1.05rem;gap:0.7rem}
  details.faq-item p{padding:0 1.05rem 1rem;font-size:0.89rem}
  .ex-tarifa{padding:1.2rem 1.1rem}
  .ex-box{padding:1.2rem 1.1rem}
  .ex-form{padding:20px 16px}
  .ex-servicio h2{font-size:1.1rem}
}
/* ── Micro-interacciones (2026-09-15, ideas de kinetics.colorion.co) ──
   Respuesta al tacto sin dependencias: el botón se hunde un píxel al
   pulsar, el subrayado del menú se dibuja de izquierda a derecha, los
   desplegables abren con la altura animada donde el navegador lo soporta
   (::details-content, Chrome 131+; en los demás abren como siempre) y el
   tick de «recibido» se dibuja. Con prefers-reduced-motion se apagan desde
   esece-a11y.css. */
a.btn,button.btn{transition:transform .18s cubic-bezier(.2,.8,.2,1),background-color .25s,color .25s,border-color .25s,box-shadow .25s,opacity .25s}
a.btn:active,button.btn:active{transform:translateY(1px) scale(.985)}
.nav-links a:not(.nav-cta){background-image:linear-gradient(currentColor,currentColor);background-repeat:no-repeat;background-position:0 100%;background-size:0 1px;transition:background-size .35s cubic-bezier(.2,.8,.2,1),color .3s}
.nav-links a:not(.nav-cta):focus-visible{background-size:100% 1px}
@media (hover: hover){.nav-links a:not(.nav-cta):hover{background-size:100% 1px}}

details.faq-item,details.art-indice,details.sv-mas,#faq details{interpolate-size:allow-keywords}
details.faq-item::details-content,details.art-indice::details-content,details.sv-mas::details-content,#faq details::details-content{block-size:0;overflow:hidden;transition:block-size .35s cubic-bezier(.2,.8,.2,1),content-visibility .35s allow-discrete}
details.faq-item[open]::details-content,details.art-indice[open]::details-content,details.sv-mas[open]::details-content,#faq details[open]::details-content{block-size:auto}
.tick path{fill:none;stroke:currentColor;stroke-width:3.5;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:36;stroke-dashoffset:36;animation:tickDibujo .5s .15s cubic-bezier(.2,.8,.2,1) forwards}
@keyframes tickDibujo{to{stroke-dashoffset:0}}
/* Hamburguesa → aspa (Kinetics, «Icon morph»): las tres barras giran cuando
   el panel está abierto; esece-a11y.js mantiene aria-expanded al día. */
.nav-burger span{transition:transform .3s cubic-bezier(.2,.8,.2,1),opacity .2s,background-color .3s}
.nav-burger[aria-expanded="true"] span:nth-child(1){transform:translateY(6.5px) rotate(45deg)}
.nav-burger[aria-expanded="true"] span:nth-child(2){opacity:0;transform:scaleX(.3)}
.nav-burger[aria-expanded="true"] span:nth-child(3){transform:translateY(-6.5px) rotate(-45deg)}
/* Controles nativos en el verde de marca: casillas, radios, deslizadores. */
input[type="checkbox"],input[type="radio"],input[type="range"],progress{accent-color:var(--verde)}
/* El aviso de cookies y el «enlace copiado» asientan con curva elástica en
   vez de un ease plano (Kinetics, «Notification slide-in», «Toast overshoot»).
   Solo cambia la curva; la transición ya existía. */
.cookie-banner{transition-timing-function:cubic-bezier(.2,.8,.2,1)}
.share-toast{transition-timing-function:cubic-bezier(.34,1.56,.64,1)}
/* Fundido corto entre páginas (View Transitions, Chrome 126+ y Safari 18.2+)
   cuando las dos llevan esta regla. Sin ella, o con movimiento reducido,
   la navegación es la de siempre. */
@view-transition{navigation:auto}
@media (prefers-reduced-motion: reduce){@view-transition{navigation:none}}
/* El área de texto crece con lo que se escribe (Kinetics, «Prompt composer»;
   field-sizing, Chrome 123+; el resto conserva el min-height). */
textarea{field-sizing:content}
/* El campo que no pasa la validación se sacude (Kinetics, «Error shake»);
   la clase la pone esece-a11y.js al evento invalid y se quita al acabar. */
.campo-invalido{animation:sacudida .4s cubic-bezier(.36,.07,.19,.97)}
@keyframes sacudida{10%,90%{transform:translateX(-1px)}20%,80%{transform:translateX(2px)}30%,50%,70%{transform:translateX(-4px)}40%,60%{transform:translateX(4px)}}
