/*
Theme Name: El Teporingo
Description: Tema editorial propio para El Teporingo.
Version: 0.2.58
Requires at least: 6.5
Requires PHP: 8.1
Text Domain: el-teporingo
*/

:root {
    --tep-gold: #d8af19;
    --tep-red: #cb3f19;
    --tep-sage: #365951;
    --tep-ink: #192c27;
    --tep-mist: #e7f4f1;
    --tep-cloud: #f2f7f6;
    --tep-paper: #f8fafa;
    --tep-white: #ffffff;
    --tep-muted: #61716d;
    --tep-border: #d9e6e3;
    --font-ui: "Source Sans 3", sans-serif;
    --font-editorial: "Source Serif 4", serif;
    --weight-regular: 400;
    --weight-semibold: 600;
    --weight-bold: 700;
    --text-display: var(--weight-bold) 40px / 1.05 var(--font-editorial);
    --text-h1: var(--weight-bold) 32px / 1.1 var(--font-editorial);
    --text-h2: var(--weight-bold) 26px / 1.15 var(--font-editorial);
    --text-h3: var(--weight-bold) 21px / 1.2 var(--font-ui);
    --text-card-title: var(--weight-bold) 18px / 1.2 var(--font-ui);
    --text-lead: var(--weight-regular) 19px / 1.5 var(--font-editorial);
    --text-body: var(--weight-regular) 16px / 1.6 var(--font-ui);
    --text-editorial-body: var(--weight-regular) 17px / 1.7 var(--font-editorial);
    --text-meta: var(--weight-regular) 14px / 1.45 var(--font-ui);
    --text-meta-semibold: var(--weight-semibold) 14px / 1.45 var(--font-ui);
    --text-micro: var(--weight-semibold) 12.5px / 1.35 var(--font-ui);
    /* Alias de compatibilidad para reglas de composición anteriores. */
    --tep-serif: var(--font-editorial);
    --tep-sans: var(--font-ui);
    --tep-shadow: 0 18px 50px rgba(25, 44, 39, 0.08);
    --tep-radius: 1rem;
    --tep-shell: 78rem;
}

.tep-occurrence-list,
.tep-occurrence-times {
    display: grid;
    gap: .65rem;
}

.tep-occurrence-date + .tep-occurrence-date {
    margin-top: .9rem;
}

.tep-occurrence-time {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .5rem 1rem;
}

*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
    margin: 0;
    background: var(--tep-paper);
    color: var(--tep-sage);
    font-family: var(--tep-sans);
    font-size: 1rem;
    line-height: 1.65;
    text-rendering: optimizeLegibility;
}
body.nav-open { overflow: hidden; }
body.filter-sheet-open { overflow: hidden; }
img { display: block; max-width: 100%; height: auto; }
a { color: var(--tep-ink); text-decoration-thickness: 0.08em; text-underline-offset: 0.18em; }
a:hover { color: var(--tep-red); }
a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible {
    outline: 3px solid var(--tep-red); outline-offset: 3px;
}
button, input, select { font: inherit; }
h1, h2, h3, p { margin-top: 0; }
h1, h2, h3 {
    color: var(--tep-ink);
    font-family: var(--tep-serif);
    font-weight: 700;
    line-height: 1.08;
    text-wrap: balance;
}
h1 { font-size: clamp(2.35rem, 9vw, 5.8rem); letter-spacing: -0.045em; }
h2 { font-size: clamp(1.8rem, 5vw, 3.15rem); letter-spacing: -0.025em; }
h3 { font-size: clamp(1.25rem, 3vw, 1.75rem); }

.shell { width: min(calc(100% - 2rem), var(--tep-shell)); margin-inline: auto; }
.site-main { min-height: 70vh; }
.skip-link {
    position: fixed; z-index: 1000; top: 0.75rem; left: 0.75rem;
    transform: translateY(-180%); padding: 0.7rem 1rem;
    background: var(--tep-ink); color: var(--tep-white); border-radius: 0.4rem;
}
.skip-link:focus { transform: none; }
.screen-reader-text {
    position: absolute !important; width: 1px; height: 1px; margin: -1px; padding: 0;
    overflow: hidden; clip: rect(0, 0, 0, 0); clip-path: inset(50%); border: 0; white-space: nowrap;
}
.screen-reader-text:focus {
    z-index: 100000; top: 0.5rem; left: 0.5rem; width: auto; height: auto; margin: 0; padding: 0.75rem 1rem;
    overflow: visible; clip: auto; clip-path: none; color: var(--tep-white); background: var(--tep-ink); white-space: normal;
}

.site-header {
    position: sticky; z-index: 50; top: var(--tep-admin-offset, 0px);
    background: var(--tep-white);
    border-bottom: 1px solid rgba(217, 230, 227, 0.88);
}
.admin-bar { --tep-admin-offset: var(--wp-admin--admin-bar--height, 32px); }
.site-header__inner { min-height: 4.75rem; display: flex; align-items: center; justify-content: space-between; gap: 0.75rem; }
body.nav-open .site-header__inner { width: auto; margin-inline: 1rem calc(1rem + var(--tep-scrollbar-compensation, 0px)); }
.brand {
    display: inline-flex; min-width: 0; width: clamp(10rem, 44vw, 13rem); align-items: center; justify-content: flex-start;
    flex: 0 1 auto;
}
.brand__logo { display: block; width: 100%; height: auto; aspect-ratio: 1620 / 555; object-fit: contain; }
.nav-toggle {
    display: inline-flex; flex: 0 0 auto; align-items: center; gap: 0.55rem;
    min-height: 2.75rem; padding: 0.45rem 0.75rem;
    color: var(--tep-ink); background: var(--tep-paper); border: 1px solid var(--tep-border); border-radius: 999px;
}
.nav-toggle__label { min-width: 3.25rem; font-weight: 700; text-align: left; }
.nav-toggle__icon, .nav-toggle__icon::before, .nav-toggle__icon::after {
    display: block; width: 1.15rem; height: 2px; background: currentColor; transition: 180ms ease;
}
.nav-toggle__icon { position: relative; }
.nav-toggle__icon::before, .nav-toggle__icon::after { content: ""; position: absolute; left: 0; }
.nav-toggle__icon::before { top: -0.35rem; }
.nav-toggle__icon::after { top: 0.35rem; }
.nav-toggle[aria-expanded="true"] .nav-toggle__icon { background: transparent; }
.nav-toggle[aria-expanded="true"] .nav-toggle__icon::before { top: 0; transform: rotate(45deg); }
.nav-toggle[aria-expanded="true"] .nav-toggle__icon::after { top: 0; transform: rotate(-45deg); }
.site-nav {
    display: none; position: absolute; top: 100%; left: 0; right: 0;
    height: var(--tep-menu-height, calc(100vh - 4rem - var(--tep-admin-offset, 0px)));
    height: var(--tep-menu-height, calc(100dvh - 4rem - var(--tep-admin-offset, 0px)));
    max-height: var(--tep-menu-height, calc(100dvh - 4rem - var(--tep-admin-offset, 0px)));
    flex-direction: column; overflow-y: auto; overscroll-behavior: contain; padding: clamp(1.2rem, 4vh, 2rem) 1rem 1.25rem;
    background: var(--tep-ink); color: var(--tep-white);
    -webkit-overflow-scrolling: touch;
}
.site-nav.is-open { display: flex; }
.site-nav__list, .site-nav .menu, .site-nav__secondary { width: min(100%, 28rem); margin: 0 auto; padding: 0; list-style: none; text-align: center; }
.site-nav__list, .site-nav > .menu { display: grid; gap: 0.15rem; }
.site-nav__list a, .site-nav > .menu a {
    position: relative; display: flex; width: 100%; min-height: 2.75rem; align-items: center; justify-content: center;
    padding: 0.48rem 0.75rem; color: inherit; font-size: 1.2rem; font-weight: 700; line-height: 1.2; text-decoration: none;
}
.site-nav a:hover { color: var(--tep-gold); }
.site-nav__list a[aria-current="page"]::after, .site-nav__list .current-menu-item > a::after, .site-nav > .menu a[aria-current="page"]::after, .site-nav > .menu .current-menu-item > a::after {
    content: ""; position: absolute; bottom: 0.2rem; left: 50%; width: 2rem; height: 2px;
    transform: translateX(-50%); background: var(--tep-red); border-radius: 999px;
}
.site-nav__footer { margin-top: auto; padding-top: clamp(1.75rem, 6vh, 3.5rem); text-align: center; }
.site-nav__secondary { display: flex; flex-wrap: wrap; justify-content: center; gap: 0.15rem 1rem; }
.site-nav__secondary a {
    display: inline-flex; min-height: 2.65rem; align-items: center; justify-content: center; padding: 0.45rem 0.25rem;
    color: rgba(255,255,255,.86); font-size: 0.9rem; font-weight: 600; text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 0.22em;
}

.page-hero { padding: clamp(3.5rem, 10vw, 7rem) 0 2.5rem; }
.page-hero--compact { padding-bottom: 1.5rem; }
.page-kicker, .eyebrow {
    margin-bottom: 0.75rem; color: var(--tep-red); font-size: 0.75rem; font-weight: 600;
    letter-spacing: 0.12em; text-transform: uppercase;
}
.page-hero h1 { max-width: 13ch; margin-bottom: 1rem; }
.page-intro { max-width: 44rem; color: var(--tep-muted); font-size: clamp(1.05rem, 2.5vw, 1.3rem); }

.home-hero { padding: clamp(1.25rem, 3vw, 1.5rem) 0 1.5rem; background: linear-gradient(145deg, var(--tep-paper), var(--tep-mist)); }
.home-hero__content { max-width: var(--tep-shell); }
.home-hero .page-kicker { margin-bottom: 0.6rem; }
.home-hero h1 { max-width: 25ch; margin-bottom: 0.75rem; }
.home-hero .page-intro { max-width: 42rem; margin-bottom: 0; }
.home-hero__actions { display: flex; flex-wrap: wrap; align-items: center; gap: 0.35rem 1.2rem; margin-top: 1rem; }
.home-hero__actions .text-link { display: inline-flex; min-height: 2.75rem; align-items: center; }
.home-period-links { display: flex; flex-wrap: wrap; gap: 0.55rem; margin-top: 1rem; }
.home-period-links a {
    min-height: 2.65rem; display: inline-flex; align-items: center; padding: 0.45rem 0.85rem;
    color: var(--tep-ink); background: rgba(255,255,255,.72); border: 1px solid var(--tep-border); border-radius: 999px;
    font-size: 0.86rem; font-weight: 600; text-decoration: none;
}
.home-period-links a:hover { background: var(--tep-ink); border-color: var(--tep-ink); color: var(--tep-white); }

.section { padding: clamp(3rem, 8vw, 6rem) 0; }
.section--white { background: var(--tep-white); }
.section--mist { background: var(--tep-mist); }
.section--ink { background: var(--tep-ink); color: var(--tep-white); }
.section--ink h2, .section--ink h3, .section--ink a { color: inherit; }
.section-heading { display: flex; align-items: end; justify-content: space-between; gap: 1rem; margin-bottom: 1.75rem; }
.section-heading h2 { margin-bottom: 0; }
.text-link { font-weight: 600; text-decoration: none; border-bottom: 2px solid currentColor; }
.text-link:hover { color: var(--tep-red); }
.section-cta { margin: 1.25rem 0 0; text-align: right; }
.section-cta .text-link { display: inline-flex; min-height: 2.75rem; align-items: center; }

