/* ==========================================================================
   Portal AGRAR – Granja Raíces
   Paleta institucional: verde #375325, naranja #D27019, gris #5F5F5F.
   Tipografía institucional: Georgia (títulos); sistema sans para lectura.
   ========================================================================== */

:root {
  --verde: #375325;
  --verde-900: #1c2b13;
  --verde-800: #263b19;
  --verde-600: #4a6b33;
  --verde-200: #cfdcc0;
  --verde-100: #e7eedd;
  --naranja: #d27019;
  --naranja-700: #a9560f;
  --naranja-100: #f8e4cf;
  --tierra: #7a4e26;
  --tierra-100: #efe3d2;
  --crema: #f8f4ec;
  --arena: #efe7d8;
  --papel: #fffdf8;
  --gris: #5f5f5f;
  --tinta: #1f261b;
  --linea: #ddd3c0;
  --azul-agua: #2f6f7a;

  --serif: Georgia, "Iowan Old Style", "Palatino Linotype", "Book Antiqua", Cambria, serif;
  --sans: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;

  --radio: 14px;
  --radio-chico: 8px;
  --sombra: 0 1px 2px rgba(28, 43, 19, .06), 0 8px 24px rgba(28, 43, 19, .08);
  --sombra-alta: 0 2px 6px rgba(28, 43, 19, .08), 0 18px 48px rgba(28, 43, 19, .16);
  --ancho: 1200px;
  --alto-cabecera: 76px;
  --t: cubic-bezier(.2, .7, .2, 1);
}

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; scroll-padding-top: calc(var(--alto-cabecera) + 12px); }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } *, *::before, *::after { animation: none !important; transition: none !important; } }
body { margin: 0; font-family: var(--sans); font-size: 1.0625rem; line-height: 1.65; color: var(--tinta); background: var(--crema); text-rendering: optimizeLegibility; }
img { max-width: 100%; height: auto; display: block; }
[hidden] { display: none !important; }
a { color: var(--verde); text-underline-offset: .18em; text-decoration-thickness: 1px; }
a:hover { color: var(--naranja-700); }
:focus-visible { outline: 3px solid var(--naranja); outline-offset: 3px; border-radius: 4px; }
h1, h2, h3, h4 { font-family: var(--serif); font-weight: 700; line-height: 1.15; color: var(--verde-900); margin: 0 0 .5em; text-wrap: balance; letter-spacing: -.01em; }
h1 { font-size: clamp(2.2rem, 5vw, 3.6rem); }
h2 { font-size: clamp(1.7rem, 3.4vw, 2.5rem); }
h3 { font-size: clamp(1.2rem, 2vw, 1.45rem); }
p { margin: 0 0 1em; text-wrap: pretty; }
ul, ol { padding-left: 1.2em; }
li + li { margin-top: .3em; }
hr { border: 0; border-top: 1px solid var(--linea); margin: 2.5rem 0; }
table { border-collapse: collapse; width: 100%; font-size: .95rem; }
th, td { text-align: left; padding: .65rem .75rem; border-bottom: 1px solid var(--linea); vertical-align: top; }
th { font-family: var(--sans); font-weight: 650; color: var(--verde-800); background: var(--verde-100); }

