/* GGG eSite — Extensions: GGG Gallery, GGG Fancy Text, Carousel. Loaded only where used. */

/* ---- GGG Gallery ---- */
.ggg-gal{--ggg-gal-cols:3;--ggg-gal-gap:8px;--ggg-gal-row:240px}
.ggg-gal__item{margin:0;overflow:hidden;position:relative}
.ggg-gal__item[hidden]{display:none!important}
.ggg-gal__item a{display:block;height:100%}
.ggg-gal__img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .5s ease,opacity .3s ease}
.ggg-gal--grid{display:grid;grid-template-columns:repeat(var(--ggg-gal-cols),minmax(0,1fr));gap:var(--ggg-gal-gap)}
.ggg-gal--masonry{column-count:var(--ggg-gal-cols);column-gap:var(--ggg-gal-gap)}
.ggg-gal--masonry .ggg-gal__item{break-inside:avoid;margin-bottom:var(--ggg-gal-gap)}
.ggg-gal--masonry .ggg-gal__img{height:auto}
.ggg-gal--justified{display:flex;flex-wrap:wrap;gap:var(--ggg-gal-gap)}
.ggg-gal--justified .ggg-gal__item{flex:var(--r) 1 calc(var(--r) * var(--ggg-gal-row));height:var(--ggg-gal-row)}
.ggg-gal--justified::after{content:"";flex:999 1 0}
.ggg-gal--hv-zoom .ggg-gal__item:hover .ggg-gal__img{transform:scale(1.06)}
.ggg-gal--hv-dim:hover .ggg-gal__img{opacity:.55}
.ggg-gal--hv-dim .ggg-gal__item:hover .ggg-gal__img{opacity:1}
.ggg-gal__cap{position:absolute;left:0;right:0;bottom:0;padding:8px 10px;font-size:13px;color:#fff;background:linear-gradient(transparent,rgba(0,0,0,.55))}
.ggg-gal__more{text-align:center;margin-top:18px}
.ggg-gal__btn{cursor:pointer;font:inherit;font-size:13px;letter-spacing:2px;text-transform:uppercase;padding:11px 26px;border:1px solid var(--e-global-color-ggg_primary_strong,#333);background:var(--e-global-color-ggg_primary_strong,#333);color:var(--e-global-color-ggg_on_primary,#fff);border-radius:0}
@media (prefers-reduced-motion:reduce){.ggg-gal__img{transition:none}.ggg-gal--hv-zoom .ggg-gal__item:hover .ggg-gal__img{transform:none}}

/* ---- GGG Fancy Text ---- */
.ggg-ft__words{display:inline-grid;vertical-align:bottom;white-space:nowrap}
.ggg-ft__w{grid-area:1/1;transition:opacity .45s ease,transform .45s ease}
.ggg-ft__w:not(.is-on){opacity:0;pointer-events:none}
.ggg-ft--slide .ggg-ft__w:not(.is-on){transform:translateY(.6em)}
.ggg-ft--zoom .ggg-ft__w:not(.is-on){transform:scale(.7)}
.ggg-ft--typing .ggg-ft__words{display:inline}
.ggg-ft--typing .ggg-ft__w:not(.is-on){display:none}
.ggg-ft--typing .ggg-ft__w.is-on{transition:none}
.ggg-ft--typing .ggg-ft__words::after{content:"";display:inline-block;width:.06em;height:.9em;margin-left:.06em;background:currentColor;vertical-align:-.08em;animation:ggg-ft-caret 1s steps(1) infinite}
@keyframes ggg-ft-caret{50%{opacity:0}}
@media (prefers-reduced-motion:reduce){.ggg-ft__w{transition:opacity .3s ease;transform:none!important}.ggg-ft--typing .ggg-ft__words::after{animation:none}}

/* ---- Carousel (any container) ---- */
.ggg-car{--ggg-car-n:3;--ggg-car-gap:20px;position:relative}
/* justify-content: start — a centered row that overflows puts its first slides out of reach (left of the scroll start) */
.ggg-car>.e-con-inner,.ggg-car.e-con-full{display:flex!important;flex-direction:row!important;flex-wrap:nowrap!important;justify-content:flex-start!important;gap:var(--ggg-car-gap)!important;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;scroll-behavior:smooth;scrollbar-width:none;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch}
.ggg-car>.e-con-inner::-webkit-scrollbar,.ggg-car.e-con-full::-webkit-scrollbar{display:none}
.ggg-car>.e-con-inner>*,.ggg-car.e-con-full>:not(.ggg-car__ui){flex:0 0 calc((100% - (var(--ggg-car-n) - 1) * var(--ggg-car-gap)) / var(--ggg-car-n))!important;max-width:none!important;min-width:0;scroll-snap-align:start}
.ggg-car__ui{position:absolute;inset:0;pointer-events:none;z-index:5}
/* reset: themes / kits style every <button> (background, padding, border, size) */
.ggg-car .ggg-car__arrow,.ggg-car .ggg-car__dot{min-width:0!important;min-height:0!important;padding:0!important;margin:0!important;border:0!important;text-transform:none!important;letter-spacing:0!important}
.ggg-car .ggg-car__arrow{pointer-events:auto;position:absolute;top:50%;transform:translateY(-50%);width:42px;height:42px;border-radius:50%!important;cursor:pointer;background:var(--e-global-color-ggg_surface,#fff)!important;color:var(--e-global-color-ggg_text,#222)!important;box-shadow:0 4px 16px rgba(0,0,0,.15);font-size:20px;line-height:42px;text-align:center}
.ggg-car__arrow[disabled]{opacity:.35;cursor:default}
.ggg-car__arrow--prev{left:6px}.ggg-car__arrow--next{right:6px}
.ggg-car__dots{pointer-events:auto;position:absolute;left:0;right:0;bottom:-28px;display:flex;justify-content:center;gap:8px}
.ggg-car .ggg-car__dot{width:9px;height:9px;border-radius:50%!important;cursor:pointer;background:var(--e-global-color-ggg_line,rgba(0,0,0,.2))!important;box-shadow:none!important}
.ggg-car .ggg-car__dot.is-on{background:var(--e-global-color-ggg_primary_strong,#333)!important}
.ggg-car.is-auto .ggg-car__dot{position:relative;overflow:hidden;transition:width .3s ease}
.ggg-car.is-auto .ggg-car__dot.is-on{width:24px;border-radius:5px!important;background:var(--e-global-color-ggg_line,rgba(0,0,0,.2))!important}
.ggg-car.is-auto .ggg-car__dot.is-on::after{content:"";position:absolute;inset:0;border-radius:inherit;background:var(--e-global-color-ggg_primary_strong,#333);transform:scaleX(1);transform-origin:left center}
.ggg-car.is-timing .ggg-car__dot.is-on::after{animation:ggg-car-fill var(--ggg-car-t,3s) linear both}
.ggg-car.is-paused .ggg-car__dot.is-on::after{animation:none;transform:scaleX(1)}
@keyframes ggg-car-fill{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@media (hover:hover) and (pointer:fine){.ggg-car>.e-con-inner,.ggg-car.e-con-full{cursor:grab}}
.ggg-car.is-drag>.e-con-inner,.ggg-car.is-drag.e-con-full{scroll-snap-type:none!important;scroll-behavior:auto!important;cursor:grabbing;-webkit-user-select:none;user-select:none}
.ggg-car.has-dots{margin-bottom:36px}
.ggg-car__ui--inside .ggg-car__dots{bottom:10px}
@media (max-width:767px){.ggg-car .ggg-car__arrow{width:34px;height:34px;line-height:34px;font-size:16px}}
@media (prefers-reduced-motion:reduce){.ggg-car>.e-con-inner,.ggg-car.e-con-full{scroll-behavior:auto}}
