:root{
    --piedra:#CAC7BC;
    --piedra-honda:#B8B5A9;
    --olivo:#767A60;
    --olivo-hondo:#63674F;
    --tinta:#1B1C18;
    --blanco:#FFFFFF;

    --ui:"Jost","Century Gothic",sans-serif;
    --prosa:"Newsreader",Georgia,serif;

    --margen:clamp(1.25rem,3.5vw,3.5rem);
    --canal:clamp(.9rem,1.4vw,1.35rem);
    --barra:clamp(3.6rem,5.2vw,4.4rem);
  }

  *{box-sizing:border-box}
  html{scroll-behavior:smooth}
  body{
    margin:0;
    background:var(--piedra);
    color:var(--tinta);
    font-family:var(--prosa);
    font-size:1.0625rem;
    line-height:1.7;
    -webkit-font-smoothing:antialiased;
  }
  svg{display:block}
  button{font:inherit;color:inherit;background:none;border:none;cursor:pointer;padding:0}
  a{color:inherit}
  :focus-visible{outline:2px solid var(--olivo);outline-offset:3px}

  /* ---------- barra superior ---------- */
  .barra{
    position:fixed;inset:0 0 auto 0;z-index:50;
    height:var(--barra);
    display:flex;align-items:stretch;
    background:var(--piedra);
    border-bottom:1px solid var(--piedra-honda);
  }
  .firma{
    display:flex;align-items:center;gap:.7rem;
    padding:0 var(--margen);
    border-right:1px solid var(--piedra-honda);
    font-family:var(--ui);font-weight:400;
    font-size:1.05rem;letter-spacing:.34em;text-indent:.34em;
    cursor:pointer;
  }
  .firma svg{width:27px;height:auto;fill:var(--tinta);flex:none}

  .paneles{display:flex;flex:1;justify-content:flex-end}
  .panel{
    font-family:var(--ui);font-weight:300;
    font-size:.92rem;letter-spacing:.13em;
    padding:0 clamp(.9rem,2.4vw,2.4rem);
    border-left:1px solid var(--piedra-honda);
    transition:background .25s ease,color .25s ease;
    white-space:nowrap;
  }
  .panel:hover{background:var(--piedra-honda)}
  .panel[aria-current="true"]{background:var(--olivo);color:var(--blanco)}
  @media(max-width:720px){
    .firma{letter-spacing:.2em;font-size:.9rem;padding:0 .9rem;gap:.5rem}
    .firma svg{width:21px}
    .panel{padding:0 .7rem;font-size:.72rem;letter-spacing:.05em}
  }

  /* ---------- vistas ---------- */
  .vista{display:none}
  .vista[data-activa="true"]{display:block}

  /* ---------- portada ---------- */
  .portada{position:relative;height:100svh;padding-top:var(--barra)}
  .escena{
    position:absolute;inset:var(--barra) 0 0 0;
    width:100%;padding:0;border:none;cursor:pointer;
    opacity:0;transition:opacity 1.1s ease;pointer-events:none;
  }
  .escena[data-visible="true"]{opacity:1;pointer-events:auto}
  .escena svg,.escena .foto{width:100%;height:100%;object-fit:cover}
  .escena-pie{
    position:absolute;left:var(--margen);
    bottom:clamp(4.6rem,9vw,6rem);
    text-align:left;color:var(--blanco);
    text-shadow:0 1px 24px rgba(27,28,24,.45);
  }
  .escena-pie em{
    font-style:normal;font-family:var(--ui);font-weight:300;
    font-size:.86rem;letter-spacing:.15em;opacity:.9;
  }
  .escena-pie strong{
    display:block;font-family:var(--ui);font-weight:300;
    font-size:clamp(1.9rem,4.6vw,3.4rem);
    letter-spacing:.02em;line-height:1.1;
  }
  .escena-pie small{
    display:inline-block;margin-top:1rem;
    font-family:var(--ui);font-size:.78rem;letter-spacing:.16em;
    border-bottom:1px solid rgba(255,255,255,.5);padding-bottom:.2rem;
  }
  .indices{
    position:absolute;z-index:5;
    right:var(--margen);bottom:clamp(4.6rem,9vw,6rem);
    display:flex;gap:.55rem;
  }
  .indice{width:30px;height:2px;background:rgba(255,255,255,.42);transition:background .3s ease}
  .indice[aria-pressed="true"]{background:var(--blanco)}
  .baja{
    position:absolute;z-index:5;left:50%;transform:translateX(-50%);
    bottom:1.5rem;color:var(--blanco);
    font-family:var(--ui);font-weight:300;font-size:.72rem;letter-spacing:.18em;
    text-shadow:0 1px 18px rgba(27,28,24,.5);
  }
  @media(max-width:560px){
    .indices{right:auto;left:var(--margen);bottom:3.4rem}
    .escena-pie{bottom:5.2rem}
    .baja{display:none}
  }

  /* ---------- secciones ---------- */
  .seccion{padding:clamp(3.5rem,8vw,7rem) var(--margen);scroll-margin-top:var(--barra)}
  .seccion + .seccion{border-top:1px solid var(--piedra-honda)}
  .titulo{
    font-family:var(--ui);font-weight:300;
    font-size:clamp(1.7rem,3.6vw,2.7rem);
    letter-spacing:.06em;margin:0 0 .5rem;
  }
  .entrada{max-width:50ch;color:var(--olivo-hondo);margin:0 0 2.8rem}

  /* ---------- cuatro bloques ---------- */
  .bloques{display:grid;grid-template-columns:repeat(var(--cols,4),1fr);gap:var(--canal);margin-top:2.4rem}
  .bloque{
    display:flex;flex-direction:column;
    text-align:left;width:100%;
    border:1px solid var(--piedra-honda);
    transition:border-color .25s ease;
  }
  .bloque:hover{border-color:var(--olivo)}
  .bloque-marco{aspect-ratio:3/4;overflow:hidden;background:var(--piedra-honda)}
  .bloque-marco svg,.bloque-marco .foto{width:100%;height:100%;object-fit:cover;transition:transform .6s cubic-bezier(.2,.6,.2,1)}
  .bloque:hover .bloque-marco svg,.bloque:hover .bloque-marco .foto{transform:scale(1.04)}
  .bloque[disabled]{cursor:default;opacity:.72}
  .bloque[disabled]:hover{border-color:var(--piedra-honda)}
  .bloque[disabled]:hover .bloque-marco svg{transform:none}
  .bloque-texto{padding:1.1rem 1.2rem 1.3rem;display:flex;flex-direction:column;gap:.4rem}
  .bloque-nombre{
    font-family:var(--ui);font-weight:300;
    font-size:1.16rem;letter-spacing:.05em;line-height:1.2;flex:1;
  }
  .bloque-cuenta{
    font-family:var(--ui);font-weight:300;
    font-size:.75rem;letter-spacing:.15em;color:var(--olivo);
  }
  @media(max-width:900px){.bloques{grid-template-columns:repeat(2,1fr)}}
  @media(max-width:520px){
    .bloques{grid-template-columns:1fr}
    .bloque-marco{aspect-ratio:16/9}
  }

  /* ---------- rejilla de obra ---------- */
  .rejilla-cat{margin-top:2.4rem}
  .rejilla{display:grid;grid-template-columns:repeat(12,1fr);gap:calc(var(--canal)*2.2) var(--canal);margin-top:2.4rem}
  .obra{grid-column:span 4;text-align:left;width:100%}
  .obra.ancha{grid-column:span 6}
  .obra.completa{grid-column:span 8}
  @media(max-width:900px){.obra,.obra.ancha,.obra.completa{grid-column:span 6}}
  @media(max-width:560px){.obra,.obra.ancha,.obra.completa{grid-column:span 12}}
  .obra-marco{display:block;overflow:hidden;aspect-ratio:4/3;background:var(--piedra-honda)}
  .obra.ancha .obra-marco{aspect-ratio:16/10}
  .obra.completa .obra-marco{aspect-ratio:16/9}
  .obra-marco svg,.obra-marco .foto{width:100%;height:100%;object-fit:cover;transition:transform .6s cubic-bezier(.2,.6,.2,1)}
  .obra:hover .obra-marco svg,.obra:hover .obra-marco .foto{transform:scale(1.025)}
  .obra-datos{display:flex;justify-content:space-between;gap:1rem;margin-top:.8rem;font-family:var(--ui);font-weight:300}
  .obra-nombre{font-size:1.02rem;letter-spacing:.03em}
  .obra-sitio{display:block;font-size:.8rem;letter-spacing:.09em;color:var(--olivo-hondo);margin-top:.15rem}
  .obra-anio{font-size:.8rem;letter-spacing:.09em;color:var(--olivo-hondo);flex:none}

  /* ---------- quiénes somos ---------- */
  .somos{display:grid;grid-template-columns:repeat(12,1fr);gap:calc(var(--canal)*2) var(--canal);align-items:end}
  .somos-retrato{grid-column:span 6;margin:0}
  .somos-retrato img{width:100%;height:auto;display:block;background:var(--piedra-honda)}
  .somos-retrato figcaption{
    margin-top:.75rem;font-family:var(--ui);font-weight:300;
    font-size:.78rem;letter-spacing:.14em;color:var(--olivo-hondo);
  }
  .somos-intro{grid-column:8 / span 5}
  .somos-intro .lead{
    font-size:clamp(1.15rem,1.9vw,1.42rem);
    line-height:1.45;margin:0;
  }
  /* Alineado con la foto: mismo ancho y misma columna, un párrafo
     debajo del otro, para que todos los renglones corten igual. */
  .somos-cuerpo{
    grid-column:1 / span 6;
    column-count:1;
    margin-top:.6rem;
  }
  .somos-cuerpo p{margin:0 0 1.15rem;max-width:none}
  .somos-cuerpo p:last-child{margin-bottom:0}
  @media(max-width:900px){
    .somos{align-items:start}
    .somos-retrato,.somos-intro,.somos-cuerpo{grid-column:span 12}
    .somos-cuerpo{column-count:1}
  }

  /* ---------- contacto ---------- */
  .tarjetas{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--canal);margin-top:2.4rem}
  .tarjeta{background:var(--olivo);color:var(--blanco);
    padding:clamp(1.6rem,3vw,2.4rem);min-height:15rem;
    display:flex;flex-direction:column;justify-content:space-between;
  }
  @media(max-width:1100px){.tarjetas{grid-template-columns:repeat(2,1fr)}}
  @media(max-width:700px){.tarjetas{grid-template-columns:1fr}.tarjeta{min-height:0}}
  .tarjeta h3{
    font-family:var(--ui);font-weight:300;
    font-size:.82rem;letter-spacing:.18em;margin:0 0 1.4rem;opacity:.75;
  }
  .tarjeta p{margin:0;font-size:1.06rem;line-height:1.55;overflow-wrap:break-word}
  .tarjeta a{text-decoration:none;border-bottom:1px solid rgba(255,255,255,.45)}
  .tarjeta a:hover{border-bottom-color:var(--blanco)}

  /* ---------- ficha y categoría ---------- */
  .volver{
    font-family:var(--ui);font-weight:300;
    font-size:.82rem;letter-spacing:.14em;
    border-bottom:1px solid var(--piedra-honda);
    padding-bottom:.25rem;margin-bottom:2.2rem;
  }
  .volver:hover{border-bottom-color:var(--tinta)}
  .encabezado{padding-top:calc(var(--barra) + clamp(2.5rem,5vw,4rem))}
  /* la portada se muestra completa, sin recortar: las verticales
     también son parte del proyecto */
  .ficha-imagen{
    cursor:zoom-in;
    display:flex;justify-content:flex-start;
    width:fit-content;max-width:100%;
    background:none;
    margin:0 0 2.6rem;
  }
  .ficha-imagen img,.ficha-imagen svg{
    max-width:100%;max-height:78svh;width:auto;height:auto;display:block;
  }

  .galeria{
    column-count:2;column-gap:var(--canal);
    margin-top:3rem;
  }
  .galeria:empty{display:none}
  .galeria button{
    cursor:zoom-in;
    display:block;width:100%;
    margin:0 0 var(--canal);
    break-inside:avoid;
    background:var(--piedra-honda);
    transition:opacity .25s ease;
  }
  .galeria button:hover{opacity:.82}
  .galeria img{width:100%;height:auto;display:block}
  @media(max-width:720px){.galeria{column-count:1}}

  /* visor a pantalla completa */
  .lupa{
    position:fixed;inset:0;z-index:90;
    display:none;align-items:center;justify-content:center;
    background:rgba(20,21,18,.94);
  }
  .lupa[data-abierta="true"]{display:flex}
  .lupa img{max-width:92vw;max-height:88svh;width:auto;height:auto}
  .lupa-cerrar{
    position:absolute;top:1.1rem;right:1.1rem;
    font-family:var(--ui);font-weight:300;font-size:.8rem;letter-spacing:.14em;
    color:var(--piedra);border:1px solid rgba(233,230,221,.35);
    padding:.42rem 1rem;
  }
  .lupa-cerrar:hover{border-color:var(--piedra)}
  .lupa-paso{
    position:absolute;top:50%;transform:translateY(-50%);
    color:var(--piedra);font-size:2.6rem;line-height:1;
    padding:1rem 1.2rem;opacity:.6;
  }
  .lupa-paso:hover{opacity:1}
  .lupa-ant{left:.2rem}
  .lupa-sig{right:.2rem}
  .lupa-cuenta{
    position:absolute;bottom:1.2rem;left:50%;transform:translateX(-50%);
    font-family:var(--ui);font-weight:300;font-size:.78rem;letter-spacing:.14em;
    color:var(--piedra);opacity:.75;
  }
  .ficha-titulo{
    font-family:var(--ui);font-weight:300;
    font-size:clamp(2rem,4.4vw,3.2rem);letter-spacing:.03em;margin:0 0 .3rem;
  }
  .ficha-sitio{
    font-family:var(--ui);font-weight:300;
    font-size:.86rem;letter-spacing:.14em;color:var(--olivo-hondo);margin:0 0 2.6rem;
  }

  .acronimo{color:#A9A69B}
  .acronimo b{font-weight:400;color:var(--olivo-hondo)}
  .cierre{
    padding:1.5rem var(--margen) 2.2rem;
    border-top:1px solid var(--piedra-honda);
    display:flex;flex-wrap:wrap;gap:.4rem 1.8rem;
    font-family:var(--ui);font-weight:300;font-size:.76rem;letter-spacing:.12em;
    color:var(--olivo-hondo);
  }

  /* ---------- acceso ---------- */
  .acceso{
    margin-left:auto;
    font-family:var(--ui);font-weight:300;
    font-size:.76rem;letter-spacing:.12em;
    color:var(--olivo-hondo);opacity:.65;
    border-bottom:1px solid transparent;
    transition:opacity .2s ease,border-color .2s ease;
  }
  .acceso:hover{opacity:1;border-bottom-color:var(--olivo-hondo)}

  .acceso-fondo{
    position:fixed;inset:0;z-index:80;
    display:none;align-items:center;justify-content:center;
    background:rgba(27,28,24,.55);
    padding:var(--margen);
  }
  .acceso-fondo[data-abierto="true"]{display:flex}
  .acceso-panel{
    width:min(22rem,100%);
    background:var(--piedra);
    border:1px solid var(--piedra-honda);
    padding:clamp(1.6rem,3vw,2.2rem);
    display:flex;flex-direction:column;
  }
  .acceso-panel h2{
    font-family:var(--ui);font-weight:300;
    font-size:1.12rem;letter-spacing:.08em;
    margin:0 0 1.6rem;
  }
  .acceso-panel label{
    font-family:var(--ui);font-weight:300;
    font-size:.74rem;letter-spacing:.14em;
    color:var(--olivo-hondo);margin-bottom:.35rem;
  }
  .acceso-panel input{
    font-family:var(--ui);font-size:.95rem;
    color:var(--tinta);background:transparent;
    border:none;border-bottom:1px solid var(--piedra-honda);
    padding:.45rem 0;margin-bottom:1.3rem;
    border-radius:0;
  }
  .acceso-panel input:focus{outline:none;border-bottom-color:var(--olivo)}
  .acceso-aviso{
    font-family:var(--ui);font-size:.8rem;
    margin:0 0 1rem;min-height:1.1rem;color:#8C4A3F;
  }
  .acceso-aviso[data-ok="true"]{color:var(--olivo-hondo)}
  .acceso-botones{display:flex;gap:.6rem;justify-content:flex-end}
  .acceso-botones button{
    font-family:var(--ui);font-weight:300;
    font-size:.82rem;letter-spacing:.1em;
    padding:.5rem 1.1rem;
    border:1px solid var(--piedra-honda);
  }
  .acceso-botones button:hover{border-color:var(--olivo)}
  .acceso-entrar{background:var(--olivo);border-color:var(--olivo) !important;color:var(--blanco)}
  .acceso-entrar:hover{background:var(--olivo-hondo)}

  @media(prefers-reduced-motion:reduce){
    html{scroll-behavior:auto}
    *{transition:none !important;animation:none !important}
  }


/* ============================================================
   Ajustes por el paso a PHP: lo que antes eran <button> ahora
   son <a> reales, con su propia dirección. Hay que devolverles
   la apariencia que tenían.
   ============================================================ */
.firma,.panel,.acceso,.volver,.escena,.bloque,.obra{
  text-decoration:none;color:inherit;
}
.panel{display:flex;align-items:center}
.volver{display:inline-block;background:none;cursor:pointer}
.escena{display:block}
.bloque{cursor:pointer}
span.bloque{cursor:default}
.obra{display:block;cursor:pointer}
.acceso{display:inline-block;background:none}

/* la ficha ahora es una página propia: el título encabeza */
.encabezado h1.titulo,.encabezado h1.ficha-titulo{margin-top:0}


/* ============================================================
   Ficha de proyecto: descripción y tabla de datos.
   ============================================================ */
.duo{
  display:grid;grid-template-columns:repeat(12,1fr);
  gap:calc(var(--canal)*2) var(--canal);align-items:start;
}
/* Todo el contenido de la ficha corre por la izquierda, a plomo con
   la foto: primero la descripción, debajo los datos. */
.duo-texto{grid-column:1 / span 6}
.duo-texto p{max-width:54ch;margin-top:0}
.duo-lista{grid-column:1 / span 5;margin-top:-.6rem}
@media(max-width:900px){
  .duo-texto,.duo-lista{grid-column:span 12}
}

.dato{
  display:flex;gap:.45rem;align-items:baseline;flex-wrap:wrap;
  padding:.85rem 0;
  border-bottom:1px solid var(--piedra-honda);
  font-family:var(--ui);font-weight:300;
  font-size:.95rem;letter-spacing:.03em;
}
.dato-clave{color:var(--olivo-hondo);flex:none}
.dato-valor{color:var(--tinta)}


/* ============================================================
   Redes sociales en la tarjeta de contacto
   ============================================================ */
.redes{display:flex;flex-direction:column;gap:1rem;align-items:flex-start}
.redes a{
  display:inline-flex;align-items:center;gap:.65rem;
  text-decoration:none;border-bottom:none;
}
.redes svg{
  width:23px;height:23px;flex:none;
  fill:none;stroke:currentColor;stroke-width:1.5;
  stroke-linecap:round;stroke-linejoin:round;
}
.redes svg .lleno{fill:currentColor;stroke:none}
.redes a span{
  border-bottom:1px solid rgba(255,255,255,.45);
  padding-bottom:.12rem;
}
.redes a:hover span{border-bottom-color:var(--blanco)}


/* ============================================================
   Celular: la barra no cabe en un renglón y el pie se parte feo.
   ============================================================ */
@media(max-width:720px){
  /* la barra pasa a dos pisos: nombre arriba, los cuatro paneles abajo */
  :root{--barra:5.7rem}
  .barra{flex-direction:column;height:var(--barra)}
  .firma{
    height:3.1rem;padding:0 1rem;
    border-right:none;border-bottom:1px solid var(--piedra-honda);
    font-size:.95rem;letter-spacing:.24em;
  }
  .paneles{width:100%;height:2.6rem}
  .panel{
    flex:1 1 0;justify-content:center;text-align:center;
    padding:0 .25rem;font-size:.68rem;letter-spacing:.03em;
    white-space:normal;line-height:1.15;
  }
  .panel:first-child{border-left:none}
}

@media(max-width:700px){
  /* el pie en columna: sin saltos ni huecos a media línea */
  .cierre{
    flex-direction:column;align-items:flex-start;gap:.5rem;
    padding-bottom:calc(2.2rem + env(safe-area-inset-bottom, 0px));
  }
  .acceso{margin-left:0}
}


/* ============================================================
   Panel: pantalla de categorías
   ============================================================ */
.editar-nombre{display:flex;gap:.35rem;align-items:center}
.editar-nombre input{min-width:11rem;padding:.3rem .45rem;font-size:.9rem}
.mudar{display:flex;gap:.35rem;align-items:center}
.mudar select{padding:.28rem .4rem;font-size:.8rem;border:1px solid var(--piedra-honda);background:#fff;border-radius:0}
.clave{font-size:.8rem;color:var(--olivo-hondo);background:none}
.nueva-cat{display:flex;gap:.8rem;align-items:flex-end;max-width:28rem}
.nueva-cat .campo{flex:1;margin-bottom:0}
