:root{
  --paper:#E9E9E4;
  --vellum:#F4F4F0;
  --ink:#16181A;
  --graphite:#6B7075;
  --hairline:#C7C8C1;
  --survey:#2D5C88;
  --survey-hondo:#1F4468;
  --scrim:#0E1012;

  --display:"Arial Narrow","Helvetica Neue Condensed",Haettenschweiler,sans-serif;
  --body:Georgia,"Iowan Old Style","Times New Roman",serif;
  --data:ui-monospace,"SF Mono",Menlo,Consolas,"Liberation Mono",monospace;

  --pad:clamp(18px,4vw,56px);
}

*{box-sizing:border-box}
html,body{margin:0}
body{
  background:var(--paper);
  color:var(--ink);
  font-family:var(--body);
  font-size:16px;
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
}
img{display:block;max-width:100%}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
a{color:var(--survey)}

:focus-visible{outline:2px solid var(--survey);outline-offset:3px}

/* ---------- marco de hoja ---------- */
.hoja{
  max-width:1500px;margin:0 auto;padding:0 var(--pad);
}

/* ---------- cabecera ---------- */
.cab{
  display:flex;align-items:flex-end;justify-content:space-between;gap:24px;
  padding:clamp(26px,5vw,54px) 0 18px;
  border-bottom:1px solid var(--ink);
}
.marca{text-decoration:none;color:inherit}
.marca h1{margin:0;line-height:0}
.firma{
  width:clamp(200px,27vw,346px);
  height:auto;
  transition:opacity .25s;
}
.marca:hover .firma{opacity:.78}
.marca .sub{
  font-family:var(--data);
  font-size:10px;letter-spacing:.24em;text-transform:uppercase;
  color:var(--graphite);margin-top:10px;
}

/* ---------- navegación ---------- */
.hamb{
  display:none;
  font-family:var(--data);font-size:11px;letter-spacing:.2em;text-transform:uppercase;
  padding:9px 13px;border:1px solid var(--ink);
}
.nav ul{display:flex;gap:26px;list-style:none;margin:0;padding:0;flex-wrap:wrap}
.nav button{
  font-family:var(--data);
  font-size:11px;letter-spacing:.19em;text-transform:uppercase;
  color:var(--graphite);
  padding:4px 0 6px;
  border-bottom:1px solid transparent;
  transition:color .2s,border-color .2s;
}
.nav button:hover{color:var(--ink)}
.nav button[aria-current="true"]{color:var(--ink);border-bottom-color:var(--survey)}

/* ---------- barra de estado ---------- */
.estado{
  display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;
  font-family:var(--data);font-size:10px;letter-spacing:.18em;text-transform:uppercase;
  color:var(--graphite);
  padding:12px 0 clamp(22px,4vw,40px);
}

/* ---------- mosaico ---------- */
.mosaico{
  column-gap:clamp(14px,2vw,26px);
  columns:4;
  padding-bottom:60px;
}
@media (max-width:1180px){.mosaico{columns:3}}
@media (max-width:760px){.mosaico{columns:2}}
@media (max-width:460px){.mosaico{columns:1}}

.placa{
  break-inside:avoid;
  width:100%;
  margin:0 0 clamp(14px,2vw,26px);
  padding:0;
  display:block;
  position:relative;
  transition:transform .45s cubic-bezier(.2,.7,.3,1), box-shadow .45s;
  transform:rotate(var(--tilt,0deg));
  will-change:transform;
}
/* ritmo irregular: desplaza algunas placas para romper la retícula */
.placa:nth-child(4n+2){margin-top:clamp(16px,3vw,40px)}
.placa:nth-child(6n+5){margin-top:clamp(8px,2vw,24px)}

.placa .marco{
  position:relative;
  overflow:hidden;
  background:var(--vellum);
  box-shadow:0 1px 0 rgba(22,24,26,.12);
  transition:box-shadow .45s;
}
.placa .img{
  width:100%;
  aspect-ratio:var(--ratio,3/2);
  object-fit:cover;
  transition:transform .6s cubic-bezier(.2,.7,.3,1);
}
.placa:hover,.placa:focus-visible{
  transform:rotate(0deg) translateY(-8px) scale(1.022);
  z-index:2;
}
.placa:hover .marco,.placa:focus-visible .marco{
  box-shadow:0 18px 38px -14px rgba(22,24,26,.42);
}
.placa:hover .img{transform:scale(1.05)}

