/* Galería de fichas (servicios y paquetes): mosaico + visor. Sin dependencias del build de Tailwind. */
.gvg{display:grid;gap:.75rem;grid-template-columns:repeat(2,minmax(0,1fr))}
.gvg-t{position:relative;display:block;overflow:hidden;border-radius:.75rem;background:#071a33;aspect-ratio:4/3;cursor:zoom-in;isolation:isolate;-webkit-tap-highlight-color:transparent}
.gvg-t img,.gvg-t video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;transition:transform .7s cubic-bezier(.2,.7,.2,1),filter .4s}
.gvg-t::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 55%,rgba(7,26,51,.45));opacity:0;transition:opacity .35s;pointer-events:none}
.gvg-t:hover img,.gvg-t:hover video{transform:scale(1.06)}
.gvg-t:hover::after,.gvg-t:focus-visible::after{opacity:1}
.gvg-t:focus-visible{outline:3px solid var(--gv-primary,#0066a9);outline-offset:3px}
.gvg-t[hidden]{display:none}
.gvg-ic{position:absolute;right:.6rem;bottom:.6rem;z-index:2;display:grid;place-items:center;width:2.25rem;height:2.25rem;border-radius:999px;background:rgba(255,255,255,.92);color:#071a33;opacity:0;transform:translateY(6px);transition:opacity .3s,transform .3s;pointer-events:none}
.gvg-t:hover .gvg-ic,.gvg-t:focus-visible .gvg-ic{opacity:1;transform:none}
@media(hover:none){.gvg-ic{display:none}}
.gvg-play{position:absolute;left:50%;top:50%;z-index:2;display:grid;place-items:center;width:3.5rem;height:3.5rem;margin:-1.75rem 0 0 -1.75rem;border-radius:999px;background:rgba(255,255,255,.92);color:#071a33;box-shadow:0 6px 24px rgba(0,0,0,.3);pointer-events:none}
.gvg-more{position:absolute;inset:0;z-index:3;display:grid;place-items:center;align-content:center;gap:.15rem;background:rgba(7,26,51,.62);color:#fff;font-weight:700;font-size:clamp(1.25rem,3vw,1.75rem);line-height:1;text-align:center;backdrop-filter:blur(2px);pointer-events:none}
.gvg-more small{font-size:.8125rem;font-weight:500;opacity:.9}
/* 1 foto */
.gvg-n1{grid-template-columns:1fr}.gvg-n1 .gvg-t{aspect-ratio:16/9}
/* 3 o más: la primera ocupa todo el ancho en el celular */
.gvg-n3 .gvg-t:first-child,.gvg-n4 .gvg-t:first-child,.gvg-n5 .gvg-t:first-child{grid-column:1/-1;aspect-ratio:16/10}
.gvg-n4{grid-template-columns:repeat(3,minmax(0,1fr))}
@media(min-width:640px){
  .gvg{gap:1rem}
  .gvg-n3{grid-template-columns:2fr 1fr}
  .gvg-n3 .gvg-t:first-child{grid-column:1;grid-row:span 2;aspect-ratio:auto;min-height:100%}
  .gvg-n4{grid-template-columns:2fr 1fr}
  .gvg-n4 .gvg-t:first-child{grid-column:1;grid-row:span 3;aspect-ratio:auto;min-height:100%}
  .gvg-n5{grid-template-columns:repeat(4,minmax(0,1fr))}
  .gvg-n5 .gvg-t:first-child{grid-column:span 2;grid-row:span 2;aspect-ratio:auto;min-height:100%}
}
/* Visor */
.gvl{position:fixed;inset:0;width:100%;height:100%;max-width:none;max-height:none;margin:0;padding:0;border:0;background:rgba(4,12,24,.98);color:#fff;overflow:hidden}
.gvl::backdrop{background:transparent}
.gvl[open]{display:grid;grid-template-rows:auto 1fr auto;animation:gvlin .25s ease-out}
@keyframes gvlin{from{opacity:0}to{opacity:1}}
.gvl-top{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.75rem 1rem;padding-top:max(.75rem,env(safe-area-inset-top))}
.gvl-cnt{font-size:.9375rem;font-weight:600;letter-spacing:.02em;opacity:.9;font-variant-numeric:tabular-nums}
.gvl-b{display:grid;place-items:center;width:2.75rem;height:2.75rem;border:0;border-radius:999px;background:rgba(255,255,255,.12);color:#fff;cursor:pointer;transition:background .2s,transform .2s}
.gvl-b:hover{background:rgba(255,255,255,.24)}.gvl-b:active{transform:scale(.94)}
.gvl-b:focus-visible{outline:3px solid #fff;outline-offset:2px}
.gvl-b svg{width:1.4rem;height:1.4rem}
.gvl-stage{position:relative;min-height:0;display:grid;grid-template:minmax(0,1fr)/minmax(0,1fr);padding:0 3.5rem;touch-action:pan-y}
.gvl-stage img,.gvl-stage video{width:100%;height:100%;min-height:0;object-fit:contain;background:transparent;border-radius:.5rem;user-select:none;-webkit-user-drag:none;animation:gvlimg .3s ease-out}
@keyframes gvlimg{from{opacity:0;transform:scale(.985)}to{opacity:1;transform:none}}
.gvl-nav{position:absolute;top:50%;margin-top:-1.375rem;z-index:2}
.gvl-prev{left:.5rem}.gvl-next{right:.5rem}
.gvl-th{display:flex;gap:.5rem;justify-content:safe center;overflow-x:auto;padding:.75rem 1rem;padding-bottom:max(.75rem,env(safe-area-inset-bottom));scrollbar-width:thin}
.gvl-th button{flex:0 0 auto;position:relative;width:4.5rem;height:3.25rem;padding:0;border:2px solid transparent;border-radius:.5rem;overflow:hidden;background:#0c1e38;cursor:pointer;opacity:.55;transition:opacity .2s,border-color .2s}
.gvl-th button:hover{opacity:.9}
.gvl-th button[aria-current="true"]{opacity:1;border-color:#fff}
.gvl-th button:focus-visible{outline:3px solid #fff;outline-offset:2px}
.gvl-th img{width:100%;height:100%;object-fit:cover;display:block}
.gvl-th .gvl-vt{position:absolute;inset:0;display:grid;place-items:center;color:#fff}
@media(max-width:639px){.gvl-stage{padding:0 .5rem}.gvl-nav{display:none}.gvl-th button{width:3.75rem;height:2.75rem}}
body.gvl-lock{overflow:hidden}
@media(prefers-reduced-motion:reduce){.gvg-t img,.gvg-t video,.gvg-ic{transition:none}.gvl[open],.gvl-stage img,.gvl-stage video{animation:none}}
