/* ============================================================
   ACTORES S.C.G — DESIGN SYSTEM (compartido por todas las páginas)
   Tokens + chrome (nav, menú móvil, footer, botones, utilidades).
   Estilos de página van en home.css / news.css / etc.
   ============================================================ */
:root{
  --font-display:'Zilla Slab', Georgia, serif;
  --font-ui:'Inter', system-ui, sans-serif;
  --orange:#FF5115; --accent:#FF5115;
  --orange-700:#E5410E; --orange-100:#FFE7DE; --orange-50:#FFF4EF;
  --ink:#0E0E0C; --white:#FFFFFF; --paper:#FAFAF7;
  --g1:#B0B0B0; --g2:#606060;
  --line:rgba(14,14,12,.12); --line-light:rgba(255,255,255,.14);
  --maxw:1220px; --ease:cubic-bezier(.16,1,.3,1);
  --spin:0deg;
  /* Alto común de los heros de páginas interiores. Lo fija «Nuestro equipo»,
     que es el más alto porque además del título lleva las cifras y la cinta de
     caras; el resto se rellena hasta ahí. Ver «PAGE HERO» más abajo.

     NINGÚN HERO PASA DE UNA PANTALLA. Los 795px son el alto DESEADO, no el
     alto: el `min` con `100svh` es el techo. Un número fijo de píxeles es una
     apuesta sobre la pantalla de quien mira, y se perdía en las corrientes:
     en un portátil de 768px de alto —la mitad del parque— el hueco útil ronda
     los 640, así que la banda naranja se comía la pantalla entera y el
     visitante no veía NADA de la página hasta bajar. Con el techo, ahí mide
     640 y el borde de la sección siguiente asoma, que es lo que le dice al ojo
     que hay algo debajo.

     `svh` y no `vh`: en el teléfono `vh` mide la ventana con la barra del
     navegador RETRAÍDA, que es un alto que no existe hasta que uno hace
     scroll. `svh` mide la de verdad, la de cuando se entra. Es el mismo token
     que ya usa el hero de la portada (home.css).

     Sigue siendo `min-height` en cada hero, así que un titular largo lo sigue
     estirando por encima del techo antes que recortarse. El techo gobierna lo
     que el hero RESERVA, no lo que el hero deja ver. */
  --alto-hero:min(795px, 100svh);
}
/* En teléfono no vale un número fijo. Un titular que en escritorio ocupa dos
   líneas ocupa cuatro a 360px, así que el alto que necesita la página más
   larga —Ruta Verde— crece según se estrecha la pantalla: 578px a 640 de
   ancho, 802 a 480, 899 a 375, 993 a 320. Escalonarlo por breakpoints dejaba
   media banda de color de más en el extremo ancho de cada tramo; esta recta
   pasa por los dos extremos medidos y va justo por encima en el medio.
   El clamp son los topes: nunca menos de 560 ni más de 1020, y por encima de
   todo el techo de una pantalla: 1020px en un teléfono de 360x740 eran
   pantalla y media de naranja antes de la primera línea. */
@media(max-width:640px){
  :root{--alto-hero:min(clamp(560px, calc(1300px - 95vw), 1020px), 100svh)}
}
*{box-sizing:border-box}
site-header, site-footer, site-fabs{display:block}
html{scroll-behavior:smooth}
body{margin:0; background:var(--white); color:var(--ink); font-family:var(--font-ui); line-height:1.5; -webkit-font-smoothing:antialiased; overflow-x:hidden}
body.no-scroll{overflow:hidden}
.wrap{max-width:var(--maxw); margin:0 auto; padding:0 30px}
a{color:inherit; text-decoration:none}
img{max-width:100%; display:block}
section{position:relative; padding:96px 0}
@media(max-width:640px){section{padding:64px 0}}

/* ====== PRELOADER (pantalla de carga) ====== */
#preloader{position:fixed; inset:0; z-index:9999; display:flex; align-items:center; justify-content:center;
  background:var(--orange); transition:opacity .6s var(--ease), visibility .6s}
#preloader.hide{opacity:0; visibility:hidden}
#preloader .pl-in{display:flex; flex-direction:column; align-items:center; gap:30px;
  transition:opacity .45s var(--ease), transform .55s var(--ease)}
#preloader.hide .pl-in{opacity:0; transform:translateY(-18px)}
#preloader .pl-word{font-family:var(--font-display); font-weight:700; letter-spacing:.34em; padding-left:.34em;
  font-size:clamp(28px,4.6vw,44px); line-height:1; color:var(--ink); animation:plFloat 2.2s ease-in-out infinite}
