/* =============================================================================
   Proyectos — galería de obra ejecutada
   -----------------------------------------------------------------------------
   Reutiliza .gi-tarjeta / .gi-tarjeta__num de categoria.css (que se encola
   junto a esta hoja). Aquí solo va lo propio de la galería.

   Sin librería: carril con scroll-snap nativo. Las fotos vienen en apaisado
   (600x450) Y en vertical (450x600), así que el hueco es de proporción fija y
   la imagen entra con `contain` — recortar una foto técnica puede dejar fuera
   justo el cuadro o el inversor que se quería enseñar.
   ========================================================================== */

.gi-proyectos{
  max-width:68rem;margin-inline:auto;
  padding-inline:max(1.25rem, var(--gi-gutter));
  padding-block:clamp(2.5rem, 2rem + 2vw, 4rem) clamp(3.5rem, 3rem + 3vw, 5.5rem);
  font-family:var(--gi-cuerpo);color:var(--gi-texto);
}

.gi-proyecto{margin-bottom:clamp(1.5rem, 1rem + 1.5vw, 2.5rem)}

.gi-proyecto__titulo{
  font-family:var(--gi-titular);font-size:var(--gi-t-l);font-weight:600;
  line-height:1.2;color:var(--gi-verde-oscuro);text-wrap:balance;
  margin:0 0 .35rem;
}
/* Línea de contexto: es el «meta» del proyecto (línea de actividad, potencia),
   no un subtítulo comercial. Va en tono menor y con el mismo tracking que los
   eyebrow del resto del sitio. */
.gi-proyecto__contexto{
  font-family:var(--gi-titular);font-size:var(--gi-t-xs);font-weight:600;
  letter-spacing:.1em;text-transform:uppercase;color:var(--gi-texto-suave);
  margin:0 0 1.25rem;
}

/* --- Carril ---------------------------------------------------------------- */
.gi-proyecto__galeria{
  display:flex;gap:clamp(.75rem,.5rem + 1vw,1.25rem);
  overflow-x:auto;overscroll-behavior-x:contain;
  scroll-snap-type:x mandatory;scroll-behavior:smooth;
  padding-bottom:.75rem;
  /* El carril recibe foco: sin anillo visible sería una trampa de teclado. */
  scrollbar-color:var(--gi-verde) rgba(16,22,26,.10);
  scrollbar-width:thin;
}
.gi-proyecto__galeria:focus-visible{
  outline:3px solid var(--gi-verde);outline-offset:4px;border-radius:2px;
}
.gi-proyecto__galeria::-webkit-scrollbar{height:8px}
.gi-proyecto__galeria::-webkit-scrollbar-track{background:rgba(16,22,26,.10);border-radius:4px}
.gi-proyecto__galeria::-webkit-scrollbar-thumb{background:var(--gi-verde);border-radius:4px}

/* --- Cada foto ------------------------------------------------------------- */
.gi-proyecto__foto{
  flex:0 0 auto;width:min(78vw, 22rem);margin:0;
  scroll-snap-align:start;
}
.gi-proyecto__foto img{
  display:block;width:100%;height:auto;aspect-ratio:4/3;
  object-fit:contain;background:rgba(16,22,26,.06);
  border:1px solid rgba(16,22,26,.14);border-radius:2px;
}
.gi-proyecto__foto figcaption{
  font-size:var(--gi-t-s);line-height:1.5;color:var(--gi-texto-suave);
  margin-top:.6rem;
}

/* Una sola foto no es un carril: que ocupe el ancho y no invite a arrastrar. */
.gi-proyecto__galeria:has(> .gi-proyecto__foto:only-child){overflow-x:visible}
.gi-proyecto__galeria > .gi-proyecto__foto:only-child{width:min(100%, 30rem)}

@media (prefers-reduced-motion:reduce){
  .gi-proyecto__galeria{scroll-behavior:auto}
}

@media (max-width:36rem){
  .gi-proyecto__foto{width:min(86vw, 20rem)}
}

/* --- Flechas ----------------------------------------------------------------
   Las cuelga proyectos.js dentro de .gi-proyecto__marco, y solo cuando hay
   más de una foto: si el script no carga, no hay botones que estorben.
   Van SOBRE la imagen, no debajo, para no empujar el pie de foto. */
.gi-proyecto__marco{position:relative}

.gi-proyecto__flecha{
  position:absolute;top:calc(50% - 1.5rem);transform:translateY(-50%);
  z-index:2;
  display:flex;align-items:center;justify-content:center;
  width:2.75rem;height:2.75rem;padding:0;
  font-family:var(--gi-titular);font-size:1.6rem;line-height:1;
  color:#fff;background:rgba(16,22,26,.72);
  border:1px solid rgba(233,239,236,.35);border-radius:50%;
  cursor:pointer;
  transition:background .18s ease, opacity .18s ease;
}
/* `hidden` lo pone proyectos.js cuando no hay recorrido. Hace falta decirlo
   explícitamente: el `display:flex` de la clase de arriba GANA por especificidad
   al `display:none` que el navegador asocia a [hidden], y las flechas se
   quedaban visibles flotando junto a proyectos que caben enteros en pantalla. */
.gi-proyecto__flecha[hidden]{display:none}
.gi-proyecto__flecha--anterior{left:.5rem}
.gi-proyecto__flecha--siguiente{right:.5rem}
.gi-proyecto__flecha:hover{background:var(--gi-verde)}
.gi-proyecto__flecha:focus-visible{
  outline:3px solid var(--gi-verde);outline-offset:3px;background:var(--gi-verde);
}
/* Al tope del carril la flecha se atenúa, pero NO se desactiva: el avance es
   cíclico y desde el final se vuelve al principio. */
