.gallery-section{padding-bottom:55px}.gallery-intro{padding-bottom:30px}
.gallery-toolbar{display:flex;gap:18px;align-items:end;flex-wrap:wrap;padding:22px;background:#fff;border:1px solid var(--line);border-radius:10px}
.gallery-toolbar label,.admin-panel label{display:grid;gap:8px;font-size:.8rem;font-weight:600;color:var(--navy)}
.gallery-toolbar input,.gallery-toolbar select,.admin-panel input,.admin-panel select{font:inherit;color:var(--ink);background:#fff;border:1px solid #b9c8da;border-radius:6px;min-height:46px;padding:10px 12px;width:100%;min-width:0}
.gallery-toolbar label:first-child{min-width:150px}.gallery-search{flex:1;min-width:180px}.gallery-result{font-size:.8rem;color:var(--muted);margin:24px 0 15px}
.album-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px 20px}.album-card{overflow:hidden;background:#fff;border:1px solid var(--line);border-radius:10px;min-width:0;transition:border-color .15s}.album-card:hover{border-color:var(--gold)}
.album-cover{aspect-ratio:3/2;background:var(--warm);display:flex;align-items:center;justify-content:center;overflow:hidden}.album-cover img{width:100%;height:100%;object-fit:cover}.album-cover>span{font-size:3rem;color:var(--gold)}
.album-card-body{position:relative;padding:20px;padding-inline-end:32px}.album-year{font-size:.75rem;color:var(--gold-dark);font-weight:700}.album-card h2{font-size:1.1rem;line-height:1.6;margin-top:5px}.album-count{display:block;font-size:.77rem;color:var(--muted);margin-top:12px}.album-arrow{position:absolute;right:18px;bottom:18px;color:var(--gold-dark)}
.gallery-empty{padding:40px 0;color:var(--muted)}.gallery-bottom{padding-top:35px;text-align:end}.album-detail-heading{margin:24px 0 30px}.album-detail-heading h2{font-size:1.9rem}.album-detail-heading .eyebrow{display:block;margin-bottom:8px}
.photo-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.gallery-photo{position:relative;min-width:0;border:0;padding:0;overflow:hidden;border-radius:8px;background:#e8edf2;aspect-ratio:4/3}.gallery-photo img{width:100%;height:100%;object-fit:cover}.gallery-photo:hover img{filter:brightness(.95)}.photo-number{position:absolute;bottom:8px;right:8px;min-width:26px;padding:2px 6px;background:rgba(10,29,51,.75);color:#fff;border-radius:4px;font-size:.7rem}.gallery-more{margin:28px auto 0;display:flex;min-width:170px}
.viewer-open{overflow:hidden}.photo-viewer{position:fixed;inset:0;margin:auto;border:0;padding:0;width:calc(100vw - 40px);max-width:1440px;height:calc(100dvh - 40px);max-height:none;background:#091522;color:#fff;border-radius:10px;overflow:hidden}.photo-viewer::backdrop{background:rgba(4,10,17,.9)}
.viewer-close{position:absolute;right:12px;top:12px;z-index:2;width:48px;height:48px;font-size:2rem;border:1px solid #76859a;border-radius:50%;background:#102237;color:#fff}.viewer-stage{height:calc(100% - 80px);padding:24px 64px;display:flex;align-items:center;justify-content:center;touch-action:pan-y pinch-zoom}.viewer-stage img{max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain}.viewer-footer{height:80px;display:flex;align-items:center;justify-content:center;gap:24px;padding:12px 22px;border-top:1px solid #364657}.viewer-footer button{border:1px solid #76859a;background:transparent;color:#fff;min-width:48px;min-height:48px;border-radius:7px;font-size:1.3rem}.viewer-footer button:disabled{opacity:.45;cursor:default}.viewer-footer a{font-size:.8rem;text-decoration:underline;text-underline-offset:4px;min-height:44px;display:inline-flex;align-items:center}.viewer-footer>span{font-size:.9rem;min-width:65px;text-align:center}
.gallery-admin{padding-bottom:55px}.admin-status{font-size:.9rem;min-height:1.8em;margin:20px 0}.admin-panel{padding:28px;background:#fff;border:1px solid var(--line);border-radius:10px;min-width:0}.admin-panel h2{margin-bottom:18px}.admin-panel label{margin:20px 0}.admin-panel>.button{margin-top:5px}.admin-panel>.text-link{display:flex;margin-top:15px}.admin-panel small{font-weight:400;font-size:.75rem;color:var(--muted);line-height:1.8}.admin-columns{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.618fr);gap:24px;align-items:start}.admin-session{display:flex;justify-content:space-between;gap:18px;align-items:center;margin-bottom:24px;font-size:.83rem;overflow-wrap:anywhere}.admin-panel input[type=file]{background:#f8fafc}.upload-previews{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:18px}.upload-previews img{width:100%;height:90px;object-fit:cover;border-radius:5px}.admin-panel progress{width:100%;margin-top:18px;accent-color:var(--navy)}.upload-errors{padding-inline-start:20px;color:#8f2634;font-size:.8rem;overflow-wrap:anywhere}.admin-panel button:disabled{opacity:.6;cursor:wait}
@media(max-width:1150px){.album-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.admin-columns{grid-template-columns:1fr}}
@media(max-width:600px){.gallery-toolbar{padding:18px;gap:15px}.gallery-toolbar label{width:100%;min-width:0}.album-grid{gap:14px 12px}.album-card-body{padding:14px 12px 16px}.album-card h2{font-size:.93rem}.album-card .album-year{font-size:.7rem}.album-count{font-size:.7rem}.album-arrow{right:10px;bottom:15px}.photo-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.album-detail-heading h2{font-size:1.55rem}.photo-viewer{width:100vw;height:100dvh;border-radius:0}.viewer-stage{padding:58px 8px 10px;height:calc(100% - 132px)}.viewer-footer{height:132px;gap:14px;flex-wrap:wrap;padding:10px 20px 22px}.viewer-footer a{flex-basis:100%;justify-content:center;min-height:30px}.viewer-close{width:44px;height:44px}.admin-panel{padding:22px 18px}.admin-session{flex-wrap:wrap}.gallery-section,.gallery-admin{padding-bottom:40px}}
@media(max-width:359px){.album-grid{grid-template-columns:1fr}}
html[data-text-size=large] .album-grid{grid-template-columns:repeat(auto-fit,minmax(min(230px,100%),1fr))}