#preloader .pl-word .o{color:#fff}
#preloader .pl-bar{width:min(250px,58vw); height:6px; border-radius:20px; background:rgba(255,255,255,.3); overflow:hidden}
#preloader .pl-bar i{display:block; height:100%; width:0; border-radius:20px; background:#fff}
#preloader .pl-pct{font-family:var(--font-ui); font-size:12px; font-weight:700; letter-spacing:.06em; color:rgba(14,14,12,.72)}
@keyframes plFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-5px)}}
@media(prefers-reduced-motion:reduce){ #preloader{display:none} }

/* ====== ESPIRAL ====== */
.spiral{position:absolute; pointer-events:none; overflow:visible; transform:rotate(var(--spin)); transition:transform .2s linear}
.spiral path{fill:none; stroke-width:9; stroke-linecap:round}
@media(prefers-reduced-motion:reduce){.spiral{transform:none !important; transition:none}}

/* ====== TRAMA DE PUNTOS ======
   La textura de fondo del manual. Vive aquí, y no en la hoja de cada página,
   porque el problema que resuelve es de conjunto: mientras cada sección se
   inventaba su retícula —28px con punto de 1.6 en la portada, 24px con punto
   de 1.3 en las claras— el fondo se sentía desparejo al bajar, aunque cada
   una por separado se viera bien. Ahora la geometría es una sola en todo el
   sitio y lo único que decide la sección es de qué color va el punto, según
   su fondo, y si cubre todo o solo marca la entrada.

   Uso:
     <section class="cartelera trama trama-entrada">   claro → banda de arriba
     <section class="car trama trama-blanca">          naranja → trama entera
     <section class="ccta trama trama-tenue">          tinta  → trama entera

   El punto va más tenue sobre tinta que sobre naranja a propósito: el mismo
   blanco que sobre naranja apenas se insinúa, sobre negro grita.
   ====== */
:root{
  --trama-paso:26px; --trama-punto:1.5px;
  --trama-tinta:rgba(14,14,12,.17);
  --trama-blanca:rgba(255,255,255,.16);
  --trama-tenue:rgba(255,255,255,.07);
}
.trama::before{content:""; position:absolute; inset:0; z-index:0; pointer-events:none;
  background-image:radial-gradient(var(--trama-color, var(--trama-tinta)) var(--trama-punto), transparent var(--trama-punto));
  background-size:var(--trama-paso) var(--trama-paso)}
.trama-blanca{--trama-color:var(--trama-blanca)}
.trama-tenue{--trama-color:var(--trama-tenue)}

/* El contenido de la sección, por encima de la textura. Se listan los
   contenedores que usa el sitio; una sección nueva con otro envoltorio tiene
   que subirlo ella misma. */
.trama > .wrap, .trama > .car-hero{position:relative; z-index:1}

/* Banda de entrada: marca el arranque y se apaga antes de que empiece el
   contenido. Es lo que llevan las secciones de fondo claro, donde una trama
   de punta a punta se leería como papel cuadriculado. */
.trama-entrada::before{inset:0 0 auto; height:var(--trama-alto,440px);
  -webkit-mask-image:linear-gradient(#000 0 30%, transparent 94%);
  mask-image:linear-gradient(#000 0 30%, transparent 94%)}

/* ====== NAV ====== */
nav{position:fixed; inset:0 0 auto 0; z-index:60; display:flex; align-items:center; justify-content:space-between; padding:14px 30px; color:var(--ink); transition:background .5s var(--ease), color .4s, border-color .4s, box-shadow .4s; border-bottom:1px solid transparent}
nav .brand{font-family:var(--font-display); font-weight:700; letter-spacing:.34em; font-size:16px; padding-left:.34em}
nav .brand .o{color:var(--white); transition:color .3s}
nav.solid .brand .o{color:var(--accent)}
/* El menú pegado a la derecha, junto al botón de acceso.

   En la maqueta la barra tiene DOS hijos —el logotipo y `.navmenu`, con
   «Iniciar sesión» dentro de ella—, así que el `space-between` de `nav` deja
   el logotipo a la izquierda y todo lo demás junto a la derecha.
   
   Aquí el acceso va FUERA de `.navmenu` a propósito —por debajo de 1040px el
   menú se repliega en el cajón y el botón de entrar no puede irse con él—, y
   eso deja tres o cuatro hijos que el `space-between` reparte por todo el
   ancho: el menú se queda a la izquierda y se abre un hueco en medio que la
   maqueta no tiene.
   
   `margin-left:auto` se come ese hueco de una vez: empuja el menú y lo que
   venga detrás contra la derecha. Misma composición que la maqueta, sin
   devolver el botón de acceso al cajón. */
.navmenu{display:flex; align-items:center; gap:2px}

/* Acotado a la barra pública: la maqueta no tiene barra de socio, así que de
   esa no dice nada y no se toca. La del socio lleva cinco servicios con icono
   más el retrato y el nombre, y ahí el reparto por todo el ancho es lo que
   hace que quepan. */
nav:not(.nav-oficina) .navmenu{margin-left:auto}

/* Y cuando el menú se repliega, el que empuja es el botón.
   Con `.navmenu` en `display:none` la barra se queda con tres hijos —logotipo,
   botón y hamburguesa— y el `space-between` los reparte por todo el ancho: el
   botón de entrar acababa flotando en mitad de la barra, sin nada que lo
   sujetara a ningún lado. Con el auto aquí se va contra la hamburguesa, que es
   donde están las otras acciones.

   No hace nada en escritorio: el primer margen automático —el de `.navmenu`—
   ya se comió el hueco libre, y al segundo no le queda nada que repartir. */
@media(max-width:1040px){
  nav:not(.nav-oficina) .socios{margin-left:auto}
}
.navitem{position:static}
.navlink{position:relative; font-family:var(--font-ui); font-size:13.5px; font-weight:500; color:inherit; background:none; border:0; cursor:pointer; padding:10px 13px; border-radius:10px; display:inline-flex; align-items:center; gap:6px; opacity:.85; transition:opacity .2s, color .2s}
.navlink:hover{opacity:1}
.navlink .car{font-size:8px; opacity:.7; transition:transform .3s var(--ease)}
.navitem.open .navlink .car{transform:rotate(180deg)}
/* Ítem actual: sobre el hero naranja (nav transparente) va en tinta + subrayado
   para que se vea; solo se pinta de naranja cuando el nav es blanco (sólido/mega). */
.navitem.current > .navlink{opacity:1; font-weight:600}
.navitem.current > .navlink::after{content:""; position:absolute; left:13px; right:13px; bottom:6px; height:2px; border-radius:2px; background:currentColor}
nav.solid .navitem.current > .navlink,
nav:has(.navitem.open) .navitem.current > .navlink{color:var(--accent)}

/* Hero OSCURO (theme="dark"): el nav transparente va en claro para verse desde
   la primera carga. Se revierte solo al hacerse sólido (scroll) o al abrir el
   mega-menú, donde el fondo ya es blanco. Mantiene la transición fluida. */
nav.on-dark:not(.solid):not(:has(.navitem.open)){color:#fff}
nav.on-dark:not(.solid):not(:has(.navitem.open)) .brand .o{color:var(--accent)}
nav.on-dark:not(.solid):not(:has(.navitem.open)) .socios{background:rgba(255,255,255,.14); border:1px solid rgba(255,255,255,.5); color:#fff}
nav.on-dark:not(.solid):not(:has(.navitem.open)) .socios:hover{background:rgba(255,255,255,.26)}

.socios{margin-left:10px; background:var(--ink); color:#fff; border-radius:40px; padding:9px 18px; font-weight:600; font-size:12.5px; transition:transform .25s var(--ease), background .25s}
.socios:hover{transform:translateY(-2px)}
nav.solid{background:rgba(255,255,255,.9); backdrop-filter:blur(12px); border-bottom-color:var(--line); box-shadow:0 8px 30px -22px rgba(0,0,0,.5)}
nav.solid .socios{background:var(--accent)}
nav:has(.navitem.open){background:rgba(255,255,255,.97); backdrop-filter:blur(12px); color:var(--ink); border-bottom-color:var(--line); box-shadow:0 8px 30px -22px rgba(0,0,0,.5)}
nav:has(.navitem.open) .brand .o{color:var(--accent)}
nav:has(.navitem.open) .socios{background:var(--accent)}

/* ---------- Con sesión iniciada ----------
   Vivía en camaleon.css, cuando la barra con sesión solo existía en el Centro.
   Desde que la portada institucional es parte del mismo proyecto la barra es
   una sola en todo el sitio, y sus estilos tienen que estar donde está la
   barra: en camaleon.css se quedaban fuera de cualquier página que no fuera
   del Centro, y el sello del socio salía sin formato.

   El sitio no se convierte en un panel: sigue siendo la misma web y este es el
   único sitio donde se nota que hay sesión. En vez de un "Mi cuenta" anónimo va
   el sello con las iniciales y el nombre de pila.

   El sello va en tinta y no en naranja a propósito: tiene que leerse igual
   sobre el naranja del hero (barra transparente) que sobre el blanco de la
   barra sólida al bajar, y la tinta es lo único que cumple las dos. Es el mismo
   recurso del botón .socios de aquí arriba. */
#nav .navacceso{display:flex; align-items:center; gap:14px}
#nav .navacceso form{margin:0}
#nav .navsocio{display:flex; align-items:center; gap:9px; color:inherit}
#nav .navini{flex:0 0 auto; display:flex; align-items:center; justify-content:center; width:31px; height:31px; border-radius:50%; background:var(--ink); color:#fff; font-family:var(--font-display); font-weight:700; font-size:12px; letter-spacing:.02em; line-height:1; transition:background .25s var(--ease), transform .25s var(--ease)}
#nav .navsocio:hover .navini{background:var(--accent); transform:translateY(-1px)}
/* El retrato ocupa exactamente el hueco del sello de iniciales: la barra no
   puede cambiar de alto según el socio tenga foto o no. El fondo pintado es
   para los avatares SVG, que vienen con el lienzo transparente. */
#nav .navfoto{flex:0 0 auto; width:31px; height:31px; border-radius:50%; object-fit:cover; object-position:center; background:var(--ink); transition:box-shadow .25s var(--ease), transform .25s var(--ease)}
#nav .navsocio:hover .navfoto{box-shadow:0 0 0 2px var(--accent); transform:translateY(-1px)}
#nav .navnom{display:flex; flex-direction:column; line-height:1.15; font-size:13px; font-weight:700}
/* El "Mi cuenta" queda de antetítulo: dice a dónde lleva sin quitarle el
   protagonismo al nombre, que es lo que hace de señal de sesión. */
#nav .navnom small{font-size:9.5px; font-weight:600; letter-spacing:.12em; text-transform:uppercase; opacity:.55}
/* En pantallas estrechas manda el sello: el nombre no cabe junto al botón de
   salir y a la hamburguesa, y las iniciales ya identifican a quien entró. */
@media(max-width:560px){#nav .navnom{display:none} #nav .navacceso{gap:10px}}
/* .socios se aplica también a un <button>, que no hereda ni la fuente ni el
   borde del resto de la barra. */
#nav button.socios{border:0; font-family:inherit; cursor:pointer}

/* ====== MEGA-MENÚ ====== */
.mega{position:fixed; top:56px; left:0; z-index:70; background:#fff; color:var(--ink); border:1px solid var(--line); border-radius:18px; box-shadow:0 40px 80px -30px rgba(0,0,0,.4); padding:24px; display:flex; gap:26px; width:max-content; max-width:calc(100vw - 32px); opacity:0; visibility:hidden; transform:translateY(6px); transition:opacity .25s var(--ease), transform .25s var(--ease), visibility .25s}
.mega::before{content:""; position:absolute; left:0; right:0; top:-12px; height:12px}
.navitem.open > .mega{opacity:1; visibility:visible; transform:none}
.mega-cols{display:flex; gap:34px}
.mcol{min-width:172px}
.mcol h6{font-size:11px; letter-spacing:.14em; text-transform:uppercase; color:var(--g2); font-weight:600; margin:0 0 10px}
.mcol a{display:block; font-size:14px; color:#2b2b28; padding:7px 0; font-weight:500; border-radius:6px; transition:color .2s, padding-left .25s var(--ease)}
.mcol a:hover{color:var(--accent); padding-left:6px}
.mcol a .tag{font-size:10px; font-weight:700; letter-spacing:.06em; color:var(--orange-700); background:var(--orange-100); padding:1px 6px; border-radius:20px; margin-left:6px; vertical-align:1px}
/* La línea que va bajo el nombre en el desplegable (`nota` en config/sitio.php).
   Tres verbos solos —Recaudamos, Distribuimos, Protegemos— se distinguen entre
   sí pero no dicen qué hay detrás de cada uno; esta línea es lo que deja
   elegir sin entrar a las tres. No hereda el color del enlace a propósito: al
   pasar el ratón se realza el nombre, no el pie. */
.mcol a small{display:block; font-size:12px; font-weight:500; color:var(--g2); margin-top:2px; line-height:1.35}
.mega-feat{flex:0 0 220px; border-radius:14px; overflow:hidden; position:relative; min-height:218px; display:flex; align-items:flex-end; padding:18px; color:#fff}
.mega-feat .mf-lab{font-size:10px; letter-spacing:.16em; text-transform:uppercase; font-weight:700; opacity:.9}
.mega-feat b{display:block; font-family:var(--font-display); font-weight:500; font-size:20px; line-height:1.12; margin-top:6px}
.mega-feat .mf-go{margin-top:12px; font-size:13px; font-weight:600; border-bottom:1px solid rgba(255,255,255,.6); padding-bottom:2px; display:inline-block}
.mega-feat > div{position:relative; z-index:2}
.burger{display:none; width:42px; height:42px; align-items:center; justify-content:center; font-size:22px; background:none; border:0; color:inherit; cursor:pointer; border-radius:12px}
@media(max-width:1040px){.navmenu{display:none} .burger{display:flex}}

/* ====== MENÚ MÓVIL (pantalla completa) ====== */
.drawer-back{position:fixed; inset:0; z-index:70; background:rgba(14,14,12,.5); opacity:0; visibility:hidden; transition:opacity .4s var(--ease), visibility .4s}
.drawer-back.open{opacity:1; visibility:visible}
.drawer{position:fixed; inset:0; z-index:80; width:100%; background:var(--ink); color:#fff; transform:translateX(100%); transition:transform .45s var(--ease); display:flex; flex-direction:column; padding:14px 24px calc(18px + env(safe-area-inset-bottom)); overflow:hidden; overscroll-behavior:contain}
.drawer.open{transform:none}
.drawer .dspiral{position:absolute; right:-120px; top:12%; width:360px; height:360px; opacity:.08; pointer-events:none; z-index:0}
.drawer .dspiral path{fill:none; stroke:var(--accent); stroke-width:9; stroke-linecap:round}
.drawer .dtop{display:flex; align-items:center; justify-content:space-between; padding:8px 0 16px; position:relative; z-index:2}
.drawer .dbrand{font-family:var(--font-display); font-weight:700; letter-spacing:.3em; font-size:15px}
.drawer .dbrand .o{color:var(--accent)}
.drawer .dclose{width:44px; height:44px; display:flex; align-items:center; justify-content:center; font-size:24px; background:rgba(255,255,255,.08); border:0; color:#fff; cursor:pointer; border-radius:50%}
.dbody{flex:1; overflow-y:auto; overscroll-behavior:contain; -webkit-overflow-scrolling:touch; position:relative; z-index:2}
.dbody > *{opacity:0; transform:translateY(16px); transition:opacity .45s var(--ease), transform .45s var(--ease)}
.drawer.open .dbody > *{opacity:1; transform:none}
.drawer.open .dbody > *:nth-child(1){transition-delay:.05s}
.drawer.open .dbody > *:nth-child(2){transition-delay:.10s}
.drawer.open .dbody > *:nth-child(3){transition-delay:.14s}
.drawer.open .dbody > *:nth-child(4){transition-delay:.18s}
.drawer.open .dbody > *:nth-child(5){transition-delay:.22s}
.drawer.open .dbody > *:nth-child(6){transition-delay:.26s}
.drawer.open .dbody > *:nth-child(7){transition-delay:.30s}
.dquick{display:flex; gap:10px; margin:2px 0 12px}
.dquick a{flex:1; text-align:center; padding:15px 10px; border-radius:16px; font-weight:600; font-size:14px}
.dquick .q-fill{background:var(--accent); color:#fff}
.dquick .q-line{background:rgba(255,255,255,.06); border:1px solid var(--line-light); color:#fff}
.acc-item{border-top:1px solid var(--line-light)}
.acc-head{width:100%; display:flex; justify-content:space-between; align-items:center; background:none; border:0; color:#fff; cursor:pointer; font-family:var(--font-display); font-weight:500; font-size:24px; padding:18px 0; text-align:left}
.acc-head .pm{width:34px; height:34px; flex:0 0 auto; display:flex; align-items:center; justify-content:center; font-size:23px; color:var(--accent); background:rgba(255,81,21,.14); border-radius:50%; transition:transform .3s var(--ease); line-height:1}
.acc-item.open .acc-head .pm{transform:rotate(45deg)}
.acc-panel{max-height:0; overflow:hidden; transition:max-height .4s var(--ease)}
.acc-panel .inner{padding:0 0 14px}
.acc-panel a{display:block; color:#cfccc4; font-size:16px; padding:11px 0; transition:color .2s, padding-left .25s var(--ease)}
.acc-panel a:active{color:var(--accent); padding-left:6px}
.acc-link{display:flex; justify-content:space-between; align-items:center; font-family:var(--font-display); font-weight:500; font-size:24px; padding:18px 0; border-top:1px solid var(--line-light)}
.dmore{padding-top:24px}
.dmore .social{margin-top:0; margin-bottom:16px}
.dfoot{font-size:14px; color:#9b9a94; font-family:var(--font-display)}

/* ====== ISOTIPO DEL LOGOTIPO ======
   El camaleón fundido con la columna jónica, delante del logotipo.

   Va dentro del MISMO <span class="o"> que antes llevaba la O de «ACTORES»,
   y ese es el truco: las reglas de color de cada estado —barra transparente
   sobre el hero naranja, barra sólida, barra sobre hero oscuro, cajón abierto,
   pie, preloader— ya estaban escritas para `.o` y siguen valiendo tal cual. El
   isotipo hereda por `currentColor` y no hubo que duplicar ni un estado.

   Se mide en `em` a propósito: cada sitio donde aparece el logotipo tiene su
   cuerpo de letra —15px en el cajón del móvil, 26px en el pie— y así el
   isotipo crece con él sin una regla por cada uno.

   `letter-spacing:0` porque el logotipo va muy espaciado y ese espaciado, si
   se hereda, empuja el dibujo fuera de su caja. */
.marca{display:inline-flex; align-items:center; letter-spacing:0; margin-right:.5em; vertical-align:-.34em}
.marca .isotipo{height:1.5em; width:auto; fill:currentColor; display:block}

/* ====== BOTONES ====== */
.btn{display:inline-flex; align-items:center; gap:9px; font-weight:600; padding:15px 26px; border-radius:44px; font-size:15px; transition:transform .3s var(--ease), background .25s, color .25s; border:1px solid transparent; cursor:pointer}
.btn:hover{transform:translateY(-3px)}
.btn-ink{background:var(--ink); color:#fff} .btn-ink:hover{background:#000}
.btn-o{background:var(--accent); color:#fff} .btn-o:hover{background:var(--orange-700)}
.btn-line{background:transparent; color:var(--ink); border-color:rgba(14,14,12,.35)} .btn-line:hover{border-color:var(--ink)}
.btn-white{background:#fff; color:var(--ink)}
.btn-line-w{background:transparent; color:#fff; border-color:rgba(255,255,255,.45)} .btn-line-w:hover{border-color:#fff}

/* ====== DUOTONO ====== */
.duo{position:relative; background-size:cover; background-position:center; background-color:#171715; overflow:hidden}
.duo::before{content:""; position:absolute; inset:0; background:var(--accent); mix-blend-mode:multiply; opacity:.5; transition:opacity .5s}
.duo:hover::before{opacity:.28}
.duo-soft::before{opacity:.32}
.duo > *{position:relative}

/* ====== ENCABEZADOS DE SECCIÓN ====== */
.sechead{display:flex; align-items:flex-end; justify-content:space-between; gap:30px; flex-wrap:wrap; margin-bottom:44px}
.lab{font-size:12px; letter-spacing:.2em; text-transform:uppercase; font-weight:600; color:var(--g2); display:flex; align-items:center; gap:14px; margin-bottom:18px}
.lab::before{content:""; width:30px; height:1px; background:var(--accent)}
h2.sec{font-family:var(--font-display); font-weight:500; letter-spacing:-.01em; font-size:clamp(30px,4.2vw,52px); line-height:1.02; margin:0}
h2.sec em{font-style:italic; color:var(--accent)}
.seelink{font-size:14px; font-weight:600; border-bottom:1px solid var(--accent); padding-bottom:3px; white-space:nowrap; transition:opacity .2s}
.seelink:hover{opacity:.7}

/* ====== PAGE HERO (páginas interiores) ====== */
/* Todas las páginas interiores abren con un hero del mismo alto: el de
   «Nuestro equipo» (--alto-hero), que es el que más contenido mete. Antes cada
   una medía lo que midiera su titular —de 440px la ficha de actividad a 795px
   el equipo— y al pasar de una a otra la banda naranja saltaba de tamaño.

   Es `min-height`, nunca `height`: un titular largo o un párrafo de más siguen
   estirando el hero en vez de salirse. El sobrante se reparte arriba y abajo
   (`align-items:center`) sin tocar la guarda de arriba, que es la que deja
   sitio a la barra fija. En teléfono vale lo mismo: lo que cambia ahí es el
   valor del token, que se estrecha con la pantalla (ver :root arriba).

   LAS GUARDAS ENCOGEN CON LA PANTALLA, y no por gusto: desde que el hero tiene
   techo de `100svh`, en una ventana baja el alto ya no sobra —es exactamente
   el que hay—, y 158+66 fijos se comían un tercio de él dejando el titular
   apretado contra el párrafo. El `clamp` sobre `svh` los baja a 112 y 40 en
   una ventana de 640, y los deja como estaban de 930 para arriba. El suelo de
   112px no se baja más: por debajo, el titular se mete debajo de la barra.

   El titular hace lo mismo por su cuenta: el `min` con `12svh` es un techo de
   ALTO frente al `clamp`, que solo mira el ancho. Una ventana de 1366x640 —un
   portátil normal— pedía 87px de titular para un hueco de 640: dos líneas y
   media y no cabía nada más. Ahí sale a 77. */
.phero{background:var(--orange); color:var(--ink);
  padding:clamp(112px, 17svh, 158px) 0 clamp(40px, 7svh, 66px);
  position:relative; overflow:hidden;
  min-height:var(--alto-hero); display:flex; align-items:center}
.phero > .wrap{width:100%}
.phero .spiral{left:-150px; bottom:-200px; width:520px; height:520px; opacity:.15}
.phero .spiral path{stroke:#fff}
.phero .wrap{position:relative; z-index:2}
.crumb{font-size:13px; font-weight:600; color:rgba(14,14,12,.72); margin-bottom:20px; display:flex; gap:8px; align-items:center}
.crumb a:hover{color:var(--ink)}
.crumb .sep{opacity:.5}
.phero h1{font-family:var(--font-display); font-weight:600; font-size:min(clamp(44px,6.4vw,92px), 12svh); line-height:.96; letter-spacing:-.02em; margin:0; color:var(--ink)}
.phero h1 em{font-style:italic; color:#fff; font-weight:500}
.phero .psub{margin-top:20px; max-width:52ch; font-size:18px; font-weight:500; color:rgba(14,14,12,.82)}
/* Sobre el naranja del hero, el eyebrow (.lab) va en tinta: el gris/línea naranja
   por defecto no contrasta. Aplica a TODOS los heros .phero del sitio. */
.phero .lab{color:var(--ink)}
.phero .lab::before{background:var(--ink)}

/* ====== TARJETAS SIN DESTINO ======
   Las de una página que todavía no existe. En el marcado no llevan `href`, así
   que ya no son enlaces: ni foco, ni pulsación, ni lector de pantalla que las
   anuncie como tales. Lo que falta es quitarles el gesto, que es lo que ve el
   ojo —el cursor de mano, el salto y la sombra al pasar por encima prometen un
   sitio al que ir—.

   Vive aquí y no en la hoja de una página porque el problema es del sitio: lo
   mismo pasa en la portada, en Protegemos y en cualquiera que se traiga de la
   maqueta antes que sus destinos. Cada hoja añade lo suyo —qué `:hover`
   concreto hay que desactivar—; el cursor es de todas.

   Cuando la página exista se borra la clase del marcado y la tarjeta vuelve a
   ser lo que era, sin tocar nada de aquí. */
.sin-destino{cursor:default}

/* ====== FOOTER ====== */
/* `position:relative` porque el pie lleva `trama-tenue` y la trama se pinta en
   un `::before` absoluto: sin esto se anclaría al viewport. Las secciones no lo
   necesitan —`section` ya lo trae más arriba—, pero `footer` no es una. */
footer{position:relative; background:var(--ink); color:#9b9a94; padding:78px 0 44px; font-size:14px}
.fcols{display:grid; grid-template-columns:1.5fr 1fr 1fr 1fr; gap:40px; padding-bottom:48px; border-bottom:1px solid rgba(255,255,255,.12)}
.fcols h5{font-family:var(--font-display); color:var(--white); font-size:13px; letter-spacing:.12em; text-transform:uppercase; margin:0 0 16px; font-weight:600}
.fcols a{display:block; color:#9b9a94; padding:6px 0; transition:color .2s}
.fcols a:hover{color:var(--accent)}
.fbrand{font-family:var(--font-display); color:var(--white); font-size:26px; letter-spacing:.28em; font-weight:700}
.fbrand .o{color:var(--accent)}
.fnote{max-width:32ch; line-height:1.7; margin-top:14px}
.social{display:flex; gap:10px; margin-top:22px}
.social a{width:40px; height:40px; border-radius:50%; border:1px solid rgba(255,255,255,.18); display:flex; align-items:center; justify-content:center; color:#cfccc4; padding:0; transition:background .25s, color .25s, border-color .25s, transform .25s var(--ease)}
.social a:hover{background:var(--accent); border-color:var(--accent); color:#fff; transform:translateY(-3px)}
.social svg{width:18px; height:18px; fill:currentColor; display:block}
.fbot{display:flex; justify-content:space-between; padding-top:24px; gap:20px; flex-wrap:wrap; font-size:12.5px}
@media(max-width:820px){.fcols{grid-template-columns:1fr 1fr}}
@media(max-width:520px){.fcols{grid-template-columns:1fr}}

/* ====== FLOATING ACTIONS ====== */
.fabs{position:fixed; right:22px; bottom:22px; z-index:55; display:flex; flex-direction:column; align-items:flex-end; gap:12px}
.fab-top{width:50px; height:50px; border-radius:50%; background:var(--ink); color:#fff; border:0; cursor:pointer; display:flex; align-items:center; justify-content:center; box-shadow:0 16px 34px -14px rgba(0,0,0,.6); opacity:0; visibility:hidden; transform:translateY(12px); transition:opacity .35s var(--ease), transform .35s var(--ease), visibility .35s, background .25s}
.fab-top.show{opacity:1; visibility:visible; transform:none}
.fab-top:hover{background:var(--accent)}
.fab-top svg{width:20px; height:20px; fill:none; stroke:currentColor; stroke-width:2.4; stroke-linecap:round; stroke-linejoin:round}
.fab-chat{display:flex; align-items:center; height:54px; padding:0 17px; border-radius:40px; background:var(--accent); color:#fff; font-weight:600; font-size:14px; box-shadow:0 16px 34px -12px rgba(255,81,21,.7); overflow:hidden; white-space:nowrap; transition:background .25s, box-shadow .25s, transform .3s var(--ease)}
.fab-chat:hover{background:var(--orange-700); transform:translateY(-2px)}
.fab-chat svg{width:22px; height:22px; fill:currentColor; flex:0 0 auto}
.fab-chat .lbl{max-width:0; opacity:0; overflow:hidden; transition:max-width .4s var(--ease), opacity .3s, margin-left .4s var(--ease)}
.fab-chat:hover .lbl, .fab-chat:focus-visible .lbl{max-width:220px; opacity:1; margin-left:10px}
@media(max-width:640px){.fabs{right:16px; bottom:16px} .fab-chat .lbl{display:none}}

/* Sobre una superficie naranja la burbuja naranja se borra: queda el glifo
   blanco flotando sin forma ni sombra, porque el halo también es naranja. Y
   pasa en el sitio entero, no en un rincón: el hero de la portada y el `.phero`
   de toda página interior son naranja a sangre, así que la burbuja nace perdida.

   Cuando el fondo que hay detrás es el naranja de la marca, los dos botones
   pasan a tinta —lo que el manual manda sobre naranja, y lo que ya hacen el
   hero y las teselas `.t-orange`— y la sombra se vuelve neutra. Quién pone y
   quita `sobre-naranja` es site.js, mirando qué hay debajo en cada scroll. */
.fabs.sobre-naranja .fab-chat{background:var(--ink); box-shadow:0 16px 34px -12px rgba(0,0,0,.55)}
.fabs.sobre-naranja .fab-chat:hover{background:#000}
.fabs.sobre-naranja .fab-top:hover{background:#000}

/* ====== FILTROS (chips) — compartido ====== */
.filters{display:flex; gap:10px; flex-wrap:wrap; margin-bottom:44px}
.chip{padding:9px 18px; border:1px solid var(--line); border-radius:40px; font-size:13.5px; font-weight:600; color:var(--g2); cursor:pointer; background:#fff; transition:background .25s, color .25s, border-color .25s}
.chip:hover{border-color:var(--ink); color:var(--ink)}
.chip.active{background:var(--accent); color:#fff; border-color:var(--accent)}

/* ====== PAGINACIÓN (la arma site.js sobre .filter-grid[data-page-size]) ====== */
/* position:static a propósito: arriba, `nav{position:fixed}` viste la cabecera
   del sitio por selector de elemento y se llevaría el paginador al alto de la página. */
.pager{position:static; display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin-top:38px}
.pager[hidden]{display:none}
.pbtn{min-width:40px; height:40px; padding:0 13px; border:1px solid var(--line); border-radius:11px; background:#fff; font-size:14px; font-weight:600; color:var(--g2); cursor:pointer; transition:background .25s, color .25s, border-color .25s}
.pbtn:hover:not(:disabled){border-color:var(--ink); color:var(--ink)}
.pbtn.active{background:var(--accent); color:#fff; border-color:var(--accent)}
.pbtn:disabled{opacity:.38; cursor:default}
.pinfo{margin-left:auto; font-size:13px; font-weight:500; color:var(--g2)}
@media(max-width:520px){.pinfo{margin-left:0; width:100%; order:-1; margin-bottom:6px}}

/* ====== BANNER DE COOKIES / DATOS (maqueta) ====== */
.cookie{position:fixed; left:20px; bottom:20px; z-index:75; width:min(384px, calc(100vw - 40px));
  background:var(--ink); color:#fff; border-radius:18px; padding:20px 22px 18px;
  box-shadow:0 34px 66px -26px rgba(0,0,0,.65); transform:translateY(170%); opacity:0;
  transition:transform .6s var(--ease), opacity .5s}
.cookie.in{transform:none; opacity:1}
.cookie h4{font-family:var(--font-display); font-weight:600; font-size:17px; margin:0 0 9px; display:flex; align-items:center; gap:9px; color:#fff}
.cookie h4 .dot{width:9px; height:9px; border-radius:50%; background:var(--accent); flex:0 0 auto}
.cookie p{margin:0 0 16px; font-size:13.5px; line-height:1.5; color:rgba(255,255,255,.82)}
.cookie p a{color:#fff; text-decoration:underline; text-underline-offset:2px}
.cookie p a:hover{color:var(--accent)}
.cookie-actions{display:flex; gap:10px; flex-wrap:wrap}
.cookie-actions button{font-family:var(--font-ui); font-weight:600; font-size:13.5px; padding:11px 18px; border-radius:40px; cursor:pointer; border:1px solid transparent; transition:transform .25s var(--ease), background .25s, border-color .25s}
.cookie-actions button:hover{transform:translateY(-2px)}
.ck-accept{background:var(--accent); color:#fff}
.ck-accept:hover{background:var(--orange-700)}
.ck-min{background:transparent; color:#fff; border-color:rgba(255,255,255,.4)}
.ck-min:hover{border-color:#fff}
@media(prefers-reduced-motion:reduce){ .cookie{transition:opacity .4s} }
@media(max-width:520px){ .cookie{left:12px; right:12px; bottom:12px; width:auto} }
.nempty{padding:40px 0; color:var(--g2); font-size:16px}

/* ====== REVEALS ====== */
.rv{opacity:0; transform:translateY(24px); transition:opacity .9s var(--ease), transform .9s var(--ease)}
.rv.in{opacity:1; transform:none}
:focus-visible{outline:2px solid var(--accent); outline-offset:3px}
@media(prefers-reduced-motion:reduce){.rv{opacity:1; transform:none; transition:none} html{scroll-behavior:auto}}
