/* ========================================================= Video Popup Button — bkbg-vp-* ========================================================= */ /* ── Outer wrapper ─────────────────────────────────────── */ .bkbg-vp-outer { display: block; box-sizing: border-box; } /* ── Button outer (alignment container) ────────────────── */ .bkbg-vp-btn-outer { display: block; box-sizing: border-box; } .bkbg-vp-btn-wrap { display: inline-block; vertical-align: top; } .bkbg-vp-btn-outer[style*="text-align: left"] .bkbg-vp-btn-wrap, .bkbg-vp-btn-outer[style*="text-align: center"] .bkbg-vp-btn-wrap, .bkbg-vp-btn-outer[style*="text-align: right"] .bkbg-vp-btn-wrap { display: inline-block; } /* ── The Button ────────────────────────────────────────── */ .bkbg-vp-btn { display: inline-flex; align-items: center; justify-content: center; cursor: pointer; font-family: var(--bkvpo-bt-ff, inherit); font-size: var(--bkvpo-bt-fsd, 15px); font-style: var(--bkvpo-bt-fst, normal); font-weight: var(--bkvpo-bt-fw, 600); letter-spacing: var(--bkvpo-bt-lsd, 0px); line-height: var(--bkvpo-bt-lhd, 1.2); text-decoration: var(--bkvpo-bt-td, none); text-transform: var(--bkvpo-bt-tt, none); word-spacing: var(--bkvpo-bt-wsd, normal); white-space: nowrap; user-select: none; -webkit-user-select: none; outline: none; position: relative; overflow: hidden; /* inline styles from JS handle colors, padding, radius, shadow */ } .bkbg-vp-btn:focus-visible { outline: 3px solid #005fcc; outline-offset: 3px; } .bkbg-vp-btn-label { display: inline; pointer-events: none; } /* ── Hover glow/brightness effects ─────────────────────── */ /* Generic brightness lift — works for solid, gradient, ghost */ .bkbg-vp-btn:hover { filter: brightness(1.1); transform: translateY(-1px); } .bkbg-vp-btn:active { transform: translateY(0); filter: brightness(0.95); } /* ── Ripple effect on click ─────────────────────────────── */ .bkbg-vp-btn::after { content: ''; position: absolute; inset: 0; background: rgba(255, 255, 255, 0.18); border-radius: inherit; opacity: 0; transition: opacity 0.15s ease; pointer-events: none; } .bkbg-vp-btn:hover::after { opacity: 1; } /* ── Subtext ────────────────────────────────────────────── */ .bkbg-vp-subtext { display: block; font-family: var(--bkvpo-st-ff, inherit); font-size: var(--bkvpo-st-fsd, 12px); font-style: var(--bkvpo-st-fst, normal); font-weight: var(--bkvpo-st-fw, normal); letter-spacing: var(--bkvpo-st-lsd, normal); line-height: var(--bkvpo-st-lhd, 1.5); text-decoration: var(--bkvpo-st-td, none); text-transform: var(--bkvpo-st-tt, none); word-spacing: var(--bkvpo-st-wsd, normal); } /* ── Responsive — Typography ──────────────────────────────── */ @media (max-width: 1024px) { .bkbg-vp-btn { font-size: var(--bkvpo-bt-fst1, var(--bkvpo-bt-fsd, 15px)); letter-spacing: var(--bkvpo-bt-lst, var(--bkvpo-bt-lsd, 0px)); line-height: var(--bkvpo-bt-lht, var(--bkvpo-bt-lhd, 1.2)); word-spacing: var(--bkvpo-bt-wst, var(--bkvpo-bt-wsd, normal)); } .bkbg-vp-subtext { font-size: var(--bkvpo-st-fst1, var(--bkvpo-st-fsd, 12px)); letter-spacing: var(--bkvpo-st-lst, var(--bkvpo-st-lsd, normal)); line-height: var(--bkvpo-st-lht, var(--bkvpo-st-lhd, 1.5)); word-spacing: var(--bkvpo-st-wst, var(--bkvpo-st-wsd, normal)); } } @media (max-width: 767px) { .bkbg-vp-btn { font-size: var(--bkvpo-bt-fsm, var(--bkvpo-bt-fst1, var(--bkvpo-bt-fsd, 15px))); letter-spacing: var(--bkvpo-bt-lsm, var(--bkvpo-bt-lst, var(--bkvpo-bt-lsd, 0px))); line-height: var(--bkvpo-bt-lhm, var(--bkvpo-bt-lht, var(--bkvpo-bt-lhd, 1.2))); word-spacing: var(--bkvpo-bt-wsm, var(--bkvpo-bt-wst, var(--bkvpo-bt-wsd, normal))); } .bkbg-vp-subtext { font-size: var(--bkvpo-st-fsm, var(--bkvpo-st-fst1, var(--bkvpo-st-fsd, 12px))); letter-spacing: var(--bkvpo-st-lsm, var(--bkvpo-st-lst, var(--bkvpo-st-lsd, normal))); line-height: var(--bkvpo-st-lhm, var(--bkvpo-st-lht, var(--bkvpo-st-lhd, 1.5))); word-spacing: var(--bkvpo-st-wsm, var(--bkvpo-st-wst, var(--bkvpo-st-wsd, normal))); } } /* ── Editor preview box ─────────────────────────────────── */ .bkbg-vp-editor-preview { max-width: 100%; overflow: hidden; } /* ========================================================= Modal Overlay ========================================================= */ .bkbg-vp-modal-overlay { position: fixed; inset: 0; z-index: 999999; display: flex; align-items: center; justify-content: center; padding: 20px; box-sizing: border-box; opacity: 0; visibility: hidden; transition: opacity 0.28s cubic-bezier(.4, 0, .2, 1), visibility 0.28s cubic-bezier(.4, 0, .2, 1); /* background-color set via JS data attribute */ } .bkbg-vp-modal-overlay.is-open { opacity: 1; visibility: visible; } /* ── Modal content card ─────────────────────────────────── */ .bkbg-vp-modal-content { position: relative; width: 100%; /* max-width set via JS */ max-height: 90vh; overflow: hidden; transform: scale(0.86) translateY(12px); transition: transform 0.3s cubic-bezier(.34, 1.36, .64, 1); /* border-radius set via JS */ box-shadow: 0 24px 80px rgba(0, 0, 0, 0.6), 0 4px 16px rgba(0, 0, 0, 0.3); background: #000; } .bkbg-vp-modal-overlay.is-open .bkbg-vp-modal-content { transform: scale(1) translateY(0); } /* ── Iframe aspect-ratio wrapper ────────────────────────── */ .bkbg-vp-modal-iframe-wrap { position: relative; width: 100%; /* padding-bottom set via JS to enforce aspect ratio */ background: #000; overflow: hidden; } .bkbg-vp-modal-iframe-wrap iframe, .bkbg-vp-modal-iframe-wrap video { position: absolute; inset: 0; width: 100%; height: 100%; border: none; display: block; background: #000; } /* ── Close button ───────────────────────────────────────── */ .bkbg-vp-modal-close { position: absolute; top: -44px; right: 0; width: 36px; height: 36px; display: flex; align-items: center; justify-content: center; background: rgba(255, 255, 255, 0.12); border: 1px solid rgba(255, 255, 255, 0.22); border-radius: 50%; cursor: pointer; padding: 0; line-height: 1; transition: background 0.18s ease, transform 0.18s ease; /* color set via JS */ } .bkbg-vp-modal-close:hover { background: rgba(255, 255, 255, 0.24); transform: scale(1.1); } .bkbg-vp-modal-close:focus-visible { outline: 2px solid #fff; outline-offset: 2px; } .bkbg-vp-modal-close svg { display: block; pointer-events: none; } /* ── Loading spinner inside modal ───────────────────────── */ .bkbg-vp-modal-loader { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; background: #111; transition: opacity 0.3s ease; pointer-events: none; } .bkbg-vp-modal-loader.is-hidden { opacity: 0; } .bkbg-vp-modal-loader::after { content: ''; width: 36px; height: 36px; border: 3px solid rgba(255, 255, 255, 0.15); border-top-color: #fff; border-radius: 50%; animation: bkbg-vp-spin 0.75s linear infinite; } @keyframes bkbg-vp-spin { to { transform: rotate(360deg); } } /* ── Responsive: full-screen on very small viewports ─────── */ @media (max-width: 500px) { .bkbg-vp-modal-overlay { padding: 0; align-items: flex-end; } .bkbg-vp-modal-content { border-radius: 16px 16px 0 0 !important; max-width: 100% !important; max-height: 85vh; } .bkbg-vp-modal-close { top: -48px; right: 8px; } } /* ========================================================= Editor overrides ========================================================= */ /* Prevent the button triggering anything in the editor — pointer events are handled by Gutenberg's RichText within the button. */ .editor-styles-wrapper .bkbg-vp-btn { pointer-events: auto; /* RichText needs this to be clickable */ } /* Editor preview thumbnail */ .editor-styles-wrapper .bkbg-vp-editor-preview { margin-top: 12px; }