:root {
color-scheme: dark;
--page-bg: #f5f7fb;
--card-radius: 2rem;
--stack-y: 2.9rem;
--stack-scale: 0.045;
--shadow-front: 0 22px 48px rgba(7, 19, 35, 0.24);
--shadow-back: 0 14px 28px rgba(7, 19, 35, 0.14);
--dot-idle: #1ca6dd;
--dot-active: #ffffff;
--nav-line: rgba(255, 255, 255, 0.16);
--text-main: #ffffff;
--text-soft: rgba(255, 255, 255, 0.92);
}
* {
box-sizing: border-box;
}
.stack-demo {
width: 100%;
}
.stack {
position: relative;
min-height: clamp(24rem, 42vw, 32rem);
padding-bottom: clamp(4rem, 6vw, 5rem);
}
.stack__dots {
position: absolute;
left: clamp(1rem, 2vw, 1.5rem);
top: 50%;
z-index: 20;
display: grid;
gap: 1rem;
transform: translateY(-50%);
padding: 1rem 0;
}
.stack__dots::before {
content: "";
position: absolute;
left: 0.5rem;
top: 1.25rem;
bottom: 1.25rem;
width: 1px;
background: linear-gradient(180deg, transparent, var(--nav-line), transparent);
z-index: -1;
}
.stack__dot {
width: 1rem;
height: 1rem;
border: 0;
padding: 0;
border-radius: 999px;
background: var(--dot-idle);
box-shadow: 0 0 0 0 rgba(255, 255, 255, 0.18);
cursor: pointer;
transition:
transform 280ms ease,
background-color 280ms ease,
box-shadow 280ms ease,
opacity 280ms ease;
opacity: 0.96;
}
.stack__dot:is(:hover, :focus-visible) {
transform: scale(1.1);
outline: none;
}
.stack__dot[aria-current="true"] {
width: 1.75rem;
height: 1.75rem;
margin-left: -0.375rem;
background: var(--dot-active);
box-shadow: 0 0 0 0.5rem rgba(255, 255, 255, 0.1);
opacity: 1;
}
.stack__card {
--offset: 0;
position: absolute;
inset: 0;
overflow: hidden;
border-radius: var(--card-radius);
background: #0f1e32;
box-shadow: var(--shadow-front);
transform-origin: center center;
transform:
translate3d(0, calc(var(--offset) * var(--stack-y)), 0)
scale(calc(1 - (var(--offset) * var(--stack-scale))));
transition:
transform 880ms cubic-bezier(.22, 1, .36, 1),
filter 880ms cubic-bezier(.22, 1, .36, 1),
box-shadow 880ms cubic-bezier(.22, 1, .36, 1),
opacity 480ms ease;
will-change: transform, filter;
isolation: isolate;
}
.stack__card::before {
content: "";
position: absolute;
inset: 0;
background:
linear-gradient(90deg, rgba(8, 31, 58, 0.85) 0%, rgba(9, 30, 57, 0.72) 34%, rgba(8, 17, 34, 0.25) 74%, rgba(8, 17, 34, 0.14) 100%),
var(--image);
background-size: cover;
background-position: center;
transform: scale(calc(1 + (var(--offset) * 0.012)));
transition: transform 880ms cubic-bezier(.22, 1, .36, 1), filter 880ms ease;
z-index: -2;
}
.stack__card::after {
content: "";
position: absolute;
inset: 0;
background:
radial-gradient(circle at 18% 50%, rgba(37, 114, 176, 0.24), transparent 80%),
linear-gradient(180deg, rgba(4, 12, 24, 0.16) 0%, rgba(4, 12, 24, 0.3) 100%);
z-index: -1;
}
.stack__card[data-state="active"] {
filter: none;
box-shadow: var(--shadow-front);
}
.stack__card[data-state="stacked"] {
filter: saturate(0.86) brightness(0.94);
box-shadow: var(--shadow-back);
}
.stack__content {
display: grid;
align-content: center;
min-height: 100%;
width: min(60%, calc(100% - 10rem));
padding: clamp(1.8rem, 3vw, 2.8rem) clamp(2.5rem, 4vw, 4rem) clamp(1.8rem, 3vw, 2.8rem) clamp(8rem, 10vw, 10.5rem);
color: var(--text-main);
transition:
opacity 420ms ease,
transform 520ms cubic-bezier(.22, 1, .36, 1),
filter 420ms ease;
}
.stack__card[data-state="stacked"] .stack__content {
opacity: 0;
transform: translateY(1.5rem) scale(0.985);
filter: blur(0.25rem);
pointer-events: none;
}
.stack__eyebrow {
margin: 0 0 1rem;
font: 700 clamp(1.65rem, 4.9vw, 2.5rem) / 0.96 "Fira Sans Condensed", sans-serif;
letter-spacing: 0.01em;
text-transform: uppercase;
}
.stack__lead {
margin: 0 0 1.7rem;
font: 700 clamp(1.15rem, 1.7vw, 1.95rem) / 1.16 "Fira Sans Condensed", sans-serif;
letter-spacing: 0.01em;
color: var(--text-main);
}
.stack__body {
margin: 0;
font: 500 clamp(1rem, 1.45vw, 0.9rem) / 1.3 "Mulish", sans-serif;
color: var(--text-soft);
}
@media (max-width: 900px) {
.stack {
min-height: 22rem;
padding-bottom: 3.75rem;
}
.stack__dots {
left: 1rem;
}
.stack__content {
width: min(35rem, calc(100% - 4rem));
padding:
clamp(1.6rem, 4vw, 2.2rem)
clamp(1.4rem, 3vw, 1.8rem)
clamp(1.6rem, 4vw, 2.2rem)
clamp(4.5rem, 10vw, 5.4rem);
}
}
@media (max-width: 640px) {
.stack {
min-height: 24rem;
padding-bottom: 3.75rem;
}
.stack__content {
width: calc(100% - 2rem);
padding: 1.5rem 1.25rem 5.75rem 4.5rem;
}
.stack__lead,
.stack__body {
max-width: 100%;
}
}
@media (prefers-reduced-motion: reduce) {
*,
*::before,
*::after {
transition-duration: 0.01ms !important;
animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
scroll-behavior: auto !important;
}
}
PUBLICITAT EN PANTALLA
El teu missatge en el moment de màxima atenció
La publicitat en pantalla garanteix un 100% d'enfocament: no hi ha doble pantalla ni interrupcions. L'espectador està immers, receptiu i vivint l'experiència en primera persona. Els teus spots es projecten en un entorn de qualitat d'imatge i so inigualable, associats a grans estrenes que multipliquen l’engagement. Ideal per a campanyes de notorietat, branding i llançaments amb gran impacte emocional.
L'ESPAI DEL CINEMA COM A SUPORT PUBLICITARI
Converteix el cinema en un territori de marca
Els espais de Kinepolis ofereixen múltiples suports per a amplificar la teva visibilitat des del primer pas de l'espectador al complex. Pots integrar la teva marca de manera creativa, envoltant i memorable a través de:
- Lones i suports de gran format
- Vinilado de portes, miralls o zones de trànsit
- Sponsorització o tematització de sales
- Personalització de palomiteros, sotagot o elements de consum
- Repartiment de flyers o materials informatius
- Pantalles LED en zones de pas per a spots o motion graphics
Un entorn físic premium on la teva marca forma part del recorregut del client.
ACTIVACIONS DE MARCA
Experiències que connecten directament amb el públic
Les activacions permeten interactuar amb els espectadors de manera pròxima, emocional i experiencial. Perfectes per a generar prova de producte, captació o engagement actiu.
Accions disponibles:
- Estands de marca en hall
- Sampling i repartiment de producte
- Promocions i demostracions
- Exposició de producte o instal·lacions especials
Transforma la visita al cinema en una oportunitat única de contacte real amb la teva marca.
const cards = [...document.querySelectorAll(".stack__card")];
const dots = [...document.querySelectorAll(".stack__dot")];
let activeIndex = 0;
let autoRotateId;
function updateStack(nextIndex) {
activeIndex = nextIndex;
cards.forEach((card, index) => {
const offset = (index - activeIndex + cards.length) % cards.length;
card.style.setProperty("--offset", offset);
card.dataset.state = offset === 0 ? "active" : "stacked";
card.style.zIndex = String(cards.length - offset);
card.setAttribute("aria-hidden", offset === 0 ? "false" : "true");
});
dots.forEach((dot, index) => {
const active = index === activeIndex;
dot.setAttribute("aria-current", active ? "true" : "false");
});
}
dots.forEach((dot, index) => {
dot.addEventListener("click", () => {
updateStack(index);
restartAutoRotate();
});
dot.addEventListener("keydown", (event) => {
if (event.key !== "Enter" && event.key !== " ") return;
event.preventDefault();
updateStack(index);
restartAutoRotate();
});
});
window.addEventListener("keydown", (event) => {
if (event.key !== "ArrowDown" && event.key !== "ArrowUp") return;
event.preventDefault();
const direction = event.key === "ArrowDown" ? 1 : -1;
updateStack((activeIndex + direction + cards.length) % cards.length);
restartAutoRotate();
});
function restartAutoRotate() {
clearInterval(autoRotateId);
autoRotateId = window.setInterval(() => {
updateStack((activeIndex + 1) % cards.length);
}, 7000);
}
updateStack(0);
restartAutoRotate();