.pie{
  display:flex;justify-content:space-between;align-items:baseline;gap:12px;
  padding-top:9px;
  opacity:0;transform:translateY(-4px);
  transition:opacity .35s,transform .35s;
  text-align:left;
}
.placa:hover .pie,.placa:focus-visible .pie{opacity:1;transform:none}
.pie .tit{
  font-family:var(--display);
  font-size:13px;letter-spacing:.13em;text-transform:uppercase;
}
.pie .idx{font-family:var(--data);font-size:10px;color:var(--graphite);letter-spacing:.1em}

/* ---------- contacto ---------- */
.contacto{max-width:620px;padding:10px 0 90px}
.contacto h2,.intro h2{
  font-family:var(--display);font-weight:700;
  font-size:clamp(22px,3vw,32px);letter-spacing:.14em;text-transform:uppercase;
  margin:0 0 14px;
}
.contacto p{color:var(--graphite);margin:0 0 30px}
.redes{max-width:none}

.redes-lista{
  list-style:none;margin:0;padding:0;max-width:720px;
  display:flex;gap:clamp(12px,2vw,20px);flex-wrap:wrap;
}
.redes-lista li{flex:1 1 160px}
.redes-lista a{
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;
  padding:clamp(30px,4vw,46px) 20px;
  border:1px solid var(--hairline);
  color:var(--ink);text-decoration:none;
  transition:border-color .25s,color .25s,transform .25s;
}
.redes-lista a:hover,.redes-lista a:focus-visible{
  border-color:var(--survey);color:var(--survey);
  transform:translateY(-4px);
}
.redes-lista span{
  font-family:var(--display);font-size:14px;letter-spacing:.14em;text-transform:uppercase;
}
.red-icono{width:38px;height:38px}
.red-icono--texto{
  width:auto;height:38px;
  display:inline-flex;align-items:center;
  font-family:var(--display);font-weight:700;
  font-size:28px;line-height:1;color:currentColor;
}
.red-icono--texto sup{font-size:.4em;margin-left:1px}

/* ---------- pie ---------- */
.logo-pie{width:clamp(168px,20vw,232px);height:auto;opacity:.9}
.pieweb{
  border-top:1px solid var(--ink);
  padding:22px 0 44px;
  display:flex;justify-content:space-between;align-items:center;gap:20px;flex-wrap:wrap;
  font-family:var(--data);font-size:10px;letter-spacing:.18em;text-transform:uppercase;
  color:var(--graphite);
}