.contenedor { width: min(100% - 2.5rem, var(--ancho)); margin-inline: auto; }
.contenedor--estrecho { width: min(100% - 2.5rem, 780px); margin-inline: auto; }
.saltar { position: absolute; left: -999px; top: 8px; background: var(--verde); color: #fff; padding: .6rem 1rem; z-index: 100; border-radius: var(--radio-chico); }
.saltar:focus { left: 8px; color: #fff; }
.oculto { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
main:focus { outline: none; }

/* ---------- Botones ---------- */
.boton { display: inline-flex; align-items: center; gap: .55em; padding: .8rem 1.35rem; border-radius: 999px; border: 2px solid var(--verde); background: var(--verde); color: #fff; font-weight: 650; font-size: 1rem; text-decoration: none; line-height: 1.2; cursor: pointer; transition: background .2s var(--t), border-color .2s var(--t), transform .2s var(--t), color .2s; font-family: var(--sans); }
.boton:hover { background: var(--verde-800); border-color: var(--verde-800); color: #fff; transform: translateY(-1px); }
.boton--acento { background: var(--naranja); border-color: var(--naranja); }
.boton--acento:hover { background: var(--naranja-700); border-color: var(--naranja-700); }
.boton--borde { background: transparent; color: var(--verde); }
.boton--borde:hover { background: var(--verde); color: #fff; }
.boton--claro { background: #fff; border-color: #fff; color: var(--verde-900); }
.boton--claro:hover { background: var(--naranja-100); border-color: var(--naranja-100); color: var(--verde-900); }
.boton--fantasma-claro { background: transparent; border-color: rgba(255,255,255,.75); color: #fff; }
.boton--fantasma-claro:hover { background: rgba(255,255,255,.14); color: #fff; border-color: #fff; }
.boton--chico { padding: .5rem 1rem; font-size: .92rem; }
.boton svg { flex: none; }
.enlace-flecha { font-weight: 650; text-decoration: none; display: inline-flex; align-items: center; gap: .4em; }
.enlace-flecha::after { content: "→"; transition: transform .2s var(--t); }
.enlace-flecha:hover::after { transform: translateX(4px); }

/* ---------- Cabecera ---------- */
.cabecera { position: sticky; top: 0; z-index: 50; background: rgba(255, 253, 248, .94); backdrop-filter: saturate(1.4) blur(10px); -webkit-backdrop-filter: saturate(1.4) blur(10px); border-bottom: 1px solid transparent; transition: border-color .25s, box-shadow .25s; }
.cabecera.con-sombra { border-bottom-color: var(--linea); box-shadow: 0 6px 20px rgba(28,43,19,.06); }
.cabecera__barra { display: flex; align-items: center; gap: 1.25rem; min-height: var(--alto-cabecera); }
.marca { display: flex; align-items: center; gap: .7rem; text-decoration: none; color: var(--verde-900); margin-right: auto; flex: none; }
.marca__logo { width: 52px; height: auto; }
.marca__texto { display: flex; flex-direction: column; line-height: 1.1; }
.marca__nombre { font-family: var(--serif); font-weight: 700; font-size: 1.28rem; color: var(--verde); }
.marca__sub { font-size: .72rem; letter-spacing: .08em; text-transform: uppercase; color: var(--gris); margin-top: 3px; }
.nav__lista { display: flex; gap: .15rem; list-style: none; margin: 0; padding: 0; align-items: center; }
.nav__item { position: relative; margin: 0; }
.nav__item--movil { display: none; }
.nav__enlace { display: inline-flex; align-items: center; gap: .35rem; padding: .55rem .8rem; border-radius: 999px; color: var(--tinta); text-decoration: none; font-weight: 560; font-size: .98rem; background: none; border: 0; font-family: var(--sans); cursor: pointer; }
.nav__enlace:hover, .nav__enlace[aria-expanded="true"] { background: var(--verde-100); color: var(--verde-900); }
.nav__enlace.es-activo { color: var(--verde); box-shadow: inset 0 -2px 0 var(--naranja); border-radius: 0; }
.nav__flecha { transition: transform .2s var(--t); }
.nav__boton[aria-expanded="true"] .nav__flecha { transform: rotate(180deg); }
.nav__sub { position: absolute; top: calc(100% + 10px); left: 50%; transform: translate(-50%, 6px); min-width: 290px; background: var(--papel); border: 1px solid var(--linea); border-radius: var(--radio); box-shadow: var(--sombra-alta); list-style: none; padding: .5rem; margin: 0; opacity: 0; visibility: hidden; transition: opacity .18s, transform .18s var(--t), visibility .18s; }
.nav__boton[aria-expanded="true"] + .nav__sub { opacity: 1; visibility: visible; transform: translate(-50%, 0); }
.nav__sub li { margin: 0; }
.nav__sub a { display: block; padding: .65rem .85rem; border-radius: 10px; text-decoration: none; color: var(--tinta); }
.nav__sub a strong { display: block; font-family: var(--serif); color: var(--verde-900); font-size: 1.02rem; }
.nav__sub a span { display: block; font-size: .85rem; color: var(--gris); }
.nav__sub a:hover, .nav__sub a[aria-current="page"] { background: var(--verde-100); }
.cabecera__acciones { display: flex; align-items: center; gap: .5rem; }
.icono-boton { display: grid; place-items: center; width: 42px; height: 42px; border-radius: 50%; color: var(--verde-900); }
.icono-boton:hover { background: var(--verde-100); color: var(--verde); }
.hamburguesa { display: none; width: 44px; height: 44px; border: 0; background: transparent; border-radius: 10px; cursor: pointer; padding: 10px; flex-direction: column; justify-content: center; gap: 5px; }
.hamburguesa span { display: block; height: 2px; background: var(--verde-900); border-radius: 2px; transition: transform .25s var(--t), opacity .2s; }
.hamburguesa[aria-expanded="true"] span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.hamburguesa[aria-expanded="true"] span:nth-child(2) { opacity: 0; }
.hamburguesa[aria-expanded="true"] span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

@media (max-width: 1080px) {
  :root { --alto-cabecera: 66px; }
  .cabecera { backdrop-filter: none; -webkit-backdrop-filter: none; background: var(--papel); }
  .marca__logo { width: 44px; }
  .marca__sub { display: none; }
  .hamburguesa { display: flex; }
  .cabecera__acciones .icono-boton { display: none; }
  .nav { position: fixed; inset: var(--alto-cabecera) 0 0 0; background: var(--papel); transform: translateX(100%); transition: transform .3s var(--t); overflow-y: auto; border-top: 1px solid var(--linea); visibility: hidden; }
  .nav.abierto { transform: none; visibility: visible; }
  .nav__lista { flex-direction: column; align-items: stretch; padding: 1rem 1.25rem 3rem; gap: 0; }
  .nav__item { border-bottom: 1px solid var(--linea); }
  .nav__item--movil { display: block; }
  .nav__enlace { width: 100%; justify-content: space-between; padding: 1rem .25rem; font-size: 1.12rem; border-radius: 0; }
  .nav__enlace.es-activo { box-shadow: none; }
  .nav__enlace:hover, .nav__enlace[aria-expanded="true"] { background: transparent; }
  .nav__sub { position: static; transform: none; opacity: 1; visibility: visible; box-shadow: none; border: 0; background: transparent; padding: 0 0 .75rem; display: none; min-width: 0; }
  .nav__boton[aria-expanded="true"] + .nav__sub { display: block; transform: none; }
  body.menu-abierto { overflow: hidden; }
}
@media (max-width: 420px) { .cabecera__acciones .boton { display: none; } }

/* ---------- Secciones y utilidades ---------- */
.seccion { padding: clamp(3.5rem, 8vw, 6.5rem) 0; position: relative; }
.seccion--arena { background: var(--arena); }
.seccion--papel { background: var(--papel); }
.seccion--verde { background: var(--verde-900); color: #e9efe2; }
.seccion--verde h2, .seccion--verde h3 { color: #fff; }
.seccion--verde a { color: #f6c79a; }
.seccion--compacta { padding: clamp(2.5rem, 5vw, 4rem) 0; }
.antetitulo { display: inline-flex; align-items: center; gap: .6rem; font-size: .8rem; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: var(--naranja-700); margin-bottom: .9rem; }
.antetitulo::before { content: ""; width: 26px; height: 2px; background: currentColor; }
.seccion--verde .antetitulo { color: #f2a865; }
.entrada { font-size: clamp(1.1rem, 1.6vw, 1.3rem); line-height: 1.6; color: #3b4436; max-width: 62ch; }
.seccion--verde .entrada { color: #d5dfca; }
.cabeza-seccion { display: flex; justify-content: space-between; align-items: end; gap: 2rem; margin-bottom: 2.5rem; flex-wrap: wrap; }
.cabeza-seccion > div { max-width: 720px; }
.cabeza-seccion h2 { margin-bottom: .35em; }
.grid { display: grid; gap: clamp(1.25rem, 2.5vw, 2rem); }
.grid--2 { grid-template-columns: repeat(auto-fit, minmax(min(100%, 420px), 1fr)); }
.grid--3 { grid-template-columns: repeat(auto-fill, minmax(min(100%, 300px), 1fr)); }
.grid--4 { grid-template-columns: repeat(auto-fill, minmax(min(100%, 240px), 1fr)); }
.dividido { display: grid; grid-template-columns: 1.05fr 1fr; gap: clamp(2rem, 5vw, 5rem); align-items: center; }
.dividido--inverso > :first-child { order: 2; }
@media (max-width: 860px) { .dividido { grid-template-columns: 1fr; } .dividido--inverso > :first-child { order: 0; } }
.texto-centro { text-align: center; }
.mt-0 { margin-top: 0; } .mb-0 { margin-bottom: 0; }

/* ---------- Héroe de portada ---------- */
.heroe { position: relative; min-height: min(88vh, 820px); display: flex; align-items: flex-end; color: #fff; overflow: hidden; background: var(--verde-900); }
.heroe__foto { position: absolute; inset: 0; }
.heroe__foto img { width: 100%; height: 100%; object-fit: cover; transform: scale(1.04); animation: acercar 18s ease-out forwards; }
@keyframes acercar { to { transform: scale(1); } }
.heroe::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(20,30,14,.25) 0%, rgba(20,30,14,.15) 35%, rgba(20,30,14,.82) 82%, rgba(20,30,14,.92) 100%); }
.heroe__contenido { position: relative; z-index: 2; padding: 7rem 0 clamp(3rem, 7vw, 5.5rem); }
.heroe__lugar { display: inline-flex; gap: .5rem; align-items: center; font-size: .85rem; letter-spacing: .12em; text-transform: uppercase; font-weight: 650; color: #ffd7b0; margin-bottom: 1.1rem; }
.heroe h1 { color: #fff; font-size: clamp(2.5rem, 6.4vw, 5rem); max-width: 15ch; margin-bottom: .35em; }
.heroe h1 em { font-style: italic; color: #ffc48c; }
.heroe__texto { font-size: clamp(1.1rem, 1.8vw, 1.32rem); max-width: 56ch; color: #eef2e8; margin-bottom: 2rem; }
.heroe__acciones { display: flex; flex-wrap: wrap; gap: .8rem; }
.heroe__pie { position: absolute; right: 1.25rem; bottom: 1rem; z-index: 2; font-size: .78rem; color: rgba(255,255,255,.7); }

/* Héroe de página interior */
.cabeza-pagina { position: relative; background: var(--verde-900); color: #fff; overflow: hidden; }
.cabeza-pagina__foto { position: absolute; inset: 0; }
.cabeza-pagina__foto img { width: 100%; height: 100%; object-fit: cover; opacity: .55; }
.cabeza-pagina::after { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, rgba(20,30,14,.9) 0%, rgba(20,30,14,.55) 60%, rgba(20,30,14,.25) 100%); }
.cabeza-pagina__contenido { position: relative; z-index: 2; padding: clamp(3.5rem, 9vw, 7rem) 0 clamp(2.5rem, 6vw, 4.5rem); }
.cabeza-pagina h1 { color: #fff; max-width: 20ch; }
.cabeza-pagina .entrada { color: #e6ecdf; }
.cabeza-pagina .antetitulo { color: #ffc48c; }
.cabeza-pagina--simple { background: var(--verde-100); color: var(--tinta); }
.cabeza-pagina--simple::after { display: none; }
.cabeza-pagina--simple h1 { color: var(--verde-900); }
.cabeza-pagina--simple .entrada { color: #3b4436; }
.cabeza-pagina--simple .antetitulo { color: var(--naranja-700); }
.migas { font-size: .88rem; margin-bottom: 1.2rem; color: #d7e0cc; }
.migas ol { list-style: none; padding: 0; margin: 0; display: flex; flex-wrap: wrap; gap: .35rem; }
.migas li { margin: 0; }
.migas li + li::before { content: "/"; margin-right: .35rem; opacity: .6; }
.migas a { color: inherit; }
.cabeza-pagina--simple .migas { color: var(--gris); }

/* ---------- Cifras ---------- */
.cifras { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 1px; background: var(--linea); border: 1px solid var(--linea); border-radius: var(--radio); overflow: hidden; }
.cifra { background: var(--papel); padding: 1.6rem 1.4rem; }
.cifra__valor { font-family: var(--serif); font-size: clamp(2rem, 3.6vw, 2.8rem); color: var(--verde); line-height: 1; display: block; margin-bottom: .45rem; }
.cifra__valor small { font-size: .45em; color: var(--naranja-700); margin-left: .15em; }
.cifra__texto { font-size: .93rem; color: #4a5245; display: block; }
.cifra__nota { display: block; font-size: .78rem; color: var(--gris); margin-top: .5rem; font-style: italic; }
.cifras--superpuestas { margin-top: -3.5rem; position: relative; z-index: 3; box-shadow: var(--sombra-alta); }

/* ---------- Tarjetas ---------- */
.tarjeta { background: var(--papel); border: 1px solid var(--linea); border-radius: var(--radio); overflow: hidden; display: flex; flex-direction: column; transition: transform .25s var(--t), box-shadow .25s var(--t), border-color .25s; position: relative; }
.tarjeta:hover { transform: translateY(-3px); box-shadow: var(--sombra-alta); border-color: var(--verde-200); }
.tarjeta__foto { aspect-ratio: 4/3; overflow: hidden; background: var(--verde-100); }
.tarjeta__foto img { width: 100%; height: 100%; object-fit: cover; transition: transform .6s var(--t); }
.tarjeta:hover .tarjeta__foto img { transform: scale(1.04); }
.tarjeta__cuerpo { padding: 1.35rem 1.4rem 1.5rem; display: flex; flex-direction: column; gap: .55rem; flex: 1; }
.tarjeta__cuerpo :is(h2, h3) { margin: 0; font-size: 1.28rem; }
.tarjeta__cuerpo :is(h2, h3) a { color: inherit; text-decoration: none; }
.tarjeta__cuerpo :is(h2, h3) a:hover { color: var(--verde); }
.tarjeta__cuerpo :is(h2, h3) a::after { content: ""; position: absolute; inset: 0; }
.tarjeta__cuerpo p { margin: 0; color: #444c40; font-size: .98rem; }
.tarjeta__meta { font-size: .84rem; color: var(--gris); margin-top: auto; padding-top: .5rem; display: flex; gap: .5rem; flex-wrap: wrap; align-items: center; }
.tarjeta--horizontal { flex-direction: row; }
.tarjeta--horizontal .tarjeta__foto { flex: 0 0 42%; aspect-ratio: auto; }
@media (max-width: 640px) { .tarjeta--horizontal { flex-direction: column; } .tarjeta--horizontal .tarjeta__foto { aspect-ratio: 4/3; } }
.tarjeta-icono { background: var(--papel); border: 1px solid var(--linea); border-radius: var(--radio); padding: 1.6rem; display: flex; flex-direction: column; gap: .6rem; position: relative; transition: border-color .2s, box-shadow .2s; }
.tarjeta-icono:hover { border-color: var(--verde-200); box-shadow: var(--sombra); }
.tarjeta-icono h3 { margin: 0; font-size: 1.2rem; }
.tarjeta-icono h3 a { color: inherit; text-decoration: none; }
.tarjeta-icono h3 a::after { content: ""; position: absolute; inset: 0; }
.tarjeta-icono p { margin: 0; font-size: .97rem; color: #444c40; }
.icono { width: 52px; height: 52px; border-radius: 14px; display: grid; place-items: center; background: var(--verde-100); color: var(--verde); flex: none; }
.icono--naranja { background: var(--naranja-100); color: var(--naranja-700); }
.icono--tierra { background: var(--tierra-100); color: var(--tierra); }
.icono--agua { background: #dcecef; color: var(--azul-agua); }
.icono svg { width: 28px; height: 28px; }

/* ---------- Estados de proyectos ---------- */
.estado { display: inline-flex; align-items: center; gap: .4em; font-size: .76rem; font-weight: 700; letter-spacing: .03em; padding: .28rem .65rem; border-radius: 999px; line-height: 1.2; background: #ececec; color: #3a3a3a; white-space: nowrap; }
.estado::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: currentColor; }
.estado--ejecutado { background: #dfe9d4; color: #2c4a1b; }
.estado--en-ejecucion { background: #d6ead0; color: #1f6b2c; }
.estado--aprobado { background: #dcecef; color: #1e5a64; }
.estado--presentado { background: var(--naranja-100); color: #8c460a; }
.estado--formulado { background: var(--tierra-100); color: var(--tierra); }
.estado--en-estructuracion { background: #ebe8f2; color: #4f4570; }
.etiqueta { display: inline-block; font-size: .78rem; padding: .22rem .6rem; border: 1px solid var(--linea); border-radius: 999px; color: #4a5245; background: var(--papel); }
.tarjeta__foto--estado { position: relative; }
.tarjeta__foto--estado .estado { position: absolute; top: .8rem; left: .8rem; box-shadow: 0 2px 8px rgba(0,0,0,.12); }

/* ---------- Filtros ---------- */
.filtros { display: flex; flex-wrap: wrap; gap: .5rem; margin-bottom: 1.6rem; align-items: center; }
.filtros__titulo { font-size: .85rem; font-weight: 650; color: var(--gris); margin-right: .25rem; }
.filtro { border: 1px solid var(--linea); background: var(--papel); color: var(--tinta); padding: .45rem .95rem; border-radius: 999px; font: inherit; font-size: .9rem; cursor: pointer; transition: all .15s; }
.filtro:hover { border-color: var(--verde); }
.filtro[aria-pressed="true"] { background: var(--verde); color: #fff; border-color: var(--verde); }
.filtro .num { opacity: .7; margin-left: .25em; font-size: .85em; }
.sin-resultados { padding: 2rem; text-align: center; color: var(--gris); border: 1px dashed var(--linea); border-radius: var(--radio); }

/* ---------- Bloques de contenido ---------- */
.prosa { max-width: 70ch; }
.prosa h2 { margin-top: 1.8em; font-size: clamp(1.5rem, 2.6vw, 2rem); }
.prosa h3 { margin-top: 1.6em; }
.prosa ul li::marker { color: var(--naranja); }
.prosa blockquote { margin: 1.5em 0; padding: 1rem 1.25rem; border-left: 4px solid var(--naranja); background: var(--naranja-100); border-radius: 0 var(--radio-chico) var(--radio-chico) 0; }
.prosa blockquote p:last-child { margin: 0; }
.prosa table { margin: 1.5em 0; }
.foto-marco { border-radius: var(--radio); overflow: hidden; box-shadow: var(--sombra); position: relative; background: var(--verde-100); }
.foto-marco img { width: 100%; height: 100%; object-fit: cover; }
.foto-marco figcaption, .pie-foto { font-size: .84rem; color: var(--gris); padding: .6rem .2rem 0; }
figure { margin: 0; }
.foto-collage { display: grid; grid-template-columns: 1.3fr 1fr; grid-template-rows: 1fr 1fr; gap: .9rem; aspect-ratio: 5/4; }
.foto-collage > :first-child { grid-row: span 2; }
.foto-collage .foto-marco { height: 100%; }
.nota { display: flex; gap: .9rem; padding: 1rem 1.2rem; border-radius: var(--radio-chico); background: var(--verde-100); border: 1px solid var(--verde-200); font-size: .95rem; color: #2f3a28; }
.nota--naranja { background: var(--naranja-100); border-color: #efc79f; }
.nota strong { color: var(--verde-900); }
.nota p:last-child { margin: 0; }
.lista-check { list-style: none; padding: 0; }
.lista-check li { position: relative; padding-left: 1.9rem; }
.lista-check li::before { content: ""; position: absolute; left: 0; top: .35em; width: 1.15rem; height: 1.15rem; border-radius: 50%; background: var(--verde-100) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M4 8.5l2.5 2.5L12 5.5' fill='none' stroke='%23375325' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/80% no-repeat; }
.lista-datos { display: grid; grid-template-columns: minmax(130px, max-content) 1fr; gap: .6rem 1.5rem; margin: 0; }
.lista-datos dt { font-weight: 650; color: var(--verde-800); font-size: .93rem; }
.lista-datos dd { margin: 0; }
@media (max-width: 560px) { .lista-datos { grid-template-columns: 1fr; gap: .15rem; } .lista-datos dd { margin-bottom: .7rem; } }

/* Tres tiempos: hoy / en marcha / proyección */
.tiempos { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr)); gap: 1rem; }
.tiempo { border-radius: var(--radio); padding: 1.5rem; background: var(--papel); border: 1px solid var(--linea); border-top: 5px solid var(--verde); }
.tiempo--marcha { border-top-color: var(--naranja); }
.tiempo--futuro { border-top-color: #8a80ad; border-style: solid; background: repeating-linear-gradient(-45deg, var(--papel), var(--papel) 12px, #faf8f3 12px, #faf8f3 24px); }
.tiempo h3 { font-size: 1.15rem; margin-bottom: .6rem; }
.tiempo__etiqueta { font-size: .74rem; font-weight: 750; letter-spacing: .12em; text-transform: uppercase; color: var(--gris); display: block; margin-bottom: .4rem; }
.tiempo ul { margin: 0; padding-left: 1.1em; font-size: .97rem; }

/* Ciclo de economía circular */
.ciclo { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 250px), 1fr)); gap: 1rem; counter-reset: paso; }
.ciclo__paso { background: var(--papel); border: 1px solid var(--linea); border-radius: var(--radio); padding: 1.4rem 1.3rem 1.3rem; position: relative; }
.ciclo__flujo { font-family: var(--serif); font-size: 1.1rem; color: var(--verde-900); display: flex; flex-wrap: wrap; gap: .35rem; align-items: center; margin-bottom: .55rem; }
.ciclo__flujo span { white-space: nowrap; }
.ciclo__flujo .flecha { color: var(--naranja); font-family: var(--sans); }
.ciclo__paso p { font-size: .94rem; margin: 0 0 .7rem; color: #444c40; }

/* Mapa */
.mapa { border-radius: var(--radio); overflow: hidden; border: 1px solid var(--linea); background: var(--verde-100); aspect-ratio: 4/3; position: relative; }
.mapa iframe { width: 100%; height: 100%; border: 0; display: block; }

/* ---------- Banda de llamada a la acción ---------- */
.banda { background: var(--verde); color: #fff; border-radius: calc(var(--radio) * 1.4); padding: clamp(2rem, 5vw, 3.5rem); display: grid; grid-template-columns: 1.4fr auto; gap: 2rem; align-items: center; position: relative; overflow: hidden; }
.banda::before { content: ""; position: absolute; right: -60px; top: -60px; width: 280px; height: 280px; border-radius: 50%; background: radial-gradient(circle, rgba(210,112,25,.45), transparent 70%); }
.banda h2 { color: #fff; margin-bottom: .35em; }
.banda p { color: #dfe8d4; margin: 0; max-width: 58ch; }
.banda__acciones { display: flex; gap: .75rem; flex-wrap: wrap; position: relative; }
@media (max-width: 760px) { .banda { grid-template-columns: 1fr; } }

/* ---------- Galería ---------- */
.galeria { columns: 3 280px; column-gap: 1rem; }
.galeria__item { break-inside: avoid; margin: 0 0 1rem; border-radius: var(--radio-chico); overflow: hidden; position: relative; background: var(--verde-100); }
.galeria__item button { all: unset; display: block; cursor: zoom-in; width: 100%; }
.galeria__item button:focus-visible { outline: 3px solid var(--naranja); outline-offset: -3px; }
.galeria__item img { width: 100%; transition: transform .5s var(--t), filter .3s; }
.galeria__item:hover img { transform: scale(1.03); }
.galeria__pie { position: absolute; inset: auto 0 0 0; padding: 2rem .9rem .75rem; background: linear-gradient(transparent, rgba(15,22,10,.78)); color: #fff; font-size: .86rem; opacity: 0; transition: opacity .25s; pointer-events: none; }
.galeria__item:hover .galeria__pie, .galeria__item:focus-within .galeria__pie { opacity: 1; }
@media (hover: none) { .galeria__pie { opacity: 1; } }
.galeria__item[hidden] { display: none; }
.franja-fotos { display: grid; grid-template-columns: repeat(4, 1fr); gap: .75rem; }
.franja-fotos .galeria__item { margin: 0; aspect-ratio: 1; }
.franja-fotos .galeria__item img { height: 100%; object-fit: cover; }
.franja-fotos .galeria__item:first-child { grid-column: span 2; grid-row: span 2; aspect-ratio: auto; }
@media (max-width: 700px) { .franja-fotos { grid-template-columns: repeat(2, 1fr); } }

/* Visor (lightbox) */
.visor { position: fixed; inset: 0; z-index: 200; background: rgba(12,17,9,.94); display: none; align-items: center; justify-content: center; padding: 3.5rem 4.5rem; }
.visor.abierto { display: flex; }
.visor figure { max-width: 100%; max-height: 100%; display: flex; flex-direction: column; align-items: center; }
.visor img { max-width: 100%; max-height: calc(100vh - 9rem); object-fit: contain; border-radius: 6px; }
.visor figcaption { color: #e5eadf; margin-top: .9rem; text-align: center; font-size: .95rem; max-width: 70ch; }
.visor__btn { position: absolute; background: rgba(255,255,255,.12); color: #fff; border: 0; width: 48px; height: 48px; border-radius: 50%; display: grid; place-items: center; cursor: pointer; font-size: 1.5rem; line-height: 1; }
.visor__btn:hover { background: rgba(255,255,255,.25); }
.visor__cerrar { top: 1rem; right: 1rem; }
.visor__ant { left: 1rem; top: 50%; transform: translateY(-50%); }
.visor__sig { right: 1rem; top: 50%; transform: translateY(-50%); }
.visor__contador { position: absolute; top: 1.4rem; left: 1.4rem; color: #c9d1bf; font-size: .9rem; }
@media (max-width: 640px) { .visor { padding: 3.5rem .75rem 5rem; } .visor__ant, .visor__sig { top: auto; bottom: 1rem; transform: none; } .visor__ant { left: calc(50% - 60px); } .visor__sig { right: calc(50% - 60px); } }

/* ---------- Ficha de proyecto ---------- */
.ficha { display: grid; grid-template-columns: minmax(0, 1fr) 340px; gap: clamp(2rem, 5vw, 4rem); align-items: start; }
.ficha__lateral { position: sticky; top: calc(var(--alto-cabecera) + 1.25rem); display: flex; flex-direction: column; gap: 1rem; }
.caja { background: var(--papel); border: 1px solid var(--linea); border-radius: var(--radio); padding: 1.4rem; }
.caja h2, .caja h3 { font-size: 1.1rem; margin-bottom: .8rem; }
.caja .lista-datos { grid-template-columns: 1fr; gap: .1rem; font-size: .94rem; }
.caja .lista-datos dd { margin-bottom: .75rem; }
@media (max-width: 960px) { .ficha { grid-template-columns: 1fr; } .ficha__lateral { position: static; } }
.bloque-ficha { margin-bottom: 2.25rem; }
.bloque-ficha h2 { font-size: 1.45rem; padding-bottom: .5rem; border-bottom: 2px solid var(--verde-100); }

/* Noticias */
.noticia-meta { display: flex; gap: .75rem; flex-wrap: wrap; align-items: center; font-size: .9rem; color: #d7e0cc; }
.cabeza-pagina--simple .noticia-meta { color: var(--gris); }

/* ---------- Formularios ---------- */
.formulario { display: grid; gap: 1.1rem; }
.formulario__fila { display: grid; grid-template-columns: 1fr 1fr; gap: 1.1rem; }
@media (max-width: 640px) { .formulario__fila { grid-template-columns: 1fr; } }
.campo { display: flex; flex-direction: column; gap: .35rem; }
.campo label, .campo legend { font-weight: 650; font-size: .95rem; color: var(--verde-900); }
.campo .opcional { font-weight: 400; color: var(--gris); font-size: .85rem; }
.campo input, .campo select, .campo textarea { font: inherit; font-size: 1rem; padding: .8rem .95rem; border: 1.5px solid #cfc4ae; border-radius: 10px; background: #fff; color: var(--tinta); width: 100%; transition: border-color .15s, box-shadow .15s; }
.campo textarea { min-height: 150px; resize: vertical; }
.campo input:focus, .campo select:focus, .campo textarea:focus { outline: none; border-color: var(--verde); box-shadow: 0 0 0 4px rgba(55,83,37,.15); }
.campo [aria-invalid="true"] { border-color: #b3261e; box-shadow: 0 0 0 3px rgba(179,38,30,.12); }
.campo__error { color: #b3261e; font-size: .86rem; min-height: 0; }
.campo__ayuda { font-size: .84rem; color: var(--gris); }
.check { display: flex; gap: .7rem; align-items: flex-start; font-size: .92rem; }
.check input { width: 20px; height: 20px; margin-top: .2rem; accent-color: var(--verde); flex: none; }
.miel { position: absolute; left: -5000px; }
.aviso-form { padding: 1rem 1.2rem; border-radius: 10px; font-size: .96rem; }
.aviso-form--ok { background: #dfeedd; border: 1px solid #a9cfa3; color: #1d4a1a; }
.aviso-form--error { background: #fbe4e2; border: 1px solid #efb0aa; color: #7a1b14; }
.aviso-form[hidden] { display: none; }

/* Buscar */
.buscador { display: flex; gap: .6rem; margin-bottom: 2rem; }
.buscador input { flex: 1; font: inherit; font-size: 1.1rem; padding: .9rem 1.1rem; border-radius: 999px; border: 1.5px solid #cfc4ae; background: #fff; }
.buscador input:focus { outline: none; border-color: var(--verde); box-shadow: 0 0 0 4px rgba(55,83,37,.15); }
.resultado { padding: 1.2rem 0; border-bottom: 1px solid var(--linea); }
.resultado h2 { font-size: 1.2rem; margin: 0 0 .3rem; }
.resultado p { margin: 0; color: #4a5245; font-size: .96rem; }
.resultado mark { background: var(--naranja-100); color: inherit; padding: 0 .1em; border-radius: 3px; }
.resultado__tipo { font-size: .76rem; text-transform: uppercase; letter-spacing: .1em; color: var(--naranja-700); font-weight: 700; }

/* Documentos */
.documento { display: grid; grid-template-columns: auto 1fr auto; gap: 1.1rem; align-items: center; padding: 1.2rem 1.3rem; background: var(--papel); border: 1px solid var(--linea); border-radius: var(--radio); }
.documento + .documento { margin-top: .75rem; }
.documento h3 { font-size: 1.08rem; margin: 0 0 .2rem; }
.documento p { margin: 0; font-size: .92rem; color: #4a5245; }
.documento__meta { font-size: .8rem; color: var(--gris); margin-top: .3rem !important; }
@media (max-width: 640px) { .documento { grid-template-columns: 1fr; } .documento .icono { display: none; } }

/* ---------- Pie ---------- */
.pie { background: var(--verde-900); color: #c9d4bd; padding: 0 0 2rem; margin-top: 0; position: relative; }
.pie__raices { color: #3d5a2a; height: 70px; overflow: hidden; }
.pie__raices svg { width: 100%; height: 100%; }
.pie__grid { display: grid; grid-template-columns: 1.4fr 1fr 1fr 1.2fr; gap: 2.5rem; padding: 2.5rem 0 2.5rem; }
@media (max-width: 900px) { .pie__grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 560px) { .pie__grid { grid-template-columns: 1fr; } }
.pie__logo { width: 96px; background: #fffdf8; border-radius: 12px; padding: 6px; margin-bottom: 1rem; }
.pie__nombre { font-family: var(--serif); color: #fff; font-size: 1.1rem; margin-bottom: .4rem; }
.pie__dato { font-size: .87rem; margin: 0 0 .25rem; }
.pie__titulo { font-family: var(--sans); font-size: .8rem; letter-spacing: .14em; text-transform: uppercase; color: #f2a865; margin-bottom: 1rem; }
.pie__lista { list-style: none; padding: 0; margin: 0; font-size: .95rem; }
.pie__lista li + li { margin-top: .5rem; }
.pie a { color: #e7eedd; text-decoration: none; }
.pie a:hover { color: #ffc48c; text-decoration: underline; }
.pie__redes { display: flex; gap: .6rem; margin-top: .9rem !important; }
.pie__redes a { width: 40px; height: 40px; border-radius: 50%; display: grid; place-items: center; background: rgba(255,255,255,.08); }
.pie__redes a:hover { background: var(--naranja); color: #fff; }
.pie__legal { border-top: 1px solid rgba(255,255,255,.12); padding-top: 1.4rem; display: flex; justify-content: space-between; flex-wrap: wrap; gap: .5rem 2rem; font-size: .84rem; }
.pie__legal p { margin: 0; }

/* WhatsApp flotante */
.flotante-wa { position: fixed; right: 1rem; bottom: 1rem; z-index: 40; width: 56px; height: 56px; border-radius: 50%; background: #1f8f4e; color: #fff; display: grid; place-items: center; box-shadow: 0 8px 22px rgba(0,0,0,.22); transition: transform .2s var(--t); }
.flotante-wa:hover { transform: scale(1.06); color: #fff; }

/* Aparición suave al hacer scroll */
.js .aparece { opacity: 0; transform: translateY(18px); transition: opacity .7s var(--t), transform .7s var(--t); }
.js .aparece.visible { opacity: 1; transform: none; }

/* Decorativo: líneas topográficas */
.topo { position: relative; }
.topo::before { content: ""; position: absolute; inset: 0; pointer-events: none; opacity: .5; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='400' height='400' viewBox='0 0 400 400'%3E%3Cg fill='none' stroke='%23d9cdb4' stroke-width='1'%3E%3Cpath d='M-20 80 C60 40 120 120 200 90 S340 30 420 70'/%3E%3Cpath d='M-20 120 C70 80 130 160 210 130 S330 70 420 110'/%3E%3Cpath d='M-20 170 C80 130 140 210 220 180 S320 120 420 160'/%3E%3Cpath d='M-20 230 C60 200 150 270 230 240 S340 180 420 220'/%3E%3Cpath d='M-20 290 C70 260 140 330 220 300 S330 240 420 280'/%3E%3Cpath d='M-20 350 C80 320 150 390 230 360 S340 300 420 340'/%3E%3C/g%3E%3C/svg%3E"); }
.topo > * { position: relative; }

/* Impresión */
@media print { .cabecera, .pie, .flotante-wa, .filtros, .banda__acciones { display: none !important; } body { background: #fff; } .cabeza-pagina { background: none; color: #000; } .cabeza-pagina::after, .cabeza-pagina__foto { display: none; } .cabeza-pagina h1 { color: #000; } }

/* Línea de tiempo */
.linea-tiempo { list-style: none; padding: 0 0 0 1.6rem; margin: 0; border-left: 2px solid var(--verde-200); }
.linea-tiempo li { position: relative; padding: 0 0 1.5rem 1rem; margin: 0; }
.linea-tiempo li::before { content: ""; position: absolute; left: calc(-1.6rem - 8px); top: .35rem; width: 14px; height: 14px; border-radius: 50%; background: var(--papel); border: 3px solid var(--naranja); }
.linea-tiempo time { display: block; font-size: .8rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--naranja-700); }
.linea-tiempo strong { display: block; font-family: var(--serif); font-size: 1.15rem; color: var(--verde-900); }
.linea-tiempo span { display: block; color: #4a5245; font-size: .95rem; }
/* Organigrama */
.organigrama { list-style: none; padding: 0; margin: 0; counter-reset: org; }
.organigrama li { position: relative; padding: .9rem 1rem .9rem 3.2rem; border: 1px solid var(--linea); border-radius: 10px; background: #fff; margin: 0 0 .6rem; counter-increment: org; }
.organigrama li:not(:last-child)::after { content: ""; position: absolute; left: 1.55rem; bottom: -.65rem; width: 2px; height: .6rem; background: var(--verde-200); }
.organigrama li::before { content: counter(org); position: absolute; left: .8rem; top: .9rem; width: 1.7rem; height: 1.7rem; border-radius: 50%; background: var(--verde); color: #fff; font-weight: 700; font-size: .85rem; display: grid; place-items: center; }
.organigrama strong { display: block; color: var(--verde-900); }
.organigrama span { font-size: .92rem; color: #4a5245; }
.tabla-desplazable { overflow-x: auto; border: 1px solid var(--linea); border-radius: var(--radio); background: #fff; } .tabla-desplazable table { min-width: 640px; } .tabla-desplazable th[scope="row"] { background: transparent; white-space: nowrap; } .tabla-desplazable tr:last-child > * { border-bottom: 0; }
.lista-contacto { list-style: none; padding: 0; margin: 0; display: grid; gap: 1.1rem; }
.lista-contacto li { display: flex; gap: .9rem; align-items: flex-start; margin: 0; }
.lista-contacto .icono { width: 44px; height: 44px; border-radius: 12px; }
.lista-contacto .icono svg { width: 22px; height: 22px; }
.lista-contacto strong { display: block; color: var(--verde-900); font-size: .92rem; }
.lista-contacto div { font-size: .98rem; overflow-wrap: anywhere; }
.seccion--verde a.boton { color: #fff; }
.seccion--verde a.boton--claro { color: var(--verde-900); }
.heroe__pie { top: calc(1rem); bottom: auto; }
.franja-fotos .galeria__item button { height: 100%; }

.caja :is(h2, h3) { margin-top: 0; }
@media (max-width: 700px) {
  .heroe__pie { display: none; }
  .heroe__contenido { padding-bottom: 3rem; }
  .cifras--superpuestas { margin-top: 1.5rem; }
  .cifras { grid-template-columns: 1fr 1fr; }
  .cifra:last-child:nth-child(odd) { grid-column: 1 / -1; }
  .cifra { padding: 1.2rem 1rem; }
}

.datos-inst { text-align: center; font-size: .9rem; color: #4a5245; margin: 1.6rem auto 0; max-width: 900px; }
.datos-inst a { white-space: nowrap; }
