.cgrf {
position: relative;
width: 100%;
--cgrf-nav: #fff;
--cgrf-bg: #111;
--cgrf-gw: 1240;
--cgrf-gh: 600;
line-height: normal;
-webkit-tap-highlight-color: transparent;
}
.cgrf *, .cgrf *::before, .cgrf *::after { box-sizing: border-box; }
.cgrf--fullwidth {
width: 100vw;
max-width: 100vw;
margin-left: calc(50% - 50vw);
margin-right: calc(50% - 50vw);
}
.cgrf-stage {
position: relative;
width: 100%;
overflow: hidden;
background: var(--cgrf-bg); aspect-ratio: var(--cgrf-gw) / var(--cgrf-gh);
max-height: calc(var(--cgrf-gh) * 1px);
touch-action: pan-y;
user-select: none;
-webkit-user-select: none;
}
.cgrf--fullscreen .cgrf-stage {
aspect-ratio: auto;
max-height: none;
height: 100vh;
height: 100svh;
}
.cgrf.is-measured .cgrf-stage { aspect-ratio: auto; max-height: none; }
.cgrf-slides, .cgrf-slide, .cgrf-bg, .cgrf-bg-media, .cgrf-overlay, .cgrf-slide-link {
position: absolute;
inset: 0;
}
.cgrf-slide {
visibility: hidden;
z-index: 1;
overflow: hidden;
will-change: transform, opacity, clip-path;
}
.cgrf-slide.is-active { visibility: visible; z-index: 2; }
.cgrf-slide.is-leaving { visibility: visible; z-index: 2; }
.cgrf-slide.is-entering { visibility: visible; z-index: 3; }
.cgrf-bg { overflow: hidden; }
.cgrf-bg-media {
background-repeat: no-repeat;
background-size: cover;
background-position: center;
transform-origin: center center;
}
.cgrf-slide-link { z-index: 1; }
.cgrf-grid {
position: absolute;
left: 50%;
top: 50%;
width: 1240px;
height: 600px;
transform: translate(-50%, -50%) scale(var(--cgrf-scale, 1));
transform-origin: center center;
z-index: 2;
pointer-events: none;
}
.cgrf .cgrf-layer {
position: absolute;
opacity: 0;
pointer-events: auto;
will-change: transform, opacity;
}
.cgrf.is-static .cgrf-layer { opacity: 1; }
.cgrf-loop { width: 100%; height: 100%; }
.cgrf-li {
display: block;
margin: 0;
padding: 0;
font-size: inherit;
border: 0;
background: none;
color: inherit;
text-decoration: none;
max-width: none;
transition: color .25s ease, background .25s ease, box-shadow .25s ease;
}
h1.cgrf-li, h2.cgrf-li, h3.cgrf-li, h4.cgrf-li, h5.cgrf-li, h6.cgrf-li, p.cgrf-li { font-size: inherit; letter-spacing: inherit; }
.cgrf-li a { color: inherit; text-decoration: none; }
.cgrf-layer--shape .cgrf-li,
.cgrf-layer--image .cgrf-li { width: 100%; height: 100%; }
.cgrf-layer--button .cgrf-li { display: inline-block; cursor: pointer; }
.cgrf-layer--button[style*="width"] .cgrf-li { width: 100%; }
.cgrf-img { display: block; width: 100%; height: 100%; object-fit: cover; max-width: none; }
.cgrf-layer--image { line-height: 0; } .cgrf-w { display: inline-block; white-space: nowrap; }
.cgrf-ch { display: inline-block; will-change: transform, opacity; } .cgrf-slide.is-active .cgrf-loop--pulse { animation: cgrf-pulse var(--cgrf-loop, 3s) ease-in-out infinite; }
.cgrf-slide.is-active .cgrf-loop--float { animation: cgrf-float var(--cgrf-loop, 3s) ease-in-out infinite; }
.cgrf-slide.is-active .cgrf-loop--rotate { animation: cgrf-rotate var(--cgrf-loop, 3s) linear infinite; }
.cgrf-slide.is-active .cgrf-loop--wiggle { animation: cgrf-wiggle var(--cgrf-loop, 3s) ease-in-out infinite; }
.cgrf-slide.is-active .cgrf-loop--blink { animation: cgrf-blink var(--cgrf-loop, 3s) ease-in-out infinite; }
@keyframes cgrf-pulse { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.08); } }
@keyframes cgrf-float { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-18px); } }
@keyframes cgrf-rotate { to { transform: rotate(360deg); } }
@keyframes cgrf-wiggle { 0%, 100% { transform: rotate(0); } 25% { transform: rotate(-4deg); } 75% { transform: rotate(4deg); } }
@keyframes cgrf-blink { 0%, 100% { opacity: 1; } 50% { opacity: .35; } } .cgrf-arrow {
position: absolute;
top: 50%;
z-index: 10;
width: 48px;
height: 48px;
margin-top: -24px;
padding: 0;
display: flex;
align-items: center;
justify-content: center;
border: 0;
cursor: pointer;
color: var(--cgrf-nav);
background: rgba(0, 0, 0, .28);
backdrop-filter: blur(6px);
-webkit-backdrop-filter: blur(6px);
opacity: .85;
transition: opacity .25s, background .25s, transform .25s;
}
.cgrf-arrow:hover, .cgrf-arrow:focus-visible { opacity: 1; background: rgba(0, 0, 0, .5); }
.cgrf-arrow:focus-visible, .cgrf-bullet:focus-visible { outline: 2px solid var(--cgrf-nav); outline-offset: 2px; }
.cgrf-arrow svg { width: 22px; height: 22px; fill: none; stroke: currentColor; stroke-width: 2.2; stroke-linecap: round; stroke-linejoin: round; }
.cgrf-arrow--prev { left: 20px; }
.cgrf-arrow--next { right: 20px; }
.cgrf--arrows-round .cgrf-arrow { border-radius: 50%; }
.cgrf--arrows-square .cgrf-arrow { border-radius: 4px; }
.cgrf--arrows-minimal .cgrf-arrow { background: none; backdrop-filter: none; -webkit-backdrop-filter: none; }
.cgrf--arrows-minimal .cgrf-arrow svg { width: 34px; height: 34px; stroke-width: 1.6; filter: drop-shadow(0 1px 3px rgba(0,0,0,.4)); }
.cgrf--arrows-minimal .cgrf-arrow:hover { background: none; } .cgrf-bullets {
position: absolute;
left: 0;
right: 0;
bottom: 22px;
z-index: 10;
display: flex;
justify-content: center;
gap: 10px;
pointer-events: none;
}
.cgrf-bullet {
pointer-events: auto;
padding: 0;
border: 0;
cursor: pointer;
background: var(--cgrf-nav);
opacity: .45;
transition: opacity .3s, width .3s, transform .3s;
}
.cgrf-bullet span { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
.cgrf-bullet:hover { opacity: .8; }
.cgrf-bullet.is-active { opacity: 1; }
.cgrf--bullets-dots .cgrf-bullet { width: 10px; height: 10px; border-radius: 50%; }
.cgrf--bullets-dots .cgrf-bullet.is-active { transform: scale(1.3); }
.cgrf--bullets-lines .cgrf-bullet { width: 28px; height: 3px; border-radius: 2px; }
.cgrf--bullets-lines .cgrf-bullet.is-active { width: 46px; }
.cgrf--bullets-numbers .cgrf-bullet { width: 30px; height: 30px; border-radius: 50%; background: rgba(0,0,0,.3); color: var(--cgrf-nav); font: 600 13px/30px system-ui, sans-serif; border: 1px solid var(--cgrf-nav); }
.cgrf--bullets-numbers .cgrf-bullet span { position: static; width: auto; height: auto; clip: auto; }
.cgrf--bullets-numbers .cgrf-bullet.is-active { background: var(--cgrf-nav); color: #111; } .cgrf-progress { position: absolute; left: 0; right: 0; bottom: 0; height: 3px; z-index: 10; background: rgba(255,255,255,.15); pointer-events: none; }
.cgrf-progress[hidden] { display: block; visibility: hidden; }
.cgrf-progress span { display: block; height: 100%; width: 100%; background: var(--cgrf-nav); transform-origin: left center; transform: scaleX(0); }
@media (hover: hover) {
.cgrf .cgrf-arrow { opacity: 0; }
.cgrf:hover .cgrf-arrow, .cgrf:focus-within .cgrf-arrow { opacity: .85; }
.cgrf .cgrf-arrow:hover, .cgrf .cgrf-arrow:focus-visible { opacity: 1; }
}
@media (max-width: 600px) {
.cgrf--swipe .cgrf-arrow { display: none; }
}
@media (max-width: 767px) {
.cgrf-arrow { width: 38px; height: 38px; margin-top: -19px; }
.cgrf-arrow--prev { left: 10px; }
.cgrf-arrow--next { right: 10px; }
.cgrf-bullets { bottom: 14px; }
}
.cgrf-empty { padding: 12px 16px; border-left: 4px solid #d63638; background: #fff3f3; font: 14px/1.4 system-ui, sans-serif; }