.hero-feature { padding: clamp(1.5rem, 4vw, 3.5rem) 0 clamp(3.5rem, 9vw, 7rem); }
.hero-feature__grid { display: grid; gap: 1.5rem; }
.hero-feature__media { display: block; overflow: hidden; min-height: 19rem; background: var(--tep-mist); border-radius: var(--tep-radius); }
.hero-feature__media img { width: 100%; height: 100%; object-fit: contain; }
.hero-feature__copy { align-self: center; padding-block: 0.5rem; }
.hero-feature h1 { margin-bottom: 1.1rem; }
.hero-feature__excerpt { max-width: 38rem; font-size: 1.08rem; }

.cards { display: grid; gap: 1.25rem; }
.card {
    position: relative; overflow: hidden; min-width: 0;
    background: var(--tep-white); border: 1px solid var(--tep-border); border-radius: var(--tep-radius);
    transition: transform 180ms ease, box-shadow 180ms ease;
}
.card:hover { transform: translateY(-3px); box-shadow: var(--tep-shadow); }
.card__link {
    display: flex; min-width: 0; height: 100%; flex-direction: column;
    color: inherit; text-decoration: none;
}
.card__link:hover { color: inherit; }
.card__link:focus-visible { outline-offset: -4px; }
.card__media { position: relative; display: block; aspect-ratio: 3 / 2; overflow: hidden; background: var(--tep-cloud); }
.card__media--poster { aspect-ratio: 6 / 5; }
.card__media img { width: 100%; height: 100%; object-fit: contain; }
.card__body { display: block; padding: 0.95rem 1rem 1rem; }
.card__meta { display: block; margin-bottom: 0.38rem; color: var(--tep-red); font-size: 0.72rem; font-weight: 600; letter-spacing: 0.09em; text-transform: uppercase; }
.card__title { margin-bottom: 0.42rem; font-size: clamp(1.28rem, 4vw, 1.7rem); }
.card__title a { text-decoration: none; }
.card__subtitle { display: block; margin: 0 0 0.58rem; color: #4d615b; font-size: 0.94rem; line-height: 1.35; }
.card__details { display: block; margin: 0; color: #4f625d; font-size: 0.9rem; line-height: 1.4; }
.card--event { display: flex; flex-direction: column; }
.card--event .card__body { display: flex; flex: 1; flex-direction: column; }
.card--home .card__body { padding: 0.8rem 0.85rem 0.9rem; }
.card--home .card__title { font-size: clamp(1.18rem, 3.7vw, 1.5rem); }
.card--home .card__media--poster { aspect-ratio: 4 / 3; }
.card--home .card__details { font-size: 0.84rem; }
.tep-date-badge {
    position: absolute; z-index: 2; top: 0.65rem; left: 0.65rem;
    display: inline-flex; align-items: baseline; gap: 0.24em; padding: 0.4rem 0.55rem;
    background: rgba(255, 255, 255, 0.96); color: #111; border: 1px solid rgba(17, 17, 17, 0.12); border-radius: 0.25rem;
    box-shadow: 0 0.2rem 0.65rem rgba(0, 0, 0, 0.12); font-size: 0.74rem; font-weight: 600; letter-spacing: 0.035em; line-height: 1; text-transform: uppercase;
}
.tep-date-badge strong { font-size: 1.14em; font-weight: 700; }
.tep-date-badge--range {
    display: grid; grid-template-columns: max-content auto max-content; gap: 0.34em; max-width: calc(100% - 1.3rem);
    font-size: 0.7rem; white-space: nowrap;
}
.tep-date-badge__date { display: inline-flex; align-items: baseline; gap: 0.24em; color: inherit; }
.tep-date-badge__separator { align-self: center; color: var(--tep-red); font-size: 1.06em; font-weight: 700; }
.tep-card__schedule, .tep-card__location { display: block; }
.tep-card__location { margin-top: 0.16rem; }
.tep-program-hint {
    display: block; align-self: flex-end; margin: auto 0 0; padding-top: 0.65rem; color: var(--tep-red);
    font-size: 0.82rem; font-weight: 600; line-height: 1.3; text-align: right;
}
.exhibition-card-status {
    display: inline-flex; margin: 0.05rem 0 0.42rem;
    color: var(--tep-ink); font-size: 0.78rem; line-height: 1.3;
}
.exhibition-card-status strong { color: var(--tep-red); font-size: 0.72rem; letter-spacing: 0.07em; text-transform: uppercase; }
.exhibition-card-status--ultimos-dias { padding-left: 0.55rem; border-left: 3px solid var(--tep-red); }
.exhibition-card-end { margin-bottom: 0.18rem; }
.image-placeholder { display: block; width: 100%; height: 100%; min-height: 12rem; background: linear-gradient(140deg, var(--tep-mist), var(--tep-cloud)); }

.recommendations { display: grid; gap: 1rem; }
.recommendation {
    overflow: hidden; color: var(--tep-ink); background: var(--tep-white); border-radius: 0.8rem;
    transition: transform 180ms ease, box-shadow 180ms ease;
}
.recommendation:hover { transform: translateY(-3px); box-shadow: var(--tep-shadow); }
.recommendation__link { display: grid; grid-template-columns: 5.25rem minmax(0, 1fr); gap: 1rem; align-items: center; padding: 0.9rem; color: inherit; text-decoration: none; }
.recommendation__link:focus-visible { outline-offset: -4px; }
.recommendation__image { aspect-ratio: 1; overflow: hidden; background: var(--tep-cloud); border-radius: 0.55rem; }
.recommendation__image img { width: 100%; height: 100%; object-fit: cover; }
.recommendation__body { min-width: 0; }
.recommendation__title { display: block; color: var(--tep-ink); font-family: var(--tep-serif); font-size: 1.15rem; font-weight: 700; line-height: 1.12; }
.recommendation__details { display: grid; gap: 0.18rem; margin-top: 0.52rem; color: #4d615b; font-size: 0.84rem; font-weight: 700; line-height: 1.35; }
.recommendation__schedule, .recommendation__venue { display: block; }
.recommendation__schedule { color: var(--tep-ink); }
.home-recommendations .eyebrow { color: var(--tep-gold); }

.editorial-grid { display: grid; gap: 1rem; }
.editorial-grid .card--home-primary .card__media { aspect-ratio: 16 / 9; }
.editorial-grid .card--home-secondary .card__link { display: grid; grid-template-columns: minmax(6.5rem, 0.42fr) minmax(0, 1fr); }
.editorial-grid .card--home-secondary .card__media { aspect-ratio: auto; min-height: 8rem; }
.editorial-grid .card--home-secondary .card__title { font-size: clamp(1.08rem, 3.5vw, 1.4rem); }

/* Revista conserva una composición editorial propia en su índice. */
.magazine-page-hero { background: var(--tep-white); }
.magazine-index { padding-top: 1.25rem; background: var(--tep-white); }
.magazine-index__featured .card,
.magazine-grid .card { overflow: visible; background: transparent; border: 0; border-radius: 0; transition: none; }
.magazine-index__featured .card:hover,
.magazine-grid .card:hover { transform: none; box-shadow: none; }
.magazine-index__featured .card__media,
.magazine-grid .card__media { border-radius: 0.5rem; }
.magazine-index__featured .card__media { aspect-ratio: 16 / 9; }
.magazine-index__featured .card__body { padding: 1rem 0 0; }
.magazine-index__featured .card__title { max-width: 18ch; font-size: clamp(2rem, 7vw, 3.75rem); }
.magazine-index__featured .card__subtitle { max-width: 38rem; font-family: var(--tep-serif); font-size: 1.05rem; line-height: 1.45; }
.magazine-index__more { margin-top: clamp(2.5rem, 7vw, 4.5rem); padding-top: 1.25rem; border-top: 1px solid var(--tep-border); }
.magazine-index__more-title { margin-bottom: 1.25rem; font-size: clamp(1.65rem, 4vw, 2.35rem); }
.magazine-grid { display: grid; gap: 1.75rem; }
.magazine-grid .card__body { padding: 0.8rem 0 0; }
.magazine-grid .card__subtitle { display: -webkit-box; overflow: hidden; -webkit-box-orient: vertical; -webkit-line-clamp: 3; }

.cards.tep-carousel {
    display: grid; grid-auto-flow: column; grid-auto-columns: calc((100% - 2rem) / 3); grid-template-columns: none;
    gap: 1rem; overflow-x: auto; overscroll-behavior-inline: contain; scroll-behavior: smooth;
    scroll-snap-type: inline mandatory; scrollbar-width: thin; padding-block: 0.25rem 0.75rem;
    -webkit-overflow-scrolling: touch;
}
.cards.tep-carousel[data-carousel-items="3"] { grid-auto-columns: calc((100% - 1rem) / 2); }
.cards.tep-carousel[data-carousel-items="2"] { grid-auto-columns: 66%; }
.tep-carousel > .card { min-width: 0; scroll-snap-align: start; }
.tep-carousel__controls { display: flex; justify-content: flex-end; gap: 0.5rem; margin-top: 1rem; }
.tep-carousel__button {
    display: inline-grid; width: 2.75rem; height: 2.75rem; place-items: center; border: 1px solid currentColor;
    border-radius: 999px; background: transparent; color: inherit; cursor: pointer; font: inherit;
}
.tep-carousel__button span { font-size: 1.8rem; line-height: 1; transform: translateY(-0.08em); }
.tep-carousel__button:hover:not(:disabled), .tep-carousel__button:focus-visible { background: var(--tep-ink); color: var(--tep-white); }
.section--ink .tep-carousel__button:hover:not(:disabled), .section--ink .tep-carousel__button:focus-visible { background: var(--tep-white); color: var(--tep-ink); }
.tep-carousel__button:disabled { cursor: default; opacity: 0.3; }

.archive-page-hero { padding: 2rem 0 0.75rem; }
.archive-page-hero .page-kicker { margin-bottom: 0.45rem; }
.archive-page-hero h1 { margin-bottom: 0.55rem; }
.archive-page-hero .page-intro { margin-bottom: 0; }
.archive-section { padding: 0.65rem 0 4rem; }
.archive-explorer { min-width: 0; }
.period-nav {
    display: flex; flex-wrap: wrap; gap: 0.35rem;
    margin: 0; padding: 0.15rem 0 0.45rem;
}
.period-nav a, .archive-filter-toggle, .archive-filter-dialog__close {
    display: inline-flex; min-height: 2.75rem; align-items: center; justify-content: center;
    padding: 0.5rem 0.75rem; color: var(--tep-ink); background: var(--tep-white); text-align: center;
    border: 1px solid var(--tep-border); border-radius: 0.45rem; font-size: 0.86rem; font-weight: 600; line-height: 1.15;
}
.period-nav a { flex: 0 0 auto; text-decoration: none; }
.period-nav a[aria-current="page"] {
    background: var(--tep-ink); border-color: var(--tep-ink); color: var(--tep-white);
    font-weight: 700; text-decoration: underline; text-decoration-thickness: 0.12em; text-underline-offset: 0.18em;
}
.period-nav a:hover { background: var(--tep-ink); border-color: var(--tep-ink); color: var(--tep-white); }
.archive-results {
    display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 0.75rem; align-items: center;
    margin: 0.7rem 0 0.8rem; padding-bottom: 0.8rem; border-bottom: 1px solid var(--tep-border);
}
.archive-results__title {
    margin: 0 0 0.08rem; color: var(--tep-ink); font-family: var(--tep-sans); font-size: 1rem;
    font-weight: 700; letter-spacing: 0; line-height: 1.25;
}
.archive-results__count { margin: 0; color: var(--tep-muted); font-size: 0.9rem; font-weight: 600; line-height: 1.35; }
.archive-filter-toggle, .archive-filter-dialog__close { font-weight: 700; cursor: pointer; }
.archive-filter-toggle { gap: 0.25rem; }
.archive-filter-toggle:hover, .archive-filter-dialog__close:hover { color: var(--tep-white); background: var(--tep-ink); border-color: var(--tep-ink); }
.period-nav a:focus-visible, .archive-filter-toggle:focus-visible, .archive-filter-dialog__close:focus-visible,
.active-filter-chip:focus-visible, .archive-filter-form__submit:focus-visible { outline-color: var(--tep-gold); }
.period-nav a:active, .archive-filter-toggle:active, .archive-filter-dialog__close:active,
.active-filter-chip:active, .archive-filter-form__submit:active { transform: translateY(1px); }
.archive-filter-dialog { color: var(--tep-sage); font-family: var(--tep-sans); }
.archive-filter-dialog__header { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin-bottom: 1rem; }
.archive-filter-dialog__header h2 {
    margin: 0; font-family: var(--tep-sans); font-size: 0.78rem; font-weight: 700;
    letter-spacing: 0.1em; line-height: 1.25; text-transform: uppercase;
}
.archive-filter-form__fields { display: grid; gap: 0.85rem; }
.archive-filter-field { min-width: 0; }
.archive-filter-field label {
    display: block; margin-bottom: 0.3rem; color: var(--tep-ink); font-size: 0.76rem;
    font-weight: 600; letter-spacing: 0.07em; text-transform: uppercase;
}
.archive-filter-field select {
    width: 100%; min-height: 3rem; padding: 0.55rem 2rem 0.55rem 0.65rem;
    background: var(--tep-paper); color: var(--tep-ink); border: 1px solid var(--tep-border); border-radius: 0.45rem;
}
.archive-filter-form__actions { display: grid; gap: 0.4rem; margin-top: 1rem; }
.archive-filter-form__submit { width: 100%; min-height: 3rem; }
.button.archive-filter-form__submit { border-radius: 0.45rem; }
.archive-filter-form__clear {
    display: inline-flex; min-height: 2.75rem; align-items: center; justify-content: center;
    color: var(--tep-ink); font-size: 0.9rem; font-weight: 600; text-underline-offset: 0.2em;
}
.active-filters { display: flex; flex-wrap: wrap; gap: 0.45rem 0.7rem; align-items: center; margin: 0.75rem 0 1rem; }
.active-filters__chips { display: flex; flex-wrap: wrap; gap: 0.4rem; }
.active-filter-chip {
    display: inline-flex; min-height: 2.75rem; align-items: center; gap: 0.35rem; padding: 0.42rem 0.7rem;
    color: var(--tep-ink); background: var(--tep-white); border: 1px solid var(--tep-border); border-radius: 0.45rem;
    font-size: 0.86rem; font-weight: 600; line-height: 1.2; text-decoration: none;
}
.active-filter-chip:hover { color: var(--tep-white); background: var(--tep-ink); border-color: var(--tep-ink); }
.active-filter-chip span[aria-hidden="true"] { color: var(--tep-red); font-size: 1.05rem; font-weight: 700; }
.active-filter-chip:hover span[aria-hidden="true"] { color: inherit; }
.active-filters__clear {
    display: inline-flex; min-height: 2.75rem; align-items: center; color: var(--tep-ink);
    font-size: 0.86rem; font-weight: 600; text-underline-offset: 0.2em;
}
.cartelera-calendar {
    width: 100%; min-width: 0; margin: 0.75rem 0 1rem; color: var(--tep-sage);
    font-family: var(--tep-sans);
}
.cartelera-calendar__control {
    display: flex; min-width: 0; align-items: center; justify-content: space-between; gap: 0.65rem 1rem;
    padding: 0.45rem 0; border-block: 1px solid var(--tep-border);
}
.cartelera-calendar__current {
    min-width: 0; margin: 0; color: var(--tep-ink); font: var(--text-meta-semibold);
}
.cartelera-calendar__actions { display: flex; min-width: 0; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: 0.15rem 0.7rem; }
.cartelera-calendar__toggle {
    display: inline-flex; min-height: 2.75rem; align-items: center; justify-content: center; gap: 0.4rem;
    padding: 0.4rem 0; color: var(--tep-ink); background: transparent; border: 0; border-radius: 0.35rem;
    font: var(--text-meta-semibold); cursor: pointer;
}
.cartelera-calendar__toggle:hover { color: var(--tep-red); }
.cartelera-calendar__toggle svg {
    width: 1.15rem; height: 1.15rem; fill: none; stroke: currentColor; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.7;
}
.cartelera-calendar__clear {
    display: inline-flex; min-height: 2.75rem; align-items: center; gap: 0.25rem; color: var(--tep-muted);
    font: var(--text-meta); text-decoration-thickness: 1px; text-underline-offset: 0.2em;
}
.cartelera-calendar__clear span { color: var(--tep-red); font-size: 1.05rem; font-weight: var(--weight-bold); }
.cartelera-calendar__panel {
    width: min(100%, 48rem); margin-inline: auto; padding: 0.75rem 0 0.25rem;
    animation: cartelera-calendar-reveal 140ms ease-out;
}
.cartelera-calendar__panel[hidden] { display: none; }
@keyframes cartelera-calendar-reveal {
    from { opacity: 0; transform: translateY(-0.2rem); }
    to { opacity: 1; transform: translateY(0); }
}
.cartelera-calendar__range {
    margin: 0 0 0.75rem; color: var(--tep-ink); font: var(--text-meta-semibold); letter-spacing: 0.04em; text-align: center;
}
.cartelera-calendar__timeline { min-width: 0; }
.cartelera-calendar__weekdays,
.cartelera-calendar__days { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); min-width: 0; }
.cartelera-calendar__weekdays span {
    padding: 0.35rem 0; color: var(--tep-muted); font: var(--text-micro); text-align: center;
}
.cartelera-calendar__days { margin: 0; padding: 0; list-style: none; }
.cartelera-calendar__days li { position: relative; min-width: 0; }
.cartelera-calendar__days li.is-month-start::before {
    position: absolute; z-index: 1; top: 16%; bottom: 16%; left: 0; width: 1px; background: var(--tep-border); content: "";
}
.cartelera-calendar__day {
    position: relative; display: flex; width: 100%; min-width: 0; min-height: clamp(2.75rem, 5vw, 3.25rem); align-items: center; justify-content: center;
    flex-direction: column; gap: 0.08rem; padding: 0.2rem 0; color: var(--tep-ink); border-radius: 0.45rem;
    font: var(--text-meta-semibold); text-decoration: none;
}
.cartelera-calendar__day:hover { color: var(--tep-red); background: var(--tep-cloud); }
.cartelera-calendar__day-number {
    display: inline-flex; width: 2rem; height: 2rem; align-items: center; justify-content: center; border-radius: 999px;
}
.cartelera-calendar__month-marker {
    position: absolute; top: 0.12rem; left: 50%; color: var(--tep-muted); font-size: 0.58rem; font-weight: var(--weight-bold);
    letter-spacing: 0.08em; line-height: 1; transform: translateX(-50%);
}
.cartelera-calendar__day.is-today .cartelera-calendar__day-number { outline: 1.5px solid var(--tep-sage); outline-offset: -2px; }
.cartelera-calendar__day.is-selected { font-weight: var(--weight-bold); }
.cartelera-calendar__day.is-selected .cartelera-calendar__day-number { color: var(--tep-white); background: var(--tep-red); }
.cartelera-calendar__day.is-selected.is-today .cartelera-calendar__day-number { outline-color: var(--tep-ink); }
.cartelera-calendar__activity-dot { width: 0.28rem; height: 0.28rem; background: var(--tep-red); border-radius: 999px; }
.cartelera-calendar__day.is-selected .cartelera-calendar__activity-dot { background: var(--tep-ink); }
.cartelera-calendar__legend {
    display: flex; align-items: center; justify-content: flex-end; gap: 0.35rem; margin: 0.35rem 0 0;
    color: var(--tep-muted); font: var(--text-micro); letter-spacing: 0; text-transform: none;
}
.cartelera-calendar__legend span { width: 0.3rem; height: 0.3rem; background: var(--tep-red); border-radius: 999px; }
@media (max-width: 30rem) {
    .cartelera-calendar__range { margin-bottom: 0.55rem; }
    .cartelera-calendar__weekdays span { padding-block: 0.25rem; }
    .cartelera-calendar__day { padding-inline: 0.05rem; }
    .cartelera-calendar__month-marker { top: 0.08rem; font-size: 0.52rem; letter-spacing: 0.05em; }
}
.cartelera-selected-day { margin-top: 1rem; }
.cartelera-selected-day__header { margin-bottom: 0.85rem; padding-top: 0.75rem; border-top: 1px solid var(--tep-border); }
.cartelera-selected-day__header h2 {
    margin: 0; color: var(--tep-ink); font: var(--text-micro); letter-spacing: 0.075em; text-transform: uppercase;
}
.cartelera-selected-day__header p { margin: 0.2rem 0 0; color: var(--tep-muted); font: var(--text-meta-semibold); }
.archive-days { display: grid; gap: 2rem; margin-top: 1rem; }
.archive-day__heading {
    margin: 0 0 0.7rem; padding-top: 0.7rem; color: var(--tep-ink); border-top: 1px solid var(--tep-border);
    font-family: var(--tep-sans); font-size: 0.84rem; font-weight: 700; letter-spacing: 0.075em; line-height: 1.3; text-transform: uppercase;
}
.archive-day__today { color: var(--tep-red); }
.archive-card-grid .card { width: 100%; }
.archive-exhibitions-grid { margin-top: 1rem; }
.card--text-only { align-self: start; }
.card--text-only .card__body { padding: 1.1rem 1rem 1.15rem; }
.card--text-only .card__title { font-size: clamp(1.3rem, 4vw, 1.7rem); }
.archive-empty-state { margin-top: 1.25rem; }
.archive-empty-state .button { margin-top: 0.35rem; }

@media (max-width: 47.999rem) {
    html:not(.archive-filters-enhanced) .archive-filter-toggle,
    html:not(.archive-filters-enhanced) .archive-filter-dialog__close { display: none; }
    .archive-filter-dialog[open]:not(.is-modal) {
        position: static; display: block; width: 100%; max-width: none; max-height: none;
        margin: 0 0 1.25rem; padding: 1rem; overflow: visible; background: var(--tep-white);
        border: 1px solid var(--tep-border); border-radius: var(--tep-radius); box-shadow: none;
    }
    .archive-filters-enhanced .archive-filter-dialog:not(.is-modal) { display: none; }
    .archive-filter-dialog.is-modal {
        position: fixed; z-index: 100000; inset: auto 0 0; display: block;
        width: 100%; max-width: none; max-height: calc(100vh - max(0.75rem, env(safe-area-inset-top)));
        max-height: calc(100dvh - max(0.75rem, env(safe-area-inset-top))); margin: 0;
        padding: 1rem max(1rem, env(safe-area-inset-right)) max(1rem, env(safe-area-inset-bottom)) max(1rem, env(safe-area-inset-left));
        overflow-y: auto; overscroll-behavior: contain; -webkit-overflow-scrolling: touch;
        background: var(--tep-white); border: 1px solid var(--tep-border); border-bottom: 0;
        border-radius: var(--tep-radius) var(--tep-radius) 0 0; box-shadow: 0 -0.75rem 2.5rem rgba(25, 44, 39, 0.12);
    }
    .archive-filter-dialog.is-modal::backdrop { background: rgba(25, 44, 39, 0.48); }
}
.button {
    display: inline-flex; align-items: center; justify-content: center; min-height: 2.8rem; padding: 0.6rem 1rem;
    background: var(--tep-red); color: var(--tep-white); border: 0; border-radius: 999px;
    font-weight: 600; text-decoration: none; cursor: pointer;
}
.button:hover { background: var(--tep-ink); color: var(--tep-white); }
.button--secondary { background: transparent; color: var(--tep-ink); border: 1px solid var(--tep-ink); }
.button--secondary:hover { background: var(--tep-ink); color: var(--tep-white); }
.button-link {
    display: inline-flex; min-height: 2.75rem; align-items: center; justify-content: center;
    color: var(--tep-ink); font-weight: 600; text-decoration-color: var(--tep-red);
}
.empty-state { padding: 2rem; background: var(--tep-cloud); border-radius: var(--tep-radius); text-align: center; }
.empty-state h2 { font-size: 1.6rem; }

.detail { padding: clamp(1.5rem, 5vw, 5rem) 0; }
.detail__layout { display: grid; gap: 1.45rem; }
.detail__summary { min-width: 0; }
.detail__poster { overflow: hidden; background: var(--tep-cloud); border-radius: var(--tep-radius); }
.detail__poster img { width: 100%; max-height: min(72vh, 40rem); height: auto; object-fit: contain; }
.detail__header h1 { margin-bottom: 0.55rem; font-size: clamp(2rem, 8.2vw, 3.1rem); line-height: 1.02; }
.detail__subtitle { margin-bottom: 0.8rem; color: #4d615b; font-family: var(--tep-serif); font-size: clamp(1.08rem, 3vw, 1.55rem); line-height: 1.35; }
.event-status {
    width: fit-content; margin: 0.25rem 0 0.85rem; padding: 0.42rem 0.62rem;
    color: #7c1f0c; background: #fff0eb; border: 2px solid var(--tep-red); border-radius: 0.35rem;
    font-size: 0.78rem; font-weight: 700; letter-spacing: 0.08em; line-height: 1.2; text-transform: uppercase;
}
/* Información estructurada compartida: Eventos, Cine, Exposiciones, Convocatorias y Revista. */
.tep-info-card {
    display: grid; width: min(100%, 42rem); margin: 1rem 0 0; padding: 0 1rem;
    overflow: hidden; color: var(--tep-ink); background: var(--tep-cloud); border-radius: 0.8rem;
}
.tep-info-row {
    display: grid; grid-template-columns: 2rem minmax(0, 1fr); gap: 0.75rem;
    min-width: 0; padding: 0.9rem 0;
}
.tep-info-row + .tep-info-row { border-top: 1px solid var(--tep-border); }
.tep-info-icon {
    display: inline-flex; width: 2rem; height: 2rem; align-items: flex-start; justify-content: center;
    padding-top: 0.08rem; color: var(--tep-red);
}
.tep-info-icon__svg {
    width: 1.3rem; height: 1.3rem; fill: none; stroke: currentColor; stroke-width: 1.7;
    stroke-linecap: round; stroke-linejoin: round;
}
.tep-info-content, .tep-info-body { min-width: 0; }
.tep-info-label {
    margin: 0 0 0.18rem; color: var(--tep-muted); font: var(--text-micro);
    letter-spacing: 0.065em; text-transform: uppercase;
}
.tep-info-body { margin: 0; }
.tep-info-value {
    margin: 0; color: var(--tep-ink); font-size: 1rem; font-weight: var(--weight-semibold);
    line-height: 1.4; overflow-wrap: anywhere;
}
.tep-info-meta {
    margin-top: 0.14rem; color: var(--tep-muted); font: var(--text-meta); overflow-wrap: anywhere;
}
.tep-info-value > :first-child, .tep-info-meta > :first-child { margin-top: 0; }
.tep-info-value > :last-child, .tep-info-meta > :last-child { margin-bottom: 0; }
.tep-info-action {
    display: inline-flex; min-height: 2.4rem; align-items: center; margin-top: 0.2rem;
    color: var(--tep-red); font: var(--text-meta-semibold); text-decoration-thickness: 1px;
    text-underline-offset: 0.2em; overflow-wrap: anywhere;
}
.tep-info-action:hover { color: var(--tep-ink); text-decoration-thickness: 0.12em; }
.tep-info-action:focus-visible { outline: 3px solid var(--tep-gold); outline-offset: 2px; border-radius: 0.2rem; }
.tep-info-action--button { margin-top: 0.35rem; text-decoration: none; }
.tep-info-row--deadline .tep-info-value { color: var(--tep-red); }
.tep-info-row--convoca .tep-info-value { overflow-wrap: anywhere; }
.tep-info-row--exhibition-status .tep-info-meta { color: var(--tep-ink); font-weight: var(--weight-semibold); text-transform: uppercase; }
.tep-info-card .schedule-list { font-size: 0.94rem; font-weight: var(--weight-regular); }
.tep-info-card .tep-occurrence-list { font-weight: var(--weight-regular); }
.tep-info-card .tep-event-daily-hours { margin-top: 0.22rem; }
.tep-info-card .tep-event-daily-hours p { margin: 0.12rem 0 0; }

/* Controles compactos equivalentes, sin invadir botones de acción especializados. */
.tep-accent-controls { max-width: 100%; overflow-x: auto; overscroll-behavior-inline: contain; }
.tep-accent-controls .tep-accent-button {
    display: inline-flex; min-height: 2.5rem; align-items: center; justify-content: center;
    padding: 0.45rem 0.72rem; color: var(--tep-ink); background: var(--tep-white);
    border: 1px solid var(--tep-border); font: var(--text-meta-semibold); text-decoration: none;
    white-space: nowrap;
}
.tep-accent-controls .tep-accent-button--square { border-radius: 0.45rem; }
.tep-accent-controls .tep-accent-button:hover { color: var(--tep-red); border-color: var(--tep-red); }
.tep-accent-controls .tep-accent-button:focus-visible { outline: 3px solid var(--tep-gold); outline-offset: 2px; }
.tep-accent-controls .tep-accent-button[aria-current="date"],
.tep-accent-controls .tep-accent-button[aria-selected="true"] {
    color: var(--tep-white); background: var(--tep-red); border-color: var(--tep-red);
    font-weight: var(--weight-bold); text-decoration: underline; text-decoration-thickness: 0.1em; text-underline-offset: 0.16em;
}
.detail__actions {
    display: grid; gap: 1rem; margin-top: 1.25rem; padding-top: 1rem;
    border-top: 1px solid var(--tep-border);
}
.detail__actions--after-admission { margin-top: 1.5rem; }
.detail__primary-actions { display: grid; gap: 0.55rem; }
.detail__calendar-action { display: grid; gap: 0.4rem; justify-items: stretch; }
.detail__actions--summary { margin-top: 1.15rem; }
.detail__actions--agenda { margin-top: 1.15rem; }
.detail__action-label {
    margin: 0; color: var(--tep-muted); font-size: 0.7rem; font-weight: 600;
    letter-spacing: 0.09em; line-height: 1.2; text-transform: uppercase;
}
.detail__actions .button { width: 100%; min-height: 2.75rem; }
.detail__below { width: min(100%, 56rem); margin: 1.5rem auto 0; }
.detail__below > :first-child { margin-top: 0; }
.detail__content { max-width: 46rem; }
.detail__content > :first-child { margin-top: 0; }
.detail-section, .source-box { padding: 1.15rem 0; border-top: 1px solid var(--tep-border); }
.detail-section h2, .source-box h2 { margin-bottom: 0.52rem; font-family: var(--tep-sans); font-size: 0.78rem; font-weight: 700; letter-spacing: 0.09em; text-transform: uppercase; }
.detail-section__content > :last-child, .source-box > :last-child { margin-bottom: 0; }
.source-box__name { color: var(--tep-ink); font-weight: 600; }
.call-deadline { display: inline-flex; color: var(--tep-red); font-weight: 600; }
.card .call-deadline { margin-top: 0.08rem; font-size: 0.96rem; }
.verification-note { margin: 0.85rem 0 0; color: #596a66; font-size: 0.84rem; }
.tep-event-program-block { margin-top: 1.15rem; padding-top: 1.15rem; border-top: 1px solid var(--tep-border); }
.tep-event-program-block > :first-child { margin-top: 0; }
.tep-event-program-block > .tep-journey, .tep-event-program-block > .tep-program, .tep-event-program-block > .detail-section { padding-top: 0; border-top: 0; }
.status-pill { display: inline-flex; padding: 0.4rem 0.7rem; color: var(--tep-ink); background: var(--tep-gold); border-radius: 999px; font-size: 0.75rem; font-weight: 700; }

.schedule-list { display: grid; gap: 0.24rem; margin: 0; padding: 0; list-style: none; }
.schedule-list li { display: grid; grid-template-columns: minmax(7.5rem, 1fr) auto; gap: 0.75rem; }
.schedule-list strong { text-align: right; }

.detail--cinema .detail__layout > * { min-width: 0; }
.detail__actions--cinema { margin-top: 0.75rem; }
.detail__actions--cinema .button { min-height: 2.75rem; padding-block: 0.45rem; font-size: 0.9rem; }
.cinema-days { margin: 1rem 0 1.35rem; padding: 0.9rem 0; border-block: 1px solid var(--tep-border); }
.cinema-days__heading { display: flex; justify-content: space-between; gap: 1rem; align-items: baseline; margin-bottom: 0.65rem; }
.cinema-days__eyebrow, .cinema-days__position { margin: 0; font-size: 0.75rem; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; }
.cinema-days__position { color: var(--tep-muted); letter-spacing: 0.02em; text-transform: none; }
.cinema-days__list { display: flex; gap: 0.48rem; overflow-x: auto; margin: 0; padding: 0.15rem 0 0.55rem; list-style: none; scroll-snap-type: inline mandatory; scrollbar-width: thin; }
.cinema-days__list li { flex: 0 0 auto; scroll-snap-align: start; }
.cinema-days__list a {
    flex: 0 0 auto; min-height: 2.65rem; scroll-snap-align: start;
}
.cartelera-date-strip { min-width: 0; max-width: 100%; }
.cartelera-date-strip .cinema-days__heading { flex-wrap: wrap; }
.cartelera-date-strip__range { max-width: 100%; text-align: right; }
.cartelera-date-strip .cinema-days__list {
    max-width: 100%; padding-right: clamp(2.5rem, 14vw, 7rem); overscroll-behavior-inline: contain;
    scrollbar-width: none; -webkit-overflow-scrolling: touch;
}
.cartelera-date-strip .cinema-days__list::-webkit-scrollbar { display: none; }
.cartelera-date-strip .cinema-days__list a { min-height: 2.75rem; }
.cartelera-date-strip__clear {
    display: inline-flex; min-height: 2.75rem; align-items: center; gap: 0.25rem; margin-top: 0.15rem;
    color: var(--tep-muted); font: var(--text-meta); text-decoration-thickness: 1px; text-underline-offset: 0.2em;
}
.cartelera-date-strip__clear span { color: var(--tep-red); font-size: 1.05rem; font-weight: var(--weight-bold); }
@media (min-width: 73.8125rem) {
    .cartelera-date-strip .cinema-days__list { padding-right: 0; }
}
.tep-cinema-program { margin-top: 1.2rem; }
.tep-cinema-program__header { margin-bottom: 0.85rem; }
.tep-cinema-program__header h2 { margin-bottom: 0.2rem; font-size: clamp(1.65rem, 5vw, 2.45rem); }
.tep-cinema-program__header p { margin: 0; color: var(--tep-muted); font-weight: 600; }
.cinema-summary { margin: 0.9rem 0 1.25rem; padding: 0.8rem 0.9rem; background: var(--tep-cloud); border-radius: 0.65rem; }
.cinema-summary h3 { margin-bottom: 0.45rem; font-family: var(--tep-sans); font-size: 0.75rem; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; }
.cinema-summary ol { display: grid; gap: 0.25rem; margin: 0; padding: 0; list-style: none; }
.cinema-summary li { display: grid; grid-template-columns: max-content minmax(0, 1fr); gap: 0.25rem 0.45rem; align-items: baseline; min-width: 0; text-align: left; line-height: 1.35; }
.cinema-summary__time { white-space: nowrap; }
.cinema-summary__title { min-width: 0; overflow-wrap: anywhere; }
.cinema-summary time { color: var(--tep-ink); font-weight: 600; }
.cinema-summary strong { margin-left: 0.45rem; color: var(--tep-red); font-size: 0.82rem; white-space: nowrap; }
.detail--cinema .tep-cinema-day { margin: 0; }
.detail--cinema .tep-movie {
    display: grid; grid-template-columns: 7.1875rem minmax(0, 1fr); gap: 1rem; align-items: start; min-width: 0;
    margin: 0; padding-block: 1.25rem; border-top: 1px solid var(--tep-border); text-align: left;
}
.detail--cinema .tep-movie:first-child { border-top-color: var(--tep-border); }
.detail--cinema .tep-movie__body { display: grid; justify-items: start; align-content: start; min-width: 0; }
.detail--cinema .tep-movie__poster { min-width: 0; overflow: hidden; background: var(--tep-cloud); border-radius: 0.45rem; }
.detail--cinema .tep-movie__poster img { display: block; width: 100%; height: auto; }
.detail--cinema .tep-movie__poster .image-placeholder { width: 100%; height: auto; min-height: 0; aspect-ratio: 2 / 3; }
.detail--cinema .tep-screening__identity { display: grid; gap: 0.2rem; width: 100%; min-width: 0; margin: 0 0 0.75rem; }
.detail--cinema .tep-screening__time { margin: 0; color: var(--tep-red); font-size: 1rem; font-weight: var(--weight-semibold); line-height: 1.15; white-space: nowrap; }
.detail--cinema .tep-screening__title {
    min-width: 0; max-width: 100%; margin: 0; font-family: var(--font-editorial); font-size: 1.25rem;
    font-weight: var(--weight-bold); line-height: 1.15; hyphens: auto; overflow-wrap: break-word;
}
.detail--cinema .tep-screening__director { max-width: 100%; margin: 0; color: var(--tep-muted); font: var(--text-meta); overflow-wrap: anywhere; }
.detail--cinema .tep-screening__director span { color: inherit; font-weight: var(--weight-regular); }
.detail--cinema .tep-screening__technical { display: block; max-width: 100%; margin: 0.375rem 0 0; padding: 0; color: var(--tep-muted); font: var(--text-meta); line-height: 1.35; list-style: none; overflow-wrap: anywhere; }
.detail--cinema .tep-screening__technical li { display: inline; }
.detail--cinema .tep-screening__technical li + li::before { content: " · "; color: var(--tep-red); }
.detail--cinema .tep-screening__context { max-width: 100%; margin: 0.375rem 0 0; color: var(--tep-muted); font-size: 0.82rem; overflow-wrap: anywhere; }
.tep-action-button, .tep-calendar-button {
    box-sizing: border-box; width: fit-content; max-width: 100%; min-height: 2.5rem; margin-top: 0.75rem; padding: 0.4rem 0.55rem;
    gap: 0.3rem; color: var(--tep-red); background: transparent; border-color: var(--tep-red); border-radius: 999px;
    font-size: 0.8125rem; line-height: 1.2; white-space: normal; text-align: left; overflow-wrap: anywhere;
}
.detail__actions .tep-calendar-button { width: fit-content; min-height: 2.5rem; }
.tep-action-button:hover, .tep-calendar-button:hover { color: var(--tep-white); background: var(--tep-red); border-color: var(--tep-red); }
.tep-action-button:focus-visible, .tep-calendar-button:focus-visible { outline: 3px solid var(--tep-gold); outline-offset: 3px; }
.tep-action-button:active, .tep-calendar-button:active { color: var(--tep-white); background: var(--tep-ink); border-color: var(--tep-ink); transform: translateY(1px); }
.tep-action-button__icon, .tep-calendar-button__icon { flex: 0 0 0.9rem; width: 0.9rem; height: 0.9rem; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.detail--cinema .tep-movie__shorts { margin: 0.75rem 0 0; }
.tep-movie__credits, .tep-movie__technical { margin: 0.18rem 0; color: #4f625d; font-size: 0.86rem; line-height: 1.35; }
.tep-movie__synopsis {
    display: -webkit-box; overflow: hidden; margin: 0.75rem 0 0; color: #4f625d; font-size: 0.84rem; line-height: 1.4;
    -webkit-box-orient: vertical; -webkit-line-clamp: 2;
}
.source-box--movie { margin-top: 0.75rem; padding: 0.75rem 0 0; font-size: 0.84rem; }

/* Cartelera de cine nativa: renderer aislado; sólo comparte tokens y controles. */
.detail--cinema-schedule .detail__layout > * { min-width: 0; }
.tep-cinema-schedule { min-width: 0; margin-top: 1.2rem; padding-top: 1.15rem; border-top: 1px solid var(--tep-border); }
.tep-cinema-schedule > h2 { margin: 0; }
.tep-cinema-schedule__selector { min-width: 0; margin-top: 0.8rem; }
.tep-cinema-schedule__selector .cinema-days__list { max-width: 100%; scrollbar-width: thin; -webkit-overflow-scrolling: touch; }
.tep-cinema-schedule__selector button { cursor: pointer; }
.tep-cinema-schedule__date { margin: 0 0 0.55rem; color: var(--tep-ink); font-size: 1rem; font-weight: var(--weight-semibold); text-transform: lowercase; }
.tep-cinema-schedule__items { display: grid; min-width: 0; }
.tep-cinema-screening {
    display: grid; grid-template-columns: minmax(6.8rem, 7.2rem) minmax(0, 1fr); gap: 1rem; align-items: start;
    min-width: 0; margin: 0; padding-block: 1.25rem; border-top: 1px solid var(--tep-border);
}
.tep-cinema-screening__poster { aspect-ratio: 2 / 3; min-width: 0; overflow: hidden; background: var(--tep-cloud); border-radius: 0.45rem; }
.tep-cinema-screening__poster img { display: block; width: 100%; height: 100%; object-fit: contain; }
.tep-cinema-screening__poster .image-placeholder { width: 100%; height: 100%; aspect-ratio: 2 / 3; }
.tep-cinema-screening__body { display: grid; justify-items: start; align-content: start; min-width: 0; }
.tep-cinema-screening__time { margin: 0 0 0.3rem; color: var(--tep-red); font-size: 1rem; font-weight: var(--weight-semibold); line-height: 1.15; white-space: nowrap; }
.tep-cinema-screening__title { max-width: 100%; margin: 0; font-family: var(--font-editorial); font-size: 1.25rem; line-height: 1.15; overflow-wrap: break-word; }
.tep-cinema-screening__director { max-width: 100%; margin: 0.45rem 0 0; color: var(--tep-muted); font: var(--text-meta); overflow-wrap: anywhere; }
.tep-cinema-screening__technical { display: block; max-width: 100%; margin: 0.35rem 0 0; padding: 0; color: var(--tep-muted); font: var(--text-meta); line-height: 1.35; list-style: none; overflow-wrap: anywhere; }
.tep-cinema-screening__technical li { display: inline; }
.tep-cinema-screening__technical li + li::before { content: " · "; color: var(--tep-red); }
.tep-cinema-screening__context { max-width: 100%; margin: 0.35rem 0 0; color: var(--tep-muted); font: var(--text-meta); overflow-wrap: anywhere; }
.tep-cinema-activity { min-width: 0; padding: 1.25rem 0; border-top: 1px solid var(--tep-border); }
.tep-cinema-activity h4 { margin: 0; font: var(--text-card-title); overflow-wrap: anywhere; }
.tep-cinema-activity > div { margin-top: 0.45rem; }
.tep-cinema-activity > div > :last-child { margin-bottom: 0; }

@media (max-width: 22rem) {
    .tep-cinema-screening { grid-template-columns: 1fr; }
    .tep-cinema-screening__poster { width: min(100%, 11rem); }
}

.article { padding: clamp(3rem, 8vw, 6rem) 0; }
.article__header { max-width: 52rem; margin-bottom: 2rem; }
.article__header h1 { margin-bottom: 1rem; }
.article__meta { color: var(--tep-muted); font-size: 0.88rem; font-weight: 400; }
.article__image { margin: 0 0 2rem; overflow: hidden; border-radius: var(--tep-radius); }
.article__content { max-width: 46rem; font-family: var(--tep-serif); font-size: clamp(1.08rem, 2vw, 1.22rem); }
.article__content h2, .article__content h3 { margin-top: 2em; }
.article__content a { color: var(--tep-red); }

/* Revista: lectura editorial larga, aislada de las fichas funcionales. */
.article--revista {
    padding: 0 0 clamp(3.5rem, 8vw, 6rem);
    overflow-wrap: anywhere;
    color: var(--tep-ink);
    background: var(--tep-white);
}
.article--revista .shell,
.article-related .shell { width: min(calc(100% - 2.75rem), var(--tep-shell)); }
.article--revista .article__masthead { padding: clamp(2.1rem, 7vw, 5.2rem) 0 clamp(1.7rem, 4vw, 3rem); }
.article--revista .article__header { max-width: 54rem; margin: 0 auto; }
.article--revista .article__classification {
    margin: 0 0 0.8rem; color: var(--tep-red); font-size: 0.73rem; font-weight: 600;
    letter-spacing: 0.12em; line-height: 1.35; text-transform: uppercase;
}
.article--revista .article__header h1 {
    max-width: 15ch; margin: 0 0 clamp(1rem, 2.7vw, 1.45rem);
    color: #111b18; font-size: clamp(2.45rem, 9.5vw, 5rem); line-height: 0.99;
}
.article__dek {
    max-width: 43rem; margin: 0 0 1.15rem; color: #334a44;
    font-family: var(--tep-serif); font-size: clamp(1.22rem, 3.5vw, 1.62rem); font-weight: 400; line-height: 1.38;
}
.article--revista .article__meta {
    display: flex; flex-wrap: wrap; max-width: 44rem; margin: 0; color: #596a66;
    font-family: var(--tep-sans); font-size: 0.84rem; font-weight: 600; line-height: 1.55;
}
.article__meta-separator { margin-inline: 0.42em; }
.article__updated { color: var(--tep-muted); }
.article__review-context {
    max-width: 43rem; margin-top: 1.45rem; font-family: var(--tep-sans);
}
.article__review-context .tep-info-card { margin-top: 0; }
.article--revista .article__media-shell { max-width: 58rem; }
.article--revista .article__image { margin: 0 0 clamp(2rem, 5vw, 3.75rem); overflow: visible; border-radius: 0; }
.article--revista .article__image img { width: 100%; height: auto; }
.article__image-caption {
    display: flex; flex-direction: column; gap: 0.15rem; margin-top: 0.62rem; color: #596a66;
    font-family: var(--tep-sans); font-size: 0.78rem; line-height: 1.45;
}
.article__image-credit { color: var(--tep-muted); }
.article__reading { width: min(100%, 46rem); margin-inline: auto; }
.article--revista .article__content {
    max-width: none; color: #1d2926; font-family: var(--tep-serif);
    font-size: 1.125rem; line-height: 1.68; text-align: left;
}
.article--revista .article__content > :first-child { margin-top: 0; }
.article--revista .article__content > p:first-of-type { font-size: 1.055em; }
.article--revista .article__content p { margin-bottom: 1.35em; }
.article--revista .article__content h1,
.article--revista .article__content h2 {
    margin: 2.65em 0 0.68em; font-size: clamp(1.75rem, 5vw, 2.35rem); line-height: 1.12;
}
.article--revista .article__content h3 { margin: 2.2em 0 0.62em; font-size: clamp(1.35rem, 4vw, 1.72rem); line-height: 1.18; }
.article--revista .article__content h2 + *,
.article--revista .article__content h3 + * { margin-top: 0; }
.article--revista .article__content strong { color: #17211e; font-weight: 700; }
.article--revista .article__content a,
.article__sources a {
    color: #a92f12; text-decoration: underline; text-decoration-color: currentColor;
    text-decoration-thickness: 1px; text-underline-offset: 0.18em;
}
.article--revista .article__content a:hover,
.article__sources a:hover { color: var(--tep-ink); text-decoration-thickness: 0.11em; }
.article--revista .article__content ul,
.article--revista .article__content ol { margin: 0 0 1.45em; padding-left: 1.3em; }
.article--revista .article__content li + li { margin-top: 0.35em; }
.article--revista .article__content figure { max-width: 100%; margin: 2.3em 0; }
.article--revista .article__content figure img { width: auto; max-width: 100%; height: auto; }
.article--revista .article__content figcaption,
.article--revista .article__content .wp-element-caption,
.article--revista .article__content .article__source {
    margin-top: 0.55rem; color: #596a66; font-family: var(--tep-sans); font-size: 0.76rem; line-height: 1.45; text-align: left;
}
.article--revista .article__content blockquote {
    margin: 2.35em 0; padding: 0.12rem 0 0.12rem 1.2rem;
    border-left: 2px solid var(--tep-red); color: #263b35;
}
.article--revista .article__content blockquote p { margin-bottom: 0.6em; font-size: 1.08em; }
.article--revista .article__content blockquote cite {
    color: var(--tep-muted); font-family: var(--tep-sans); font-size: 0.78rem; font-style: normal; line-height: 1.4;
}
.article--revista .article__content .is-style-tep-cita-destacada {
    padding-left: 0; border-left: 0; color: var(--tep-ink);
}
.article--revista .article__content .is-style-tep-cita-destacada p { font-size: clamp(1.35rem, 4vw, 1.75rem); line-height: 1.38; }
.article--revista .article__content .is-style-tep-dato-destacado {
    margin: 2.35em 0; padding: 0.2rem 0 0.2rem 1.1rem; border-left: 3px solid var(--tep-red);
}
.article--revista .article__content .is-style-tep-dato-destacado > :first-child {
    margin: 0 0 0.2rem; color: var(--tep-ink); font-size: clamp(2.25rem, 8vw, 3.65rem); font-weight: 700; line-height: 1;
}
.article--revista .article__content .is-style-tep-dato-destacado > :last-child { margin-bottom: 0; font-family: var(--tep-sans); font-size: 0.88rem; line-height: 1.45; }
.article--revista .article__content .is-style-tep-grafico-editorial { margin: 2.6em 0; }
.article--revista .article__content .is-style-tep-grafico-editorial > :last-child {
    color: #596a66; font-family: var(--tep-sans); font-size: 0.76rem; line-height: 1.45;
}
.article--revista .article__content .wp-block-table { overflow-x: auto; }
.article--revista .article__content table { width: 100%; border-collapse: collapse; font-family: var(--tep-sans); font-size: 0.86rem; }
.article--revista .article__content th,
.article--revista .article__content td { padding: 0.55rem; border-bottom: 1px solid var(--tep-border); text-align: left; }
.article__afterword { margin-top: clamp(3.5rem, 8vw, 5.5rem); padding-top: 1.4rem; border-top: 1px solid var(--tep-border); font-family: var(--tep-sans); }
.article__afterword > * + * { margin-top: 1.45rem; padding-top: 1.35rem; border-top: 1px solid var(--tep-border); }
.article__afterword h2 { margin: 0 0 0.52rem; font-family: var(--tep-sans); font-size: 0.75rem; font-weight: 600; letter-spacing: 0.1em; line-height: 1.3; text-transform: uppercase; }
.article__afterword p { margin: 0; }
.article__author h2 { color: var(--tep-ink); font-family: var(--tep-serif); font-size: 1.24rem; letter-spacing: 0; text-transform: none; }
.article__author p { max-width: 38rem; color: #4d615b; font-size: 0.9rem; line-height: 1.55; }
.article__sources ul { display: grid; gap: 0.45rem; margin: 0; padding-left: 1.1rem; }
.article__sources li { padding-left: 0.1rem; color: var(--tep-red); }
.article__sources a { font-size: 0.9rem; }
.article__editorial-note { padding-left: 0.9rem !important; border-left: 2px solid var(--tep-red); border-top: 0 !important; color: #4d615b; font-size: 0.86rem; line-height: 1.55; }
.article__share-links { display: flex; flex-wrap: wrap; align-items: center; gap: 0.55rem 1rem; }
.article__share-links a,
.article__share-links button {
    display: inline-flex; min-height: 2.75rem; align-items: center; padding: 0; color: var(--tep-ink);
    background: transparent; border: 0; font-size: 0.88rem; font-weight: 600; text-decoration: underline;
    text-decoration-color: var(--tep-red); text-decoration-thickness: 1px; text-underline-offset: 0.2em; cursor: pointer;
}
.article__share-links a:hover,
.article__share-links button:hover { color: var(--tep-red); }
.article-related { padding: clamp(3rem, 8vw, 5rem) 0; color: var(--tep-ink); background: var(--tep-white); border-top: 1px solid var(--tep-border); }
.article-related__inner { max-width: var(--tep-shell); }
.article-related h2 { margin: 0 0 1.6rem; font-size: clamp(1.8rem, 5vw, 2.65rem); }
.article-related__grid { display: grid; gap: 1.8rem; }
.article-related .card { overflow: visible; background: transparent; border: 0; border-radius: 0; transition: none; }
.article-related .card:hover { transform: none; box-shadow: none; }
.article-related .card__media { border-radius: 0.35rem; }
.article-related .card__media img { object-fit: cover; }
.article-related .card__body { padding: 0.85rem 0 0; }
.article-related .card__title { margin-bottom: 0.48rem; font-size: clamp(1.25rem, 4vw, 1.62rem); }
.article-related .card__subtitle { display: -webkit-box; overflow: hidden; margin: 0; color: #4d615b; font-size: 0.86rem; line-height: 1.45; -webkit-box-orient: vertical; -webkit-line-clamp: 2; }
.article-related__all { margin: 1.8rem 0 0; text-align: right; }
.article-related__all a { display: inline-flex; min-height: 2.75rem; align-items: center; color: var(--tep-ink); font-weight: 600; text-decoration-color: var(--tep-red); }

.pagination { margin-top: 2rem; }
.pagination .nav-links { display: flex; flex-wrap: wrap; gap: 0.45rem; }
.pagination .page-numbers { padding: 0.45rem 0.75rem; background: var(--tep-white); border: 1px solid var(--tep-border); border-radius: 999px; text-decoration: none; }
.pagination .current { background: var(--tep-ink); color: var(--tep-white); }

.site-footer { padding: 3rem 0; background: var(--tep-cloud); color: var(--tep-sage); border-top: 1px solid var(--tep-border); }
.site-footer__inner { display: grid; gap: 1.5rem; }
.site-footer strong { color: var(--tep-ink); font-family: var(--tep-serif); font-size: 1.4rem; }
.site-footer p { margin-bottom: 0; }
.footer-nav { display: flex; flex-wrap: wrap; gap: 0.75rem 1.25rem; margin: 0; padding: 0; list-style: none; }
.footer-nav a { font-weight: 600; text-decoration: none; }
.site-footer__legal { color: var(--tep-muted); font-size: 0.82rem; }
.social-links { min-width: 0; }
.social-links__title { margin: 0 0 0.5rem; color: inherit; font: var(--text-meta-semibold); }
.social-links__list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.25rem 1rem; margin: 0; padding: 0; list-style: none; }
.social-links__list a { display: flex; align-items: center; gap: 0.5rem; min-height: 2.75rem; padding: 0.35rem 0.25rem; color: inherit; font: var(--text-meta); text-decoration: none; }
.social-links__list a:hover, .social-links__list a:focus { color: var(--tep-red); text-decoration: underline; }
.social-links__list a:focus-visible { outline: 3px solid var(--tep-red); outline-offset: 3px; }
.social-links__icon { flex: 0 0 1.25rem; width: 1.25rem; height: 1.25rem; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.site-nav__footer .social-links { width: min(100%, 28rem); margin: 1.25rem auto 0; padding-top: 1rem; border-top: 1px solid var(--tep-sage); }
.site-nav__footer .social-links__list a { justify-content: center; }
.site-nav__footer .social-links__list a:hover, .site-nav__footer .social-links__list a:focus { color: var(--tep-gold); }
.site-nav__footer .social-links__list a:focus-visible { outline-color: var(--tep-gold); }
.back-to-top {
    position: fixed; z-index: 45; right: calc(1rem + env(safe-area-inset-right)); bottom: calc(1rem + env(safe-area-inset-bottom));
    display: inline-flex; align-items: center; justify-content: center;
    width: 2.75rem; height: 2.75rem; color: var(--tep-white); background: var(--tep-red);
    border-radius: 999px; box-shadow: var(--tep-shadow); font-size: 1.2rem; font-weight: 700; text-decoration: none;
}
.back-to-top:hover, .back-to-top:focus-visible { color: var(--tep-white); background: var(--tep-ink); }
.back-to-top[hidden] { display: none; }

@media (max-width: 41.999rem) {
    .detail--event-standard .detail__actions--agenda .tep-calendar-button { justify-self: center; }
}

@media (min-width: 42rem) {
    .shell { width: min(calc(100% - 3rem), var(--tep-shell)); }
    .detail--cinema .tep-movie { grid-template-columns: 9.25rem minmax(0, 1fr); gap: 1.25rem; }
    .tep-cinema-screening { grid-template-columns: minmax(8.5rem, 9.25rem) minmax(0, 1fr); gap: 1.25rem; }
    .cards--2, .cards--3 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .archive-filter-form__fields--cartelera { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .archive-filter-form__fields--exposiciones { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .archive-filter-form__actions { display: flex; align-items: center; justify-content: flex-end; }
    .archive-filter-form__submit { width: auto; min-width: 12rem; }
    .archive-filter-dialog.is-modal { width: min(calc(100% - 2rem), 42rem); max-width: 42rem; margin-inline: auto; }
    .recommendations { grid-template-columns: repeat(3, minmax(0, 1fr)); align-items: stretch; }
    .recommendation { height: 100%; }
    .recommendation__link { display: grid; grid-template-columns: 1fr; grid-template-rows: auto 1fr; gap: 0; align-items: stretch; height: 100%; padding: 0; }
    .recommendation__image { display: block; width: 100%; height: auto; aspect-ratio: 4 / 5; margin: 0; border-radius: 0; }
    .recommendation__body { display: block; padding: 1rem 1rem 1.1rem; }
    .recommendation__title { font-size: clamp(1.28rem, 2vw, 1.7rem); line-height: 1.14; }
    .editorial-grid { grid-template-columns: minmax(0, 1.35fr) minmax(16rem, 0.65fr); }
    .editorial-grid .card--home-primary { grid-row: span 2; }
    .editorial-grid .card--home-primary .card__link { display: flex; }
    .magazine-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .site-footer__inner { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); align-items: start; }
    .site-footer__legal { grid-column: 1 / -1; }
    .detail__primary-actions { display: flex; flex-wrap: wrap; align-items: center; }
    .detail__calendar-action { justify-items: start; }
    .detail__actions .button { width: auto; }
    .article--revista .article__content { font-size: 1.1875rem; }
    .article__image-caption { flex-direction: row; justify-content: space-between; gap: 1.5rem; }
    .article--revista .article__content .alignwide {
        position: relative; left: 50%; width: min(58rem, calc(100vw - 3rem)); max-width: none; transform: translateX(-50%);
    }
    .article-related__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 56.25rem) {
    .cards.tep-carousel,
    .cards.tep-carousel[data-carousel-items="3"] { grid-auto-columns: calc((100% - 1rem) / 2); }
    .cards.tep-carousel[data-carousel-items="2"] { grid-auto-columns: 72%; }
}

/*
 * Tablet: evolución directa de la composición móvil.
 * El rango termina en 1180 px; a partir de 1181 px entra el escritorio.
 */
@media (min-width: 48rem) and (max-width: 73.75rem) {
    .shell { width: min(calc(100% - 3rem), 68rem); }

    .home-hero { padding-block: 2.25rem 2rem; }
    .home-hero__content { width: min(calc(100% - 3rem), 68rem); margin-inline: auto; }
    .home-hero h1 { max-width: 20ch; }
    .home-hero .page-intro { max-width: 50rem; }

    .section { padding-block: clamp(3.5rem, 7vw, 5rem); }
    .section-heading { margin-bottom: 1.5rem; }
    .cards.tep-carousel,
    .cards.tep-carousel[data-carousel-items="2"],
    .cards.tep-carousel[data-carousel-items="3"] { grid-auto-columns: calc((100% - 1rem) / 2); }
    .recommendations { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .editorial-grid { grid-template-columns: minmax(0, 1fr); }
    .editorial-grid .card--home-primary { grid-row: auto; }

    .archive-page-hero .shell,
    .archive-section > .shell,
    .calls-archive-section > .shell { width: min(calc(100% - 3rem), 68rem); }
    .archive-explorer {
        display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 0; align-items: center;
        margin-bottom: 1rem; padding: 0.85rem 1rem; background: var(--tep-white);
        border: 1px solid var(--tep-border); border-radius: var(--tep-radius);
    }
    .archive-explorer .period-nav { grid-column: 1; grid-row: 1; padding: 0; }
    .archive-explorer .archive-results {
        grid-column: 2; grid-row: 1; display: block; margin: 0; padding: 0 0 0 1rem;
        border: 0; text-align: right;
    }
    .archive-explorer .archive-results__count { white-space: nowrap; }
    .archive-filter-toggle { display: none; }
    .archive-filter-dialog[open] {
        position: static; grid-column: 1 / -1; grid-row: 2; display: block; width: 100%; max-width: none; max-height: none;
        margin: 0.75rem 0 0; padding: 0.85rem 0 0; overflow: visible; color: var(--tep-sage); background: transparent;
        border: 0; border-top: 1px solid var(--tep-border); border-radius: 0; box-shadow: none;
    }
    .archive-filter-dialog__header,
    .archive-filter-dialog__close { display: none; }
    .archive-filter-form { display: grid; gap: 0.8rem; }
    .archive-filter-form__fields { gap: 0.75rem; }
    .archive-filter-form__actions { margin: 0; }
    .archive-filter-form__submit { min-height: 2.75rem; }
    .archive-explorer .active-filters {
        grid-column: 1 / -1; grid-row: 3; margin: 0.65rem 0 0; padding-top: 0.65rem;
        border-top: 1px solid var(--tep-border);
    }

    .detail > .shell { width: min(calc(100% - 3rem), 68rem); }
    .detail__layout { width: min(100%, 54rem); margin-inline: auto; }
    .detail__poster { width: min(100%, 36rem); justify-self: center; }
    .detail__summary { width: min(100%, 54rem); justify-self: center; }
    .detail__below { width: 100%; }
    .detail__content,
    .tep-info-card { max-width: none; }
    .detail__actions--summary { display: flex; flex-wrap: wrap; align-items: end; gap: 0.75rem 1rem; }
    .detail__actions--summary .detail__calendar-action { flex: 0 1 auto; }

    .cinema-days__list,
    .tp-program .tp-program__days {
        display: grid; grid-auto-flow: column; grid-auto-columns: minmax(7rem, 1fr);
        width: 100%; max-width: 100%; overflow-x: auto;
    }
    .cinema-days__list a,
    .cinema-days__list button,
    .cinema-days__list .tep-accent-button,
    .tp-program .tp-program__day-button {
        display: inline-flex; min-height: 2.75rem; align-items: center; justify-content: center;
    }
    .cartelera-date-strip .cinema-days__list { padding-right: 0; }

    .magazine-index__featured,
    .magazine-index__more,
    .article--revista .article__masthead,
    .article--revista .article__reading { margin-inline: auto; }
}

@media (max-width: 37.5rem) {
    .archive-primary-nav {
        display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0.28rem;
    }
    .archive-primary-nav.exposition-nav { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .archive-primary-nav a {
        min-width: 0; padding: 0.42rem 0.2rem; font-size: clamp(0.72rem, 3.4vw, 0.82rem);
        line-height: 1.15; white-space: normal; text-wrap: balance;
    }
    .cards.tep-carousel,
    .cards.tep-carousel[data-carousel-items="2"],
    .cards.tep-carousel[data-carousel-items="3"] { grid-auto-columns: 82%; }
    .tep-carousel__controls { display: none; }
}

@media (max-width: 48.875rem) {
    .admin-bar { --tep-admin-offset: var(--wp-admin--admin-bar--height, 46px); }
}

@media (max-width: 37.5rem) {
    /* WordPress convierte #wpadminbar en absolute: el sticky debe ocupar top: 0 al salir del viewport. */
    .admin-bar { --tep-admin-offset: 0px; }
}

@media (max-width: 19rem) {
    .detail--cinema .tep-movie { grid-template-columns: 1fr; }
    .detail--cinema .tep-movie__poster { max-width: 11rem; }
}

@media (min-width: 73.8125rem) {
    .site-header__inner { min-height: 5.5rem; }
    body.nav-open .site-header__inner { width: min(calc(100% - 2rem), var(--tep-shell)); margin-inline: auto; }
    .brand { width: 13rem; }
    .nav-toggle { display: none; }
    .site-nav { display: block; position: static; width: auto; height: auto; max-height: none; overflow: visible; padding: 0; background: transparent; color: var(--tep-ink); }
    .site-nav__list, .site-nav .menu { display: flex; align-items: center; gap: clamp(0.75rem, 1.7vw, 1.45rem); }
    .site-nav__list, .site-nav .menu { width: auto; max-width: none; margin: 0; text-align: left; }
    .site-nav__list a, .site-nav > .menu a { display: block; width: auto; min-height: 0; padding: 0.4rem 0; font-size: 0.86rem; border-bottom: 2px solid transparent; }
    .site-nav__list a[aria-current="page"]::after, .site-nav__list .current-menu-item > a::after, .site-nav > .menu a[aria-current="page"]::after, .site-nav > .menu .current-menu-item > a::after { content: none; }
    .site-nav a:hover, .site-nav a[aria-current="page"], .site-nav .current-menu-item > a { color: var(--tep-ink); border-color: var(--tep-red); }
    .site-nav__footer { display: none; }
    .home-week { padding: 1.75rem 0 3.5rem; }
    .home-week .section-heading { margin-bottom: 1rem; }
    .hero-feature__grid { grid-template-columns: minmax(0, 1.35fr) minmax(20rem, 0.65fr); gap: clamp(2rem, 5vw, 5rem); }
    .hero-feature__media { min-height: 36rem; }
    .cards--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .detail { padding: 2rem 0 4rem; }
    .detail__layout { grid-template-columns: minmax(18rem, 0.6fr) minmax(0, 1fr); gap: clamp(2rem, 4vw, 4rem); align-items: start; }
    .detail__poster { position: sticky; top: 6.5rem; width: min(100%, 28rem); justify-self: center; }
    .admin-bar .detail__poster { top: 8.5rem; }
    .detail__poster img { max-height: min(44rem, calc(100vh - 8rem)); }
    .detail__header h1 { font-size: clamp(2.8rem, 4.4vw, 4.6rem); }
    .detail__below { margin-top: 2rem; }
    .detail__actions--summary { display: flex; flex-wrap: wrap; align-items: end; gap: 0.75rem 1rem; }
    .detail__actions--summary .detail__calendar-action { flex: 0 1 auto; }
    .archive-page-hero { padding: 1.65rem 0 0.6rem; }
    .archive-page-hero h1 { margin-bottom: 0.35rem; font-size: clamp(3.2rem, 5.5vw, 4.75rem); }
    .archive-page-hero .page-kicker { margin-bottom: 0.3rem; }
    .archive-page-hero .page-intro { font-size: 1.08rem; }
    .archive-section { padding: 0.45rem 0 3.5rem; }
    .calls-archive-section { padding-top: 0.35rem; }
    .archive-explorer {
        display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 0; align-items: center;
        margin-bottom: 0.85rem; padding: 0.7rem 0.8rem; background: var(--tep-white);
        border: 1px solid var(--tep-border); border-radius: var(--tep-radius);
    }
    .archive-explorer .period-nav { grid-column: 1; grid-row: 1; padding: 0; }
    .archive-explorer .archive-results { grid-column: 2; grid-row: 1; display: block; margin: 0; padding: 0 0 0 1rem; border: 0; text-align: right; }
    .archive-explorer .archive-results__count { white-space: nowrap; }
    .archive-filter-toggle { display: none; }
    .archive-filter-dialog[open] {
        position: static; grid-column: 1 / -1; grid-row: 2; display: block; width: 100%; max-width: none; max-height: none;
        margin: 0.6rem 0 0; padding: 0.65rem 0 0; overflow: visible; color: var(--tep-sage); background: transparent;
        border: 0; border-top: 1px solid var(--tep-border); border-radius: 0; box-shadow: none;
    }
    .archive-filter-dialog__header { display: none; }
    .archive-filter-dialog__close { display: none; }
    .archive-filter-form { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 0.75rem; align-items: end; }
    .archive-filter-form__fields { gap: 0.65rem; }
    .archive-filter-field label { margin-bottom: 0.18rem; }
    .archive-filter-field select { min-height: 2.75rem; }
    .archive-filter-form__actions { margin: 0; }
    .archive-filter-form__submit { min-width: 9.75rem; min-height: 2.75rem; }
    .archive-explorer .active-filters { grid-column: 1 / -1; grid-row: 3; margin: 0.55rem 0 0; padding-top: 0.55rem; border-top: 1px solid var(--tep-border); }
    .archive-days { margin-top: 0; }
    .archive-exhibitions-grid { margin-top: 0; }
    .magazine-page-hero { padding: 1.9rem 0 1rem; }
    .magazine-page-hero h1 { margin-bottom: 0.35rem; font-size: clamp(3.2rem, 5.5vw, 4.75rem); }
    .magazine-page-hero .page-kicker { margin-bottom: 0.3rem; }
    .magazine-page-hero .page-intro { margin-bottom: 0; font-size: 1.08rem; }
    .magazine-index { padding: 1.25rem 0 4rem; }
    .magazine-index__featured .card__link { display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(19rem, 0.65fr); gap: clamp(1.5rem, 4vw, 3.5rem); align-items: center; }
    .magazine-index__featured .card__body { padding: 0; }
    .site-footer__inner { grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr) minmax(15rem, 0.8fr); }
    .site-footer__legal { grid-column: 1 / -1; text-align: left; }
    .article-related__grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

@media (min-width: 80rem) {
    .cards.tep-carousel { grid-auto-columns: calc((100% - 3rem) / 4); }
    .archive-card-grid,
    .calls-card-grid,
    .magazine-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}

@media (prefers-reduced-motion: reduce) {
    html { scroll-behavior: auto; }
    *, *::before, *::after { scroll-behavior: auto !important; transition-duration: 0.01ms !important; }
    .cards.tep-carousel { scroll-behavior: auto; }
    .cartelera-calendar__panel { animation: none; }
}

/*
 * Sistema editorial y tipográfico canónico.
 *
 * Las reglas anteriores conservan únicamente composición y compatibilidad con
 * HTML histórico. Esta capa final gobierna familias, escala, pesos y funciones
 * semánticas en todas las plantillas públicas.
 */
body { font: var(--text-body); }
button, input, select, textarea { font-family: var(--font-ui); }

h1 { font: var(--text-h1); }
h2 { font: var(--text-h2); }
h3 { font: var(--text-h3); }
h1, h2, h3 { letter-spacing: normal; }

.home-hero h1 { font: var(--text-display); font-size: clamp(2rem, 8.5vw, 3rem); }
.article__header h1 { font: var(--text-display); }

.page-hero h1,
.detail__header h1 { font: var(--text-h1); }

.section-heading h2,
.magazine-index__more-title,
.tep-cinema-program__header h2,
.tep-cinema-schedule > h2,
.article-related h2 { font: var(--text-h2); }

.page-intro,
.hero-feature__excerpt,
.detail__content,
.detail-section__content { font: var(--text-body); }

.page-kicker,
.eyebrow,
.card__meta,
.article__classification,
.cinema-days__eyebrow,
.archive-day__heading,
.event-status {
    font: var(--text-micro);
    letter-spacing: 0.05em;
    text-transform: uppercase;
}

.site-header,
.site-nav,
.nav-toggle { font-family: var(--font-ui); }
.site-nav__list a,
.site-nav > .menu a {
    font-family: var(--font-ui);
    font-size: 15px;
    font-weight: var(--weight-semibold);
    letter-spacing: 0.04em;
    line-height: 1.2;
    text-transform: uppercase;
}
.site-nav__secondary a,
.nav-toggle__label { font-weight: var(--weight-semibold); }

.card .card__title,
.recommendation__title { font: var(--text-card-title); }
.card.card--article .card__title { font-family: var(--font-editorial); }
.magazine-index__featured .card__title { font: var(--text-h1); }
.card .card__subtitle { font: var(--text-meta); }
.card__details,
.recommendation__details,
.exhibition-card-status { font: var(--text-meta); }
.card__byline { display: grid; gap: 0.08rem; }
.tep-card__schedule,
.exhibition-card-end,
.call-deadline { font: var(--text-meta-semibold); }
.tep-card__location,
.tep-card__venue,
.tep-card__municipality { display: block; font: var(--text-meta); }
.tep-card__municipality { font-size: 12.5px; }
.card__title,
.card__subtitle,
.detail__header h1,
.detail__subtitle,
.recommendation__title,
.tep-screening__title {
    overflow-wrap: anywhere;
    text-transform: none;
}

.tep-cinema-screening__title { overflow-wrap: break-word; text-transform: none; }

.detail--cinema .tep-screening__title { overflow-wrap: break-word; }

.detail__subtitle {
    font: var(--text-card-title);
    font-weight: var(--weight-regular);
    line-height: 1.5;
}
.detail-section h2,
.source-box h2,
.detail__action-label,
.cinema-summary h3 { font: var(--text-meta-semibold); }
.schedule-list,
.tep-screening__context { font: var(--text-body); font-weight: var(--weight-regular); }
.schedule-list strong { font-weight: var(--weight-semibold); }
.button,
.button-link,
.text-link,
.tep-program__button,
.article__share-links a,
.article__share-links button {
    font-family: var(--font-ui);
    font-weight: var(--weight-semibold);
}
.button,
.button-link,
.tep-program__button { overflow-wrap: anywhere; white-space: normal; }
.source-box__name,
.source-box__action { margin: 0; font: var(--text-meta); }
.source-box__name { color: var(--tep-ink); font-weight: var(--weight-semibold); }
.source-box__action { margin-top: 0.35rem; }
.source-box__link { font-weight: var(--weight-semibold); }

.cinema-days__position,
.cinema-days__list a,
.cinema-days__list button,
.cinema-summary,
.tep-screening__director,
.tep-screening__technical,
.tep-screening__context,
.tep-movie__credits,
.tep-movie__technical,
.tep-movie__synopsis { font-family: var(--font-ui); }
.cinema-days__list a { font: var(--text-meta-semibold); }
.cinema-summary time { font-weight: var(--weight-semibold); }
.cinema-summary__price {
    display: block;
    margin: 0.15rem 0 0;
    color: var(--tep-red);
    font: var(--text-meta-semibold);
    white-space: normal;
}
.tep-screening__context { display: grid; gap: 0.1rem; }
.tep-screening__context > span,
.tep-screening__context > strong { display: block; }
.tep-screening__price { color: var(--tep-ink); font-weight: var(--weight-semibold); }

.magazine-page-hero,
.magazine-index,
.article--revista { font-family: var(--font-ui); }
.article__dek { font: var(--text-lead); }
.article__meta,
.article__image-caption,
.article--revista .article__content figcaption,
.article--revista .article__content .wp-element-caption,
.article--revista .article__content .article__source,
.article--revista .article__content blockquote cite,
.article__sources,
.article__editorial-note { font: var(--text-meta); }
.article--revista .article__content {
    width: min(100%, 72ch);
    max-width: 46rem;
    font: var(--text-editorial-body);
}
.article--revista .article__content > p:first-of-type { font-size: inherit; }
.article--revista .article__content h1,
.article--revista .article__content h2 { font: var(--text-h2); }
.article--revista .article__content h3 { font: var(--text-h3); }
.article__afterword,
.article__share-links,
.article-related__all { font-family: var(--font-ui); }
.article__afterword h2 { font: var(--text-meta-semibold); }
.article__author h2 { font: var(--text-h3); font-family: var(--font-editorial); text-transform: none; }

.site-footer,
.site-footer strong { font-family: var(--font-ui); }
.site-footer strong { font: var(--text-h3); }
.footer-nav a { font-weight: var(--weight-semibold); }
.site-footer p,
.site-footer__legal { font: var(--text-meta); }

@media (max-width: 390px) {
    .shell { width: min(calc(100% - 1.5rem), var(--tep-shell)); }
    .archive-primary-nav a { padding-inline: 0.14rem; }
    .detail__actions .button { max-width: 100%; }
    .schedule-list li { grid-template-columns: minmax(0, 1fr); gap: 0.1rem; }
    .schedule-list strong { text-align: left; }
}

@media (min-width: 48rem) {
    .tep-info-card { padding-inline: 1.2rem; }
    .tep-info-row { grid-template-columns: 2.25rem minmax(0, 1fr); gap: 0.9rem; padding-block: 1rem; }
    .tep-info-icon { width: 2.25rem; }
}

@media (min-width: 48rem) {
    :root {
        --text-display: var(--weight-bold) 56px / 1.05 var(--font-editorial);
        --text-h1: var(--weight-bold) 44px / 1.1 var(--font-editorial);
        --text-h2: var(--weight-bold) 32px / 1.15 var(--font-editorial);
        --text-h3: var(--weight-bold) 24px / 1.2 var(--font-ui);
        --text-card-title: var(--weight-bold) 19px / 1.2 var(--font-ui);
        --text-lead: var(--weight-regular) 21px / 1.5 var(--font-editorial);
        --text-body: var(--weight-regular) 17px / 1.6 var(--font-ui);
        --text-editorial-body: var(--weight-regular) 18px / 1.7 var(--font-editorial);
    }
    .detail--cinema .tep-screening__title { font-size: 1.375rem; }
}
