/* -------------------------- TIPOGRAFÍAS ---------------------------
   Montserrat 500–900 e Inter 400–700, servidas por nosotros.

   El tramo importa: los primeros ficheros que puse llegaban solo hasta
   Montserrat 800, y el tema pide 900 en los titulares. El navegador lo
   resolvía engordando la letra a la fuerza —«fake bold»— y se notaba:
   los títulos salían emborronados y peor que en WordPress.

   Son variables, así que un solo fichero por tramo cubre todos los
   pesos. Y las servimos nosotros: el tema las pedía a
   fonts.googleapis.com, una petición a un tercero con la IP del
   visitante por delante en cada visita.
   ------------------------------------------------------------------ */
@font-face{
  font-family:'Inter';font-style:normal;font-weight:400 700;font-display:swap;
  src:url(../fonts/inter-latin-ext.woff2) format('woff2');
  unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face{
  font-family:'Inter';font-style:normal;font-weight:400 700;font-display:swap;
  src:url(../fonts/inter-latin.woff2) format('woff2');
  unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face{
  font-family:'Montserrat';font-style:normal;font-weight:500 900;font-display:swap;
  src:url(../fonts/montserrat-latin-ext.woff2) format('woff2');
  unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face{
  font-family:'Montserrat';font-style:normal;font-weight:500 900;font-display:swap;
  src:url(../fonts/montserrat-latin.woff2) format('woff2');
  unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/*
   Hoja de estilos de 100x100unidos.es · la web del proyecto provincial.

   Viene entera de la de 100x100 Sanlúcar, que a su vez venía del tema de
   WordPress que tenía aquel sitio. El color de marca es el mismo naranja
   —#EB6411— porque es el mismo partido, así que no hubo que retocar ni un
   token. Lo que se ha añadido va al final, en su propio bloque:
   «AGRUPACIONES» y «CIFRAS».

   ⚠️ No se escribe una clase que no esté aquí. Si se inventa un nombre, el
   elemento sale sin estilo y nadie avisa.
*/

/* ==================== TOKENS ==================== */
:root{
	--orange:#EB6411; --orange-600:#d1560b; --orange-700:#b4490a;
	/* El tramo más oscuro de la rampa. Existe para la franja de las páginas
	   interiores: es el naranja más claro sobre el que la letra blanca
	   pequeña llega al contraste que pide la norma. Ver el bloque del final. */
	--orange-800:#8f3907;
	--ink:#141118; --ink-soft:#2b2733;
	--paper:#faf6f1; --paper-2:#f3ede5;
	--muted:#6f6b76; --line:#e8e1d8; --white:#fff;
	--header-h:76px;
	--radius:14px; --radius-lg:24px;
	--shadow:0 18px 50px rgba(20,17,24,.12);
	--shadow-sm:0 8px 24px rgba(20,17,24,.10);
	--maxw:1180px;
	--font-head:'Montserrat',system-ui,sans-serif;
	--font-body:'Inter',system-ui,sans-serif;
}

/* ==================== RESET / BASE ==================== */
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{margin:0;font-family:var(--font-body);color:var(--ink);background:var(--white);line-height:1.65;font-size:17px;overflow-x:hidden}
img{max-width:100%;height:auto;display:block}
a{color:var(--orange);text-decoration:none}
h1,h2,h3,h4{font-family:var(--font-head);line-height:1.12;margin:0 0 .5em;font-weight:800}
p{margin:0 0 1.1em}
ul{margin:0;padding:0}
:focus-visible{outline:3px solid var(--orange);outline-offset:2px}
.screen-reader-text{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.skip-link{position:fixed;left:12px;top:-60px;z-index:2000;background:var(--ink);color:#fff;padding:10px 16px;border-radius:8px;transition:top .2s}
.skip-link:focus{top:12px}

/* ==================== LAYOUT ==================== */
.container{width:100%;max-width:var(--maxw);margin-inline:auto;padding-inline:22px}
.section{padding-block:clamp(56px,8vw,104px)}
.section--paper{background:var(--paper)}
.narrow{max-width:820px;margin-inline:auto}
.center{text-align:center}
.section__head{margin-bottom:clamp(28px,4vw,52px)}
.eyebrow{display:inline-block;font-family:var(--font-head);font-weight:700;font-size:13px;letter-spacing:.16em;text-transform:uppercase;color:var(--orange);margin-bottom:12px}
.eyebrow--accent{color:var(--orange)}
.txt-accent{color:var(--orange)}
.h2{font-size:clamp(1.9rem,4vw,2.7rem);margin:0 0 .3em}
.h2--light{color:#fff}
.lead{font-size:clamp(1.05rem,1.6vw,1.22rem);color:var(--muted)}
.lead--tight{margin-top:.4em}
.lead--muted{color:#c9c4d0}
.lead--light{color:rgba(255,255,255,.92)}
.accent-bar{display:block;width:64px;height:4px;border-radius:4px;background:var(--orange);margin:14px 0 22px}
.accent-bar--center{margin-inline:auto}
.accent-bar--light{background:#fff}

/* ==================== BOTONES ==================== */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.55em;font-family:var(--font-head);font-weight:700;font-size:15px;line-height:1;border-radius:999px;padding:.95em 1.7em;border:2px solid transparent;cursor:pointer;transition:transform .25s ease,box-shadow .25s ease,background .25s ease,color .25s ease;white-space:nowrap}
.btn .ico{width:1.15em;height:1.15em;flex:none}
.btn--sm{padding:.7em 1.2em;font-size:14px}
.btn--lg{padding:1.1em 2em;font-size:16px}
.btn--block{width:100%}
.btn--primary{background:var(--orange);color:#fff;border-color:var(--orange)}
.btn--primary:hover{background:var(--orange-700);border-color:var(--orange-700);transform:translateY(-3px);box-shadow:0 12px 26px rgba(235,100,17,.4);color:#fff}
.btn--light{background:#fff;color:var(--orange);border-color:#fff}
.btn--light:hover{transform:translateY(-3px);box-shadow:0 12px 26px rgba(0,0,0,.22);color:var(--orange-700)}
.btn--ghost{background:transparent;color:#fff;border-color:rgba(255,255,255,.75)}
.btn--ghost:hover{background:#fff;color:var(--orange);border-color:#fff;transform:translateY(-3px)}
.btn--ghost-dark{background:transparent;color:var(--ink);border-color:var(--ink)}
.btn--ghost-dark:hover{background:var(--ink);color:#fff;transform:translateY(-3px)}

/* ==================== HEADER ==================== */
.site-header{position:fixed;inset:0 0 auto 0;z-index:1000;transition:background .3s ease,box-shadow .3s ease,padding .3s ease}
.header__inner{display:flex;align-items:center;justify-content:space-between;gap:20px;min-height:var(--header-h)}
.brand{display:inline-flex;align-items:center;flex:none}
.brand__logo{height:42px;width:auto;transition:height .3s ease}
.brand__logo--dark{display:none}
.nav__list{display:flex;align-items:center;gap:4px;list-style:none}
.nav__link{font-family:var(--font-head);font-weight:600;font-size:15px;color:var(--ink);padding:10px 14px;border-radius:8px;position:relative;transition:color .2s}
.nav__link::after{content:"";position:absolute;left:14px;right:14px;bottom:6px;height:2px;background:currentColor;transform:scaleX(0);transform-origin:left;transition:transform .28s ease}
.nav__link:hover{color:var(--orange)}
.nav__link:hover::after{transform:scaleX(1)}
.header__actions{display:flex;align-items:center;gap:12px;flex:none}
.nav-toggle{display:none;align-items:center;justify-content:center;width:44px;height:44px;border:0;background:transparent;color:var(--ink);cursor:pointer;border-radius:10px}
.nav-toggle .ico{width:26px;height:26px}
.nav-toggle .ico--close{display:none}

/* Overlay (portada, sin scroll): transparente + logo blanco */
.site-header--overlay{background:transparent}
.site-header--overlay .brand__logo--light{display:block}
.site-header--overlay .brand__logo--dark{display:none}
.site-header--overlay .nav__link{color:#fff}
.site-header--overlay .nav-toggle{color:#fff}
/* Solido (otras páginas o al hacer scroll) */
.site-header--solid,.site-header.is-scrolled{background:rgba(255,255,255,.96);backdrop-filter:saturate(1.2) blur(8px);box-shadow:0 6px 24px rgba(20,17,24,.10)}
.site-header--solid .brand__logo--dark,.site-header.is-scrolled .brand__logo--dark{display:block}
.site-header--solid .brand__logo--light,.site-header.is-scrolled .brand__logo--light{display:none}
.site-header--solid .nav__link,.site-header.is-scrolled .nav__link{color:var(--ink)}
.site-header--solid .nav__link:hover,.site-header.is-scrolled .nav__link:hover{color:var(--orange)}
.site-header--solid .nav-toggle,.site-header.is-scrolled .nav-toggle{color:var(--ink)}
.site-header.is-scrolled .brand__logo{height:36px}

/* contenido no queda bajo el header fijo en páginas sólidas */
.has-solid-header .site-main{padding-top:var(--header-h)}

/* Menú móvil */
.mobile-nav{position:absolute;top:100%;left:0;right:0;background:#fff;box-shadow:var(--shadow);border-top:1px solid var(--line);animation:navdrop .28s ease}
@keyframes navdrop{from{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:none}}
.mobile-nav__list{list-style:none;padding:14px 22px 22px}
.mobile-nav__list li{border-bottom:1px solid var(--line)}
.mobile-nav__list li:last-child{border:0;padding-top:14px}
.mobile-nav__list a:not(.btn){display:block;font-family:var(--font-head);font-weight:600;color:var(--ink);padding:14px 4px;font-size:17px}
.mobile-nav__list a:not(.btn):hover{color:var(--orange)}
body.nav-open{overflow:hidden}

/* ==================== HERO ==================== */
.hero{position:relative;min-height:100svh;display:flex;align-items:center;justify-content:center;text-align:center;color:#fff;background:var(--hero-bg) center/cover no-repeat;isolation:isolate}
.hero__overlay{position:absolute;inset:0;z-index:-1;background:linear-gradient(150deg,rgba(10,9,14,.78),rgba(235,100,17,.55))}
.hero__inner{padding-block:calc(var(--header-h) + 30px) 60px;max-width:900px}
.hero__eyebrow{margin-bottom:16px}
.hero__badge{font-family:var(--font-head);font-weight:800;font-size:clamp(17px,2.2vw,24px);letter-spacing:.02em;color:#fff}
.hero__title{font-size:clamp(2.3rem,6.4vw,4.4rem);font-weight:900;margin:0 0 .3em;text-shadow:0 3px 30px rgba(0,0,0,.35)}
.hero__title .txt-accent{color:#ffd9bf}
.hero__sub{font-size:clamp(1.05rem,2vw,1.3rem);max-width:640px;margin:0 auto 30px;color:rgba(255,255,255,.94)}
.hero__actions{display:flex;flex-wrap:wrap;gap:14px;justify-content:center}
.hero__scroll{position:absolute;bottom:26px;left:50%;transform:translateX(-50%);color:#fff;opacity:.85;animation:bob 2s ease-in-out infinite}
.hero__scroll svg{width:30px;height:30px}
@keyframes bob{0%,100%{transform:translate(-50%,0)}50%{transform:translate(-50%,8px)}}

/* ==================== SPLIT (proyecto) ==================== */
.split{display:grid;grid-template-columns:1fr 1.08fr;gap:clamp(32px,5vw,72px);align-items:center}
.split__text .h2{margin-top:.1em}
.split__media{position:relative}
/* marco naranja desplazado para dar protagonismo a la foto */
.split__media::before{content:"";position:absolute;top:26px;left:26px;right:-26px;bottom:-26px;border-radius:var(--radius-lg);background:linear-gradient(135deg,var(--orange),var(--orange-700));opacity:.92;z-index:0}
.media-frame{position:relative;z-index:1;border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow);transform:translateZ(0)}
.media-frame img{width:100%;height:100%;object-fit:cover;transition:transform .9s cubic-bezier(.2,.7,.2,1)}
.media-frame:hover img{transform:scale(1.05)}

/* ==================== VALORES ==================== */
.section--values{background:linear-gradient(135deg,var(--orange),var(--orange-700));color:#fff}
.values{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
.value-card{background:rgba(255,255,255,.09);border:1px solid rgba(255,255,255,.2);border-radius:var(--radius-lg);padding:34px 28px;transition:transform .35s ease,background .35s ease;transition-delay:var(--d,0ms)}
.value-card:hover{transform:translateY(-8px);background:rgba(255,255,255,.16)}
.value-card__icon{display:inline-flex;align-items:center;justify-content:center;width:60px;height:60px;border-radius:16px;background:rgba(255,255,255,.16);margin-bottom:18px}
.value-card__icon svg{width:30px;height:30px;color:#fff}
.value-card__title{font-size:1.35rem;margin:0 0 .3em}
.value-card__text{color:rgba(255,255,255,.9);margin:0}

/* ==================== NOTICIAS ==================== */
.news-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:28px}
.news-grid--archive{margin-top:12px}
.news-card{background:#fff;border:1px solid var(--line);border-radius:var(--radius-lg);overflow:hidden;display:flex;flex-direction:column;transition:transform .3s ease,box-shadow .3s ease}
.news-card:hover{transform:translateY(-6px);box-shadow:var(--shadow)}
.news-card__media{display:block;aspect-ratio:16/10;overflow:hidden;background:var(--paper-2)}
.news-card__media img{width:100%;height:100%;object-fit:cover;transition:transform .6s ease}
.news-card:hover .news-card__media img{transform:scale(1.05)}
.news-card__ph{display:block;width:100%;height:100%;background:linear-gradient(135deg,var(--paper-2),#e7ded2)}
.news-card__body{padding:22px 22px 24px;display:flex;flex-direction:column;gap:8px;flex:1}
.news-card__date{font-size:13px;font-weight:600;color:var(--orange);text-transform:uppercase;letter-spacing:.04em}
.news-card__title{font-size:1.2rem;margin:0;line-height:1.25}
.news-card__title a{color:var(--ink)}
.news-card__title a:hover{color:var(--orange)}
.news-card__excerpt{color:var(--muted);font-size:.97rem;margin:0}
.news-card__more{margin-top:auto;font-family:var(--font-head);font-weight:700;font-size:14px;display:inline-flex;align-items:center;gap:.4em;color:var(--orange)}
.news-card__more .ico{width:1.1em;height:1.1em;transition:transform .25s}
.news-card__more:hover .ico{transform:translateX(4px)}

/* ==================== INSTAGRAM ==================== */
.ig-feed{margin:8px 0 26px}
#sb_instagram .sbi_photo_wrap,#sb_instagram .sbi_photo{border-radius:12px;overflow:hidden}

/* ==================== ÚNETE ==================== */
.section--join{background:radial-gradient(1200px 500px at 50% -10%,#241f2e,transparent),var(--ink);color:#fff}
.join-card{background:#fff;color:var(--ink);border-radius:var(--radius-lg);box-shadow:0 30px 70px rgba(0,0,0,.4);padding:clamp(24px,4vw,42px);margin-top:30px;text-align:left}
.join-card input[type=text],.join-card input[type=email],.join-card input[type=tel],.join-card input[type=number],.join-card input[type=url],.join-card textarea,.join-card select{width:100%;border:1px solid #dcdce2;border-radius:10px;padding:13px 15px;font-family:var(--font-body);font-size:16px;transition:border-color .2s,box-shadow .2s;background:#fff}
.join-card input:focus,.join-card textarea:focus,.join-card select:focus{border-color:var(--orange);box-shadow:0 0 0 3px rgba(235,100,17,.16);outline:none}
.join-card label,.join-card .frm_primary_label{font-family:var(--font-head);font-weight:600;font-size:14px;color:var(--ink-soft)}
.join-card .frm_submit,.join-card .frm_final_submit{text-align:center}
.join-card .frm_button_submit,.join-card button[type=submit],.join-card input[type=submit]{background:var(--orange)!important;border:0!important;border-radius:999px!important;color:#fff!important;font-family:var(--font-head);font-weight:700!important;font-size:16px!important;padding:14px 38px!important;cursor:pointer;transition:transform .25s,box-shadow .25s,background .25s;-webkit-appearance:none}
.join-card .frm_button_submit:hover,.join-card button[type=submit]:hover,.join-card input[type=submit]:hover{background:var(--orange-700)!important;transform:translateY(-3px);box-shadow:0 12px 26px rgba(235,100,17,.4)}

/* ==================== CONTACTO ==================== */
.section--contact{position:relative;color:#fff;background:var(--contact-bg) center/cover no-repeat;isolation:isolate}
.section--contact__overlay{position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,rgba(18,14,12,.86),rgba(18,14,12,.9))}
.contact__claim{font-size:1.15rem;margin-top:.4em}
.section--contact .btn{margin-top:10px}

/* ==================== FOOTER ==================== */
.site-footer{background:var(--ink);color:#c9c4d0}
.footer__grid{display:grid;grid-template-columns:1.8fr 1fr 1.3fr;gap:40px;padding-block:clamp(46px,6vw,72px)}
.footer__logo{height:48px;width:auto;margin-bottom:14px}
.footer__tagline{color:#8f8a98;max-width:34ch}
.footer__social{display:flex;gap:10px;margin-top:8px}
.footer__social a{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:10px;background:rgba(255,255,255,.08);color:#fff;transition:background .25s,transform .25s}
.footer__social a:hover{background:var(--orange);transform:translateY(-3px)}
.footer__social svg{width:20px;height:20px}
.footer__title{font-size:14px;letter-spacing:.1em;text-transform:uppercase;color:#fff;margin:0 0 16px}
.footer__menu{list-style:none;display:flex;flex-direction:column;gap:10px}
.footer__menu a{color:#c9c4d0}
.footer__menu a:hover{color:#fff}
.footer__contact{gap:12px;display:flex;flex-direction:column;align-items:flex-start}
.footer__mail{display:inline-flex;align-items:center;gap:.5em;color:#c9c4d0}
.footer__mail svg{width:18px;height:18px;color:var(--orange)}
.footer__mail:hover{color:#fff}
.footer__bottom{border-top:1px solid rgba(255,255,255,.1)}
.footer__bottom-inner{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;padding-block:20px;font-size:14px;color:#8f8a98}
.footer__legal{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.footer__legal a{color:#c9c4d0}
.footer__legal a:hover{color:#fff}
.footer__legal-sep{color:#575262}

/* ==================== PÁGINAS / PROSE ==================== */
.elementor-page-wrap{min-height:40vh}
.page-hero{background:linear-gradient(135deg,var(--paper),var(--paper-2));padding-block:clamp(40px,6vw,72px);border-bottom:1px solid var(--line);text-align:center}
.page-hero--list{text-align:left}
.page-hero__title{font-size:clamp(1.9rem,4.5vw,3rem);margin:0}
.page-article{padding-bottom:clamp(46px,7vw,86px)}
.prose{max-width:780px;margin-inline:auto;padding-block:clamp(32px,5vw,56px);font-size:1.06rem}
.prose h2{font-size:1.7rem;margin-top:1.6em}
.prose h3{font-size:1.35rem;margin-top:1.4em}
.prose img{border-radius:var(--radius);margin-block:1.4em}
.prose a{text-decoration:underline;text-underline-offset:3px}
.prose ul,.prose ol{padding-left:1.3em;margin-bottom:1.2em}
.prose li{margin-bottom:.4em}
.prose blockquote{border-left:4px solid var(--orange);margin:1.6em 0;padding:.4em 0 .4em 1.2em;font-size:1.2rem;color:var(--ink-soft);font-style:italic}
.prose--elementor{max-width:none;padding:0}

/* Post individual */
.post-hero{background:var(--ink);color:#fff;padding-block:calc(var(--header-h) + 56px) 90px;position:relative;isolation:isolate;overflow:hidden}
.post-hero__bg{position:absolute;inset:-30px;z-index:-2;background-size:cover;background-position:center;filter:blur(22px) brightness(.55) saturate(1.1);transform:scale(1.08)}
.post-hero__overlay{position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,rgba(18,15,22,.55),rgba(18,15,22,.82))}
.post-hero__meta{display:flex;align-items:center;gap:18px;margin-bottom:16px;font-size:14px;flex-wrap:wrap}
.post-hero__back{color:#ffd9bf;font-weight:700;font-family:var(--font-head)}
.post-hero__back:hover{color:#fff}
.post-hero__date{display:inline-flex;align-items:center;gap:.45em;color:rgba(255,255,255,.8)}
.post-hero__date .ico{width:1em;height:1em}
.post-hero__title{font-size:clamp(1.8rem,4.2vw,2.9rem);max-width:26ch;margin:0;color:#fff;text-shadow:0 2px 24px rgba(0,0,0,.4)}
.post-hero__subtitle{margin:18px 0 0;max-width:52ch;font-family:var(--font-head);font-weight:500;font-size:clamp(1.1rem,2.1vw,1.45rem);line-height:1.4;color:rgba(255,255,255,.92);text-shadow:0 1px 12px rgba(0,0,0,.35)}
.post-hero__subtitle::before{content:"";display:block;width:56px;height:3px;margin-bottom:16px;background:var(--orange);border-radius:2px}
/* Foto completa, sin recortes, solapada sobre la cabecera */
.post-figure{max-width:860px;margin:-64px auto 0;position:relative;z-index:5;border-radius:var(--radius-lg);overflow:hidden;box-shadow:var(--shadow)}
.post-figure img{width:100%;height:auto;display:block}
/* Cuerpo justificado (solo párrafos; titulares y listas quedan a la izquierda) */
.prose--post p{text-align:justify;hyphens:auto}
.post-foot{max-width:780px;margin:0 auto;padding-bottom:20px;text-align:center}
.related{border-top:1px solid var(--line)}
.related__all,.news-all{margin-top:36px}
/* Barra de progreso de lectura */
.read-progress{position:fixed;top:0;left:0;right:0;height:4px;z-index:1200;background:transparent;pointer-events:none}
.read-progress span{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--orange),var(--orange-700));transition:width .1s linear}

/* Paginación / vacío / 404 */
.pagination{display:flex;justify-content:center;gap:8px;margin-top:48px}
.pagination .page-numbers{display:inline-flex;align-items:center;justify-content:center;min-width:44px;height:44px;padding:0 12px;border-radius:10px;border:1px solid var(--line);font-family:var(--font-head);font-weight:600;color:var(--ink)}
.pagination .current{background:var(--orange);color:#fff;border-color:var(--orange)}
.pagination a:hover{border-color:var(--orange);color:var(--orange)}
.empty{text-align:center;padding-block:60px}
.error-404{padding-block:clamp(90px,14vw,160px);background:var(--paper)}
.error-404__code{font-family:var(--font-head);font-weight:900;font-size:clamp(4rem,16vw,9rem);color:var(--orange);line-height:1;display:block}

/* ==================== REVEAL ==================== */
[data-reveal]{opacity:0;transform:translateY(28px);transition:opacity .7s ease,transform .7s cubic-bezier(.2,.7,.2,1)}
[data-reveal].is-visible{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){[data-reveal]{opacity:1!important;transform:none!important;transition:none} .hero__scroll{animation:none}}

/* ==================== CTA FLOTANTE MÓVIL ==================== */
.mobile-cta{position:fixed;left:0;right:0;bottom:0;z-index:900;padding:10px 14px calc(10px + env(safe-area-inset-bottom));background:linear-gradient(0deg,rgba(0,0,0,.16),transparent);display:none;transform:translateY(120%);transition:transform .35s ease}
body.show-cta .mobile-cta{transform:none}
.mobile-cta__btn{display:block;text-align:center;background:var(--orange);color:#fff;font-family:var(--font-head);font-weight:700;padding:15px;border-radius:999px;box-shadow:0 10px 26px rgba(235,100,17,.45)}

/* ==================== RESPONSIVE ==================== */
@media (max-width:980px){
	.nav{display:none}
	.nav-toggle{display:inline-flex}
	.site-header.is-scrolled .nav-toggle,.site-header--solid .nav-toggle{color:var(--ink)}
	body.nav-open .nav-toggle .ico--menu{display:none}
	body.nav-open .nav-toggle .ico--close{display:block}
	.split{grid-template-columns:1fr}
	.split__media{order:-1}
	.split__media::before{top:12px;left:12px;right:-10px;bottom:-12px}
	.values{grid-template-columns:1fr;max-width:460px;margin-inline:auto}
	.news-grid{grid-template-columns:1fr 1fr}
	.footer__grid{grid-template-columns:1fr 1fr}
}
@media (max-width:640px){
	body{font-size:16px}
	.header__cta{display:none}
	.news-grid{grid-template-columns:1fr}
	.footer__grid{grid-template-columns:1fr;gap:30px}
	.mobile-cta{display:block}
	.hero__actions .btn{width:100%}
	.footer__bottom-inner{justify-content:center;text-align:center}
}

/* ==================== OVERRIDES vs. Elementor kit global ====================
   Elementor inyecta ".elementor-kit-6 a{color:primary}" y ".elementor-kit-6 button{...}"
   con más especificidad y después de este archivo. Forzamos los colores de los
   botones para que el texto siempre se lea. */
.btn{text-decoration:none}
.btn--primary{background:var(--orange)!important;color:#fff!important;border-color:var(--orange)!important}
.btn--primary:hover{background:var(--orange-700)!important;border-color:var(--orange-700)!important;color:#fff!important}
.btn--light{background:#fff!important;color:var(--orange)!important;border-color:#fff!important}
.btn--light:hover{color:var(--orange-700)!important}
.btn--ghost{background:transparent!important;color:#fff!important;border-color:rgba(255,255,255,.75)!important}
.btn--ghost:hover{background:#fff!important;color:var(--orange)!important;border-color:#fff!important}
.btn--ghost-dark{background:transparent!important;color:var(--ink)!important;border-color:var(--ink)!important}
.btn--ghost-dark:hover{background:var(--ink)!important;color:#fff!important}
.mobile-cta__btn{color:#fff!important}
.mobile-nav__list .btn--primary{color:#fff!important}
.nav-toggle{background:transparent!important}
.news-card__title a{color:var(--ink)!important}
.news-card__title a:hover{color:var(--orange)!important}
.news-card__more{color:var(--orange)!important}

/* ============================================================
   REMATES DE LA FRANJA Y DEL PIE
   `.franja__botones` es la fila de botones de la banda naranja;
   `.footer__hermana`, el bloque destacado del pie —en Sanlúcar era la
   web hermana de denuncias, aquí es el programa electoral—.
   ============================================================ */
.franja__botones{display:flex;flex-wrap:wrap;gap:.75rem;justify-content:center;margin-top:1.75rem}
.footer__hermana{margin:1.5rem 0 0;padding-top:1.1rem;border-top:1px solid rgba(255,255,255,.18);line-height:1.45}
.footer__hermana a{display:inline-block;margin-bottom:.25rem}
.footer__hermana-txt{display:block;font-size:.875rem;opacity:.8}

/* ============================================================
   RED DE SEGURIDAD PARA LOS ICONOS
   El tema daba tamaño a cada SVG por contexto —`.btn .ico`,
   `.nav-toggle .ico`, `.hero__scroll svg`…— y no tenía ninguna regla
   general. Consecuencia: un icono en un sitio nuevo salía a tamaño
   natural, ocupando media pantalla. Pasó al rehacer las noticias.
   Esto le pone un tamaño de partida; cualquier regla con más
   especificidad —las de arriba, todas— lo sigue pisando.
   ============================================================ */
svg.ico{width:1.15em;height:1.15em;flex:none}

/* ============================================================
   FORMULARIO DE ADHESIÓN
   Sustituye al de Formidable. Mismo aspecto: dos columnas en los
   pares nombre/apellidos y teléfono/correo, y una sola columna en
   el móvil.
   ============================================================ */

/* LA TRAMPA PARA ROBOTS VA OCULTA. Sin esta regla se veía «No rellenes
   esto» en lo alto del formulario, que es exactamente lo contrario de lo
   que hace falta: si el visitante la ve, la rellena, y si la rellena se
   descarta su envío. `aria-hidden` ya la esconde del lector de pantalla;
   esto la esconde de los ojos. */
.trampa{position:absolute!important;left:-9999px;top:auto;width:1px;height:1px;overflow:hidden}

.form-unete{text-align:left}
.form-unete__fila{display:grid;gap:14px;grid-template-columns:1fr 1fr}
.form-unete .campo{margin-bottom:14px}
.form-unete label{display:block;font-family:var(--font-head);font-weight:600;font-size:14px;color:var(--ink);margin-bottom:6px}
.form-unete input[type=text],
.form-unete input[type=tel],
.form-unete input[type=email],
.form-unete textarea{
  width:100%;box-sizing:border-box;font-family:var(--font-body);font-size:16px;
  color:var(--ink);background:#fff;border:1.5px solid #d9d3dd;border-radius:12px;
  padding:13px 15px;transition:border-color .2s,box-shadow .2s;
}
.form-unete textarea{resize:vertical;min-height:110px}
.form-unete input:focus,.form-unete textarea:focus{
  outline:none;border-color:var(--orange);box-shadow:0 0 0 3px rgba(235,100,17,.18);
}
.form-unete [aria-invalid="true"]{border-color:#b3261e}

/* La casilla y su texto, en línea y con el cuadro a tamaño de dedo. */
.campo--acepto{display:flex;align-items:flex-start;gap:10px;margin:4px 0 18px}
.campo--acepto input{width:20px;height:20px;flex:none;margin-top:2px;accent-color:var(--orange)}
.campo--acepto label{margin:0;font-weight:500;font-size:14.5px;line-height:1.5;font-family:var(--font-body)}

.form-unete .aviso--error{
  background:#fdecea;border:1px solid #f3b7b1;border-radius:12px;
  padding:14px 16px;margin-bottom:18px;color:#7f1d17;
}
.form-unete .aviso--error ul{margin:6px 0 0;padding-left:1.1em}
.form-unete .aviso--error a{color:#7f1d17}

@media (max-width:600px){
  .form-unete__fila{grid-template-columns:1fr}
}

/* ============================================================
   FRANJA NARANJA · texto a la izquierda, lista a la derecha
   En Sanlúcar este bloque mandaba a la web de denuncias ciudadanas;
   aquí lleva al programa electoral. Se llama `franja` y no por su
   contenido justamente para que valga para las dos cosas.
   Va en naranja y con el texto a la izquierda, no centrado, porque
   tiene que distinguirse de las secciones crema que lleva al lado:
   dos bloques centrados seguidos se leen como el mismo repetido.
   ============================================================ */
.franja{background:var(--orange);color:#fff;padding-block:clamp(56px,8vw,92px)}
.franja__caja{display:grid;gap:clamp(28px,5vw,64px);grid-template-columns:1.05fr .95fr;align-items:center}
.franja__texto .h2{margin-bottom:18px}
.franja__lead{color:rgba(255,255,255,.94);font-size:17px;line-height:1.6;margin:0 0 14px;max-width:46ch}
.franja__lead strong{color:#fff}
.franja__botones{display:flex;flex-wrap:wrap;gap:12px;margin-top:26px}
.franja .eyebrow--accent{color:rgba(255,255,255,.85)}

/* La columna de la derecha: ejemplos de lo que se puede comunicar. No es
   decoración, es la respuesta a «¿y esto para qué sirve?». */
.franja__lista{list-style:none;margin:0;padding:0;display:grid;gap:12px}
.franja__item{
  background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.28);
  border-radius:16px;padding:16px 18px;
  display:flex;flex-direction:column;gap:3px;
  transition:transform .25s ease,background .25s ease;transition-delay:var(--d,0ms);
}
.franja__item:hover{background:rgba(255,255,255,.2);transform:translateX(4px)}
.franja__item strong{font-family:var(--font-head);font-weight:700;font-size:16px}
.franja__item span{font-size:14.5px;color:rgba(255,255,255,.86);line-height:1.45}

@media (max-width:860px){
  .franja__caja{grid-template-columns:1fr}
  .franja__lead{max-width:none}
}

/* ============================================================
   CUENTA ATRÁS · 23 de mayo de 2027
   Los días los pinta el servidor; el JavaScript solo añade horas,
   minutos y segundos. Sin él se sigue viendo cuánto falta.
   ============================================================ */
.cuenta{background:var(--ink);color:#fff;padding-block:clamp(52px,7vw,84px)}
.cuenta .eyebrow--accent{color:var(--orange)}
.cuenta__reloj{
  list-style:none;margin:30px 0 24px;padding:0;
  display:flex;flex-wrap:wrap;justify-content:center;gap:12px;
}
.cuenta__caja{
  min-width:104px;padding:18px 14px;border-radius:18px;
  background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.14);
}
/* Los días son el dato: los demás acompañan. */
.cuenta__caja--dias{background:var(--orange);border-color:var(--orange)}
.cuenta__n{
  display:block;font-family:var(--font-head);font-weight:900;
  font-size:clamp(30px,5.5vw,46px);line-height:1;
  font-variant-numeric:tabular-nums;   /* que no bailen al bajar los segundos */
}
.cuenta__e{display:block;margin-top:6px;font-size:13px;letter-spacing:.08em;text-transform:uppercase;color:rgba(255,255,255,.72)}
.cuenta__caja--dias .cuenta__e{color:rgba(255,255,255,.9)}
.cuenta__pie{color:rgba(255,255,255,.8);margin:0 0 22px;font-size:16.5px}

/* La versión de una línea, para el hero. */
.cuenta-linea{
  display:inline-flex;align-items:baseline;gap:9px;margin:22px 0 0;
  padding:9px 16px;border-radius:999px;
  background:rgba(0,0,0,.34);border:1px solid rgba(255,255,255,.28);
  color:#fff;backdrop-filter:blur(4px);
}
.cuenta-linea__n{font-family:var(--font-head);font-weight:900;font-size:21px;font-variant-numeric:tabular-nums}
.cuenta-linea__t{font-size:14px;color:rgba(255,255,255,.9)}

@media (max-width:520px){
  .cuenta__caja{min-width:0;flex:1 1 40%;padding:14px 10px}
}

/* ============================================================
   REMATES
   ============================================================ */

/* El listado de noticias se comía el pie: la rejilla acaba y el
   contenedor no tenía nada debajo. En WordPress el hueco lo dejaba la
   paginación, que con una sola página no se pinta. */
.page-article,
.page-hero--list + .container{padding-bottom:clamp(48px,7vw,84px)}

/* «← Noticias» de la ficha, en naranja de marca como se ve en la web
   actual. El tema lo tenía en un melocotón muy claro; en WordPress se ve
   naranja porque el CSS de Elementor pisa el color de los enlaces
   (está avisado en el CLAUDE.md de la web). Aquí se pone a propósito. */
.post-hero__back{color:#FF8A3D}
.post-hero__back:hover{color:#fff}

/* La cuenta atrás del hero, ahora con «Quedan» y la fecha debajo. */
.cuenta-linea{
  display:inline-block;margin:22px 0 0;padding:11px 20px 9px;
  border-radius:22px;text-align:center;
  background:rgba(0,0,0,.34);border:1px solid rgba(255,255,255,.28);
  color:#fff;backdrop-filter:blur(4px);
}
.cuenta-linea__fila{display:flex;align-items:baseline;justify-content:center;gap:9px;margin:0}
.cuenta-linea__q{font-family:var(--font-head);font-weight:700;font-size:15px;color:rgba(255,255,255,.9)}
.cuenta-linea__fecha{
  margin:3px 0 0;font-size:12.5px;letter-spacing:.09em;text-transform:uppercase;
  color:rgba(255,255,255,.72);
}

/* Compartir al pie de cada noticia. */
.post-compartir{
  margin:34px 0 0;padding-top:26px;border-top:1px solid var(--line);
}
.post-compartir__tit{
  font-family:var(--font-head);font-weight:700;font-size:15px;
  margin:0 0 12px;color:var(--ink);
}
.post-compartir__botones{display:flex;flex-wrap:wrap;gap:10px;margin:0}
.post-compartir__btn{
  display:inline-flex;align-items:center;gap:9px;
  min-height:48px;padding:0 20px;border-radius:999px;
  font-family:var(--font-head);font-weight:700;font-size:15px;
  color:#fff;text-decoration:none;border:0;
}
.post-compartir__btn svg{width:20px;height:20px;flex:none}
.post-compartir__btn:hover{filter:brightness(.92);color:#fff}
/* Los verdes y azules de marca, oscurecidos: los oficiales dan ~3:1 con
   blanco encima y a 15 px eso no cumple. */
.post-compartir__btn--wa{background:#0F7A3D}
.post-compartir__btn--fb{background:#1257B3}

/* ============================================================
   AJUSTES DE MÓVIL
   ============================================================ */
@media (max-width:600px){
  /* El titular tiene que caber en DOS líneas. Con el tamaño de antes,
     «Recuperemos el futuro» no entraba en una y el navegador lo partía
     donde le tocaba, dejando tres renglones descuadrados. */
  .hero__title{font-size:clamp(1.95rem,8.2vw,2.6rem);line-height:1.08}
  .hero__sub{font-size:1.02rem}
  .hero__inner{padding-block:calc(var(--header-h) + 18px) 40px}

  /* La cuenta atrás, a todo el ancho y centrada: como pastilla estrecha
     se despeinaba en cuanto el texto no cabía. */
  .cuenta-linea{display:block;width:100%;box-sizing:border-box;padding:12px 16px}
}

/* La pastilla de la cuenta atrás: el dato arriba, el porqué debajo. */
.cuenta-linea__fila{
  display:flex;align-items:baseline;justify-content:center;gap:8px;margin:0;
  font-family:var(--font-head);font-weight:700;
}
.cuenta-linea__q{font-size:16px;color:rgba(255,255,255,.92)}
.cuenta-linea__n{font-size:26px;font-weight:900;font-variant-numeric:tabular-nums;line-height:1}
.cuenta-linea__fecha{
  margin:4px 0 0;font-size:12px;letter-spacing:.07em;text-transform:uppercase;
  color:rgba(255,255,255,.75);line-height:1.35;
}

/* La fecha, debajo del rótulo y no en la misma línea: juntas se partían
   solas en el móvil y «Municipales» se quedaba suelto. */
.cuenta-linea__fecha{white-space:nowrap}
.cuenta-linea__dia{margin-top:1px;opacity:.85}

/* ============================================================
   TITULAR DEL HERO · dos renglones, ni uno más
   El `<br>` solo no bastaba: «Recuperemos el futuro» se partía por su
   cuenta y salían tres líneas también en el escritorio. Cada renglón va
   en un bloque que no se puede romper, y el tamaño máximo está calculado
   para que el más largo quepa entero en el ancho del contenedor.
   ============================================================ */
.hero__linea{display:block;white-space:nowrap}
.hero__title{font-size:clamp(1.6rem,6vw,3.9rem)}
.hero__inner{max-width:1000px}

@media (max-width:600px){
  /* A 360 px de ancho, «Recuperemos el futuro» necesita bajar de 7vw
     para no desbordarse. */
  .hero__title{font-size:clamp(1.5rem,7vw,2.4rem);line-height:1.1}
}

/* =====================================================================
   Vídeos incrustados en las noticias  (src/Embed.php)
   ===================================================================== */
.incrustado{margin:1.8rem 0;padding:0}
.incrustado--vertical{max-width:340px;margin-left:auto;margin-right:auto}
.incrustado iframe{display:block;width:100%;height:100%;border:0;
  border-radius:14px;background:#0d0d10}

/* La carátula de los que esperan un clic. Tiene que parecer un
   reproductor, no un aviso: si parece un aviso, nadie lo pulsa. */
.incrustado__portada{position:relative;display:flex;flex-direction:column;
  align-items:center;justify-content:center;gap:.7rem;width:100%;
  padding:1.5rem;border-radius:14px;text-align:center;text-decoration:none;
  color:#fff;background:#141118;border:1px solid rgba(255,255,255,.14);
  transition:background .18s ease,border-color .18s ease}
.incrustado__portada:hover,
.incrustado__portada:focus-visible{background:#1d1a23;border-color:rgba(235,100,17,.65)}
.incrustado__play{display:grid;place-items:center;width:66px;height:66px;
  border-radius:50%;background:#EB6411;color:#141118;flex:none}
.incrustado__play svg{margin-left:4px}
.incrustado__texto{display:block;font-weight:700;font-size:1.02rem;line-height:1.35}
.incrustado__texto small{display:block;margin-top:.35rem;font-weight:400;
  font-size:.82rem;line-height:1.4;color:rgba(255,255,255,.72)}

/* =====================================================================
   EL IDEARIO (19/09/2026) · /ideario

   Es el texto con el que el proyecto se presenta, y se lee entero: nada de
   tarjetas ni columnas, una sola línea de lectura y los números grandes en
   naranja para que se vea de un vistazo por dónde va. El mismo lenguaje que
   la portada del PDF.
   ===================================================================== */
.ideario-hero{
	position:relative;
	background:linear-gradient(135deg,var(--orange),var(--orange-700));
	color:#fff;text-align:center;
	padding-block:clamp(52px,8vw,96px);
}
.ideario-hero__t{
	font-family:var(--font-head);font-weight:900;color:#fff;
	font-size:clamp(2.1rem,5.4vw,3.6rem);line-height:1.06;margin:0;
}
/* El lema, en blanco: el naranja de `.eyebrow` sobre naranja no se vería. */
.eyebrow--claro{color:rgba(255,255,255,.92)}
.ideario-hero__acc{display:flex;flex-wrap:wrap;gap:12px;justify-content:center;margin:28px 0 0}

.ideario-pag__intro{padding-bottom:clamp(18px,3vw,30px)}

/* Los puntos. La numeración es texto de verdad (se copia con el contenido),
   así que la lista va sin el marcador del navegador. */
.ideario-puntos{
	list-style:none;margin:0 auto clamp(46px,7vw,84px);padding:0;
	max-width:860px;
}
.ideario-punto{
	display:flex;gap:clamp(16px,2.6vw,28px);align-items:flex-start;
	padding-block:clamp(24px,3.4vw,34px);
	border-top:1px solid var(--line);
}
.ideario-punto:first-child{border-top:0}
.ideario-punto__n{
	flex:none;font-family:var(--font-head);font-weight:900;
	font-size:clamp(2rem,5vw,3.1rem);line-height:1;color:var(--orange);
	min-width:1.6em;text-align:right;
	/* Alineado con la primera línea del titular, no con el bloque. */
	margin-top:-.08em;
}
.ideario-punto__t{font-size:clamp(1.25rem,2.4vw,1.6rem);margin:0 0 .35em;line-height:1.25}
.ideario-punto__cuerpo{color:var(--ink-soft);font-size:1.04rem}
.ideario-punto__cuerpo p:last-child{margin-bottom:0}

.ideario-cierre__acc{display:flex;flex-wrap:wrap;gap:12px;justify-content:center;margin:26px 0 0}

@media (max-width:640px){
	/* En el móvil el número se pone encima, que si no se come el ancho de
	   lectura del titular. */
	.ideario-punto{flex-direction:column;gap:.2rem}
	.ideario-punto__n{min-width:0;text-align:left}
}

/* Los dos botones de «El proyecto», en fila y que bajen bien en el móvil. */
.hero-acc-proyecto{display:flex;flex-wrap:wrap;gap:12px;margin:0}


/* =====================================================================
   AGRUPACIONES · los proyectos locales que forman 100x100 Unidos

   Es lo que esta web tiene y la de Sanlúcar no: allí el sujeto es una
   ciudad, y aquí son los municipios que se han ido sumando. En la web
   anterior esto era la tira de logotipos de «Con la fuerza de», sin
   nombres y sin poder decir en qué punto está cada sitio. Aquí cada
   agrupación es una ficha con su logotipo, su municipio, cómo se llama
   el partido local y si ya está constituida o en formación.

   La rejilla se llena sola (`auto-fill`): da igual que haya cinco
   agrupaciones o sesenta, que es a donde va esto.
   ===================================================================== */
.agrupas{list-style:none;margin:0;padding:0;display:grid;gap:18px;
  grid-template-columns:repeat(auto-fill,minmax(178px,1fr))}
.agrupa{background:#fff;border:1px solid var(--line);border-radius:var(--radius-lg);
  padding:20px 16px 22px;display:flex;flex-direction:column;align-items:center;
  gap:9px;text-align:center;
  transition:transform .3s ease,box-shadow .3s ease,border-color .3s ease;
  transition-delay:var(--d,0ms)}
.agrupa:hover{transform:translateY(-6px);box-shadow:var(--shadow-sm);border-color:var(--orange)}
.agrupa__logo{width:96px;height:96px;object-fit:contain;border-radius:14px;background:#fff}
/* Sin logotipo todavía: las iniciales del municipio, que es mejor que un
   hueco gris o que una foto prestada de otro sitio. */
.agrupa__inicial{width:96px;height:96px;border-radius:14px;
  display:flex;align-items:center;justify-content:center;
  background:linear-gradient(135deg,var(--paper-2),#e7ded2);
  font-family:var(--font-head);font-weight:900;font-size:30px;color:var(--orange-700)}
.agrupa__sitio{font-family:var(--font-head);font-weight:800;font-size:15.5px;
  line-height:1.2;color:var(--ink);margin:0}
.agrupa__marca{font-size:13.5px;line-height:1.35;color:var(--muted);margin:0}
.agrupa__estado{font-family:var(--font-head);font-weight:700;font-size:11px;
  letter-spacing:.09em;text-transform:uppercase;border-radius:999px;
  padding:4px 11px;margin-top:2px}
.agrupa__estado--activa{background:rgba(235,100,17,.12);color:var(--orange-700)}
.agrupa__estado--formacion{background:var(--paper-2);color:var(--muted)}
/* En la portada la rejilla va sobre fondo crema: la ficha blanca destaca
   sola y no hace falta sombra. */
.section--paper .agrupa{border-color:#e2d9cd}

/* =====================================================================
   CIFRAS · la línea de datos bajo un titular
   Tres o cuatro números con su rótulo. Se usa en «Agrupaciones» para
   decir de un vistazo dónde está el proyecto.
   ===================================================================== */
.cifras{list-style:none;margin:0 0 clamp(28px,4vw,44px);padding:0;
  display:flex;flex-wrap:wrap;justify-content:center;gap:clamp(18px,4vw,54px)}
.cifra{display:flex;flex-direction:column;align-items:center;gap:2px}
.cifra__n{font-family:var(--font-head);font-weight:900;color:var(--orange);
  font-size:clamp(28px,4.4vw,42px);line-height:1;font-variant-numeric:tabular-nums}
.cifra__e{font-size:13.5px;letter-spacing:.06em;text-transform:uppercase;
  color:var(--muted);font-weight:600}

/* =====================================================================
   HOJA DE RUTA · los pasos del proyecto, en orden
   Los números van escritos en el marcado y no en un contador de CSS,
   para que se copien junto con el texto. Es la misma decisión que se
   tomó con los puntos del ideario en Sanlúcar.
   ===================================================================== */
.ruta{list-style:none;margin:0;padding:0;display:grid;gap:18px;
  grid-template-columns:repeat(auto-fit,minmax(240px,1fr));text-align:left}
.ruta__paso{background:#fff;border:1px solid var(--line);border-radius:var(--radius-lg);
  padding:26px 24px;transition:transform .3s ease,box-shadow .3s ease;
  transition-delay:var(--d,0ms)}
.ruta__paso:hover{transform:translateY(-6px);box-shadow:var(--shadow-sm)}
.ruta__n{font-family:var(--font-head);font-weight:900;font-size:15px;
  color:var(--orange);letter-spacing:.08em;display:block;margin-bottom:8px}
.ruta__titulo{font-size:1.18rem;margin:0 0 .35em}
.ruta__texto{color:var(--muted);font-size:.97rem;margin:0}

/* =====================================================================
   BLOQUES DEL PROGRAMA · la rejilla numerada de /programa
   Once bloques con su número, su título y su lema. Mismo criterio que
   la hoja de ruta: el número es texto.
   ===================================================================== */
.bloques{list-style:none;margin:0;padding:0;display:grid;gap:20px;
  grid-template-columns:repeat(auto-fit,minmax(252px,1fr));text-align:left}
.bloque{background:#fff;border:1px solid var(--line);border-radius:var(--radius-lg);
  padding:26px 24px 28px;transition:transform .3s ease,box-shadow .3s ease,border-color .3s ease;
  transition-delay:var(--d,0ms)}
.bloque:hover{transform:translateY(-6px);box-shadow:var(--shadow-sm);border-color:var(--orange)}
.bloque__n{font-family:var(--font-head);font-weight:900;font-size:34px;line-height:1;
  color:rgba(235,100,17,.28);display:block;margin-bottom:10px;font-variant-numeric:tabular-nums}
.bloque__titulo{font-size:1.25rem;margin:0 0 .3em}
.bloque__lema{color:var(--orange-700);font-family:var(--font-head);font-weight:600;
  font-size:.95rem;margin:0 0 .9em}
.bloque__texto{color:var(--muted);font-size:.97rem;margin:0 0 1em}
.bloque__lista{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.bloque__lista li{position:relative;padding-left:20px;font-size:.95rem;line-height:1.5}
.bloque__lista li::before{content:"";position:absolute;left:0;top:.62em;
  width:8px;height:8px;border-radius:50%;background:var(--orange)}

@media (max-width:640px){
  .agrupas{grid-template-columns:repeat(auto-fill,minmax(142px,1fr));gap:14px}
  .agrupa__logo,.agrupa__inicial{width:76px;height:76px}
}

/* El nombre del municipio, cuando lleva enlace a su ficha. Hereda el color
   del título para que la tarjeta no se llene de naranja. */
.agrupa__sitio a{color:inherit}
.agrupa__sitio a:hover{color:var(--orange)}

/* La tarjeta entera como enlace, en la portada.
   Se usa `display:flex` y no `display:contents`: con `contents` el enlace
   desaparece del árbol de accesibilidad en algunos navegadores y deja de
   anunciarse como tal. Así es un enlace de verdad que ocupa toda la ficha. */
.agrupa__enlace{display:flex;flex-direction:column;align-items:center;gap:9px;
  color:inherit;text-align:center;width:100%}
.agrupa__enlace .agrupa__sitio{font-family:var(--font-head);font-weight:800;
  font-size:15.5px;line-height:1.2;color:var(--ink)}
.agrupa__enlace:hover .agrupa__sitio{color:var(--orange)}


/* =====================================================================
   FICHA DE UNA AGRUPACIÓN
   Poco contenido y bien puesto: logotipo, municipio, de dónde viene, en
   qué punto está y cómo se llega a ella. Lo que no esté relleno no se
   pinta, y por eso la ficha no tiene huecos aunque falten datos.
   ===================================================================== */
.agrupa-ficha{display:grid;grid-template-columns:auto 1fr;gap:clamp(20px,4vw,40px);
  align-items:center;padding-block:clamp(28px,5vw,48px)}
.agrupa-ficha__logo{width:148px;height:148px;object-fit:contain;border-radius:20px;
  background:#fff;border:1px solid var(--line);padding:10px}
.agrupa-ficha__inicial{width:148px;height:148px;border-radius:20px;
  display:flex;align-items:center;justify-content:center;
  background:linear-gradient(135deg,var(--orange),var(--orange-700));
  font-family:var(--font-head);font-weight:900;font-size:48px;color:#fff}
.agrupa-ficha__marca{color:var(--muted);font-size:1.05rem;margin:0 0 .6em}
.agrupa-datos{list-style:none;margin:0;padding:0;display:grid;gap:14px;
  grid-template-columns:repeat(auto-fit,minmax(210px,1fr))}
.agrupa-datos li{background:#fff;border:1px solid var(--line);border-radius:var(--radius);
  padding:16px 18px}
.agrupa-datos dt,.agrupa-datos__e{display:block;font-size:12px;letter-spacing:.09em;
  text-transform:uppercase;color:var(--muted);font-weight:700;margin-bottom:4px}
.agrupa-datos dd,.agrupa-datos__v{margin:0;font-family:var(--font-head);font-weight:600;
  font-size:1.02rem;color:var(--ink)}

@media (max-width:640px){
  .agrupa-ficha{grid-template-columns:1fr;justify-items:center;text-align:center}
  .agrupa-ficha__logo,.agrupa-ficha__inicial{width:112px;height:112px;font-size:36px}
}

/* Las redes de una agrupación. Reutiliza el botón redondo del pie —mismo
   tamaño, mismo giro al pasar por encima—, pero sobre fondo claro. */
.agrupa-redes{margin-top:26px}
.agrupa-redes a{background:var(--paper-2);color:var(--ink)}
.agrupa-redes a:hover{background:var(--orange);color:#fff}

/* =====================================================================
   ÍNDICE DEL PROGRAMA
   Once bloques son muchos para leerlos de corrido: quien viene buscando
   vivienda o sanidad tiene que poder ir directo. Va pegajoso arriba en
   pantalla grande y como una lista normal en el móvil, donde una barra
   fija se come media pantalla.
   ===================================================================== */
.prog-indice{background:var(--paper);border:1px solid var(--line);
  border-radius:var(--radius-lg);padding:22px 24px;margin-block:clamp(24px,4vw,40px)}
.prog-indice__lista{list-style:none;margin:0;padding:0;display:grid;gap:8px 22px;
  grid-template-columns:repeat(auto-fit,minmax(230px,1fr))}
.prog-indice__lista a{display:flex;gap:10px;align-items:baseline;color:var(--ink);
  font-family:var(--font-head);font-weight:600;font-size:15px;padding:4px 0}
.prog-indice__lista a:hover{color:var(--orange)}
.prog-indice__n{font-weight:900;color:var(--orange);font-variant-numeric:tabular-nums}
/* El bloque al que se acaba de saltar no puede quedar debajo de la cabecera. */
.bloque{scroll-margin-top:calc(var(--header-h) + 20px)}
.prose--cierre{margin-inline:0;padding-top:0}

/* «Propuestas destacadas»: el rótulo que abre la lista de cada bloque. Se
   parece al lema pero no es lo mismo, y por eso tiene su propia clase: el
   lema es la promesa del bloque, esto es un encabezado de lista. */
.bloque__sub{font-family:var(--font-head);font-weight:700;font-size:13px;
  letter-spacing:.09em;text-transform:uppercase;color:var(--muted);
  margin:0 0 .7em}

/* =====================================================================
   FILTRO DE NOTICIAS POR AGRUPACIÓN
   Fichas y no un desplegable: son pocas, se ven todas a la vez, funcionan
   sin JavaScript y cada una lleva su cuenta. Un desplegable escondería
   justo lo que aquí hay que enseñar —que el proyecto se mueve en muchos
   sitios— y obligaría a pulsar para descubrirlo.
   ===================================================================== */
.filtro-noticias{margin-block:clamp(20px,3vw,32px)}
.filtro-noticias__lista{list-style:none;margin:0;padding:0;
  display:flex;flex-wrap:wrap;gap:9px}
.filtro-chip{display:inline-flex;align-items:center;gap:.5em;
  font-family:var(--font-head);font-weight:600;font-size:14px;line-height:1;
  color:var(--ink);background:var(--paper);border:1px solid var(--line);
  border-radius:999px;padding:.62em 1em;
  transition:background .2s,border-color .2s,color .2s,transform .2s}
.filtro-chip:hover{border-color:var(--orange);color:var(--orange-700);transform:translateY(-2px)}
.filtro-chip--activo{background:var(--orange);border-color:var(--orange);color:#fff}
.filtro-chip--activo:hover{background:var(--orange-700);border-color:var(--orange-700);color:#fff}
.filtro-chip__n{font-size:12px;font-weight:800;font-variant-numeric:tabular-nums;
  background:rgba(20,17,24,.08);border-radius:999px;padding:.15em .55em}
.filtro-chip--activo .filtro-chip__n{background:rgba(255,255,255,.26)}

/* =====================================================================
   FIRMA DE LA NOTICIA · de qué agrupación es
   Va en la cabecera, junto a la fecha. Es lo que convierte «una noticia
   de 100x100» en «una noticia de Tarifa», que es lo que se busca.
   ===================================================================== */
.post-hero__de{display:inline-flex;align-items:center;gap:.4em;color:#fff}
.post-hero__de a{color:#fff;text-decoration:underline;text-underline-offset:3px}
.post-hero__de a:hover{color:#ffd9bf}

/* El aviso de «esto también está publicado en su portal». No es un pie de
   página: es la pieza que explica que son dos sitios y no una copia. */
.post-espejo{display:flex;gap:14px;align-items:flex-start;
  background:var(--paper);border:1px solid var(--line);border-left:4px solid var(--orange);
  border-radius:var(--radius);padding:18px 20px;margin-block:clamp(24px,4vw,36px);
  max-width:780px;margin-inline:auto}
.post-espejo svg{width:22px;height:22px;color:var(--orange);flex:none;margin-top:2px}
.post-espejo p{margin:0;font-size:.97rem;line-height:1.55}
.post-espejo strong{font-family:var(--font-head)}

/* =====================================================================
   GALERÍA DE UNA NOTICIA
   Las fotos del acto, de la segunda en adelante. Rejilla que se llena
   sola: hay notas con una foto y notas con veintiuna.
   ===================================================================== */
.post-galeria{max-width:980px;margin-inline:auto;margin-block:clamp(28px,5vw,48px)}
.post-galeria__tit{font-family:var(--font-head);font-weight:700;font-size:13px;
  letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin:0 0 14px}
.post-galeria__rejilla{list-style:none;margin:0;padding:0;display:grid;gap:10px;
  grid-template-columns:repeat(auto-fill,minmax(180px,1fr))}
.post-galeria__rejilla li{margin:0}
.post-galeria__rejilla a{display:block;aspect-ratio:4/3;overflow:hidden;
  border-radius:var(--radius);background:var(--paper-2)}
.post-galeria__rejilla img{width:100%;height:100%;object-fit:cover;
  transition:transform .5s ease}
.post-galeria__rejilla a:hover img{transform:scale(1.06)}

/* El botón «Ir a su web» de una agrupación con portal propio. Separado del
   rótulo de estado para que no parezcan la misma cosa. */
.agrupa-ficha__web{margin:16px 0 0}

/* =====================================================================
   ESTATUTOS
   Treinta y cuatro artículos en seis títulos. Puestos de corrido en una
   columna de prosa —que es como venían de WordPress— son noventa mil
   caracteres seguidos: nadie los lee, ni siquiera quien viene a buscar
   un artículo concreto.

   Dos columnas en pantalla ancha: el índice pegado arriba y el
   articulado. En el móvil, el índice va delante y plegado.
   ===================================================================== */
/* La cabecera de los estatutos repetía aquí el fondo crema de `.page-hero`.
   Desde que la franja es naranja (ver el bloque del final) ese fondo la
   habría dejado sola en crema, así que solo queda el centrado. */
.estatutos-hero{text-align:center}
.estatutos-cifras{margin-block:clamp(20px,3vw,30px)}

.estatutos{display:grid;gap:clamp(24px,4vw,56px);
  grid-template-columns:minmax(230px,280px) minmax(0,1fr);
  align-items:start;padding-block:clamp(32px,5vw,64px)}

/* --- El índice ------------------------------------------------------- */
.estatutos__indice{position:sticky;top:calc(var(--header-h) + 16px)}
.indice-caja{background:var(--paper);border:1px solid var(--line);
  border-radius:var(--radius-lg);padding:18px 20px}
.indice-caja__cab{font-family:var(--font-head);font-weight:800;font-size:13px;
  letter-spacing:.14em;text-transform:uppercase;color:var(--muted);
  cursor:pointer;list-style:none;margin-bottom:12px}
.indice-caja__cab::-webkit-details-marker{display:none}
/* En pantalla ancha el índice está siempre abierto: el triángulo sobra. */
@media (min-width:861px){ .indice-caja__cab{cursor:default;pointer-events:none} }
.indice-lista{list-style:none;margin:0;padding:0;
  max-height:min(62vh,720px);overflow-y:auto}
.indice-lista__item a{display:block;padding:7px 0;line-height:1.3;color:var(--ink)}
.indice-lista__item a:hover .indice-lista__nombre{color:var(--orange)}
.indice-lista__item--cap{padding-left:16px;border-left:2px solid var(--line)}
.indice-lista__rotulo{display:block;font-family:var(--font-head);font-weight:800;
  font-size:11.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--orange)}
.indice-lista__nombre{display:block;font-size:14px;color:var(--ink-soft);
  transition:color .2s}

/* --- El articulado --------------------------------------------------- */
.estatutos__texto{min-width:0;max-width:74ch}
.estatutos__intro{font-size:1.08rem;color:var(--muted);margin-bottom:clamp(20px,3vw,32px)}
.estatutos__intro p{margin:0 0 .8em}

.estatutos-bloque{margin-bottom:clamp(36px,5vw,60px);scroll-margin-top:calc(var(--header-h) + 20px)}
.estatutos-bloque__cab{border-bottom:3px solid var(--orange);padding-bottom:12px;
  margin-bottom:clamp(20px,3vw,30px)}
.estatutos-bloque__rotulo{font-family:var(--font-head);font-weight:800;font-size:12.5px;
  letter-spacing:.16em;text-transform:uppercase;color:var(--orange);margin:0 0 .35em}
.estatutos-bloque__nombre{font-size:clamp(1.4rem,3vw,1.95rem);margin:0;line-height:1.15}
/* Un capítulo cuelga de su título: se marca con un filete más fino. */
.estatutos-bloque--cap .estatutos-bloque__cab{border-bottom-width:1px;border-bottom-color:var(--line)}
.estatutos-bloque--cap .estatutos-bloque__nombre{font-size:clamp(1.2rem,2.3vw,1.5rem)}

.estatutos-art{padding:22px 0 4px;border-top:1px solid var(--line);
  scroll-margin-top:calc(var(--header-h) + 20px)}
.estatutos-art:first-of-type{border-top:0;padding-top:4px}
.estatutos-art__cab{display:flex;align-items:baseline;gap:14px;margin:0 0 .7em}
.estatutos-art__n{font-family:var(--font-head);font-weight:900;font-size:clamp(26px,4vw,34px);
  line-height:1;color:rgba(235,100,17,.32);font-variant-numeric:tabular-nums;flex:none;
  min-width:1.6em;text-align:right}
.estatutos-art__t{font-size:1.15rem;line-height:1.3}
.estatutos-art__texto{font-size:1.02rem;line-height:1.72}
.estatutos-art__texto p{margin:0 0 1em}
.estatutos-art__texto ol,.estatutos-art__texto ul{margin:0 0 1em;padding-left:1.4em}
.estatutos-art__texto li{margin-bottom:.5em}
.estatutos-art__texto li p{margin:0}
.estatutos-art__texto ol{list-style:decimal}
.estatutos-art__texto ul{list-style:disc}
.estatutos-art__texto strong{font-weight:700}

.estatutos-pie{background:var(--paper);border:1px solid var(--line);
  border-radius:var(--radius-lg);padding:26px 28px;margin-top:clamp(28px,4vw,44px)}
.estatutos-pie__tit{font-family:var(--font-head);font-weight:800;font-size:12.5px;
  letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin:0 0 16px}
.estatutos-pie .agrupa-datos{margin-bottom:18px}
.estatutos-pie .agrupa-datos dt{display:block;font-size:12px;letter-spacing:.09em;
  text-transform:uppercase;color:var(--muted);font-weight:700;margin-bottom:4px}
.estatutos-pie .agrupa-datos dd{margin:0;font-family:var(--font-head);font-weight:600;
  font-size:1.02rem;color:var(--ink)}

@media (max-width:860px){
  .estatutos{grid-template-columns:1fr}
  .estatutos__indice{position:static}
  .indice-lista{max-height:none}
  .estatutos-art__cab{gap:10px}
  .estatutos-art__n{min-width:1.3em}
}

/* =====================================================================
   FORMULARIO DE ALTA · afiliación y simpatizantes

   El de Sanlúcar eran cinco campos. Este es el remake de los dos
   formularios de Google de 100x100 Unidos: veinte campos, datos
   bancarios y cuatro consentimientos con su texto legal entero. Eso
   necesita agruparse, o es un muro.

   Los tipos de campo que el bloque anterior no cubría —date, select,
   number— se igualan aquí: sin esto, un `<select>` en el formulario
   salía con el aspecto por defecto del navegador, más bajo y con otro
   borde, y se notaba al lado de los demás.
   ===================================================================== */
.form-unete input[type=date],
.form-unete input[type=number],
.form-unete select{
  width:100%;box-sizing:border-box;font-family:var(--font-body);font-size:16px;
  color:var(--ink);background:#fff;border:1.5px solid #d9d3dd;border-radius:12px;
  padding:12px 15px;transition:border-color .2s,box-shadow .2s;
  -webkit-appearance:none;appearance:none;
}
.form-unete select{
  /* La flechita, dibujada aquí para que sea la misma en todos los
     navegadores. Va como data: URI y no como fichero: son 200 bytes. */
  background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%236f6b76' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 14px center;background-size:18px;
  padding-right:42px;
}
.form-unete select:focus,.form-unete input[type=date]:focus{
  outline:none;border-color:var(--orange);box-shadow:0 0 0 3px rgba(235,100,17,.18);
}
.form-unete__fila--tres{grid-template-columns:2fr 1fr 1fr}

/* --- Los grupos: «Tus datos», «Datos de contacto»… ------------------- */
.alta-grupo{border:0;margin:0 0 26px;padding:0}
.alta-grupo__tit{font-family:var(--font-head);font-weight:800;font-size:12.5px;
  letter-spacing:.14em;text-transform:uppercase;color:var(--muted);
  margin:0 0 14px;padding-bottom:9px;border-bottom:1px solid var(--line);width:100%}
.alta-grupo__pista{font-size:.93rem;color:var(--muted);margin:-4px 0 16px;line-height:1.5}
.alta-opcional{font-weight:400;color:var(--muted);font-size:.9em}
.alta-nota{font-size:.9rem;color:var(--muted);margin:0 0 18px}

/* --- Elegir entre afiliación y simpatizante -------------------------- */
.alta-modo{border:0;margin:0 0 26px;padding:0}
.alta-modo__leyenda{font-family:var(--font-head);font-weight:800;font-size:12.5px;
  letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin-bottom:12px;padding:0}
.alta-modo__opciones{display:grid;gap:12px;grid-template-columns:1fr 1fr}
.alta-modo__op{display:block;cursor:pointer;margin:0}
/* El radio se esconde pero NO se quita: sigue recibiendo el foco y el
   teclado, y de él sale el borde naranja de la caja elegida. */
.alta-modo__op input{position:absolute;opacity:0;width:1px;height:1px}
.alta-modo__caja{display:block;height:100%;background:#fff;border:1.5px solid #d9d3dd;
  border-radius:14px;padding:16px 18px;transition:border-color .2s,box-shadow .2s,background .2s}
.alta-modo__op:hover .alta-modo__caja{border-color:var(--orange)}
.alta-modo__op input:checked + .alta-modo__caja{
  border-color:var(--orange);background:rgba(235,100,17,.06);
  box-shadow:0 0 0 3px rgba(235,100,17,.14)}
.alta-modo__op input:focus-visible + .alta-modo__caja{outline:3px solid var(--orange);outline-offset:2px}
.alta-modo__tit{display:block;font-family:var(--font-head);font-weight:800;font-size:1.05rem;
  color:var(--ink);margin-bottom:4px}
.alta-modo__txt{display:block;font-size:.9rem;line-height:1.5;color:var(--muted)}

/* --- Los consentimientos --------------------------------------------- */
/* Son textos largos de verdad —los del formulario original, enteros— y
   por eso van en su propia caja, con la letra un punto más pequeña: en
   párrafo corrido se leen como condiciones de un seguro. */
.alta-consentimientos{background:var(--paper);border:1px solid var(--line);
  border-radius:var(--radius);padding:20px 22px 8px}
.alta-consentimientos .alta-grupo__tit{border-bottom-color:#e2d9cd}
.alta-consentimientos .campo--acepto{margin-bottom:16px}
.alta-consentimientos label{font-family:var(--font-body);font-weight:400;
  font-size:.92rem;line-height:1.55;color:var(--ink-soft)}
.alta-consentimientos a{text-decoration:underline;text-underline-offset:2px}

@media (max-width:640px){
  .alta-modo__opciones{grid-template-columns:1fr}
  .form-unete__fila,.form-unete__fila--tres{grid-template-columns:1fr}
}

/* ==================== BIFURCACIÓN DEL ALTA ====================
   Simpatizante o militante, en /participa. Añadido el 30/09/2026: cada caja
   dice AHORA lo que implica, en tres puntos. Antes llevaba una sola frase y
   la diferencia de fondo —que una cuesta dinero y la otra no— se leía de
   pasada. Las clases nuevas van aquí, al final, como todo lo de esta web. */
.alta-modo__lista{display:block;margin-top:12px;padding-top:12px;border-top:1px solid #ece7ef}
.alta-modo__punto{display:block;position:relative;padding-left:18px;font-size:.84rem;
  line-height:1.5;color:var(--muted);margin-top:6px}
/* El punto se DIBUJA con CSS y no se escribe: un «•» depende de la fuente,
   y estas dos se sirven desde aquí con los glifos justos. */
.alta-modo__punto::before{content:"";position:absolute;left:0;top:.52em;width:7px;height:7px;
  border-radius:50%;background:var(--orange);opacity:.5}
.alta-modo__op input:checked + .alta-modo__caja .alta-modo__punto::before{opacity:1}
.alta-modo__punto--cuota{color:var(--ink-soft)}
.alta-modo__punto--cuota strong{font-family:var(--font-head);font-weight:800;color:var(--ink)}

/* La caja del formulario cuando va en una PÁGINA y no sobre la sección oscura
   de la portada. `.join-card` lleva una sombra de 70 px pensada para apoyarse
   en un fondo oscuro; sobre el blanco de /participa era una mancha gris. */
.join-card--pagina{box-shadow:0 10px 30px rgba(20,17,24,.07);border:1px solid var(--line);
  margin-top:26px}

/* --- El formulario no aparece hasta que se elige ----------------------
   Pedido el 30/09/2026. Hasta entonces salían las dos tarjetas y, debajo,
   los veinte campos del formulario con «simpatizante» ya marcado de salida:
   la página entera era un formulario antes de que nadie hubiera dicho a qué
   venía. Ahora el primer paso es elegir, y el resto llega después.

   Lo hace el CSS con `:has()`, no JavaScript, porque esta web tiene que
   funcionar con los scripts bloqueados —la regla de siempre—. Y si el
   navegador no entiende `:has()`, no se oculta NADA: se ve el formulario
   entero, como estaba antes. Nadie se queda sin poder apuntarse. */
/* Aquí había un aviso —«Elige arriba cómo quieres sumarte»— que se quitó el
   30/09/2026: las dos tarjetas ya dicen que hay que elegir, y el cartel
   repetía la instrucción en voz alta como si hiciera falta explicarla. */
@supports selector(:has(*)){
  .form-unete:not(:has(input[name="tipo"]:checked)) .alta-resto{display:none}
}

/* =====================================================================
   EL ENCABEZADO DE LAS PÁGINAS INTERIORES (30/09/2026)

   Era una franja crema con el título en tinta: correcta y muda. Entrar en
   /agrupaciones, en /estatutos o en /participa se parecía demasiado a
   entrar en cualquier sitio, y arriba del todo —que es donde se decide si
   uno se queda— no había ni rastro del partido.

   Ahora es una franja naranja con el texto en blanco.

   ⚠️ **El naranja es el del tramo oscuro de la rampa, no el `#EB6411`, y no
   es un capricho.** Sobre el naranja de marca el blanco da 3,3 de contraste
   y la norma pide 4,5 para el texto pequeño: el antetítulo son 13 px y el
   rótulo de las cifras 13,5. Del `--orange-700` al `--orange-800` el blanco
   va de 5,4 a 7,5 y pasa de sobra. Si alguien sube el fondo al naranja
   claro, la letra blanca deja de ser legible: hay que bajarla a tinta.

   (`.ideario-hero` sí usa el naranja claro con letra blanca porque allí
   todo el texto es grande, que es donde el blanco sí llega. En esta web
   /ideario todavía no está abierto, así que esa regla no la pinta nadie.)

   Se redefine aquí al final y no se toca la regla de arriba, como todo lo
   que se añade a esta hoja. Lo que vive dentro del `<header>` estaba
   pintado para leerse sobre crema, así que cada color se corrige debajo:
   si se mete un elemento nuevo en la franja, hay que mirar si le toca línea.
   ===================================================================== */
.page-hero{
	position:relative;isolation:isolate;overflow:hidden;
	background:linear-gradient(135deg,var(--orange-700),var(--orange-800));
	color:#fff;border-bottom:0;
	padding-block:clamp(44px,6.5vw,78px);
}

/* Sombra en la esquina de abajo para que el naranja no salga plano en
   pantalla ancha. Oscurece, no aclara: así no le quita contraste a nada.
   Es decoración, va en un pseudo y por detrás del texto. */
.page-hero::after{
	content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;
	background:radial-gradient(70% 140% at 100% 118%,rgba(20,17,24,.22),transparent 66%);
}

.page-hero__title{color:#fff;font-weight:900}
.page-hero .eyebrow{color:rgba(255,255,255,.94)}
.page-hero .lead{color:rgba(255,255,255,.94)}
.page-hero .accent-bar{background:#fff}

/* Los enlaces de la entradilla —la web propia de una agrupación, en el
   listado de sus noticias— iban en naranja: sobre naranja no se veían. */
.page-hero a:not(.btn){color:#fff;text-decoration:underline;text-underline-offset:3px}
.page-hero a:not(.btn):hover{color:#fff;text-decoration-thickness:2px}

/* Las cifras de /estatutos, que llevan el número en naranja. */
.page-hero .cifra__n{color:#fff}
.page-hero .cifra__e{color:rgba(255,255,255,.88)}

/* La ficha de una agrupación. */
.page-hero .agrupa-ficha__logo{border-color:rgba(255,255,255,.5)}
.page-hero .agrupa-ficha__marca{color:rgba(255,255,255,.9)}
.page-hero .agrupa-ficha__marca strong{color:#fff}
.page-hero .agrupa__estado{background:rgba(255,255,255,.2);color:#fff}

/* Los botones de dentro de la franja eran `btn--primary`: naranja sobre
   naranja, invisibles. Van en `btn--ghost`, que es el pill de borde blanco.
   Al pasar por encima se rellena de blanco y la letra se queda en el naranja
   claro, que sobre blanco da 3,3: aquí se baja al oscuro, que da 5,4.
   `btn--light` no sirve para esto: ese naranja claro lo lleva de salida. */
.page-hero .btn--ghost:hover{color:var(--orange-700)!important}

/* =====================================================================
   /AGRUPACIONES · el hueco de la entradilla y el logotipo genérico
   (30/09/2026)
   ===================================================================== */

/* Entre las cifras («20 municipios») y el primer titular de comarca había
   230 px de aire: los 84 que `.page-hero--list + .container` deja debajo
   —pensados para el listado de noticias, que acaba en una rejilla y no
   tiene nada detrás—, los 44 del margen de las cifras y los 104 que abre
   la primera `.section`. Aquí sí hay algo detrás, así que los dos primeros
   sobran y el tercero se recorta. */
.agrupas-intro{padding-bottom:0}
.agrupas-intro .cifras{margin-bottom:0}
.agrupas-intro + .agrupas-lista{padding-top:clamp(26px,3.4vw,42px)}

/* El logotipo de quien todavía no tiene el suyo. Es el cuadro naranja que
   antes llevaba las iniciales del municipio, con el logotipo en blanco
   dentro: así las tarjetas sin logo siguen teniendo el mismo peso que las
   demás en la rejilla, que es lo que hacía que la fila se viera pareja. */
.agrupa__logo--generico{
	background:linear-gradient(135deg,var(--orange),var(--orange-700));
	padding:20px 14px;
}

/* En la ficha el cuadro blanco ya lo pone `.agrupa-ficha__logo`; lo único
   que cambia es que el logotipo necesita aire, porque es apaisado y sin
   margen tocaría los bordes. */
.agrupa-ficha__logo--generico{padding:26px 18px}

@media (max-width:640px){
	/* El cuadro baja a 76 px en la rejilla y a 112 en la ficha: con el
	   margen de arriba el logotipo se quedaba en nada. */
	.agrupa__logo--generico{padding:15px 9px}
	.agrupa-ficha__logo--generico{padding:20px 12px}
}

/* --- La provincia entera, compacta ------------------------------------
   Cada comarca era una `.section` con 104 px de aire arriba y abajo, un
   titular de 2,7 rem y fondo crema alternando. Seis comarcas así son metro
   y medio de página para veinte tarjetas, y había que bajar un rato para
   descubrir que el proyecto también está en la Sierra.

   Ahora el titular de comarca es un rótulo con su recuento y una línea que
   llega hasta el margen, y la rejilla va densa. Esta página tiene que
   contar «mira dónde estamos», y eso se cuenta de un vistazo o no se
   cuenta. */
.agrupas-lista{padding-bottom:clamp(44px,6vw,76px)}
.agrupas-grupo{margin-top:clamp(24px,3vw,36px)}
.agrupas-grupo:first-child{margin-top:0}

.agrupas-grupo__t{
	display:flex;align-items:center;gap:12px;margin:0 0 14px;
	font-family:var(--font-head);font-weight:800;font-size:.95rem;
	letter-spacing:.1em;text-transform:uppercase;color:var(--orange-700);
	line-height:1.2;
}
/* La línea que remata el rótulo. Se dibuja con un hijo flexible y no con
   un borde, para que arranque donde acaba el texto sea cual sea su largo. */
.agrupas-grupo__t::after{content:"";flex:1;height:1px;background:var(--line)}

/* El recuento. Va detrás del nombre y antes de la línea: dice cuántos
   municipios hay en esa comarca sin tener que contarlos. */
.agrupas-grupo__n{
	flex:none;min-width:22px;padding:2px 7px;border-radius:999px;
	background:var(--paper-2);color:var(--muted);
	font-size:11.5px;letter-spacing:.04em;text-align:center;
}

/* La rejilla densa. La de la portada se queda como está: allí son cuatro o
   cinco logotipos de escaparate y tienen que respirar. */
.agrupas--densa{gap:12px;grid-template-columns:repeat(auto-fill,minmax(148px,1fr))}
.agrupas--densa .agrupa{padding:15px 11px 16px;gap:6px;border-radius:var(--radius)}
.agrupas--densa .agrupa:hover{transform:translateY(-4px)}
.agrupas--densa .agrupa__logo{width:68px;height:68px;border-radius:11px}
.agrupas--densa .agrupa__logo--generico{padding:13px 8px}
.agrupas--densa .agrupa__sitio{font-size:14.5px}
.agrupas--densa .agrupa__marca{font-size:12.5px;line-height:1.3}
.agrupas--densa .agrupa__estado{font-size:10px;padding:3px 9px}

@media (max-width:640px){
	.agrupas--densa{gap:10px;grid-template-columns:repeat(auto-fill,minmax(132px,1fr))}
	.agrupas--densa .agrupa__logo{width:60px;height:60px}
	.agrupas--densa .agrupa__logo--generico{padding:11px 7px}
}

/* =====================================================================
   /PARTICIPA · menos aire y algún icono (30/09/2026)
   ===================================================================== */

/* La prosa de una página que lleva el formulario debajo es su entradilla,
   no un texto que acabe ahí: entre «Afíliate o simpatiza» y la primera
   pregunta había 140 px de nada. */
.prose--con-form{padding-bottom:4px}
.prose--con-form + .join-card--pagina{margin-top:14px}

/* El icono de cada apartado del formulario. El rótulo era gris y a secas, y
   la página se leía como un impreso de ventanilla. */
.alta-grupo__tit{display:flex;align-items:center;gap:8px}
.alta-grupo__tit svg.ico{width:1.35em;height:1.35em;color:var(--orange);opacity:.85}

/* El de cada opción de la bifurcación, en su pastilla. Al marcarla, la
   pastilla se vuelve naranja: es la señal de qué has elegido, además del
   borde, y se ve sin depender del color solo —el título cambia de peso. */
.alta-modo__ico{
	display:inline-flex;align-items:center;justify-content:center;
	width:38px;height:38px;border-radius:12px;margin-bottom:10px;
	background:var(--paper-2);color:var(--orange-700);
	transition:background .2s ease,color .2s ease;
}
.alta-modo__ico svg.ico{width:20px;height:20px}
.alta-modo__op input:checked + .alta-modo__caja .alta-modo__ico{
	background:var(--orange);color:#fff;
}

/* =====================================================================
   LOS MICROSITIOS DE LAS AGRUPACIONES (30/09/2026)
   algeciras.100x100unidos.es y compañía.

   Reutilizan la hoja entera: son la misma web con un municipio delante, y
   eso se ve en que aquí abajo hay cuatro reglas y no una hoja nueva. Lo que
   cambia es el orden de los bloques —las noticias van arriba— y eso lo
   decide la plantilla, no el CSS.
   ===================================================================== */

/* El hero de un municipio es más bajo que el de la provincia: allí hay un
   lema de campaña y una cuenta atrás, aquí hay un nombre de pueblo y dos
   botones. Con la altura de la portada provincial quedaba medio vacío. */
.hero--local .hero__inner{padding-block:calc(var(--header-h) + 54px) 64px}

/* La tarjeta de la marca local: su logotipo y sus cuatro datos, en la
   columna de al lado del texto. */
.local-marca{display:grid;gap:18px;justify-items:center}
/* El logotipo es APAISADO —el de la marca, con el nombre del municipio—, así
   que la tarjeta también. Antes llevaba `aspect-ratio:1` y el logotipo se
   quedaba en una raya en medio de un cuadrado casi vacío. */
.local-marca__logo{
	width:100%;max-width:420px;height:auto;object-fit:contain;
	background:#fff;border:1px solid var(--line);border-radius:var(--radius-lg);
	padding:clamp(20px,3.4vw,34px);box-shadow:var(--shadow-sm);
}
/* Hereda `agrupa-datos`, que ya es una rejilla de fichas; aquí va a una
   sola columna porque el hueco es estrecho. */
.local-marca__datos{grid-template-columns:1fr;width:100%;max-width:420px}

@media (max-width:640px){
	.local-marca__logo{max-width:320px}
	.local-marca__datos{max-width:none}
}

/* El correo de una agrupación se salía de su ficha.
   `comunicacion@100x100unidosporalgeciras.es` son 41 caracteres sin un solo
   espacio donde partir, y la tarjeta mide 210 px: el navegador no rompe una
   palabra larga por su cuenta, así que la sacaba por el lado. `anywhere` le
   da permiso para partirla donde haga falta, y solo a estos valores: los
   rótulos y los nombres de arriba no lo necesitan y romperlos sería peor. */
.agrupa-datos dd,.agrupa-datos__v{overflow-wrap:anywhere}

/* --- El equipo de trabajo de una agrupación --------------------------
   Sin fotografías, a propósito: en su web anterior cada persona tenía un
   vídeo que no se ha traído, y una rejilla de veinte huecos grises se ve
   peor que una de veinte nombres bien puestos. La inicial en naranja hace
   de ancla visual y distingue una ficha de la siguiente de un vistazo. */
.equipo-local{
	list-style:none;margin:0;padding:0;display:grid;gap:12px;
	grid-template-columns:repeat(auto-fill,minmax(210px,1fr));
}
.equipo-local__ficha{
	display:grid;grid-template-columns:auto 1fr;gap:4px 14px;align-items:center;
	background:#fff;border:1px solid var(--line);border-radius:var(--radius);
	padding:14px 16px;transition-delay:var(--d,0ms);
}
/* Los ocho que salían en la portada de su web: mismo sitio, un punto más de
   peso. No es una jerarquía de mando, es el orden con el que se presentan. */
.equipo-local__ficha--destaca{border-color:rgba(235,100,17,.34);background:var(--paper)}

.equipo-local__ini{
	grid-row:span 2;width:42px;height:42px;border-radius:12px;
	display:flex;align-items:center;justify-content:center;
	background:linear-gradient(135deg,var(--orange),var(--orange-700));color:#fff;
	font-family:var(--font-head);font-weight:900;font-size:15px;letter-spacing:.02em;
}
.equipo-local__nom{
	font-family:var(--font-head);font-weight:800;font-size:15px;line-height:1.25;
	color:var(--ink);align-self:end;
}
.equipo-local__grupo{font-size:12.5px;line-height:1.35;color:var(--muted);align-self:start}

/* Sin grupo, el nombre se centra en vez de quedarse colgando arriba. */
.equipo-local__ficha:not(:has(.equipo-local__grupo)) .equipo-local__nom{align-self:center}

@media (max-width:640px){
	.equipo-local{grid-template-columns:1fr}
}

/* El logotipo VERTICAL en la tarjeta de la rejilla: símbolo arriba y el
   nombre debajo. La apaisada, metida aquí, se quedaba en una raya entre dos
   franjas vacías. El alto manda y el ancho se adapta, que es lo que deja la
   fila pareja aunque un nombre vaya en dos renglones. */
.agrupa__marca-img{
	width:auto;max-width:100%;height:auto;max-height:104px;object-fit:contain;
	object-position:center;margin-bottom:4px;
}
@media (max-width:640px){
	.agrupa__marca-img{max-height:86px}
}

/* En la ficha va la vertical, en su tarjeta blanca sobre la franja naranja.
   El hueco es una columna alta: la apaisada dejaba media tarjeta vacía. */
.agrupa-ficha__logo--marca{
	width:auto;height:auto;max-height:230px;max-width:min(230px,44vw);
	aspect-ratio:auto;padding:20px 22px;border-radius:var(--radius-lg);
}
@media (max-width:640px){
	.agrupa-ficha__logo--marca{max-height:190px;max-width:min(190px,62vw)}
}

/* La marca de un micrositio en la cabecera. El logotipo de una agrupación es
   más apaisado que el provincial —4,5:1 con los nombres largos, y 2,5:1
   cuando el nombre baja a dos renglones—, así que con la altura fija de 42 px
   unos salían enormes de ancho y otros diminutos. Se limita el ancho y se
   deja que el alto se acomode dentro de la franja. */
.site-header .brand__logo{max-width:230px;max-height:46px;object-fit:contain;object-position:left}
.site-footer .footer__logo{max-width:260px;height:auto;object-fit:contain;object-position:left}

/* ⚠️ `.split__media` lleva detrás una losa naranja en diagonal (`::before`),
   pensada para asomar por debajo de la fotografía de la portada provincial.
   En la web de una agrupación ese hueco lo ocupa una tarjeta blanca más
   pequeña, así que la losa se veía como una pastilla naranja suelta al lado
   del titular. Este modificador la quita. */
.split__media--liso::before{display:none}

/* El retrato de cada persona del equipo. Van todos cuadrados y recortados al
   centro desde el importador, así que aquí solo hace falta el tamaño. */
.equipo-local__foto{
	grid-row:span 2;width:52px;height:52px;border-radius:12px;object-fit:cover;
	background:var(--paper-2);
}
@media (max-width:640px){
	.equipo-local__foto{width:46px;height:46px}
}

/* --- El móvil de una web local: dos cosas que se salían por la derecha ---

   1 · El titular. `.hero__linea` lleva `white-space:nowrap` y eso está bien
   en la portada provincial, donde los dos renglones están escritos a mano y
   el tamaño máximo se calculó para que el más largo quepa. Pero el lema de
   una agrupación lo escribe ella en el panel —«Tu voz, tu ciudad, tu
   futuro»— y ahí no hay cálculo que valga: a 360 px se salía de la pantalla
   y arrastraba la página entera hacia la derecha. Aquí el renglón se parte.

   2 · El botón del correo. `.btn` también es `nowrap`, y
   «comunicacion@100x100unidosporalgeciras.es» son 41 caracteres sin un solo
   espacio: medía más que el ancho del móvil él solo. */
.hero--local .hero__linea{white-space:normal}
.section--contact .btn{white-space:normal;max-width:100%;overflow-wrap:anywhere}

/* Red de seguridad: con el titular arreglado no debería hacer falta, pero un
   texto largo metido desde el panel puede volver a empujar la página. `body`
   ya tenía `overflow-x:hidden` y no basta por sí solo: si `html` no lo lleva
   también, el móvil sigue dejando arrastrar a la derecha. */
html{overflow-x:clip}

/* --- DE QUÉ PUEBLO ES CADA NOTICIA -----------------------------------
   Encima de la fecha, en la tarjeta. En una web provincial no es un
   adorno: la misma rejilla mezcla lo de Algeciras con lo de Sanlúcar, y
   sin decirlo todas las noticias parecen de un sitio indeterminado.

   Va en NARANJA y con más peso que la fecha, que baja a gris: de las dos
   cosas, la que sitúa la noticia es el pueblo. */
.news-card__lugar{
  display:inline-flex;align-items:center;gap:.34rem;
  font-family:var(--font-head);font-weight:800;font-size:.78rem;
  letter-spacing:.07em;text-transform:uppercase;
  color:var(--orange);text-decoration:none;margin-bottom:.3rem;
  transition:color .2s;
}
.news-card__lugar:hover{color:var(--orange-700);text-decoration:underline;
  text-underline-offset:3px}
.news-card__pin{width:.95rem;height:.95rem;flex:none}
/* La fecha pierde el naranja, que ahora lleva el pueblo: dos rótulos del
   mismo color, uno encima del otro, se leían como una sola cosa partida. */
.news-card__date{color:var(--muted)}
