.section-gallery, .section-gallery-list { padding: 40px 0; }
.section-gallery .container, .section-gallery-list .container { max-width: 1140px; margin: 0 auto; }
/* Masonry (columns-based) */
.opg-masonry{ column-count: 3; column-gap: 16px; }
@media (max-width: 1024px){ .opg-masonry{ column-count: 2; } }
@media (max-width: 640px){ .opg-masonry{ column-count: 1; } }
.opg-masonry .opg-masonry-item{ break-inside: avoid; margin: 0 0 16px; display:block; }
.opg-item { position: relative; }
.opg-item .thumb { width: 100%; height: auto; border-radius: 12px; box-shadow: 0 2px 10px rgba(0,0,0,.08); display:block; }
.opg-cap{ font-size:13px; color:#444; margin-top:6px; }
.opg-video .opg-video-thumb{ height:220px; border-radius:12px; display:flex; align-items:center; justify-content:center; background:#111; color:#fff; font-size:14px; gap:10px; box-shadow: 0 2px 10px rgba(0,0,0,.08);} 
.opg-video .opg-play{ font-size:28px; opacity:.9 }
.opg-card{ border-radius:16px; overflow:hidden; background:#fff; box-shadow:0 2px 12px rgba(0,0,0,.06); transition: transform .15s ease, box-shadow .15s ease; }
.opg-card:hover{ transform: translateY(-2px); box-shadow:0 6px 20px rgba(0,0,0,.08); }
.opg-thumb{ width:100%; padding-top:60%; background-size:cover; background-position:center; }
.opg-card-body{ padding:14px 16px; }
.opg-title{ margin:0 0 4px; font-size:18px; }
.opg-excerpt{ margin:0; color:#555; font-size:14px; }
.opg-badge{ display:inline-block; background:#111; color:#fff; font-size:12px; padding:2px 8px; border-radius:999px; margin-top:6px; }
/* Banner + Unlock */
.opg-banner{ background:#fff7cc; border:1px solid #f4e08a; padding:12px 14px; border-radius:12px; margin-bottom:16px; display:flex; align-items:center; gap:12px; flex-wrap:wrap; }
.opg-unlock input[type=password]{ padding:6px 8px; border:1px solid #ccc; border-radius:8px; }
.opg-unlock button{ padding:6px 10px; border-radius:8px; border:0; background:#111; color:#fff; }
/* Locked blur */
.opg-locked .opg-locked-wrap{ filter: blur(14px) grayscale(60%); transform: scale(1.02); }
.opg-locked::after{ content:''; position:absolute; inset:0; box-shadow: inset 0 0 0 9999px rgba(255,255,255,.05); border-radius:12px; }
.opg-lock{ position:absolute; bottom:10px; left:10px; background:rgba(0,0,0,.7); color:#fff; font-size:12px; padding:4px 8px; border-radius:8px; }
/* Modal */
.opg-modal{ position:fixed; inset:0; display:block; opacity:0; pointer-events:none; transition:opacity .2s; z-index:9999; }
.opg-modal[aria-hidden="false"]{ opacity:1; pointer-events:auto; }
.opg-modal-backdrop{ position:absolute; inset:0; background:rgba(0,0,0,.6); }
.opg-modal-dialog{ position:relative; max-width:min(1000px,92vw); margin:6vh auto; background:#fff; border-radius:14px; overflow:hidden; }
.opg-modal-content{ padding:0; }
.opg-close{ position:absolute; top:8px; right:10px; border:0; background:transparent; font-size:28px; line-height:1; cursor:pointer; }