/* CineFestival Mag — sistema "Telón & Oro" (cine España + Francia) */
:root {
  --noche: #0C0A09;
  --carbon: #16120F;
  --elevado: #231C16;
  --rojo: #E0162B;
  --rojo-suave: #FF4D5E;
  --oro: #E9B949;
  --oro-claro: #F4D06A;
  --grad: linear-gradient(135deg, #F4D06A 0%, #E0162B 100%);
  --blanco: #FFFFFF;
  --crema: #F6EFE3;
  --gris-claro: #CFC8BD;
  --gris-medio: #837B6E;
  --linea: rgba(255,255,255,.09);
  --exito: #36D399;
  --error: #FF4D5E;
  --r: 14px;
  --maxw: 1180px;
  --display: 'Space Grotesk', sans-serif;
  --body: 'Inter', sans-serif;
}

* { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; }
body {
  font-family: var(--body);
  background: var(--noche);
  color: var(--gris-claro);
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
}
img { max-width: 100%; display: block; }
a { color: inherit; text-decoration: none; }

h1, h2, h3, h4 { font-family: var(--display); color: var(--blanco); line-height: 1.15; font-weight: 700; }
.wrap { max-width: var(--maxw); margin: 0 auto; padding: 0 24px; }
.grad {
  background: var(--grad);
  -webkit-background-clip: text; background-clip: text;
  -webkit-text-fill-color: transparent; color: transparent;
}
.eyebrow {
  font-family: var(--display); font-weight: 600; font-size: .8rem;
  letter-spacing: .18em; text-transform: uppercase; color: var(--oro);
}
.empty { color: var(--gris-medio); padding: 40px 0; text-align: center; }

/* ── Botones ──────────────────────────────────────────────────────────── */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  font-family: var(--display); font-weight: 600; font-size: .92rem;
  padding: 13px 26px; border-radius: 999px; border: 1px solid transparent;
  cursor: pointer; transition: transform .15s ease, box-shadow .25s ease, background .2s ease;
}
.btn-primary { background: var(--rojo); color: #fff; box-shadow: 0 6px 24px rgba(224,22,43,.35); }
.btn-primary:hover { transform: translateY(-2px); box-shadow: 0 10px 32px rgba(224,22,43,.5); }
.btn-ghost { background: transparent; color: var(--blanco); border-color: var(--linea); }
.btn-ghost:hover { border-color: var(--oro); color: var(--oro); box-shadow: 0 0 20px rgba(233,185,73,.2); }
.btn-block { width: 100%; }

/* ── Header ───────────────────────────────────────────────────────────── */
.site-header {
  position: sticky; top: 0; z-index: 50;
  background: rgba(12,10,9,.85); backdrop-filter: blur(12px);
  border-bottom: 1px solid var(--linea);
}
.header-inner { display: flex; align-items: center; gap: 22px; height: 72px; }
.brand { display: inline-flex; align-items: center; gap: 10px; }
.brand-icon { height: 36px; width: 36px; flex: none; }
.brand-name { font-family: var(--display); font-weight: 700; font-size: 1.3rem; letter-spacing: -.01em; color: #fff; line-height: 1; white-space: nowrap; }
.brand-tag { font-family: var(--display); font-weight: 700; font-size: .58em; text-transform: uppercase; letter-spacing: .12em; color: var(--oro); border: 1px solid rgba(233,185,73,.5); border-radius: 5px; padding: 2px 5px; margin-left: 6px; vertical-align: middle; }
.brand-logo { height: 34px; width: auto; }
.main-nav { display: flex; gap: 26px; margin-left: auto; }
.main-nav a {
  font-family: var(--display); font-weight: 500; font-size: .95rem; color: var(--gris-claro);
  position: relative; padding: 4px 0; transition: color .2s ease;
}
.main-nav a:hover, .main-nav a.active { color: var(--blanco); }
.main-nav a.active::after {
  content: ''; position: absolute; left: 0; right: 0; bottom: -4px; height: 2px;
  background: var(--grad); border-radius: 2px;
}
.lang-switch { display: inline-flex; border: 1px solid var(--linea); border-radius: 999px; overflow: hidden; }
.lang-switch a { font-family: var(--display); font-weight: 600; font-size: .78rem; padding: 6px 12px; color: var(--gris-medio); transition: background .2s ease, color .2s ease; }
.lang-switch a.active { background: var(--oro); color: #1a1306; }
.lang-switch a:not(.active):hover { color: var(--blanco); }

/* ── Rieles de publicidad (skyscrapers laterales) ─────────────────────── */
.ad-sky { position: fixed; top: 50%; transform: translateY(-50%); width: 160px; z-index: 30; display: none; }
.ad-sky-left { left: max(16px, calc(50% - 780px)); }
.ad-sky-right { right: max(16px, calc(50% - 780px)); }
@media (min-width: 1520px) { .ad-sky { display: block; } }
.ad-sky-box { display: flex; flex-direction: column; min-height: 600px; background: var(--carbon); border: 1px solid var(--linea); border-radius: var(--r); overflow: hidden; transition: border-color .3s ease, box-shadow .3s ease; }
.ad-sky-box:hover { border-color: rgba(233,185,73,.5); box-shadow: 0 0 24px rgba(233,185,73,.15); }
.ad-sky-box img { flex: 1 1 auto; width: 100%; object-fit: cover; }
.ad-sky-title { font-family: var(--display); font-weight: 600; color: #fff; font-size: .85rem; padding: 10px 12px; }
.ad-label { display: block; font-family: var(--display); font-size: .58rem; letter-spacing: .14em; text-transform: uppercase; color: var(--gris-medio); padding: 8px 10px; }
.ad-sky-box.ad-empty { align-items: center; justify-content: center; border-style: dashed; gap: 10px; text-align: center; padding-bottom: 24px; }
.ad-empty-text { color: var(--gris-medio); font-size: .82rem; padding: 0 16px; }

/* ── Hero ─────────────────────────────────────────────────────────────── */
.hero { position: relative; overflow: hidden; padding: 96px 0 80px; }
.hero-glow {
  position: absolute; top: -160px; left: 50%; transform: translateX(-50%);
  width: 720px; height: 720px; pointer-events: none;
  background: radial-gradient(circle, rgba(224,22,43,.26), transparent 60%),
              radial-gradient(circle at 70% 40%, rgba(233,185,73,.22), transparent 55%);
  filter: blur(40px);
}
.hero-inner { position: relative; text-align: center; max-width: 820px; margin: 0 auto; }
.hero h1 { font-size: clamp(2.2rem, 6vw, 4rem); margin: 18px 0; }
.hero-sub { font-size: clamp(1rem, 2vw, 1.2rem); color: var(--gris-claro); max-width: 660px; margin: 0 auto 32px; }
.hero-actions { display: flex; gap: 14px; justify-content: center; flex-wrap: wrap; }

/* ── Secciones ────────────────────────────────────────────────────────── */
.section { padding: 56px 0; }
.section-head { display: flex; align-items: baseline; justify-content: space-between; margin-bottom: 28px; gap: 16px; }
.section-head h2 { font-size: clamp(1.5rem, 3vw, 2rem); }
.link-more { font-family: var(--display); font-weight: 600; color: var(--oro); white-space: nowrap; }
.link-more:hover { text-shadow: 0 0 14px rgba(233,185,73,.6); }

.page-head { padding: 56px 0 8px; }
.page-head h1 { font-size: clamp(1.9rem, 4vw, 2.8rem); margin: 10px 0; }
.page-sub { color: var(--gris-claro); max-width: 600px; }

/* ── Grids y tarjetas ─────────────────────────────────────────────────── */
.grid { display: grid; gap: 22px; }
.grid-3 { grid-template-columns: repeat(4, 1fr); }
.grid-3 > * { min-width: 0; }

.event-card, .news-card {
  background: var(--carbon); border: 1px solid var(--linea); border-radius: var(--r);
  overflow: hidden; display: flex; flex-direction: column;
  transition: transform .2s ease, box-shadow .3s ease, border-color .3s ease;
}
.event-card:hover, .news-card:hover {
  transform: translateY(-4px); border-color: rgba(233,185,73,.5);
  box-shadow: 0 14px 40px rgba(0,0,0,.55), 0 0 28px rgba(233,185,73,.16);
}
.event-media { position: relative; aspect-ratio: 16/10; background: var(--elevado); overflow: hidden; }
.event-media img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: center top; }
.event-date {
  position: absolute; bottom: 12px; left: 12px; background: rgba(12,10,9,.85);
  backdrop-filter: blur(6px); border: 1px solid var(--linea); border-radius: 10px;
  padding: 6px 12px; text-align: center; line-height: 1;
}
.event-date .d { display: block; font-family: var(--display); font-weight: 700; font-size: 1.4rem; color: #fff; }
.event-date .m { display: block; font-size: .68rem; text-transform: uppercase; letter-spacing: .1em; color: var(--oro); }
.event-badges { position: absolute; top: 12px; left: 12px; display: flex; gap: 6px; flex-wrap: wrap; }
.badge {
  font-family: var(--display); font-weight: 600; font-size: .66rem;
  letter-spacing: .08em; text-transform: uppercase; padding: 4px 10px; border-radius: 999px;
}
.badge-country { background: rgba(233,185,73,.14); color: var(--oro); border: 1px solid rgba(233,185,73,.4); }
.badge-featured { background: var(--rojo); color: #fff; box-shadow: 0 0 14px rgba(224,22,43,.5); }
.badge-cat { position: absolute; top: 12px; left: 12px; background: rgba(224,22,43,.85); color: #fff; backdrop-filter: blur(4px); }
.badge-open { position: absolute; top: 12px; left: 12px; background: rgba(54,211,153,.92); color: #06231a; }
.badge-closed { position: absolute; top: 12px; left: 12px; background: rgba(131,123,110,.9); color: #16120f; }
.badge-paid { background: rgba(54,211,153,.14); color: var(--exito); border: 1px solid rgba(54,211,153,.4); }
.event-body, .news-body { padding: 16px 18px 20px; }
.event-body h3, .news-body h3 { font-size: 1.16rem; margin-bottom: 6px; }
.event-meta { color: var(--oro); font-size: .85rem; font-weight: 500; }
.event-venue { color: var(--gris-medio); font-size: .88rem; }
.news-body .badge-country, .card-tags { display: inline-flex; margin-bottom: 10px; }
.card-tags { gap: 6px; flex-wrap: wrap; }
.card-tags .badge { margin-bottom: 0; }
.news-excerpt { color: var(--gris-claro); font-size: .92rem; margin-bottom: 12px; }
.news-date { color: var(--gris-medio); font-size: .82rem; }
.news-media { position: relative; aspect-ratio: 16/9; background: var(--elevado); overflow: hidden; }
.news-media img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
/* Placeholder con claqueta para tarjetas sin imagen (la imagen real lo tapa) */
.news-media, .event-media {
  background-color: #16120f;
  background-image: radial-gradient(circle at 50% 42%, rgba(233,185,73,.10), transparent 62%), url("/assets/img/placeholder.svg");
  background-repeat: no-repeat;
  background-position: center;
  background-size: cover, 64px 64px;
}

/* ── Filtros ──────────────────────────────────────────────────────────── */
.filters { display: flex; gap: 12px; flex-wrap: wrap; margin-bottom: 24px; }
.filters input[type="search"] { flex: 1 1 260px; }
.filters input, .filters select {
  background: var(--carbon); border: 1px solid var(--linea); color: var(--blanco);
  border-radius: 999px; padding: 12px 18px; font-family: var(--body); font-size: .92rem;
}
.filters input:focus, .filters select:focus { outline: none; border-color: var(--oro); box-shadow: 0 0 0 3px rgba(233,185,73,.15); }
.filters select { cursor: pointer; }
.link-clear { align-self: center; color: var(--gris-medio); font-size: .88rem; }
.link-clear:hover { color: var(--rojo-suave); }
.results-count { color: var(--gris-medio); margin-bottom: 16px; font-size: .9rem; }

/* ── Social ───────────────────────────────────────────────────────────── */
.social-section { background: linear-gradient(180deg, transparent, rgba(233,185,73,.05), transparent); }
.social-sub { color: var(--gris-claro); margin-bottom: 24px; max-width: 560px; }
.social-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 22px; }
.social-card {
  border-radius: var(--r); padding: 32px; display: flex; flex-direction: column; gap: 8px;
  border: 1px solid var(--linea); transition: transform .2s ease, box-shadow .3s ease;
}
.social-card:hover { transform: translateY(-3px); }
.social-card.ig { background: linear-gradient(135deg, rgba(224,22,43,.16), rgba(233,185,73,.12)); }
.social-card.ig:hover { box-shadow: 0 12px 36px rgba(224,22,43,.3); }
.social-card.fb { background: linear-gradient(135deg, rgba(233,185,73,.14), rgba(24,119,242,.16)); }
.social-card.fb:hover { box-shadow: 0 12px 36px rgba(233,185,73,.25); }
.social-icon { font-family: var(--display); font-size: 1.8rem; font-weight: 700; color: #fff; }
.social-name { font-family: var(--display); font-weight: 600; color: #fff; font-size: 1.1rem; }
.social-cta { color: var(--gris-claro); font-size: .9rem; }

/* ── Detalle (festival / casting) ─────────────────────────────────────── */
.event-hero { background-size: cover; background-position: center; padding: 96px 0 40px; border-bottom: 1px solid var(--linea); }
.back-link { display: inline-block; color: var(--oro); font-family: var(--display); font-weight: 500; font-size: .88rem; margin-bottom: 20px; }
.back-link:hover { text-shadow: 0 0 12px rgba(233,185,73,.6); }
.event-hero h1 { font-size: clamp(2rem, 5vw, 3.2rem); margin: 16px 0 10px; }
.event-hero-meta { color: var(--oro); font-family: var(--display); font-weight: 500; font-size: 1.05rem; }
.event-hero-venue { color: var(--gris-claro); font-size: 1.05rem; }
.event-detail-body { display: grid; grid-template-columns: 1fr 340px; gap: 40px; padding: 48px 24px; max-width: var(--maxw); margin: 0 auto; }
.event-desc { font-size: 1.08rem; line-height: 1.85; color: var(--gris-claro); }
.event-desc p { margin-bottom: 18px; }
.info-card { background: var(--carbon); border: 1px solid var(--linea); border-radius: var(--r); padding: 24px; position: sticky; top: 90px; height: fit-content; }
.info-card dl { display: grid; grid-template-columns: auto 1fr; gap: 10px 16px; margin-bottom: 20px; }
.info-card dt { color: var(--gris-medio); font-size: .82rem; font-family: var(--display); text-transform: uppercase; letter-spacing: .06em; }
.info-card dd { color: var(--blanco); font-size: .95rem; text-align: right; }

/* ── Artículo ─────────────────────────────────────────────────────────── */
.article-hero { height: 380px; background-size: cover; background-position: center; }
.article-body { max-width: 760px; padding: 48px 24px; margin: 0 auto; }
.article-body h1 { font-size: clamp(1.8rem, 4vw, 2.8rem); margin: 12px 0; }
.article-date { color: var(--gris-medio); margin-bottom: 28px; }
.article-content { font-size: 1.05rem; line-height: 1.85; color: var(--gris-claro); }
.article-content p { margin-bottom: 20px; }
.article-content h2 { font-size: 1.6rem; margin: 36px 0 14px; }

/* ── Tarjeta de publicidad destacada ──────────────────────────────────── */
.ad-card { display: flex; flex-direction: column; width: 100%; background: var(--carbon); border: 1px solid var(--linea); border-radius: var(--r); overflow: hidden; transition: transform .2s ease, box-shadow .3s ease, border-color .3s ease; }
.ad-card:hover { transform: translateY(-3px); border-color: rgba(233,185,73,.5); box-shadow: 0 12px 30px rgba(0,0,0,.5), 0 0 22px rgba(233,185,73,.18); }
.ad-card img { width: 100%; aspect-ratio: 16/10; object-fit: cover; display: block; }
.ad-text { padding: 12px 14px 16px; display: flex; flex-direction: column; gap: 3px; }
.ad-text strong { font-family: var(--display); color: #fff; font-size: .95rem; line-height: 1.15; }
.ad-text span { color: var(--gris-claro); font-size: .8rem; line-height: 1.3; }
.ad-card.ad-empty { border-style: dashed; }
.ad-empty-box { flex: 1 1 auto; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 8px; padding: 36px 18px; text-align: center; }
.ad-empty-plus { font-family: var(--display); font-weight: 700; font-size: 2.4rem; color: var(--gris-medio); line-height: 1; }

/* ── Contador de visitas ──────────────────────────────────────────────── */
.visit-chip { display: inline-flex; align-items: center; gap: 8px; font-family: var(--display); font-weight: 600; font-size: .8rem; color: var(--gris-claro); background: var(--carbon); border: 1px solid var(--linea); padding: 7px 14px; border-radius: 999px; white-space: nowrap; }
.vc-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--exito); box-shadow: 0 0 8px var(--exito); animation: vcpulse 2s infinite; }
@keyframes vcpulse { 0%,100% { opacity: 1; } 50% { opacity: .4; } }
.visit-counter { text-align: center; padding: 32px 24px; margin-top: 24px; border-top: 1px solid var(--linea); display: flex; flex-direction: column; gap: 4px; }
.vc-num { font-family: var(--display); font-weight: 700; font-size: clamp(2.2rem, 6vw, 3.2rem); line-height: 1; }
.vc-label { color: var(--gris-medio); font-size: .82rem; text-transform: uppercase; letter-spacing: .14em; }

/* ── 404 ──────────────────────────────────────────────────────────────── */
.notfound { text-align: center; padding: 120px 0; }
.nf-code { font-family: var(--display); font-weight: 700; font-size: 6rem; background: var(--grad); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; }
.notfound h1 { font-size: clamp(1.6rem, 4vw, 2.4rem); margin: 8px 0 14px; }
.notfound p { color: var(--gris-claro); margin-bottom: 28px; }
.notfound .hero-actions { justify-content: center; }

/* ── Footer ───────────────────────────────────────────────────────────── */
.site-footer { border-top: 1px solid var(--linea); margin-top: 40px; padding: 56px 0 24px; background: var(--carbon); }
.footer-inner { display: grid; grid-template-columns: 1.4fr 2fr; gap: 40px; }
.footer-brand p { color: var(--gris-medio); margin-top: 14px; max-width: 300px; }
.footer-cols { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; }
.footer-cols h4 { font-size: .82rem; text-transform: uppercase; letter-spacing: .1em; color: var(--oro); margin-bottom: 14px; }
.footer-cols a { display: block; color: var(--gris-claro); font-size: .92rem; padding: 4px 0; }
.footer-cols a:hover { color: var(--blanco); }
.footer-bottom { display: flex; justify-content: space-between; align-items: center; margin-top: 40px; padding-top: 20px; border-top: 1px solid var(--linea); color: var(--gris-medio); font-size: .82rem; }
.footer-bottom a:hover { color: var(--oro); }

/* ── Admin ────────────────────────────────────────────────────────────── */
.admin-login { min-height: 100vh; display: flex; align-items: center; justify-content: center; padding: 24px; }
.login-card { background: var(--carbon); border: 1px solid var(--linea); border-radius: 18px; padding: 40px; width: 100%; max-width: 380px; display: flex; flex-direction: column; gap: 14px; }
.login-card h1 { font-size: 1.5rem; text-align: center; }
.login-sub { text-align: center; color: var(--gris-medio); font-size: .9rem; margin-top: -8px; }
.login-card label, .admin-form label { display: flex; flex-direction: column; gap: 6px; font-size: .85rem; color: var(--gris-claro); font-family: var(--display); font-weight: 500; }
.login-card input, .admin-form input, .admin-form select, .admin-form textarea {
  background: var(--noche); border: 1px solid var(--linea); color: var(--blanco);
  border-radius: 10px; padding: 11px 14px; font-family: var(--body); font-size: .95rem;
}
.login-card input:focus, .admin-form input:focus, .admin-form select:focus, .admin-form textarea:focus {
  outline: none; border-color: var(--oro); box-shadow: 0 0 0 3px rgba(233,185,73,.15);
}
.login-error { color: var(--error); font-size: .85rem; text-align: center; }
.login-back { text-align: center; color: var(--gris-medio); font-size: .85rem; }

.admin-bar { background: var(--carbon); border-bottom: 1px solid var(--linea); position: sticky; top: 0; z-index: 50; }
.admin-bar-inner { display: flex; align-items: center; gap: 20px; height: 64px; flex-wrap: wrap; }
.admin-tabs { display: flex; gap: 6px; margin-left: 20px; flex-wrap: wrap; }
.tab { background: transparent; border: 1px solid var(--linea); color: var(--gris-claro); font-family: var(--display); font-weight: 500; padding: 8px 18px; border-radius: 999px; cursor: pointer; }
.tab.active { background: var(--rojo); color: #fff; border-color: transparent; }
#logoutBtn { margin-left: auto; padding: 8px 18px; }
.admin-main { padding: 32px 24px 80px; max-width: 1280px; margin: 0 auto; }
.admin-grid { display: grid; grid-template-columns: 460px 1fr; gap: 32px; align-items: start; }
.admin-form { background: var(--carbon); border: 1px solid var(--linea); border-radius: var(--r); padding: 24px; display: flex; flex-direction: column; gap: 14px; position: sticky; top: 88px; }
.admin-form h2 { font-size: 1.2rem; }
.form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.field-note { color: var(--gris-medio); font-size: .76rem; margin-top: -4px; }
.check { flex-direction: row !important; align-items: center; gap: 8px !important; }
.check input { width: auto; }
.form-actions { display: flex; gap: 10px; }
.form-msg { font-size: .85rem; }
.form-msg.ok { color: var(--exito); }
.form-msg.err { color: var(--error); }
.admin-list h2 { font-size: 1.2rem; margin-bottom: 14px; }
.admin-list ul { list-style: none; display: flex; flex-direction: column; gap: 8px; }
.admin-list li { background: var(--carbon); border: 1px solid var(--linea); border-radius: 10px; padding: 12px 16px; display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.admin-list li strong { display: block; color: var(--blanco); font-size: .95rem; }
.admin-list li small { color: var(--gris-medio); font-size: .8rem; }
.row-actions { display: flex; gap: 6px; }
.mini { background: var(--elevado); border: 1px solid var(--linea); color: var(--gris-claro); border-radius: 8px; padding: 6px 12px; font-size: .8rem; cursor: pointer; font-family: var(--display); }
.mini:hover { color: #fff; border-color: var(--oro); }
.mini.danger:hover { color: var(--error); border-color: var(--error); }

/* ── Cabecera: idioma + cuenta ────────────────────────────────────────── */
.header-right { display: flex; align-items: center; gap: 14px; }
.account-link { display: inline-flex; align-items: center; gap: 8px; font-family: var(--display); font-weight: 600; font-size: .9rem; color: var(--gris-claro); }
.account-link:hover { color: #fff; }
.acc-avatar { width: 30px; height: 30px; border-radius: 50%; background: var(--grad); color: #1a1306; display: inline-flex; align-items: center; justify-content: center; font-family: var(--display); font-weight: 700; font-size: .9rem; }
.acc-name { max-width: 130px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.nav-cta { padding: 8px 16px; }

/* ── Vídeo embebido (tráileres) ───────────────────────────────────────── */
.video-embed { position: relative; width: 100%; aspect-ratio: 16/9; border-radius: var(--r); overflow: hidden; background: #000; border: 1px solid var(--linea); }
.video-embed iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.trailer-card .play-badge { position: absolute; top: 50%; left: 50%; transform: translate(-50%,-50%); width: 56px; height: 56px; border-radius: 50%; background: rgba(224,22,43,.92); color: #fff; display: flex; align-items: center; justify-content: center; font-size: 1.2rem; padding-left: 3px; box-shadow: 0 6px 20px rgba(0,0,0,.5); transition: transform .2s ease; }
.trailer-card:hover .play-badge { transform: translate(-50%,-50%) scale(1.12); }
.trailer-card .news-media .badge-country, .film-poster .badge-country { position: absolute; top: 12px; left: 12px; z-index: 1; }

/* ── Estrellas ────────────────────────────────────────────────────────── */
.stars { display: inline-flex; gap: 1px; }
.stars .star { color: rgba(255,255,255,.18); line-height: 1; }
.stars .star.on { color: var(--oro); }

/* ── Películas ────────────────────────────────────────────────────────── */
.film-grid { grid-template-columns: repeat(5, 1fr); }
.film-grid > * { min-width: 0; }
.film-card { display: flex; flex-direction: column; background: var(--carbon); border: 1px solid var(--linea); border-radius: var(--r); overflow: hidden; transition: transform .2s ease, box-shadow .3s ease, border-color .3s ease; }
.film-card:hover { transform: translateY(-4px); border-color: rgba(233,185,73,.5); box-shadow: 0 14px 40px rgba(0,0,0,.55), 0 0 28px rgba(233,185,73,.16); }
.film-poster { position: relative; aspect-ratio: 2/3; background: var(--elevado); overflow: hidden; display: flex; align-items: center; justify-content: center; }
.film-poster img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.film-noposter { font-size: 2.6rem; opacity: .35; }
.film-body { padding: 12px 14px 16px; }
.film-body h3 { font-size: 1rem; margin-bottom: 4px; }
.film-meta { color: var(--gris-medio); font-size: .82rem; margin-bottom: 8px; }
.film-rating { display: flex; align-items: center; gap: 6px; font-size: .9rem; color: var(--oro); font-family: var(--display); font-weight: 600; }
.film-rating.film-norating { opacity: .45; }
.film-hero { padding: 80px 0 36px; }
.film-detail-head { display: grid; grid-template-columns: 220px 1fr; gap: 30px; align-items: start; }
.film-detail-poster { border-radius: var(--r); overflow: hidden; border: 1px solid var(--linea); aspect-ratio: 2/3; background: var(--elevado); }
.film-detail-poster img { width: 100%; height: 100%; object-fit: cover; }
.film-detail-info h1 { margin: 10px 0 6px; }
.film-detail-rating { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; color: var(--gris-claro); font-family: var(--display); font-size: .95rem; margin: 8px 0; }
.film-detail-rating strong { color: #fff; }
.film-norating-text { color: var(--gris-medio); font-size: .9rem; }

/* ── Reseñas ──────────────────────────────────────────────────────────── */
.reviews .rv-count { color: var(--gris-medio); font-weight: 500; }
.rv-avg { display: flex; align-items: center; gap: 8px; color: var(--gris-claro); font-size: .95rem; font-family: var(--display); }
.rv-avg strong { color: #fff; }
.review-form { background: var(--carbon); border: 1px solid var(--linea); border-radius: var(--r); padding: 24px; margin-bottom: 28px; display: flex; flex-direction: column; gap: 14px; max-width: 760px; }
.review-form h3 { font-size: 1.1rem; }
.rv-note { color: var(--oro); font-size: .85rem; }
.rv-field { display: flex; flex-direction: column; gap: 8px; }
.rv-label { font-family: var(--display); font-weight: 500; color: var(--gris-claro); font-size: .9rem; }
.review-form textarea { background: var(--noche); border: 1px solid var(--linea); color: #fff; border-radius: 10px; padding: 11px 14px; font-family: var(--body); font-size: .95rem; resize: vertical; }
.review-form textarea:focus { outline: none; border-color: var(--oro); box-shadow: 0 0 0 3px rgba(233,185,73,.15); }
.rate { display: inline-flex; flex-direction: row-reverse; justify-content: flex-start; gap: 4px; }
.rate input { position: absolute; left: -9999px; }
.rate label { font-size: 1.9rem; color: rgba(255,255,255,.2); cursor: pointer; transition: color .15s ease; line-height: 1; }
.rate label:hover, .rate label:hover ~ label, .rate input:checked ~ label { color: var(--oro); }
.rv-login a { color: var(--oro); font-family: var(--display); font-weight: 600; }
.review-list { display: flex; flex-direction: column; gap: 14px; max-width: 760px; }
.review { background: var(--carbon); border: 1px solid var(--linea); border-radius: 12px; padding: 16px 18px; }
.review-top { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 6px; }
.review-author, .review-item { font-family: var(--display); font-weight: 600; color: #fff; }
.review-item:hover { color: var(--oro); }
.review-text { color: var(--gris-claro); font-size: .95rem; margin: 6px 0; white-space: pre-line; }
.review-meta { color: var(--gris-medio); font-size: .8rem; }

/* ── Cuenta / registro ────────────────────────────────────────────────── */
.auth-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; max-width: 820px; }
.auth-card { background: var(--carbon); border: 1px solid var(--linea); border-radius: var(--r); padding: 28px; display: flex; flex-direction: column; gap: 12px; }
.auth-card.is-active { border-color: rgba(233,185,73,.5); }
.auth-card h2 { font-size: 1.25rem; }
.auth-sub { color: var(--gris-medio); font-size: .88rem; margin-top: -6px; }
.auth-card label { display: flex; flex-direction: column; gap: 6px; font-family: var(--display); font-weight: 500; color: var(--gris-claro); font-size: .85rem; }
.auth-card input { background: var(--noche); border: 1px solid var(--linea); color: #fff; border-radius: 10px; padding: 11px 14px; font-family: var(--body); font-size: .95rem; }
.auth-card input:focus { outline: none; border-color: var(--oro); box-shadow: 0 0 0 3px rgba(233,185,73,.15); }
.auth-switch { color: var(--oro); font-size: .85rem; font-family: var(--display); font-weight: 600; text-align: center; }
.account-box { display: flex; align-items: center; justify-content: space-between; gap: 16px; background: var(--carbon); border: 1px solid var(--linea); border-radius: var(--r); padding: 20px 24px; flex-wrap: wrap; }
.account-hi { color: var(--gris-claro); }
.account-hi strong { color: #fff; }
.account-mail { color: var(--gris-medio); }
.inline-form { display: inline; }

/* ── Calendario de festivales (cabeceras de mes) ──────────────────────── */
.month-head { display: flex; align-items: center; gap: 14px; margin: 30px 0 16px; }
.month-name { font-family: var(--display); font-weight: 700; color: #fff; font-size: 1.15rem; white-space: nowrap; }
.month-line { flex: 1 1 auto; height: 1px; background: var(--linea); }
.month-count { font-family: var(--display); font-weight: 600; color: var(--oro); font-size: .82rem; background: rgba(233,185,73,.12); border: 1px solid rgba(233,185,73,.35); border-radius: 999px; padding: 2px 10px; }

/* ── Responsive ───────────────────────────────────────────────────────── */
@media (max-width: 1280px) { .film-grid { grid-template-columns: repeat(4, 1fr); } }
@media (max-width: 1080px) {
  .header-inner { flex-wrap: wrap; height: auto; padding-top: 12px; padding-bottom: 12px; gap: 12px; }
  .main-nav { order: 3; width: 100%; margin-left: 0; overflow-x: auto; gap: 18px; padding-bottom: 2px; }
  .header-right { margin-left: auto; }
}
@media (max-width: 1100px) { .grid-3 { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 900px) {
  .grid-3 { grid-template-columns: repeat(2, 1fr); }
  .film-grid { grid-template-columns: repeat(3, 1fr); }
  .event-detail-body { grid-template-columns: 1fr; }
  .info-card { position: static; }
  .footer-inner { grid-template-columns: 1fr; }
  .admin-grid { grid-template-columns: 1fr; }
  .admin-form { position: static; }
  .auth-grid { grid-template-columns: 1fr; }
  .film-detail-head { grid-template-columns: 120px 1fr; gap: 18px; }
}
@media (max-width: 600px) {
  .grid-3, .social-grid { grid-template-columns: 1fr; }
  .film-grid { grid-template-columns: repeat(2, 1fr); }
  .main-nav { gap: 16px; }
  .footer-cols { grid-template-columns: 1fr 1fr; }
  .hero { padding: 64px 0 56px; }
  .acc-name { display: none; }
}