/* ---------- visor ---------- */
.visor{
  position:fixed;inset:0;z-index:50;
  background:var(--scrim);
  display:none;
  opacity:0;transition:opacity .3s;
}
.visor.abierto{display:block;opacity:1}
.visor-int{
  height:100%;
  display:grid;
  grid-template-columns:1fr 320px;
  grid-template-rows:minmax(0,1fr);
}
.visor-img{
  position:relative;
  display:flex;align-items:center;justify-content:center;
  padding:clamp(16px,4vw,54px);
  min-width:0;
}
.visor-img .img{
  max-width:min(100%,1100px);
  max-height:100%;
  object-fit:contain;
  box-shadow:0 30px 70px -30px rgba(0,0,0,.8);
}
.ficha{
  background:#15181A;
  color:#D8D9D4;
  padding:clamp(22px,3vw,34px);
  overflow-y:auto;
  border-left:1px solid #2A2E31;
}
.ficha h3{
  font-family:var(--display);font-weight:700;
  font-size:22px;letter-spacing:.13em;text-transform:uppercase;
  margin:0 0 6px;color:#F2F2EE;
}
.ficha .lugar{
  font-family:var(--data);font-size:10px;letter-spacing:.2em;text-transform:uppercase;
  color:#8A9094;margin-bottom:22px;
}
.ficha .desc{font-size:14.5px;line-height:1.65;color:#B9BCB8;margin:0 0 28px;white-space:pre-line}
.bloque{
  font-family:var(--data);font-size:11px;
  border-top:1px solid #2A2E31;
}
.bloque .fila{
  display:flex;justify-content:space-between;gap:14px;
  padding:8px 0;
  border-bottom:1px solid #2A2E31;
}
.bloque .k{color:#7C8286;letter-spacing:.14em;text-transform:uppercase;font-size:10px}
.bloque .v{color:#E4E5E1;text-align:right}
.rotulo{
  font-family:var(--data);font-size:10px;letter-spacing:.22em;text-transform:uppercase;
  color:#5F6569;margin:26px 0 8px;
}
.cerrar{
  position:absolute;top:16px;right:16px;
  font-family:var(--data);font-size:11px;letter-spacing:.16em;text-transform:uppercase;
  color:#C9CBC6;padding:9px 13px;border:1px solid #3A3E41;
}
.cerrar:hover{border-color:#C9CBC6}
.flecha{
  position:absolute;top:50%;transform:translateY(-50%);
  font-family:var(--data);font-size:20px;color:#C9CBC6;
  padding:16px 12px;
}
.flecha:hover{color:#fff}
.flecha.ant{left:6px}
.flecha.sig{right:6px}

@media (max-width:900px){
  .visor-int{grid-template-columns:1fr;grid-template-rows:minmax(0,1fr) auto;overflow-y:auto}
  .ficha{border-left:0;border-top:1px solid #2A2E31}
  .visor-img{padding:54px 16px 8px}
}

/* ---------- menú móvil ---------- */
@media (max-width:820px){
  .cab{align-items:center}
  .hamb{display:block}
  .nav{
    display:none;
    position:fixed;inset:0;z-index:40;
    background:var(--paper);
    padding:88px var(--pad);
  }
  .nav.abierto{display:block}
  .nav ul{flex-direction:column;gap:0}
  .nav li{border-bottom:1px solid var(--hairline)}
  .nav button{
    display:block;width:100%;text-align:left;
    font-size:15px;letter-spacing:.16em;padding:20px 0;
  }
  .nav button[aria-current="true"]{border-bottom-color:transparent;color:var(--survey)}
}

@media (prefers-reduced-motion:reduce){
  *{transition:none!important;animation:none!important}
  .placa{transform:none}
  .placa:hover{transform:none}
  .pie{opacity:1;transform:none}
}

/* ---------- banner de cookies ---------- */
.banner-cookies{
  position:fixed;left:0;right:0;bottom:0;z-index:60;
  background:var(--ink);color:var(--paper);
  padding:20px var(--pad);
  display:flex;flex-wrap:wrap;gap:18px;align-items:center;justify-content:space-between;
  border-top:1px solid #000;
}
.banner-cookies p{
  margin:0;max-width:640px;flex:1 1 320px;
  font-family:var(--data);font-size:12px;line-height:1.7;color:#D8D9D4;
}
.banner-cookies a{color:#fff}
.banner-cookies-botones{display:flex;gap:10px;flex-shrink:0}
.banner-cookies-botones button{
  font-family:var(--data);font-size:11px;letter-spacing:.14em;text-transform:uppercase;
  padding:11px 22px;border:1px solid var(--paper);color:var(--paper);
  transition:border-color .2s,color .2s;
}
.banner-cookies-botones button:hover{border-color:var(--survey);color:var(--survey)}

/* ---------- pagina legal (cookies.php) ---------- */
.legal{max-width:680px;padding:10px 0 90px}
.legal h2{
  font-family:var(--display);font-weight:700;
  font-size:clamp(22px,3vw,32px);letter-spacing:.14em;text-transform:uppercase;
  margin:0 0 20px;
}
.legal h3{
  font-family:var(--display);font-weight:700;
  font-size:15px;letter-spacing:.1em;text-transform:uppercase;
  margin:34px 0 10px;
}
.legal p{color:var(--graphite);margin:0 0 16px}
.legal table{width:100%;border-collapse:collapse;font-family:var(--data);font-size:12.5px;margin:14px 0}
.legal th,.legal td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--hairline);vertical-align:top}
.legal th{color:var(--graphite);font-weight:400;text-transform:uppercase;letter-spacing:.08em;font-size:11px}
.legal .volver{
  display:inline-block;margin-top:10px;
  font-family:var(--data);font-size:11px;letter-spacing:.16em;text-transform:uppercase;
}
