/* All selectors are scoped. No theme, Elementor, heading or button globals. */
.tvg-gallery, .tvg-lightbox { --tvg-accent:#996a45; --tvg-bg:#f8f6f2; --tvg-fg:#292823; --tvg-radius:4px; --tvg-gap:24px; --tvg-max:1440px; --tvg-ratio:3/2; --tvg-fit:cover; --tvg-thumbs:4; box-sizing:border-box; font-family:inherit; color:var(--tvg-fg); line-height:1.7; -webkit-tap-highlight-color:transparent; }
.tvg-gallery *, .tvg-gallery *::before, .tvg-gallery *::after, .tvg-lightbox *, .tvg-lightbox *::before, .tvg-lightbox *::after { box-sizing:border-box; }
.tvg-gallery { width:100%; max-width:var(--tvg-max); margin:0 auto; padding:clamp(16px,2.3vw,36px); background:var(--tvg-bg); isolation:isolate; container-type:inline-size; }
.tvg-gallery button, .tvg-lightbox button { appearance:none; -webkit-appearance:none; font:inherit; text-transform:none; letter-spacing:normal; cursor:pointer; box-shadow:none; min-width:0; margin:0; touch-action:manipulation; }
.tvg-gallery button:focus-visible, .tvg-lightbox button:focus-visible { outline:3px solid var(--tvg-accent); outline-offset:4px; }
.tvg-gallery button:disabled, .tvg-lightbox button:disabled { cursor:default; opacity:.28; }
.tvg-gallery button svg, .tvg-lightbox button svg { display:block; flex-shrink:0; pointer-events:none; }
.tvg-gallery [hidden], .tvg-lightbox [hidden] { display:none !important; }
.tvg-layout { display:grid; grid-template-columns:minmax(0,2.35fr) minmax(280px,1fr); gap:var(--tvg-gap); align-items:start; direction:ltr; }
.tvg-sidebar { grid-column:2; grid-row:1; direction:rtl; min-width:0; padding:8px 0; }
.tvg-viewer { grid-column:1; grid-row:1; min-width:0; direction:rtl; }
.tvg-side-left .tvg-layout { grid-template-columns:minmax(280px,1fr) minmax(0,2.35fr); }
.tvg-side-left .tvg-sidebar { grid-column:1; }
.tvg-side-left .tvg-viewer { grid-column:2; }
.tvg-heading { margin:0 0 20px; padding:0 4px 24px; border-bottom:1px solid #29282325; border-color:color-mix(in srgb,var(--tvg-fg) 15%,transparent); }
.tvg-eyebrow { display:block; font:10px/1.5 ui-sans-serif,system-ui,sans-serif; letter-spacing:2px; color:var(--tvg-accent); margin:0 0 12px; }
.tvg-gallery .tvg-title { font-family:inherit; font-size:clamp(24px,2.4vw,38px); font-weight:750; line-height:1.6; letter-spacing:normal; color:var(--tvg-fg); margin:0 0 8px; padding:0; overflow-wrap:anywhere; }
.tvg-gallery .tvg-subtitle { font-size:14px; line-height:1.9; margin:0; padding:0; color:var(--tvg-fg); opacity:.65; }
.tvg-selector-title { font-size:14px; font-weight:650; text-align:center; color:var(--tvg-fg); margin:0 0 4px; padding:0; }
.tvg-compass { width:100%; aspect-ratio:1/1.07; position:relative; direction:ltr; margin:0 auto; max-width:420px; }
.tvg-orbit { position:absolute; left:12%; top:14%; width:76%; aspect-ratio:1; border:1px solid #29282330; border-color:color-mix(in srgb,var(--tvg-fg) 22%,transparent); border-radius:50%; }
.tvg-orbit::before { content:''; position:absolute; inset:10%; border:1px solid #29282312; border-color:color-mix(in srgb,var(--tvg-fg) 9%,transparent); border-radius:50%; }
.tvg-site { position:absolute; width:59%; aspect-ratio:1; top:50%; left:50%; transform:translate(-50%,-50%); overflow:hidden; border-radius:50%; background:var(--tvg-bg); box-shadow:0 5px 24px #0000000b; border:5px solid var(--tvg-bg); }
.tvg-gallery .tvg-site-img { display:block; width:100%; height:100%; max-width:100%; object-fit:cover; margin:0; border-radius:50%; }
.tvg-site-placeholder { display:flex; width:100%; height:100%; align-items:center; justify-content:center; gap:10px; flex-direction:column; background:linear-gradient(145deg,#e9e6df,#f2eee6); color:#8a7866; }
.tvg-site-placeholder svg { width:40%; height:auto; stroke-width:.7; }
.tvg-site-placeholder span { font-size:12px; }
.tvg-view-cone { position:absolute; inset:14% 12% 14%; background:var(--tvg-accent); opacity:.3; clip-path:polygon(50% 50%,100% 80%,80% 100%); pointer-events:none; border-radius:50%; transform-origin:50% 50%; transition:transform .3s ease; }
.tvg-cone-se { transform:rotate(0deg); }.tvg-cone-s { transform:rotate(45deg); }.tvg-cone-sw { transform:rotate(90deg); }.tvg-cone-w { transform:rotate(135deg); }.tvg-cone-nw { transform:rotate(180deg); }.tvg-cone-n { transform:rotate(225deg); }.tvg-cone-ne { transform:rotate(270deg); }.tvg-cone-e { transform:rotate(315deg); }
.tvg-gallery .tvg-direction { position:absolute; transform:translate(-50%,-50%); width:44px; height:44px; padding:0; border:0; border-radius:50%; background:transparent; color:var(--tvg-fg); display:flex; align-items:center; justify-content:center; z-index:2; overflow:visible; }
.tvg-direction-n { left:50%; top:14%; }.tvg-direction-ne { left:77%; top:24.5%; }.tvg-direction-e { left:88%; top:50%; }.tvg-direction-se { left:77%; top:75.5%; }.tvg-direction-s { left:50%; top:86%; }.tvg-direction-sw { left:23%; top:75.5%; }.tvg-direction-w { left:12%; top:50%; }.tvg-direction-nw { left:23%; top:24.5%; }
.tvg-direction-icon { display:flex; align-items:center; justify-content:center; width:44px; height:44px; border-radius:50%; background:var(--tvg-bg); border:1px solid #29282366; border-color:color-mix(in srgb,var(--tvg-fg) 45%,transparent); transition:background .2s,color .2s,border-color .2s; }
.tvg-direction-icon svg { width:18px; height:18px; }
.tvg-direction-label { position:absolute; top:-25px; left:50%; transform:translateX(-50%); white-space:nowrap; font-size:11px; font-weight:400; line-height:1.6; direction:rtl; pointer-events:none; }
.tvg-direction-se .tvg-direction-label,.tvg-direction-s .tvg-direction-label,.tvg-direction-sw .tvg-direction-label { top:48px; }
.tvg-direction-e .tvg-direction-label { top:-24px; }.tvg-direction-w .tvg-direction-label { top:-24px; }
.tvg-gallery .tvg-direction:hover:not(:disabled) { background:transparent; color:var(--tvg-accent); }
.tvg-direction:hover:not(:disabled) .tvg-direction-icon { border-color:var(--tvg-accent); }
.tvg-gallery .tvg-direction.is-active { color:var(--tvg-accent); background:transparent; }
.tvg-direction.is-active .tvg-direction-label { font-weight:750; }
.tvg-direction.is-active .tvg-direction-icon { background:var(--tvg-accent); border-color:var(--tvg-accent); color:white; box-shadow:0 3px 10px #00000013; }
.tvg-selected { text-align:center; border-top:1px solid #29282325; border-color:color-mix(in srgb,var(--tvg-fg) 15%,transparent); padding:18px 0 0; margin:8px 12% 0; }
.tvg-gallery .tvg-selected-title { font-family:inherit; font-size:17px; font-weight:700; line-height:1.8; color:var(--tvg-fg); margin:0 0 3px; padding:0; }
.tvg-selected-count { font-size:12px; opacity:.6; }
.tvg-stage { position:relative; aspect-ratio:var(--tvg-ratio); background:#2928230c; border-radius:var(--tvg-radius); overflow:hidden; touch-action:pan-y; }
.tvg-gallery .tvg-main-image { display:block; width:100%; height:100%; max-width:none; object-fit:var(--tvg-fit); object-position:center; border-radius:0; margin:0; padding:0; transition:opacity .18s ease; }
.tvg-stage.is-loading .tvg-main-image { opacity:.55; }
.tvg-photo-label { position:absolute; right:14px; bottom:14px; background:#151713bf; color:#fff; padding:5px 12px; font-size:12px; border-radius:3px; pointer-events:none; max-width:80%; }
.tvg-gallery .tvg-expand { display:flex; align-items:center; justify-content:center; position:absolute; left:14px; top:14px; width:44px; height:44px; background:#151713bf; border:1px solid #ffffff35; border-radius:50%; color:#fff; padding:0; }
.tvg-gallery .tvg-expand:hover { background:#151713eb; color:white; }
.tvg-filmstrip { display:flex; align-items:center; gap:10px; margin-top:18px; min-width:0; }
.tvg-gallery .tvg-arrow { width:36px; height:44px; flex:0 0 36px; display:flex; align-items:center; justify-content:center; color:var(--tvg-fg); background:#29282309; border:0; border-radius:22px; padding:0; }
.tvg-gallery .tvg-arrow:hover:not(:disabled) { background:var(--tvg-accent); color:#fff; }
.tvg-thumbnails { display:flex; gap:12px; overflow-x:auto; overflow-y:hidden; flex:1; min-width:0; padding:4px; scrollbar-width:thin; scrollbar-color:var(--tvg-accent) transparent; position:relative; scroll-snap-type:x proximity; }
.tvg-gallery .tvg-thumb { display:block; flex:0 0 calc((100% - (var(--tvg-thumbs) - 1)*12px)/var(--tvg-thumbs)); aspect-ratio:3/2; padding:3px; border:1px solid transparent; border-radius:var(--tvg-radius); color:inherit; background:transparent; overflow:hidden; scroll-snap-align:center; }
.tvg-gallery .tvg-thumb:hover { border-color:var(--tvg-accent); background:transparent; }
.tvg-gallery .tvg-thumb.is-active { border-color:var(--tvg-accent); background:transparent; }
.tvg-gallery .tvg-thumb img { width:100%; height:100%; max-width:100%; display:block; object-fit:cover; border-radius:max(0px,calc(var(--tvg-radius) - 3px)); margin:0; padding:0; opacity:.72; transition:opacity .18s; }
.tvg-gallery .tvg-thumb.is-active img, .tvg-gallery .tvg-thumb:hover img { opacity:1; }
.tvg-photo-meta { display:flex; align-items:flex-start; justify-content:space-between; gap:16px; margin:10px 46px 0; min-height:26px; }
.tvg-gallery .tvg-caption { margin:0; padding:0; font-size:12px; line-height:1.8; color:var(--tvg-fg); opacity:.7; white-space:pre-line; overflow-wrap:anywhere; }
.tvg-counter { font-family:inherit; font-size:11px; white-space:nowrap; font-variant-numeric:tabular-nums; color:var(--tvg-fg); opacity:.75; }
.tvg-footer { display:flex; gap:16px; align-items:center; margin:32px 0 0; }
.tvg-footer span { flex:1; height:1px; background:#29282325; background:color-mix(in srgb,var(--tvg-fg) 15%,transparent); }
.tvg-gallery .tvg-footer p { margin:0; padding:0; font-size:12px; color:var(--tvg-fg); opacity:.6; }
.tvg-image-error { position:absolute; top:50%; left:50%; transform:translate(-50%,-50%); padding:12px 18px; background:#292823e6; color:#fff; border-radius:4px; font-size:13px; width:max-content; max-width:90%; text-align:center; }
.tvg-sr-only { position:absolute !important; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
.tvg-empty-project { padding:20px; border:1px dashed #996a45; background:#f8f6f2; color:#292823; }
.tvg-lightbox { position:fixed; inset:0; width:100vw; max-width:100vw; height:100vh; height:100dvh; max-height:100dvh; border:0; margin:0; padding:0; background:#111310fa; color:#fff; z-index:2147483000; overflow:hidden; }
.tvg-lightbox:not([open]) { display:none; }.tvg-lightbox[open] { display:block; }
.tvg-lightbox::backdrop { background:#111310f5; }
.tvg-lightbox-inner { display:flex; flex-direction:column; width:100%; height:100%; padding:18px clamp(12px,3vw,48px); gap:10px; }
.tvg-lightbox-header { display:flex; align-items:center; justify-content:space-between; gap:16px; flex:0 0 auto; }
.tvg-lightbox-header strong { font-size:15px; color:#fff; }.tvg-lightbox-header span { font-size:12px; opacity:.7; margin-inline-start:18px; display:inline-block; }
.tvg-lightbox .tvg-lb-button { display:flex; justify-content:center; align-items:center; width:44px; height:44px; flex-shrink:0; border:1px solid #ffffff35; border-radius:50%; background:#ffffff12; color:#fff; padding:0; }
.tvg-lightbox .tvg-lb-button:hover:not(:disabled) { background:#ffffff30; color:white; }
.tvg-lightbox-stage { position:relative; flex:1; min-height:0; display:flex; align-items:center; justify-content:center; touch-action:pan-y pinch-zoom; }
.tvg-lightbox-stage img { display:block; width:100%; height:100%; max-height:100%; object-fit:contain; margin:0; border:0; border-radius:0; }
.tvg-lightbox .tvg-lb-prev { position:absolute; left:0; top:50%; transform:translateY(-50%); background:#111310b3; }.tvg-lightbox .tvg-lb-next { position:absolute; right:0; top:50%; transform:translateY(-50%); background:#111310b3; }
.tvg-lightbox .tvg-lightbox-caption { text-align:center; font-size:13px; line-height:1.7; color:#fffc; margin:0; padding:0; flex:0 0 auto; max-height:15vh; overflow:auto; white-space:pre-line; }
/* Container queries also work inside narrow Elementor columns on wide screens. */
@container (max-width:800px) {
    .tvg-layout, .tvg-side-left .tvg-layout { grid-template-columns:minmax(0,1fr); gap:18px; }
    .tvg-sidebar, .tvg-side-left .tvg-sidebar { grid-column:1; grid-row:1; display:grid; grid-template-columns:minmax(0,1fr) minmax(230px,1fr); gap:0 18px; padding:0; }
    .tvg-heading { grid-column:1; border-bottom:0; padding:12px 0 0; margin:0; align-self:center; }
    .tvg-selector { grid-column:2; grid-row:1/3; }
    .tvg-compass { max-width:300px; }
    .tvg-selected { grid-column:1; align-self:start; padding:10px 0 0; margin:14px 0 0; }
    .tvg-viewer, .tvg-side-left .tvg-viewer { grid-column:1; grid-row:2; }
}
@container (max-width:480px) {
    .tvg-sidebar, .tvg-side-left .tvg-sidebar { display:flex; flex-direction:column; gap:0; }
    .tvg-heading { text-align:center; padding:0 0 18px; width:100%; }
    .tvg-gallery .tvg-title { font-size:26px; }
    .tvg-eyebrow { font-size:9px; margin-bottom:6px; }
    .tvg-selector { width:100%; }
    .tvg-selector-title { font-size:13px; }
    .tvg-compass { max-width:300px; }
    .tvg-selected { margin:0 auto; padding:10px 20px 0; }
    .tvg-gallery .tvg-selected-title { font-size:15px; }
    .tvg-filmstrip { gap:4px; margin-top:12px; }
    .tvg-gallery .tvg-arrow { width:28px; flex-basis:28px; height:44px; }
    .tvg-thumbnails { --tvg-thumbs:3; gap:7px; }
    .tvg-gallery .tvg-thumb { flex-basis:calc((100% - 14px)/3); }
    .tvg-photo-meta { margin-inline:32px; }
    .tvg-footer { margin-top:20px; gap:10px; }
    .tvg-photo-label { right:10px; bottom:10px; font-size:11px; }
}
@media (max-width:767px) {
    .tvg-layout, .tvg-side-left .tvg-layout { grid-template-columns:minmax(0,1fr); }
    .tvg-sidebar, .tvg-side-left .tvg-sidebar { grid-column:1; grid-row:1; }
    .tvg-viewer, .tvg-side-left .tvg-viewer { grid-column:1; grid-row:2; }
}
@media (prefers-reduced-motion:reduce) {
    .tvg-gallery *, .tvg-lightbox * { transition:none !important; scroll-behavior:auto !important; }
}
