/* ===== Gallery: arch mosaic + viewer ===== */
.g-count{text-align:center;color:#6b6b6b;font-size:.88rem;margin:-18px 0 26px}
.filters em{font-style:normal;font-size:.75rem;opacity:.7;margin-left:4px}

.mosaic{display:grid;grid-template-columns:repeat(4,1fr);grid-auto-rows:240px;grid-auto-flow:dense;gap:16px}
.g-tile{position:relative;overflow:hidden;border-radius:14px;background:var(--maroon-dark);cursor:zoom-in;box-shadow:0 10px 26px rgba(61,10,31,.2);outline-offset:4px;
  opacity:0;transform:translateY(26px) scale(.985);transition:opacity .7s ease,transform .7s ease,box-shadow .4s ease}
.g-tile.in{opacity:1;transform:none}
.g-tile:hover{box-shadow:0 16px 40px rgba(61,10,31,.35)}
.size-big{grid-column:span 2;grid-row:span 2}
.size-tall{grid-row:span 2}
.size-wide{grid-column:span 2}
.g-tile.arch{border-radius:50% 50% 14px 14px / 26% 26% 14px 14px;box-shadow:0 0 0 2px var(--gold),0 10px 26px rgba(61,10,31,.2)}
.g-tile.is-hidden{display:none}
.mosaic.filtered .g-tile{grid-column:auto;grid-row:auto}

.g-tile img{width:100%;height:100%;object-fit:cover;transition:transform 1.1s cubic-bezier(.2,.7,.2,1)}
.g-tile::before{content:"";position:absolute;inset:0;z-index:1;background:linear-gradient(180deg,rgba(61,10,31,0) 42%,rgba(40,6,22,.9));opacity:0;transition:opacity .45s ease}
.g-tile::after{content:"";position:absolute;inset:12px;z-index:2;border:1px solid var(--gold-light);border-radius:inherit;opacity:0;transform:scale(.95);transition:opacity .45s ease,transform .45s ease;pointer-events:none}
.g-tile figcaption{position:absolute;left:0;right:0;bottom:0;z-index:3;padding:18px 70px 24px 22px;color:var(--ivory);opacity:0;transform:translateY(14px);transition:opacity .45s ease,transform .45s ease}
.g-tile.arch figcaption{text-align:center;padding:18px 24px 26px}
.g-tile figcaption small{display:block;color:var(--gold-light);font-size:.8rem}
.g-tile figcaption b{font-family:var(--ff-head);font-weight:500;font-size:1.15rem;line-height:1.25}
.g-zoom{position:absolute;right:16px;bottom:18px;z-index:3;width:38px;height:38px;border-radius:50%;background:var(--gold);color:var(--maroon-dark);display:grid;place-items:center;opacity:0;transform:scale(.6);transition:opacity .4s ease,transform .4s ease}
.g-zoom svg{width:18px;height:18px}
.g-tile.arch .g-zoom{display:none}
.g-tile:hover img,.g-tile:focus-visible img{transform:scale(1.09)}
.g-tile:hover::before,.g-tile:focus-visible::before{opacity:1}
.g-tile:hover::after,.g-tile:focus-visible::after{opacity:.9;transform:scale(1)}
.g-tile:hover figcaption,.g-tile:focus-visible figcaption{opacity:1;transform:none}
.g-tile:hover .g-zoom,.g-tile:focus-visible .g-zoom{opacity:1;transform:none}

@media (hover:none){
  .g-tile::before{opacity:1}
  .g-tile::after{display:none}
  .g-tile figcaption{opacity:1;transform:none}
  .g-zoom{display:none}
}
@media (max-width:1024px){.mosaic{grid-template-columns:repeat(3,1fr);grid-auto-rows:210px;gap:14px}}
@media (max-width:640px){
  .mosaic{grid-template-columns:repeat(2,1fr);grid-auto-rows:150px;gap:10px}
  .g-tile figcaption,.g-tile.arch figcaption{padding:12px 14px 14px}
  .g-tile figcaption small{font-size:.7rem}
  .g-tile figcaption b{font-size:.92rem}
  .g-tile::after{inset:8px}
  .filters{gap:8px}.filters button{padding:7px 14px;font-size:.82rem}
}
@media (prefers-reduced-motion:reduce){.g-tile,.g-tile img,.g-tile figcaption,.g-zoom{transition:none}.g-tile{opacity:1;transform:none}}

/* ===== Viewer ===== */
body.lb-open{overflow:hidden}
.lb{position:fixed;inset:0;z-index:2100;background:rgba(28,4,16,.96);display:none;align-items:center;justify-content:center;padding:60px 84px 70px}
.lb.open{display:flex}
.lb figure{max-width:1100px;max-height:100%;display:flex;flex-direction:column;align-items:center;gap:14px}
.lb img{max-width:100%;max-height:calc(100vh - 210px);object-fit:contain;border:2px solid var(--gold);border-radius:8px;box-shadow:0 24px 70px rgba(0,0,0,.55);background:var(--maroon-dark)}
.lb img.swap{animation:lbIn .45s ease}
@keyframes lbIn{from{opacity:0;transform:scale(.97)}to{opacity:1;transform:none}}
.lb figcaption{text-align:center;color:var(--ivory)}
.lb figcaption small{display:block;color:var(--gold-light);font-size:.85rem}
.lb figcaption b{font-family:var(--ff-head);font-weight:500;font-size:1.3rem}
.lb figcaption span{display:block;color:var(--blush);font-size:.8rem;margin-top:2px}
.lb-btn{position:absolute;width:48px;height:48px;border-radius:50%;border:1px solid var(--gold);background:rgba(61,10,31,.6);color:var(--gold-light);font-size:1.9rem;line-height:1;cursor:pointer;transition:var(--ease);display:grid;place-items:center;padding:0 0 4px}
.lb-btn:hover{background:var(--gold);color:var(--maroon-dark)}
.lb-close{top:18px;right:18px}
.lb-prev{left:20px;top:50%;margin-top:-24px}
.lb-next{right:20px;top:50%;margin-top:-24px}
@media (max-width:640px){
  .lb{padding:64px 12px 92px}
  .lb img{max-height:calc(100vh - 250px)}
  .lb-prev,.lb-next{top:auto;bottom:22px;margin-top:0}
  .lb-prev{left:22px}.lb-next{right:22px}
}
@media (prefers-reduced-motion:reduce){.lb img.swap{animation:none}}

/* ===== v9: uniform portrait grid + viewer link ===== */
.mosaic{grid-template-columns:repeat(4,1fr);grid-auto-rows:auto;grid-auto-flow:row;gap:16px}
.g-tile{aspect-ratio:4/5}
#filters{scroll-margin-top:calc(var(--nav-h) + 16px)}
.lb-link{display:inline-block;margin-top:8px;padding-bottom:2px;border-bottom:1px solid var(--gold);color:var(--gold-light);font-size:.88rem}
.lb-link:hover{color:#fff}
@media (max-width:1024px){.mosaic{grid-template-columns:repeat(3,1fr);grid-auto-rows:auto;gap:14px}}
@media (max-width:640px){.mosaic{grid-template-columns:repeat(2,1fr);grid-auto-rows:auto;gap:10px}}