.gi-proyecto__flecha.esta-al-principio,
.gi-proyecto__flecha.esta-al-final{opacity:.45}
.gi-proyecto__flecha.esta-al-principio:hover,
.gi-proyecto__flecha.esta-al-final:hover{opacity:1}

@media (prefers-reduced-motion:reduce){
  .gi-proyecto__flecha{transition:none}
}
@media (max-width:36rem){
  .gi-proyecto__flecha{width:2.25rem;height:2.25rem;font-size:1.3rem}
}

/* --- Portada de Proyectos: las seis líneas ----------------------------------
   Enlaces normales, sin JS. El icono es decorativo (aria-hidden); el nombre
   accesible del enlace lo da su propio texto. */
.gi-lineas-proy{
  list-style:none;margin:0;padding:0;
  display:grid;gap:clamp(.75rem,.5rem + 1vw,1.25rem);
  grid-template-columns:repeat(auto-fit, minmax(15rem, 1fr));
}
.gi-lineas-proy__enlace{
  display:flex;flex-direction:column;align-items:flex-start;gap:.75rem;
  height:100%;
  padding:clamp(1.25rem,1rem + 1vw,1.75rem);
  border:1px solid rgba(16,22,26,.14);
  border-left:3px solid var(--gi-verde);
  border-radius:2px;
  text-decoration:none;color:var(--gi-texto);
  transition:border-color .18s ease, background .18s ease;
}
.gi-lineas-proy__enlace:hover{
  background:var(--gi-verde-claro);border-color:var(--gi-verde);
}
.gi-lineas-proy__enlace:focus-visible{
  outline:3px solid var(--gi-verde);outline-offset:3px;
}
.gi-proyectos__icono{width:3.5rem;height:3.5rem;flex:none;display:block}
.gi-lineas-proy__nombre{
  font-family:var(--gi-titular);font-size:var(--gi-t-l);font-weight:600;
  line-height:1.2;color:var(--gi-verde-oscuro);text-wrap:balance;
}
.gi-lineas-proy__cuenta{
  font-family:var(--gi-titular);font-size:var(--gi-t-xs);font-weight:600;
  letter-spacing:.1em;text-transform:uppercase;color:var(--gi-texto-suave);
}

/* La cabecera de las páginas de categoría usa el mismo icono, más grande. */
.gi-cat__cabecera .gi-proyectos__icono{
  width:clamp(72px, 60px + 4vw, 104px);height:auto;
}

.gi-proyectos__vacio{
  padding:clamp(1.25rem,1rem + 1vw,1.75rem);
  border:1px dashed rgba(16,22,26,.24);border-radius:2px;
  color:var(--gi-texto-suave);margin:0;
}

@media (prefers-reduced-motion:reduce){
  .gi-lineas-proy__enlace{transition:none}
}

/* --- Slider de instalaciones (portada de Proyectos) -------------------------
   Tira horizontal a ALTURA FIJA: cada foto conserva su proporción y aporta el
   ancho que le toca, así que verticales y horizontales conviven sin recortar
   ninguna. En móvil la tira baja a 200 px para que asome la foto siguiente y
   se lea como carrusel; a 240 px una horizontal ocuparía justo el ancho útil
   y no se vería que hay más. */
.gi-slider{
  position:relative;
  margin-bottom:clamp(2rem, 1.5rem + 2vw, 3rem);
}
.gi-slider__carril{
  display:flex;gap:clamp(.5rem,.35rem + .7vw,.85rem);
  overflow-x:auto;overscroll-behavior-x:contain;
  scroll-snap-type:x mandatory;scroll-behavior:smooth;
  /* Barra oculta, desplazamiento intacto. */
  scrollbar-width:none;-ms-overflow-style:none;
}
.gi-slider__carril::-webkit-scrollbar{display:none}
/* El carril recibe foco para el teclado: sin anillo sería una trampa. */
.gi-slider__carril:focus-visible{
  outline:3px solid var(--gi-verde);outline-offset:4px;border-radius:2px;
}
.gi-slider__foto{
  flex:0 0 auto;
  height:360px;width:auto;max-width:100%;object-fit:contain;
  scroll-snap-align:start;
  border-radius:2px;background:rgba(16,22,26,.06);
}

/* --- Flechas ----------------------------------------------------------------
   Las crea slider-proyectos.js; si no carga, no hay botones muertos.
   Sin botón de pausa desde el 24/09/2026 (decisión de Omar): ver la cabecera de
   slider-proyectos.js para lo que implica en accesibilidad. */
.gi-slider__flecha{
  position:absolute;z-index:2;
  display:flex;align-items:center;justify-content:center;
  padding:0;color:#fff;background:rgba(16,22,26,.72);
  border:1px solid rgba(233,239,236,.35);
  cursor:pointer;font-family:var(--gi-titular);line-height:1;
  transition:background .18s ease;
}
.gi-slider__flecha{
  top:calc(50% - 1.375rem);width:2.75rem;height:2.75rem;
  border-radius:50%;font-size:1.6rem;
}
.gi-slider__flecha--anterior{left:.5rem}
.gi-slider__flecha--siguiente{right:.5rem}
.gi-slider__flecha:hover{background:var(--gi-verde)}
.gi-slider__flecha:focus-visible{
  outline:3px solid var(--gi-verde);outline-offset:3px;background:var(--gi-verde);
}

@media (max-width:48rem){
  .gi-slider__foto{height:280px}
}
@media (max-width:36rem){
  .gi-slider__foto{height:200px}
  .gi-slider__flecha{width:2.25rem;height:2.25rem;font-size:1.3rem}
}
@media (prefers-reduced-motion:reduce){
  .gi-slider__carril{scroll-behavior:auto}
  .gi-slider__flecha{transition:none}
}
