/* Click Target — inner pages and Elementor Pro Theme Builder parts.
   Loads after ct-home.css (same design scope: body.ct-home) and only adds what the inner pages need.
   Decorations are drawn here with CSS so the pages need no HTML widgets. */

body.ct-home { --ct-orpale: var(--e-global-color-ctorpale, #fdf1e6); }
body.ct-home .ct-maxw-3xl { max-width: 48rem; }
body.ct-home .ct-grow { flex: 1 1 0 !important; min-width: 0; width: auto !important; }
body.ct-home .ct-on-light-85 { opacity: .9; }
body.ct-home.ct-inner { background: #fff; }
/* Form controls and Pro widgets use the brand fonts too */
body.ct-home :is(input, select, textarea, label, .elementor-item, .elementor-sub-item, .elementor-post__title, .elementor-post__excerpt, .elementor-post-info) { font-family: var(--ct-font) !important; }

/* ───────── Theme Builder header (Pro) ───────── */
body.ct-home .elementor-location-header { position: sticky; top: var(--wp-admin--admin-bar--height, 0px); z-index: 40; }
body.ct-home .ct-tb-header { position: relative !important; top: auto !important; }
body.ct-home .ct-tb-nav-wrap { flex: 1 1 0 !important; min-width: 0; width: auto !important; --width: auto; }
body.ct-home .ct-tb-header .ct-header-actions { width: auto !important; flex: none; }
body.ct-home .ct-tb-nav { width: auto !important; }
body.ct-home .ct-tb-nav .elementor-nav-menu--main .elementor-item { min-height: 2.75rem; display: inline-flex; align-items: center; }
body.ct-home .ct-tb-nav .elementor-nav-menu--main .elementor-item.elementor-item-active { color: var(--ct-ink) !important; }
body.ct-home .ct-tb-nav .elementor-nav-menu--main .sub-menu,
body.ct-home .ct-tb-nav .elementor-nav-menu--dropdown { border: 1px solid var(--ct-line); box-shadow: 0 24px 40px -24px rgba(26,22,18,.35); overflow: hidden; }
body.ct-home .ct-tb-nav .elementor-nav-menu--main .sub-menu { min-width: 17rem; padding: .375rem 0; }
body.ct-home .ct-tb-nav .elementor-sub-item { border-radius: 0; }
body.ct-home .ct-tb-nav .elementor-menu-toggle { width: 2.75rem; height: 2.75rem; border-radius: 999px; background: transparent; }
body.ct-home .ct-tb-nav .elementor-menu-toggle:hover { background: var(--ct-cream); }
@media (max-width: 1024px) {
  /* logo · actions · burger, with the dropdown full width under the header */
  body.ct-home .ct-tb-nav-wrap { order: 3; flex: none !important; width: auto !important; }
  body.ct-home .ct-tb-header .ct-header-actions { order: 2; margin-inline-start: auto; }
  body.ct-home .ct-tb-nav .elementor-nav-menu--dropdown { border-radius: 0 0 1rem 1rem; }
  body.ct-home .ct-tb-nav .elementor-nav-menu--dropdown .elementor-item { min-height: 3rem; font-size: 1.125rem; font-weight: 600; }
}

/* ───────── Page header + breadcrumbs ───────── */
body.ct-home .ct-page-header { border-bottom: 1px solid var(--ct-line); }
body.ct-home .ct-page-header::before { content: ""; position: absolute; z-index: 0; inset-inline-end: -10rem; top: -10rem; width: 30rem; height: 30rem; pointer-events: none;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 400 400' fill='none' stroke='%23d06c0c' stroke-opacity='.14' stroke-width='2'%3E%3Ccircle cx='200' cy='200' r='190' stroke-dasharray='520 80'/%3E%3Ccircle cx='200' cy='200' r='130' stroke-dasharray='300 120'/%3E%3Ccircle cx='200' cy='200' r='70'/%3E%3C/svg%3E") center/contain no-repeat; }
body.ct-home .ct-page-title .elementor-heading-title { text-wrap: balance; }
html[lang^="en"] body.ct-home .ct-page-title .elementor-heading-title { letter-spacing: -.025em; }
body.ct-home .ct-crumbs ol { display: flex; flex-wrap: wrap; align-items: center; gap: .375rem; margin: 0; padding: 0; list-style: none; }
body.ct-home .ct-crumbs li { display: inline-flex; align-items: center; gap: .375rem; }
body.ct-home .ct-crumbs li + li::before { content: ""; width: .45rem; height: .45rem; border-inline-end: 1.5px solid rgba(26,22,18,.35); border-top: 1.5px solid rgba(26,22,18,.35); transform: rotate(45deg); margin-inline-end: .2rem; }
[dir="rtl"] body.ct-home .ct-crumbs li + li::before { transform: rotate(-45deg); }
body.ct-home .ct-crumbs a { color: var(--ct-muted); text-decoration: none; }
body.ct-home .ct-crumbs a:hover { color: var(--ct-ink); text-decoration: underline; text-underline-offset: 2px; }
body.ct-home .ct-crumbs [aria-current] { color: var(--ct-ink); }
@media (max-width: 767px) {
  body.ct-home .ct-header-btns .elementor-widget-button, body.ct-home .ct-header-btns .elementor-button { width: 100%; }
}
body.ct-home .ct-btn-phone .elementor-button-icon { color: var(--ct-ortext); }

/* ───────── Cards, tiles, lists ───────── */
body.ct-home .ct-tile-icon { width: auto !important; flex: none; }
body.ct-home .ct-tile-icon .elementor-icon-wrapper { line-height: 0; }
body.ct-home .ct-tile-square .elementor-icon { border-radius: .75rem !important; }
body.ct-home .ct-arrow-icon { width: auto !important; flex: none; }
body.ct-home .ct-arrow-icon .elementor-icon-wrapper { line-height: 0; }
body.ct-home .ct-arrow-icon .elementor-icon { transition: transform .2s ease-out; }
[dir="rtl"] body.ct-home .ct-arrow-icon .elementor-icon :is(i, svg) { transform: scaleX(-1); }
body.ct-home a:hover .ct-arrow-icon .elementor-icon { transform: translateX(4px); }
[dir="rtl"] body.ct-home a:hover .ct-arrow-icon .elementor-icon { transform: translateX(-4px); }
body.ct-home a.ct-link-card { text-decoration: none; transition: border-color .2s, box-shadow .2s, transform .2s; }
body.ct-home a.ct-link-card:hover { border-color: rgba(26,22,18,.25) !important; box-shadow: 0 14px 30px -22px rgba(26,22,18,.45); transform: translateY(-2px); }
body.ct-home a.ct-link-card-all:hover { border-color: var(--ct-orange) !important; }
body.ct-home .ct-chips { display: flex; flex-wrap: wrap; gap: .375rem; margin-top: .5rem !important; }
body.ct-home .ct-chips bdi { padding: .125rem .625rem; border: 1px solid rgba(26,22,18,.12); border-radius: 999px; font-size: .75rem; font-weight: 700; color: var(--ct-ink); font-family: "CT Manrope", system-ui, sans-serif !important; }
/* Services hub */
body.ct-home .ct-svc-links { border-top: 1px solid var(--ct-line); }
body.ct-home a.ct-svc-link { text-decoration: none; border-bottom: 1px solid var(--ct-line); border-radius: .75rem; transition: background-color .2s; }
body.ct-home a.ct-svc-link:hover { background: var(--ct-cream); }
body.ct-home .ct-svc-link-icon { width: auto !important; flex: none; padding-top: .15rem; }
body.ct-home .ct-svc-link-icon .elementor-icon-wrapper { line-height: 0; }
body.ct-home .ct-bullets { margin: 0; padding: 0; list-style: none; }
body.ct-home .ct-bullets li { position: relative; padding-inline-start: 1rem; }
body.ct-home .ct-bullets li::before { content: ""; position: absolute; inset-inline-start: 0; top: .7em; width: 5px; height: 5px; border-radius: 999px; background: var(--ct-orange); }
/* Lists with icon tiles */
body.ct-home .ct-check-list .elementor-icon-list-icon { display: grid !important; place-items: center; width: 1.75rem !important; height: 1.75rem; flex: none; border-radius: 999px; background: var(--ct-orpale); margin-inline-end: .75rem !important; padding: 0 !important; }
body.ct-home .ct-check-list .elementor-icon-list-item { align-items: flex-start !important; }
body.ct-home .ct-dot-list .elementor-icon-list-item { align-items: flex-start !important; }
body.ct-home .ct-dot-list .elementor-icon-list-icon { margin-top: .55em; }
body.ct-home .ct-divided { border-top: 1px solid var(--ct-line); }
body.ct-home .ct-divided-item { border-bottom: 1px solid var(--ct-line); }
body.ct-home .ct-divided-item > .elementor-widget-icon { width: auto !important; flex: none; }
body.ct-home .ct-divided-item .elementor-icon-wrapper { line-height: 0; }
body.ct-home .ct-address .elementor-icon-list-item { align-items: flex-start !important; }
body.ct-home .ct-address .elementor-icon-list-icon { margin-top: .2em; }
body.ct-home .ct-directions-link .elementor-heading-title a { text-decoration: none; padding-inline-start: 1.75rem; }
body.ct-home .ct-directions-link .elementor-heading-title a:hover { text-decoration: underline; text-underline-offset: 2px; }
body.ct-home .ct-btn-block, body.ct-home .ct-btn-block .elementor-button { width: 100%; }
body.ct-home .ct-social-light .elementor-social-icon:hover { border-color: var(--ct-orange) !important; }

/* Dark banners and the inner-page CTA: concentric rings, drawn in CSS */
body.ct-home .ct-rings { position: relative; overflow: hidden; isolation: isolate; }
body.ct-home .ct-rings::before { content: ""; position: absolute; z-index: -1; inset-inline-end: -8rem; top: -8rem; width: 24rem; height: 24rem; pointer-events: none;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 400 400' fill='none' stroke='%23f48440' stroke-opacity='.12' stroke-width='2'%3E%3Ccircle cx='200' cy='200' r='180'/%3E%3Ccircle cx='200' cy='200' r='120'/%3E%3Ccircle cx='200' cy='200' r='60'/%3E%3C/svg%3E") center/contain no-repeat; }
body.ct-home .ct-banner { position: relative; }
@media (max-width: 767px) {
  body.ct-home .ct-banner .elementor-widget-button, body.ct-home .ct-banner .elementor-button { width: 100%; }
}

/* ───────── Video cards on light backgrounds ───────── */
body.ct-home .ct-vcard-lite { text-decoration: none; }
body.ct-home .ct-vcard-lite .ct-vcard-media { box-shadow: 0 0 0 1px rgba(26,22,18,.08); }
body.ct-home .ct-vcard-lite .ct-vcard-media::after { background: linear-gradient(to top, rgba(12,7,0,.55), transparent 40%); }
body.ct-home .ct-vrow, body.ct-home .ct-vgrid-lite { align-items: start; }
/* Phones: the video row becomes a swipeable strip with the next card peeking, as in the reference */
@media (max-width: 767px) {
  body.ct-home .ct-vrow { display: flex !important; flex-wrap: nowrap !important; gap: 1rem !important; overflow-x: auto; scroll-snap-type: x mandatory; overscroll-behavior-x: contain; scrollbar-width: none; margin-inline: -20px; padding-inline: 20px !important; scroll-padding-inline: 20px; }
  body.ct-home .ct-vrow::-webkit-scrollbar { display: none; }
  body.ct-home .ct-vrow > .e-con { flex: 0 0 62% !important; width: 62% !important; scroll-snap-align: start; }
}
body.ct-home .ct-has-video .elementor-widget-video { width: 100%; }
body.ct-home .ct-has-video .elementor-custom-embed-image-overlay { border-radius: 1.5rem; }
body.ct-home .ct-has-video .elementor-custom-embed-play :is(i, svg) { color: #fff; fill: #fff; opacity: .95; filter: drop-shadow(0 10px 18px rgba(0,0,0,.35)); }
/* Gallery category chips */
body.ct-home .ct-filter ul { display: flex; flex-wrap: wrap; gap: .5rem; margin: 0; padding: 0; list-style: none; }
body.ct-home .ct-filter a { display: inline-flex; align-items: center; gap: .5rem; min-height: 2.75rem; padding: 0 1rem; border: 1px solid rgba(26,22,18,.15); border-radius: 999px; color: var(--ct-ink); font-weight: 600; text-decoration: none; transition: border-color .2s, background-color .2s; }
body.ct-home .ct-filter a:hover { border-color: var(--ct-orange); background: var(--ct-orpale); }
body.ct-home .ct-filter a span { display: inline-grid; place-items: center; min-width: 1.5rem; height: 1.5rem; padding: 0 .375rem; border-radius: 999px; background: var(--ct-cream); font-size: .75rem; font-weight: 700; }
body.ct-home .ct-gallery-cat { scroll-margin-top: 6rem; }
body.ct-home .ct-count-pill { width: auto !important; }
body.ct-home .ct-count-pill .elementor-heading-title { padding: .125rem .625rem; border-radius: 999px; background: var(--ct-cream); }

/* ───────── Forms (Elementor Pro) ───────── */
body.ct-home .ct-form .elementor-field-group { margin-bottom: 0; }
body.ct-home .ct-form .elementor-field-group > label { font-weight: 600; margin-bottom: .375rem; }
body.ct-home .ct-form :is(.elementor-field-textual, select.elementor-field) { min-height: 3rem; padding: .625rem 1rem; transition: border-color .2s, box-shadow .2s; }
body.ct-home .ct-form textarea.elementor-field-textual { min-height: 7rem; }
body.ct-home .ct-form :is(.elementor-field-textual, select.elementor-field):focus { border-color: var(--ct-orange) !important; box-shadow: 0 0 0 3px rgba(208,108,12,.18); outline: none; }
body.ct-home .ct-form .elementor-field-group.elementor-error :is(.elementor-field-textual, select) { border-color: #b42318 !important; }
body.ct-home .ct-form .elementor-message { margin-top: 1rem; padding: .875rem 1rem; border-radius: .75rem; font-weight: 600; }
body.ct-home .ct-form .elementor-message-success { background: #ecfdf3; color: #05603a; }
body.ct-home .ct-form .elementor-message-danger { background: #fef3f2; color: #b42318; }
body.ct-home .ct-form input.ct-ltr-field { direction: ltr; text-align: left; }
[dir="rtl"] body.ct-home .ct-form input.ct-ltr-field { text-align: right; }
body.ct-home .ct-form .ct-form-note { margin: 0; font-size: .875rem; color: var(--ct-muted); }
body.ct-home .ct-form .ct-form-note a { color: var(--ct-ortext); font-weight: 600; }
body.ct-home .ct-form .elementor-button { min-height: 3.25rem; transition: background-color .2s, transform .2s; }
body.ct-home .ct-form .elementor-button:active { transform: scale(.98); }
body.ct-home .ct-form .elementor-button-content-wrapper { flex-direction: row-reverse; gap: .625rem; }
[dir="rtl"] body.ct-home .ct-form .elementor-button-icon { transform: scaleX(-1); }
body.ct-home .ct-form .elementor-mark-required .elementor-field-label::after { color: var(--ct-ortext); }

/* ───────── Prose (privacy, blog posts) ───────── */
body.ct-home .ct-prose { margin-inline: auto; }
body.ct-home .ct-inline-link { color: var(--ct-ortext); font-weight: 600; text-decoration: underline; text-underline-offset: 2px; }
body.ct-home .ct-post-content { color: var(--ct-ink); font-size: 1.0625rem; line-height: 1.8; }
body.ct-home .ct-post-content :is(h2, h3, h4) { color: var(--ct-ink); font-weight: 700; line-height: 1.35; margin: 2em 0 .6em; }
body.ct-home .ct-post-content h2 { font-size: 1.625rem; }
body.ct-home .ct-post-content h3 { font-size: 1.3rem; }
body.ct-home .ct-post-content p { margin: 0 0 1.1em; }
body.ct-home .ct-post-content :is(ul, ol) { margin: 0 0 1.1em; padding-inline-start: 1.4em; }
body.ct-home .ct-post-content li + li { margin-top: .35em; }
body.ct-home .ct-post-content a { color: var(--ct-ortext); font-weight: 600; text-underline-offset: 2px; }
body.ct-home .ct-post-content blockquote { margin: 1.5em 0; padding: .25em 1.25em; border-inline-start: 3px solid var(--ct-orange); color: var(--ct-muted); font-size: 1.125rem; }
body.ct-home .ct-post-content img { border-radius: 1rem; height: auto; }
/* 16:9 box on the widget itself: aspect-ratio on a width:100% <img> inside a flex column sized the box from the image's intrinsic width on mobile, so the image overlapped the first paragraph */
body.ct-home .ct-post-image { width: 100%; aspect-ratio: 16/9; overflow: hidden; border-radius: 1.25rem; }
body.ct-home .ct-post-image :is(.elementor-widget-container, a, figure) { display: block; height: 100%; margin: 0; }
body.ct-home .ct-post-image img { display: block; width: 100%; height: 100%; aspect-ratio: auto; object-fit: cover; border-radius: inherit; }
body.ct-home .ct-share-row { border-top: 1px solid var(--ct-line); padding-top: 1.5rem !important; }
body.ct-home .ct-share { width: auto !important; }
body.ct-home .ct-post-nav { border-top: 1px solid var(--ct-line); }
body.ct-home .ct-post-info .elementor-icon-list-items { gap: .25rem 1.25rem; }

/* Blog cards (Posts / Archive Posts) */
body.ct-home .ct-posts .elementor-post__card { border: 1px solid var(--ct-line) !important; border-radius: 1.25rem !important; box-shadow: none !important; transition: box-shadow .2s, transform .2s; }
body.ct-home .ct-posts .elementor-post__card:hover { box-shadow: 0 18px 36px -26px rgba(26,22,18,.5) !important; transform: translateY(-2px); }
body.ct-home .ct-posts .elementor-post__title a { color: var(--ct-ink) !important; font-weight: 700; }
body.ct-home .ct-posts .elementor-post__read-more { color: var(--ct-ortext) !important; font-weight: 700; }
body.ct-home .ct-posts .elementor-posts-nothing-found { padding: 2.5rem; border: 1px dashed rgba(26,22,18,.2); border-radius: 1.25rem; text-align: center; color: var(--ct-muted); font-size: 1.125rem; }
body.ct-home .ct-posts .elementor-pagination { margin-top: 2rem; }
body.ct-home .ct-posts .elementor-pagination .page-numbers { display: inline-grid; place-items: center; min-width: 2.5rem; height: 2.5rem; border-radius: 999px; color: var(--ct-ink); }
body.ct-home .ct-posts .elementor-pagination .page-numbers.current { background: var(--ct-ink); color: #fff; }

/* ───────── WhatsApp floating button (native Button widget in the footer) ───────── */
body.ct-home .ct-wa-native { position: fixed !important; z-index: 30; bottom: calc(1rem + env(safe-area-inset-bottom, 0px)); inset-inline-end: 1rem; width: auto !important; margin: 0 !important; animation: ct-rise-in .45s var(--ct-ease, ease-out) .8s both; }
body.ct-home .ct-wa-native .elementor-button { position: relative; overflow: visible; width: 3.5rem; height: 3.5rem; min-height: 0 !important; padding: 0 !important; border-radius: 999px; background: #25d366 !important; color: #fff !important; box-shadow: 0 6px 16px -6px rgba(0,0,0,.35); transition: transform .2s; -webkit-tap-highlight-color: transparent; }
body.ct-home .ct-wa-native .elementor-button:active { transform: scale(.94); }
/* Calm periodic ring (as the original) */
body.ct-home .ct-wa-native .elementor-button::before { content: ""; position: absolute; inset: 0; z-index: -1; border-radius: inherit; background: #25d366; opacity: 0; animation: ct-wa-pulse 7s ease-out 3s infinite; pointer-events: none; }
body.ct-home .ct-wa-native .elementor-button-content-wrapper { justify-content: center; }
body.ct-home .ct-wa-native .elementor-button-icon { font-size: 1.75rem; margin: 0 !important; }
body.ct-home .ct-wa-native .elementor-button-icon svg { width: 1.75rem; height: 1.75rem; fill: #fff; }
/* The button text is the label pill: shown once per visit (ct-home.js), on hover and on keyboard focus */
body.ct-home .ct-wa-native .elementor-button-text { position: absolute; top: 50%; inset-inline-end: calc(100% + .6rem); white-space: nowrap; border-radius: 999px; background: #fff; color: #1a1612; padding: .45rem .85rem; font-size: .85rem; font-weight: 700; line-height: 1.2; box-shadow: 0 6px 18px -8px rgba(0,0,0,.35); opacity: 0; transform: translate3d(8px,-50%,0); transition: opacity .3s, transform .3s; pointer-events: none; }
[dir="rtl"] body.ct-home .ct-wa-native .elementor-button-text { transform: translate3d(-8px,-50%,0); }
body.ct-home .ct-wa-native[data-label] .elementor-button-text, body.ct-home .ct-wa-native .elementor-button:focus-visible .elementor-button-text { opacity: 1; transform: translate3d(0,-50%,0); }
@media (hover: hover) {
  body.ct-home .ct-wa-native .elementor-button:hover { transform: scale(1.06); }
  body.ct-home .ct-wa-native .elementor-button:hover .elementor-button-text { opacity: 1; transform: translate3d(0,-50%,0); }
}
@media (max-width: 640px) { body.ct-home .ct-wa-native .elementor-button { width: 3.25rem; height: 3.25rem; } }

/* ───────── 404 ───────── */
body.ct-home .ct-404 { min-height: 60vh; }

/* Video gallery (v2.4.0, [ct_video_gallery]): equal 9:16 thumbnails, 4 / 3 / 2 columns, player opens on click */
.ct-vg { width: 100%; }
.ct-vg-head { display: flex; flex-wrap: wrap; align-items: center; gap: .75rem; margin: 0 0 1.25rem; }
.ct-vg-title { margin: 0; color: var(--ct-ink); font-size: 1.5rem; font-weight: 700; line-height: 1.35; }
.ct-vg-count { padding: .125rem .625rem; border-radius: 999px; background: var(--ct-cream, #f6efe4); color: var(--ct-muted); font-size: .875rem; }
/* filter (v2.5.0): pill buttons with counts; one scrollable row on phones */
.ct-vg-filter { display: flex; flex-wrap: wrap; gap: .5rem; margin: 0 0 1.75rem; }
.ct-vg-filter button, .ct-vg-filter button:hover, .ct-vg-filter button:focus { display: inline-flex; align-items: center; gap: .5rem; padding: .55rem 1.1rem; border: 1px solid var(--ct-line); border-radius: 999px; background: #fff; color: var(--ct-ink); font: inherit; font-size: .9375rem; font-weight: 600; line-height: 1.3; white-space: nowrap; cursor: pointer; outline: none; box-shadow: none; transition: background .2s, color .2s, border-color .2s; }
.ct-vg-filter button:hover { border-color: var(--ct-ink); background: #fff; color: var(--ct-ink); }
.ct-vg-filter button:focus-visible { box-shadow: 0 0 0 2px #fff, 0 0 0 4px var(--ct-orange); }
.ct-vg-filter button[aria-pressed="true"], .ct-vg-filter button[aria-pressed="true"]:hover, .ct-vg-filter button[aria-pressed="true"]:focus { border-color: var(--ct-ink); background: var(--ct-ink); color: #fff; }
.ct-vg-n { display: inline-grid; place-items: center; min-width: 1.5rem; height: 1.5rem; padding: 0 .4rem; border-radius: 999px; background: var(--ct-cream, #f6f0e4); color: var(--ct-muted); font-size: .75rem; font-weight: 700; }
.ct-vg-filter button[aria-pressed="true"] .ct-vg-n { background: var(--ct-ortext, #a3550a); color: #fff; } /* darker orange: 4.5:1+ for the small white count */
.ct-vg-nores { margin: 0 0 1.5rem; padding: 2.5rem 1.5rem; border: 1px dashed rgba(26,22,18,.2); border-radius: 1.25rem; color: var(--ct-muted); font-size: 1.0625rem; text-align: center; }
.ct-vg-nores[hidden] { display: none; }
.ct-vg-desc { display: -webkit-box; margin-top: .25rem; overflow: hidden; color: var(--ct-muted); font-size: .875rem; line-height: 1.5; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }
.ct-vg-item { transition: opacity .16s ease, transform .16s ease; }
.ct-vg-item.ct-vg-out { opacity: 0; transform: translateY(6px) scale(.985); }
.ct-vg-item.ct-vg-in { animation: ct-vg-in .32s cubic-bezier(.2,.7,.2,1) both; }
@keyframes ct-vg-in { from { opacity: 0; transform: translateY(10px) scale(.985); } to { opacity: 1; transform: none; } }
@media (max-width: 767px) {
  .ct-vg-filter { flex-wrap: nowrap; overflow-x: auto; margin: 0 -16px 1.25rem; padding: 2px 16px 6px; scrollbar-width: none; -webkit-overflow-scrolling: touch; scroll-padding-inline: 16px;
    -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 16px, #000 calc(100% - 24px), transparent 100%); mask-image: linear-gradient(90deg, transparent 0, #000 16px, #000 calc(100% - 24px), transparent 100%); }
  .ct-vg-filter::-webkit-scrollbar { display: none; }
  .ct-vg-filter button { flex: 0 0 auto; }
}
.ct-vg-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1.5rem; margin: 0; padding: 0; list-style: none; }
.ct-vg-item { margin: 0; }
.ct-vg-item[hidden] { display: none; }
.ct-vg-card { display: block; color: var(--ct-ink); text-decoration: none; }
.ct-vg-media { position: relative; display: block; overflow: hidden; isolation: isolate; aspect-ratio: 9 / 16; border-radius: 1.25rem; background: var(--ct-card); box-shadow: 0 0 0 1px rgba(26,22,18,.06); }
.ct-vg-media img { display: block; width: 100%; height: 100%; object-fit: cover; transition: transform .35s ease; }
.ct-vg-media::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(12,7,0,0) 55%, rgba(12,7,0,.45)); pointer-events: none; }
.ct-vg-play { position: absolute; z-index: 2; top: 50%; left: 50%; display: grid; place-items: center; width: 3.5rem; height: 3.5rem; border-radius: 999px; background: rgba(255,255,255,.92); color: var(--ct-ink); box-shadow: 0 8px 24px -8px rgba(0,0,0,.5); transform: translate(-50%, -50%); transition: transform .2s ease, background .2s ease; }
.ct-vg-play svg { margin-inline-start: 3px; }
[dir="rtl"] .ct-vg-play svg { margin-inline-start: 0; margin-left: 3px; }
.ct-vg-dur { position: absolute; z-index: 3; bottom: .75rem; inset-inline-start: .75rem; padding: .25rem .625rem; border-radius: 999px; background: rgba(12,7,0,.7); color: #fff; font-size: .75rem; font-weight: 600; line-height: 1.4; }
.ct-vg-name { display: block; margin-top: .75rem; font-size: 1rem; font-weight: 700; line-height: 1.4; }
.ct-vg-card:hover .ct-vg-media img { transform: scale(1.035); }
.ct-vg-card:hover .ct-vg-play { background: var(--ct-orange); color: #fff; transform: translate(-50%, -50%) scale(1.06); }
.ct-vg-card:focus-visible { outline: none; }
.ct-vg-card:focus-visible .ct-vg-media { box-shadow: 0 0 0 3px #fff, 0 0 0 5px var(--ct-orange); }
.ct-vg-empty { color: var(--ct-muted); }
@media (max-width: 1024px) { .ct-vg-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1rem; } }
@media (max-width: 767px) { .ct-vg-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .75rem; } .ct-vg-media { border-radius: 1rem; } .ct-vg-play { width: 3rem; height: 3rem; } .ct-vg-title { font-size: 1.375rem; } }
/* Player dialog */
.ct-vmodal { width: 100vw; max-width: 100vw; height: 100dvh; max-height: 100dvh; margin: 0; padding: 0; border: 0; background: transparent; color: #fff; }
.ct-vmodal::backdrop { background: rgba(12,7,0,.88); }
.ct-vmodal-inner { display: flex; align-items: center; justify-content: center; gap: 1rem; width: 100%; height: 100%; padding: 3.5rem 1rem 1.5rem; box-sizing: border-box; pointer-events: none; }
.ct-vmodal-inner > * { pointer-events: auto; }
.ct-vmodal-frame { --ct-vr: .5625; position: relative; height: min(calc(100dvh - 6rem), calc((100vw - 9rem) / var(--ct-vr))); aspect-ratio: var(--ct-vr); max-width: calc(100vw - 9rem); overflow: hidden; border-radius: 1rem; background: #000; box-shadow: 0 30px 80px -20px rgba(0,0,0,.8); }
.ct-vmodal-frame iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
/* explicit colours in every state: the theme gives buttons a pink hover/focus background */
.ct-vmodal .ct-vmodal-btn, .ct-vmodal .ct-vmodal-btn:hover, .ct-vmodal .ct-vmodal-btn:focus, .ct-vmodal .ct-vmodal-btn:active { display: grid; place-items: center; flex: 0 0 auto; width: 2.75rem; height: 2.75rem; padding: 0; border: 0; border-radius: 999px; background: rgba(255,255,255,.14); color: #fff; box-shadow: none; outline: none; cursor: pointer; }
.ct-vmodal .ct-vmodal-btn:hover { background: rgba(255,255,255,.28); }
.ct-vmodal .ct-vmodal-btn:focus-visible { background: rgba(255,255,255,.28); box-shadow: 0 0 0 2px #fff; }
.ct-vmodal-btn[hidden] { display: none; }
.ct-vmodal-close { position: absolute; top: .75rem; inset-inline-end: .75rem; }
[dir="rtl"] .ct-vmodal-prev svg, [dir="rtl"] .ct-vmodal-next svg { transform: scaleX(-1); }
html.ct-vmodal-open { overflow: hidden; }
@media (max-width: 767px) {
  .ct-vmodal-inner { padding: 3.5rem .5rem 4.5rem; }
  .ct-vmodal-frame { height: min(calc(100dvh - 8rem), calc((100vw - 1rem) / var(--ct-vr))); max-width: calc(100vw - 1rem); }
  .ct-vmodal-prev, .ct-vmodal-next { position: absolute; bottom: 1rem; }
  .ct-vmodal-prev { inset-inline-start: calc(50% - 3.25rem); }
  .ct-vmodal-next { inset-inline-end: calc(50% - 3.25rem); }
}

/* Reduced motion */
@media (prefers-reduced-motion: reduce) {
  body.ct-home a.ct-link-card, body.ct-home .ct-posts .elementor-post__card { transition: none; transform: none !important; }
  .ct-vg-media img, .ct-vg-play, .ct-vg-item { transition: none; }
  .ct-vg-item.ct-vg-in { animation: none; }
  .ct-vg-card:hover .ct-vg-media img { transform: none; }
}
