.gallery-public{color:#0b1528;background:#f8fafc;min-height:60vh}
.gallery-hero{position:relative;overflow:hidden;background:#0b1528;color:#fff;padding:clamp(5.5rem,10vw,9rem) 24px clamp(4.5rem,8vw,7rem)}
.gallery-hero__inner{position:relative;z-index:1;max-width:1180px;margin:auto}
.gallery-kicker{display:inline-block;color:#e2c266;font:700 .72rem/1.2 'Plus Jakarta Sans',sans-serif;letter-spacing:.2em}
.gallery-hero h1{max-width:760px;margin:1rem 0 .9rem;font:500 clamp(3rem,7vw,6rem)/.98 'Playfair Display',serif;letter-spacing:-.04em;color:#fff}
.gallery-hero p{max-width:590px;margin:0;color:#c3ccda;font:400 clamp(1rem,2vw,1.2rem)/1.7 'Plus Jakarta Sans',sans-serif}
.gallery-hero__link{display:inline-flex;gap:.8rem;align-items:center;margin-top:2rem;color:#fff;text-decoration:none;font:600 .9rem 'Plus Jakarta Sans',sans-serif}
.gallery-hero__link span{color:#e2c266;font-size:1.2rem}
.gallery-hero__ornament{position:absolute;right:8%;top:50%;width:310px;height:310px;transform:translateY(-50%);border:1px solid rgba(226,194,102,.22);border-radius:50%}
.gallery-hero__ornament:before,.gallery-hero__ornament:after{content:'';position:absolute;inset:28px;border:1px solid rgba(226,194,102,.16);border-radius:50%}
.gallery-hero__ornament:after{inset:60px}
.gallery-hero__ornament span{position:absolute;top:50%;left:50%;width:8px;height:8px;border-radius:50%;background:#e2c266;transform:translate(-50%,-50%)}
.gallery-hero__ornament span:nth-child(2){top:20%;left:25%;opacity:.65}.gallery-hero__ornament span:nth-child(3){top:73%;left:79%;opacity:.45}
.gallery-section{max-width:1240px;margin:auto;padding:clamp(3.5rem,7vw,6rem) 24px 7rem}
.gallery-section__head{display:flex;align-items:end;justify-content:space-between;gap:2rem;margin-bottom:2.2rem}
.gallery-kicker--dark{color:#9c7a24}
.gallery-section__head h2{margin:.65rem 0 0;color:#0b1528;font:500 clamp(2rem,4vw,3.4rem)/1.1 'Playfair Display',serif;letter-spacing:-.025em}
.gallery-filters{display:flex;gap:.35rem;padding:.3rem;border:1px solid #e4e9f0;border-radius:999px;background:#fff}
.gallery-filters button{border:0;border-radius:999px;background:transparent;color:#5b6678;padding:.7rem 1rem;font:600 .8rem 'Plus Jakarta Sans',sans-serif;cursor:pointer;transition:all .2s ease}
.gallery-filters button:hover{color:#0b1528}.gallery-filters button.is-active{background:#0b1528;color:#fff}
.gallery-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1.5rem}
.gallery-card{overflow:hidden;border:1px solid #e9edf2;border-radius:12px;background:#fff;box-shadow:0 12px 35px rgba(11,21,40,.045);transition:transform .25s ease,box-shadow .25s ease}
.gallery-card:hover{transform:translateY(-5px);box-shadow:0 22px 45px rgba(11,21,40,.11)}
.gallery-card__visual{position:relative;display:block;width:100%;aspect-ratio:1.42/1;overflow:hidden;border:0;padding:0;background:#101a2a;cursor:pointer;text-align:left}
.gallery-card__visual img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .5s ease}
.gallery-card:hover .gallery-card__visual img{transform:scale(1.045)}
.gallery-card__shade{position:absolute;inset:35% 0 0;background:linear-gradient(transparent,rgba(6,13,25,.58))}
.gallery-card__kind{position:absolute;left:1rem;top:1rem;padding:.42rem .62rem;border:1px solid rgba(255,255,255,.36);border-radius:999px;background:rgba(9,17,31,.62);color:#fff;font:700 .62rem 'Plus Jakarta Sans',sans-serif;letter-spacing:.13em}
.gallery-card__play{position:absolute;right:1rem;bottom:1rem;display:grid;width:42px;height:42px;place-items:center;border:1px solid rgba(255,255,255,.65);border-radius:50%;background:rgba(255,255,255,.16);color:#fff;font:600 1rem 'Plus Jakarta Sans',sans-serif;backdrop-filter:blur(7px)}
.gallery-card__body{padding:1.2rem 1.25rem 1.35rem}
.gallery-card__event{color:#9c7a24;font:700 .68rem/1.4 'Plus Jakarta Sans',sans-serif;letter-spacing:.1em;text-transform:uppercase}
.gallery-card__body h3{margin:.5rem 0;color:#0b1528;font:600 1.25rem/1.25 'Playfair Display',serif}
.gallery-card__body p{margin:.55rem 0;color:#667286;font:400 .86rem/1.65 'Plus Jakarta Sans',sans-serif;white-space:normal}
.gallery-card__body time{display:block;margin-top:.8rem;color:#8993a2;font:500 .72rem 'Plus Jakarta Sans',sans-serif}
.gallery-empty{display:grid;justify-items:center;padding:5rem 1rem;border:1px dashed #d6dde7;border-radius:14px;background:#fff;text-align:center}
.gallery-empty>span{color:#bc9a43;font-size:2rem}.gallery-empty h3{margin:.8rem 0 .3rem;font:500 1.6rem 'Playfair Display',serif}.gallery-empty p{margin:0;color:#667286;font:400 .9rem 'Plus Jakarta Sans',sans-serif}
.gallery-no-results{text-align:center;color:#667286;padding:2rem;font:500 .9rem 'Plus Jakarta Sans',sans-serif}
.gallery-lightbox[hidden]{display:none}.gallery-lightbox{position:fixed;z-index:100001;inset:0;display:grid;place-items:center;padding:5vh 5vw;background:rgba(4,9,18,.94)}
.gallery-lightbox__close{position:absolute;right:24px;top:18px;width:48px;height:48px;border:1px solid rgba(255,255,255,.3);border-radius:50%;background:rgba(255,255,255,.1);color:#fff;font-size:2rem;line-height:1;cursor:pointer}
.gallery-lightbox__content{display:grid;place-items:center;width:min(1100px,100%);max-height:90vh}.gallery-lightbox__content img{display:block;max-width:100%;max-height:88vh;object-fit:contain;border-radius:4px}.gallery-lightbox__content iframe{width:min(100%,1100px);aspect-ratio:16/9;border:0;border-radius:8px;background:#000}
.gallery-modal-open{overflow:hidden}
@media(max-width:900px){.gallery-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.gallery-hero__ornament{right:-100px;opacity:.55}}
@media(max-width:620px){.gallery-section__head{align-items:flex-start;flex-direction:column;gap:1.2rem}.gallery-filters{width:100%;justify-content:space-between}.gallery-filters button{flex:1;padding:.65rem .45rem}.gallery-grid{grid-template-columns:1fr;gap:1rem}.gallery-section{padding-right:18px;padding-left:18px}.gallery-card__visual{aspect-ratio:1.45/1}.gallery-hero{padding-right:20px;padding-left:20px}.gallery-hero__ornament{right:-210px}.gallery-lightbox{padding:4vh 14px}}
@media(prefers-reduced-motion:reduce){.gallery-card,.gallery-card__visual img,.gallery-filters button{transition:none}}
