/* assets/css/kino-rose.css
 * "ბროწეული" (Rose linen) for the kino pages — kino.php (afisha), kinoteka.php
 * (a screening) and kino-archive.php (the full archive, afisha cards; section 17).
 * Loaded LAST on each page, after kino-style.css, kino-afisha.css, live-cinema.css,
 * ad-case.css and the page's inline <style>, and every rule is prefixed with
 * body.ktv-page so it outranks that dark layer without touching it.
 *
 * The world itself (tokens, night edition, navbar/footer, lamp) is in
 * assets/css/rose-linen.css. Here: the kino components, mapped onto it.
 * The ticket keeps its identity — perforation and punched notches — softly:
 * the notches are cut in the page colour, the perforation is a hairline dash.
 */

/* ==========================================================================
   0. Token remap — the dark venue families point at Rose linen.
   Venue and card classes redeclare these on themselves, so they are listed
   too: a descendant's declaration would otherwise win over the body's.
   ========================================================================== */
body.ktv-page {
    --krl-band: #f1e6e2;
}
html.ktv-lights-down body.ktv-page {
    --krl-band: #1f1917;
}

body.ktv-page,
body.ktv-page .kino-afisha,
body.ktv-page .cinema-hall,
body.ktv-page .venue--sport,
body.ktv-page .venue--cinema,
body.ktv-page .afisha-card--sport,
body.ktv-page .afisha-card--cinema {
    --venue-accent: var(--ktv-ink-2);
    --venue-accent-soft: var(--ktv-line);
    --venue-accent-faint: var(--ktv-soft);
    --venue-hairline: var(--ktv-line);
    --venue-radius: var(--ktv-r-sm);
    --venue-display: var(--ktv-display);
    --venue-board: var(--ktv-text);

    --kino-gold-color: var(--ktv-ink-2);

    --cinema-bg: var(--ktv-page);
    --cinema-text: var(--ktv-ink);
    --cinema-card-bg: var(--ktv-panel);
    --cinema-chat-bg: var(--ktv-panel);
    --cinema-header-bg: var(--ktv-panel);
    --cinema-primary: var(--ktv-red);
    --cinema-accent: var(--ktv-ink-2);
    --cinema-gold: var(--ktv-ink-2);
    --cinema-gold-a10: var(--ktv-soft);
    --cinema-gold-a20: var(--ktv-soft);
    --cinema-gold-a30: var(--ktv-line);

    --afisha-ground: var(--ktv-page);
    --afisha-sheet: var(--ktv-panel);
}

/* ==========================================================================
   1. Grounds
   ========================================================================== */
body.ktv-page {
    background-color: var(--ktv-page) !important;
    color: var(--ktv-ink);
}
body.ktv-page .kino-afisha,
body.ktv-page .cinema-hall {
    background: var(--ktv-page);
    color: var(--ktv-ink);
}
body.ktv-page .kino-afisha :focus-visible,
body.ktv-page .cinema-hall :focus-visible {
    outline: 2px solid var(--ktv-red-ink);
    outline-offset: 2px;
}

/* Section heads: the display face in ink, a quiet hairline after it */
body.ktv-page .section-title h2,
body.ktv-page .cinema-hall h3.section-title {
    font-family: var(--ktv-display);
    font-weight: var(--ktv-display-weight);
    font-synthesis: none;
    color: var(--ktv-ink);
    letter-spacing: 0.01em;
}
body.ktv-page .section-title h2::after {
    background: var(--ktv-line);
}

/* Buttons shared by both pages: pills, sentence case, no tracking */
body.ktv-page .actions .btn,
body.ktv-page .cinema-hall .scheduled-actions .btn {
    border-radius: 999px;
    text-transform: none;
    letter-spacing: 0.01em;
    font-weight: 700;
    padding: 13px 24px;
}
body.ktv-page .actions .btn-primary,
body.ktv-page .cinema-hall .btn-primary,
body.ktv-page .cinema-hall .btn-primary-cinema,
body.ktv-page .cinema-hall .btn-cinema {
    background: var(--ktv-ink);
    border-color: var(--ktv-ink);
    color: var(--ktv-page);
    box-shadow: var(--ktv-shadow);
}
body.ktv-page .actions .btn-primary:hover,
body.ktv-page .actions .btn-primary:focus-visible,
body.ktv-page .cinema-hall .btn-primary:hover,
body.ktv-page .cinema-hall .btn-primary-cinema:hover,
body.ktv-page .cinema-hall .btn-cinema:hover {
    background: var(--ktv-ink);
    border-color: var(--ktv-ink);
    color: var(--ktv-page);
    box-shadow: var(--ktv-shadow-lift);
    transform: translateY(-2px);
}
/* Live is the one red button */
body.ktv-page .actions .btn-primary.is-live,
body.ktv-page .actions .btn-primary.is-live:hover {
    background: var(--ktv-red);
    border-color: var(--ktv-red);
    color: #fff;
}
body.ktv-page .actions .btn-secondary,
body.ktv-page .cinema-hall .btn-outline-light,
body.ktv-page .cinema-hall .btn-outline-primary,
body.ktv-page .cinema-hall .btn-facebook,
body.ktv-page .cinema-hall .btn-secondary-cinema {
    background: var(--ktv-soft);
    border: 1px solid var(--ktv-line);
    color: var(--ktv-ink);
    box-shadow: none;
}
body.ktv-page .actions .btn-secondary:hover,
body.ktv-page .actions .btn-secondary:focus-visible,
body.ktv-page .cinema-hall .btn-outline-light:hover,
body.ktv-page .cinema-hall .btn-outline-primary:hover,
body.ktv-page .cinema-hall .btn-facebook:hover,
body.ktv-page .cinema-hall .btn-secondary-cinema:hover {
    background: var(--ktv-panel);
    border-color: var(--ktv-line);
    color: var(--ktv-ink);
    box-shadow: var(--ktv-shadow);
    transform: translateY(-2px);
}
body.ktv-page .cinema-hall .btn-facebook i {
    color: #1877f2;
}
body.ktv-page .cinema-hall .btn {
    border-radius: 999px;
}

/* ==========================================================================
   2. Afisha (kino.php) — head, filter, lamp
   ========================================================================== */
body.ktv-page .afisha-head {
    border-bottom: 1px solid var(--ktv-line);
}
/* The eyebrow repeated the wall's own "აფიშა" heading and sat above the h1:
   the heading carries its own weight */
body.ktv-page .afisha-eyebrow {
    display: none;
}
body.ktv-page .afisha-title {
    margin-top: 0;
    font-family: var(--ktv-display);
    font-weight: var(--ktv-display-weight);
    font-synthesis: none;
    font-size: clamp(1.9rem, 4vw, 2.75rem);
    color: var(--ktv-ink);
}
body.ktv-page .afisha-sub {
    color: var(--ktv-ink-2);
}

body.ktv-page .afisha-head__tools {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 12px;
}

/* Type filter as a segmented control */
body.ktv-page .afisha-filter {
    gap: 2px;
    padding: 3px;
    border-radius: 999px;
    background: var(--ktv-soft);
    box-shadow: inset 0 0 0 1px var(--ktv-line);
}
body.ktv-page .afisha-chip {
    min-height: 36px;
    padding: 0 14px;
    border: 0;
    border-radius: 999px;
    background: transparent;
    color: var(--ktv-ink-3);
    font-size: 0.8125rem;
    font-weight: 700;
}
body.ktv-page .afisha-chip:hover {
    color: var(--ktv-ink);
}
body.ktv-page .afisha-chip[aria-pressed="true"] {
    background: var(--ktv-panel);
    color: var(--ktv-ink);
    box-shadow: var(--ktv-shadow);
}
body.ktv-page .afisha-chip__count {
    font-family: var(--ktv-text);
    font-weight: 700;
    opacity: 1;
    color: var(--ktv-ink-3);
}

/* ==========================================================================
   3. Afisha — media, date, kicker (shared by the lead ticket and the cards)
   ========================================================================== */
body.ktv-page .afisha-media {
    background: var(--ktv-soft);
}
/* The same image, blurred, fills what `contain` leaves — softly, on a light ground */
body.ktv-page .afisha-media__backdrop {
    filter: blur(26px) saturate(1.1);
    opacity: 0.92;
}
body.ktv-page .afisha-media__empty {
    background: var(--ktv-soft);
    color: var(--ktv-ink-3);
}
body.ktv-page .afisha-live {
    border-radius: 999px;
    font-family: var(--ktv-text);
    letter-spacing: 0.06em;
}

body.ktv-page .afisha-date {
    border: 0;
    border-radius: var(--ktv-r-sm);
    background: var(--ktv-soft);
    box-shadow: inset 0 0 0 1px var(--ktv-line);
    color: var(--ktv-ink);
    font-family: var(--ktv-text);
}
body.ktv-page .afisha-date__wd {
    color: var(--ktv-ink-3);
    letter-spacing: 0.02em;
}
body.ktv-page .afisha-date__month {
    color: var(--ktv-ink-2);
    letter-spacing: 0.02em;
}
body.ktv-page .afisha-date__time {
    border-top: 1px dashed var(--ktv-line);
}
body.ktv-page .afisha-kicker {
    font-family: var(--ktv-text);
    font-size: 0.75rem;
    font-weight: 700;
    letter-spacing: 0.02em;
    color: var(--ktv-ink-3);
}
/* The type label follows the title, never stands above it */
body.ktv-page .afisha-card__title,
body.ktv-page .afisha-lead__title {
    order: 1;
}
body.ktv-page .afisha-card__body .afisha-kicker,
body.ktv-page .afisha-lead__heading .afisha-kicker {
    order: 2;
}
body.ktv-page .afisha-card__when,
body.ktv-page .afisha-lead__venue {
    order: 3;
}

/* ==========================================================================
   4. Afisha — cards (the wall and the archive)
   ========================================================================== */
body.ktv-page .afisha-card {
    background: var(--ktv-panel);
    border-radius: 16px;
    box-shadow: var(--ktv-shadow);
}
/* The wall fills its row: three screenings no longer leave a fourth column empty */
body.ktv-page .afisha-grid {
    grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
}
body.ktv-page .afisha-grid .afisha-card {
    max-width: 560px;
}
/* On air: the TV page's live tint, on the ticket stub */
body.ktv-page .afisha-card.is-live .afisha-card__stub {
    background: var(--ktv-red-tint);
}
body.ktv-page .afisha-card:hover {
    transform: translateY(-3px);
    box-shadow: var(--ktv-shadow-lift);
}
body.ktv-page .afisha-card__stub {
    border-top: 1px dashed var(--ktv-line);
}
body.ktv-page .afisha-card__title {
    color: var(--ktv-ink);
}
body.ktv-page .afisha-card:hover .afisha-card__title {
    color: var(--ktv-ink);
    text-decoration: underline;
    text-decoration-thickness: 1px;
    text-underline-offset: 3px;
}
body.ktv-page .afisha-card__when {
    color: var(--ktv-ink-3);
}
body.ktv-page .afisha-card.is-live .afisha-card__when {
    color: var(--ktv-red-ink);
}
body.ktv-page .afisha-card.is-past .afisha-media__img {
    filter: grayscale(1) brightness(0.96);
}
body.ktv-page .afisha-card.is-past .afisha-media__backdrop {
    filter: blur(26px) grayscale(1);
}
body.ktv-page .afisha-card.is-past .afisha-date__month {
    color: var(--ktv-ink-3);
}

/* ==========================================================================
   5. Afisha — the lead ticket
   ========================================================================== */
body.ktv-page .afisha-lead {
    background: var(--ktv-panel);
    border-radius: 20px;
    box-shadow: var(--ktv-shadow-lift);
}
body.ktv-page .afisha-lead__info {
    border-left: 1px dashed var(--ktv-line);
}
body.ktv-page .afisha-lead.is-live .afisha-lead__info {
    background: var(--ktv-red-tint);
}
body.ktv-page .afisha-lead__title {
    color: var(--ktv-ink);
}
body.ktv-page .afisha-card--sport .afisha-lead__title {
    font-family: var(--ktv-text);
}
body.ktv-page .afisha-lead__title a:hover {
    color: var(--ktv-ink);
    text-decoration: underline;
    text-decoration-thickness: 1px;
    text-underline-offset: 4px;
}
body.ktv-page .afisha-match__sep {
    color: var(--ktv-ink-3);
}
body.ktv-page .afisha-match__crest {
    filter: drop-shadow(0 3px 8px rgba(60, 20, 10, 0.16));
}
body.ktv-page .afisha-match__crest--initials {
    border: 1px solid var(--ktv-line);
    border-radius: 50%;
    background: var(--ktv-soft);
    color: var(--ktv-ink-2);
    filter: none;
}
body.ktv-page .afisha-lead__venue,
body.ktv-page .afisha-lead__venue i {
    color: var(--ktv-ink-3);
}
body.ktv-page .afisha-lead__desc {
    color: var(--ktv-ink-2);
}

body.ktv-page .afisha-countdown__label {
    font-family: var(--ktv-text);
    letter-spacing: 0.02em;
    color: var(--ktv-ink-3);
}
body.ktv-page .afisha-countdown__box {
    border: 0;
    border-radius: var(--ktv-r-sm);
    background: var(--ktv-soft);
    box-shadow: inset 0 0 0 1px var(--ktv-line);
}
body.ktv-page .afisha-countdown__box b {
    font-family: var(--ktv-text);
    color: var(--ktv-ink);
}
body.ktv-page .afisha-countdown__box small {
    letter-spacing: 0.02em;
    color: var(--ktv-ink-3);
}

/* ==========================================================================
   6. Afisha — empty state, archive band, "all" link, slider controls
   ========================================================================== */
body.ktv-page .afisha-empty > i {
    color: var(--ktv-ink-3);
    opacity: 1;
}
body.ktv-page .afisha-empty h2 {
    color: var(--ktv-ink);
}
body.ktv-page .afisha-empty p {
    color: var(--ktv-ink-2);
}
body.ktv-page .afisha-empty__tv {
    border: 0;
    border-radius: 999px;
    background: var(--ktv-ink);
    color: var(--ktv-page);
    box-shadow: var(--ktv-shadow);
}
body.ktv-page .afisha-empty__tv:hover,
body.ktv-page .afisha-empty__tv:focus-visible {
    background: var(--ktv-ink);
    color: var(--ktv-page);
    box-shadow: var(--ktv-shadow-lift);
}

/* The archive sits on a band a shade deeper; its notches follow the band */
body.ktv-page .afisha-archive {
    --afisha-ground: var(--krl-band);
    background: var(--krl-band);
}

body.ktv-page .section-title .section-more {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    min-height: 36px;
    padding: 0 14px;
    border: 0;
    border-radius: 999px;
    background: var(--ktv-panel);
    box-shadow: var(--ktv-shadow);
    color: var(--ktv-ink-2);
    font-size: 0.8125rem;
    font-weight: 700;
    letter-spacing: 0.01em;
    text-transform: none;
    text-decoration: none;
}
body.ktv-page .section-title .section-more:hover {
    color: var(--ktv-ink);
    box-shadow: var(--ktv-shadow-lift);
}
body.ktv-page .section-more-count {
    background: var(--ktv-soft);
    color: var(--ktv-ink-3);
    border: 0;
    border-radius: 999px;
}

body.ktv-page .swiper-button-next,
body.ktv-page .swiper-button-prev {
    width: 44px;
    height: 44px;
    border: 0;
    border-radius: 50%;
    background: var(--ktv-panel);
    color: var(--ktv-ink);
    box-shadow: var(--ktv-shadow);
}
body.ktv-page .swiper-button-next:hover,
body.ktv-page .swiper-button-prev:hover {
    background: var(--ktv-panel);
    box-shadow: var(--ktv-shadow-lift);
}
body.ktv-page .swiper-button-next:after,
body.ktv-page .swiper-button-prev:after {
    font-size: 0.875rem;
}
body.ktv-page .swiper-pagination-bullet {
    background: var(--ktv-ink-3);
    opacity: 0.35;
}
body.ktv-page .swiper-pagination-bullet-active {
    background: var(--ktv-ink);
    opacity: 1;
}

/* Facebook "support us" box (kino.php inline style is dark) */
body.ktv-page .support-us-box {
    background: var(--ktv-panel);
    border: 0;
    border-radius: var(--ktv-r);
    box-shadow: var(--ktv-shadow);
}
body.ktv-page .support-us-box h4 {
    color: var(--ktv-ink);
}
body.ktv-page .support-us-box p {
    color: var(--ktv-ink-2) !important;
}
body.ktv-page .support-us-box .btn-close {
    filter: none;
}
html.ktv-lights-down body.ktv-page .support-us-box .btn-close {
    filter: invert(1) grayscale(1);
}

/* ==========================================================================
   7. Sponsor showcase (ad-case.css, both pages): a lifted cream case
   ========================================================================== */
body.ktv-page .ad-case .ad-card-wrapper {
    background: var(--ktv-panel) !important;
    border: 0 !important;
    border-radius: var(--ktv-r);
    box-shadow: var(--ktv-shadow) !important;
}
body.ktv-page .ad-case .ad-card-wrapper::before {
    filter: blur(60px) saturate(1.3);
    opacity: 0.2;
}
body.ktv-page .ad-case .ad-card-wrapper::after {
    background: none;
}
body.ktv-page .ad-case .ad-card-wrapper:hover {
    border-color: transparent !important;
    box-shadow: var(--ktv-shadow-lift) !important;
}
body.ktv-page .ad-case .ad-card-wrapper:hover::before {
    opacity: 0.28;
}
body.ktv-page .ad-case .ad-image,
body.ktv-page .ad-case .ad-video {
    border-radius: 10px;
    outline: 0;
    box-shadow: 0 10px 24px -14px rgba(60, 20, 10, 0.35);
}
body.ktv-page .ad-case .ad-badge {
    background: var(--ktv-soft);
    color: var(--ktv-ink-3);
    border: 0;
    border-radius: 0 0 0 12px;
    font-family: var(--ktv-text);
    letter-spacing: 0.12em;
}
body.ktv-page .ad-case .ad-link-block:focus-visible,
body.ktv-page .ad-case .ad-video-clickable-layer:focus-visible {
    outline-color: var(--ktv-red-ink);
}

/* ==========================================================================
   8. Screening (kinoteka.php) — sticky bar
   ========================================================================== */
body.ktv-page .cinema-navigation {
    background: var(--ktv-nav);
    border-bottom: 1px solid var(--ktv-line);
}
body.ktv-page .nav-back,
body.ktv-page .nav-action-btn {
    min-height: 38px;
    border: 0;
    border-radius: 999px;
    background: var(--ktv-soft);
    box-shadow: inset 0 0 0 1px var(--ktv-line);
    color: var(--ktv-ink-2);
    font-size: 0.8125rem;
    font-weight: 700;
}
body.ktv-page .nav-back:hover,
body.ktv-page .nav-action-btn:hover {
    background: var(--ktv-panel);
    color: var(--ktv-ink);
    box-shadow: var(--ktv-shadow);
    transform: translateY(-1px);
}
body.ktv-page .nav-action-btn.nav-action-btn--tv {
    background: var(--ktv-ink);
    color: var(--ktv-page);
    box-shadow: var(--ktv-shadow);
}
body.ktv-page .nav-action-btn.nav-action-btn--tv:hover,
body.ktv-page .nav-action-btn.nav-action-btn--tv:focus-visible {
    background: var(--ktv-ink);
    color: var(--ktv-page);
    box-shadow: var(--ktv-shadow-lift);
}
/* The channel is on air 24/7: the dot is lit, not pulsing */
body.ktv-page .nav-tv-dot,
body.ktv-page .kino-tv-cta__dot {
    background: var(--ktv-red);
    animation: none;
}
body.ktv-page .nav-action-btn[aria-pressed="true"] i,
body.ktv-page .nav-action-btn.rl-lamp[aria-pressed="true"] i {
    color: var(--ktv-red-ink);
}

body.ktv-page .event-status-badge {
    border: 0;
    border-radius: 999px;
    font-size: 0.8125rem;
    font-weight: 700;
}
body.ktv-page .status-live {
    background: var(--ktv-red-tint);
    color: var(--ktv-red-ink);
    border: 0;
}
body.ktv-page .status-upcoming,
body.ktv-page .status-finished,
body.ktv-page .status-canceled {
    background: var(--ktv-soft);
    box-shadow: inset 0 0 0 1px var(--ktv-line);
    border: 0;
}
body.ktv-page .status-upcoming,
body.ktv-page .status-finished {
    color: var(--ktv-ink-2);
}
body.ktv-page .status-canceled {
    color: var(--ktv-ink-3);
}

/* ==========================================================================
   9. Screening — match board (sport)
   ========================================================================== */
body.ktv-page .scoreboard {
    background: var(--ktv-panel);
    background-image: none;
    border: 0;
    border-radius: var(--ktv-r);
    box-shadow: var(--ktv-shadow);
}
body.ktv-page .scoreboard-competition {
    color: var(--ktv-ink-3);
    opacity: 1;
    letter-spacing: 0.06em;
    font-family: var(--ktv-text);
}
body.ktv-page .scoreboard-name {
    color: var(--ktv-ink);
    font-family: var(--ktv-text);
}
body.ktv-page .scoreboard-clock {
    color: var(--ktv-ink);
    text-shadow: none;
    font-family: var(--ktv-text);
}
body.ktv-page .scoreboard-label,
body.ktv-page .scoreboard-tz,
body.ktv-page .scoreboard-venue {
    color: var(--ktv-ink-3);
    font-family: var(--ktv-text);
    letter-spacing: 0.04em;
}
body.ktv-page .scoreboard-crest {
    filter: drop-shadow(0 4px 10px rgba(60, 20, 10, 0.18));
}
body.ktv-page .scoreboard-crest--initials {
    border: 1px solid var(--ktv-line);
    background: var(--ktv-soft);
    color: var(--ktv-ink-2);
    filter: none;
}
body.ktv-page .scoreboard-score {
    color: var(--ktv-ink);
    font-family: var(--ktv-text);
}
body.ktv-page .scoreboard-score-sep {
    color: var(--ktv-ink-3);
    opacity: 1;
}
body.ktv-page .scoreboard-live-text {
    color: var(--ktv-red-ink);
    font-family: var(--ktv-text);
}
body.ktv-page .scoreboard-center .live-dot {
    background: var(--ktv-red);
    animation: none;
}

/* ==========================================================================
   10. Screening — upcoming (view_scheduled.php) and the trailer block
   ========================================================================== */
body.ktv-page .cinema-hall .scheduled-media img,
body.ktv-page .cinema-hall .scheduled-media .video-trailer-wrapper,
body.ktv-page.ktv-page .venue--sport.cinema-hall .scheduled-media img {
    padding: 8px;
    background: var(--ktv-panel);
    border: 0;
    border-radius: var(--ktv-r);
    box-shadow: var(--ktv-shadow-lift);
}
/* A screening without a poster: a quiet panel with the type icon, as on the
   afisha card, instead of a broken image (poster_block.php) */
body.ktv-page .cinema-hall .scheduled-poster-empty {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    aspect-ratio: 16 / 9;
    border-radius: var(--ktv-r);
    background: var(--ktv-soft);
    box-shadow: inset 0 0 0 1px var(--ktv-line);
    color: var(--ktv-ink-3);
    font-size: 2.5rem;
}
body.ktv-page .cinema-hall .scheduled-title,
body.ktv-page .cinema-hall .cinema-content .event-title {
    font-family: var(--ktv-display);
    font-weight: var(--ktv-display-weight);
    font-synthesis: none;
    letter-spacing: 0.01em;
    color: var(--ktv-ink);
}
body.ktv-page .cinema-hall .scheduled-description {
    color: var(--ktv-ink-2);
}
body.ktv-page .cinema-hall .countdown-section {
    padding: 20px 24px;
    background: var(--ktv-panel);
    border: 0;
    border-radius: var(--ktv-r);
    box-shadow: var(--ktv-shadow);
}
body.ktv-page .cinema-hall #live-countdown .timer-box span:first-child {
    color: var(--ktv-ink);
    font-family: var(--ktv-text);
    text-shadow: none;
}
body.ktv-page .cinema-hall #live-countdown .timer-box .timer-label {
    color: var(--ktv-ink-3);
    letter-spacing: 0.04em;
}
body.ktv-page .cinema-hall .scheduled-meta,
body.ktv-page .cinema-hall .scheduled-meta .meta-item {
    color: var(--ktv-ink-2);
}
body.ktv-page .cinema-hall .scheduled-meta .meta-item {
    padding: 0;
    background: transparent;
    box-shadow: none;
}
body.ktv-page .cinema-hall .scheduled-meta .meta-item:hover {
    transform: none;
    background: transparent;
}
body.ktv-page .cinema-hall .scheduled-meta .meta-item i {
    color: var(--ktv-ink-3);
}

body.ktv-page .announce-tag {
    font-family: var(--ktv-text);
    letter-spacing: 0.04em;
    color: var(--ktv-ink-3);
}
body.ktv-page .announce-frame {
    border: 0;
    border-radius: 14px;
    background: var(--ktv-soft);
    box-shadow: var(--ktv-shadow);
}
body.ktv-page .announce-facade {
    background-color: var(--ktv-soft);
}
body.ktv-page .announce-facade__scrim {
    background: radial-gradient(circle at center, rgba(42, 31, 29, 0.05) 0%, rgba(42, 31, 29, 0.35) 100%);
}
body.ktv-page .announce-facade__play {
    border: 0;
    background: rgba(255, 253, 252, 0.95);
    color: #2a1f1d;
    box-shadow: 0 12px 28px -12px rgba(0, 0, 0, 0.55);
}
body.ktv-page .announce-facade:hover .announce-facade__play {
    background: #2a1f1d;
    color: #fff;
}
body.ktv-page .announce-facade__label {
    font-family: var(--ktv-text);
    letter-spacing: 0.02em;
    text-transform: none;
}
/* Poster corner marks (type, announce): soft cream discs, not dark chips */
body.ktv-page .card-type-mark,
body.ktv-page .card-announce-mark {
    border: 0;
    border-radius: 50%;
    background: rgba(255, 253, 252, 0.92);
    color: #2a1f1d;
    box-shadow: 0 4px 10px -4px rgba(0, 0, 0, 0.35);
}
body.ktv-page .video-trailer-wrapper {
    border-radius: 14px;
    box-shadow: var(--ktv-shadow);
}

/* ==========================================================================
   11. Screening — live player (kinoteka.php inline "TV set" frame)
   ========================================================================== */
body.ktv-page .tv-frame-container,
body.ktv-page .venue--sport .tv-frame-container {
    padding: 14px 14px 44px;
    background: var(--ktv-panel);
    border: 0;
    border-radius: 24px;
    box-shadow: var(--ktv-shadow-lift);
}
body.ktv-page .tv-frame-container::before {
    display: none;
}
body.ktv-page .player-viewport,
body.ktv-page .venue--sport .player-viewport {
    border-radius: 16px;
    box-shadow: none;
}
body.ktv-page .tv-logo {
    bottom: 15px;
    color: var(--ktv-ink-3);
    opacity: 1;
    letter-spacing: 0.2em;
}
body.ktv-page .tv-floating-fs-btn {
    border: 0;
    border-radius: 50%;
    background: var(--ktv-veil);
    color: #fff;
    box-shadow: none;
}
body.ktv-page .tv-floating-fs-btn:hover,
body.ktv-page .tv-floating-fs-btn:active {
    background: #fff;
    color: #2a1f1d;
    box-shadow: none;
}
/* The unmute guide is a soft pill; it still points at the speaker, then leaves */
body.ktv-page .tv-unmute-guide {
    border: 0;
    border-radius: 999px;
    background: rgba(255, 253, 252, 0.95);
    color: #2a1f1d;
    box-shadow: 0 12px 28px -12px rgba(0, 0, 0, 0.6);
    animation: none;
}
body.ktv-page .tv-unmute-guide:hover {
    background: #2a1f1d;
    color: #fff;
    border-color: transparent;
}
body.ktv-page .tv-unmute-guide i.fa-volume-up {
    color: #2a1f1d;
}
body.ktv-page .tv-unmute-guide:hover i.fa-volume-up {
    color: #fff;
}
body.ktv-page .tv-unmute-guide .tv-arrow-down {
    color: #b40000;
}
body.ktv-page .tv-mute-target-pulse {
    border-color: #fff;
    box-shadow: 0 0 0 3px rgba(180, 0, 0, 0.55);
}
body.ktv-page .offline-screen-content {
    color: var(--ktv-ink-2);
}
body.ktv-page .offline-screen-content .status-badge {
    background: var(--ktv-soft);
    color: var(--ktv-ink-2);
    border-radius: 999px;
    letter-spacing: 0.04em;
}

/* ==========================================================================
   12. Screening — Kartuli TV banner
   ========================================================================== */
body.ktv-page .kino-tv-cta {
    background: var(--ktv-panel);
    border: 0;
    border-radius: var(--ktv-r);
    box-shadow: var(--ktv-shadow);
    color: var(--ktv-ink);
    transition: box-shadow var(--ktv-fast) var(--ktv-ease), transform var(--ktv-fast) var(--ktv-ease);
}
body.ktv-page .kino-tv-cta:hover {
    color: var(--ktv-ink);
    border-color: transparent;
    box-shadow: var(--ktv-shadow-lift);
    transform: translateY(-2px);
}
body.ktv-page .kino-tv-cta__icon {
    border-radius: 14px;
    background: var(--ktv-soft);
    color: var(--ktv-ink-2);
}
body.ktv-page .kino-tv-cta__title {
    color: var(--ktv-ink);
}
body.ktv-page .kino-tv-cta__body {
    color: var(--ktv-ink-2);
}
body.ktv-page .kino-tv-cta__button,
body.ktv-page .kino-tv-cta:hover .kino-tv-cta__button {
    border-radius: 999px;
    background: var(--ktv-ink);
    color: var(--ktv-page);
    letter-spacing: 0.01em;
    text-transform: none;
}

/* ==========================================================================
   13. Screening — details band, reminders, other events
   ========================================================================== */
body.ktv-page .event-details-footer,
body.ktv-page .related-events-section {
    background: transparent;
    border-top: 1px solid var(--ktv-line);
}
body.ktv-page .event-meta-details h4 {
    font-family: var(--ktv-display);
    font-weight: var(--ktv-display-weight);
    font-synthesis: none;
    color: var(--ktv-ink);
}
body.ktv-page .meta-grid .meta-item {
    background: var(--ktv-panel);
    border-radius: 14px;
    box-shadow: var(--ktv-shadow);
}
body.ktv-page .meta-grid .meta-item:hover {
    background: var(--ktv-panel);
    transform: none;
}
body.ktv-page .meta-grid .meta-item i {
    color: var(--ktv-ink-3);
}
body.ktv-page .meta-label {
    color: var(--ktv-ink-3);
    letter-spacing: 0.02em;
    text-transform: none;
}
body.ktv-page .meta-value {
    color: var(--ktv-ink);
}
body.ktv-page .btn-action {
    border-radius: 999px;
}
body.ktv-page .countdown-notice {
    background: var(--ktv-soft);
    border: 0;
    box-shadow: inset 0 0 0 1px var(--ktv-line);
    border-radius: 14px;
    color: var(--ktv-ink-2);
}
body.ktv-page .countdown-notice i {
    color: var(--ktv-ink-3);
}

body.ktv-page .related-event-card {
    background: var(--ktv-panel);
    border: 0;
    border-radius: 16px;
    box-shadow: var(--ktv-shadow);
}
body.ktv-page .related-event-card:hover {
    transform: translateY(-3px);
    border-color: transparent;
    box-shadow: var(--ktv-shadow-lift);
}
body.ktv-page .related-event-poster {
    border-radius: 16px 16px 0 0;
}
body.ktv-page .related-event-info h5 {
    color: var(--ktv-ink);
}
body.ktv-page .related-event-info .event-date {
    color: var(--ktv-ink-3);
}
body.ktv-page .related-event-info .btn-sm {
    padding: 8px 16px;
    border-radius: 999px;
}

/* ==========================================================================
   14. Screening — finished / canceled (view_finished.php, view_canceled.php)
   The same layout as an upcoming screening: the whole poster in its cream
   frame, the words beside it. A state pill follows the title.
   ========================================================================== */
body.ktv-page .cinema-hall .scheduled-description {
    white-space: pre-line;
}
body.ktv-page .event-state-pill {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    margin: 0 0 18px;
    padding: 6px 13px;
    border-radius: 999px;
    background: var(--ktv-soft);
    box-shadow: inset 0 0 0 1px var(--ktv-line);
    color: var(--ktv-ink-2);
    font-size: 0.8125rem;
    font-weight: 700;
}
body.ktv-page .event-state-pill i {
    color: var(--ktv-ink-3);
}
body.ktv-page .event-ended-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin: 0 0 28px;
}
body.ktv-page .meta-chip {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 7px 14px;
    border-radius: 999px;
    background: var(--ktv-panel);
    box-shadow: var(--ktv-shadow);
    color: var(--ktv-ink-2);
    font-size: 0.875rem;
    font-variant-numeric: tabular-nums;
}
body.ktv-page .meta-chip i {
    color: var(--ktv-ink-3);
}
body.ktv-page .event-ended-view.is-canceled .scheduled-media img {
    filter: grayscale(1);
}
@media (max-width: 900px) {
    body.ktv-page .event-ended-meta {
        justify-content: center;
    }
}

/* ==========================================================================
   15. Screening — not found
   ========================================================================== */
body.ktv-page .error-icon {
    color: var(--ktv-ink-3);
}
body.ktv-page .error-title {
    background: none;
    -webkit-text-fill-color: currentColor;
    color: var(--ktv-ink);
    font-family: var(--ktv-display);
    font-weight: var(--ktv-display-weight);
    font-synthesis: none;
}
body.ktv-page .error-description {
    color: var(--ktv-ink-2);
}
body.ktv-page .error-suggestions {
    background: var(--ktv-panel);
    border: 0;
    border-radius: var(--ktv-r);
    box-shadow: var(--ktv-shadow);
}
body.ktv-page .error-suggestions h4 {
    color: var(--ktv-ink);
}
body.ktv-page .error-suggestions {
    text-align: left;
}
body.ktv-page .error-suggestions ul {
    margin: 0;
    padding-left: 1.25rem;
    color: var(--ktv-ink-2);
}
body.ktv-page .error-suggestions li::marker {
    color: var(--ktv-ink-3);
}
body.ktv-page .error-support .text-muted {
    color: var(--ktv-ink-3) !important;
}
body.ktv-page .error-support .text-warning {
    color: var(--ktv-ink) !important;
    text-decoration: underline;
    text-decoration-thickness: 1px;
    text-underline-offset: 3px;
}

/* ==========================================================================
   16. Toasts (reminders, favourites)
   ========================================================================== */
body.ktv-page .cinema-toast {
    background: var(--ktv-panel);
    border: 0;
    border-radius: 14px;
    box-shadow: var(--ktv-shadow-lift);
    color: var(--ktv-ink);
}
body.ktv-page .toast-success,
body.ktv-page .toast-error,
body.ktv-page .toast-warning,
body.ktv-page .toast-info {
    border-left: 0;
}
body.ktv-page .toast-error {
    box-shadow: var(--ktv-shadow-lift), inset 0 0 0 1px var(--ktv-red-tint);
}
body.ktv-page .toast-close {
    color: var(--ktv-ink-3);
}
body.ktv-page .toast-close:hover {
    background: var(--ktv-soft);
    color: var(--ktv-ink);
}

/* ==========================================================================
   17. Archive (kino-archive.php) — the afisha's archive band, in full.
   The same ticket cards on the page ground; the filter is links (server-side
   paging), so the current tab is marked with aria-current, not aria-pressed.
   ========================================================================== */
body.ktv-page .archive-back {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    min-height: 44px;
    margin-top: 20px;
    color: var(--ktv-ink-2);
    font-size: 0.875rem;
    font-weight: 700;
    text-decoration: none;
}
body.ktv-page .archive-back:hover {
    color: var(--ktv-ink);
    text-decoration: underline;
    text-decoration-thickness: 1px;
    text-underline-offset: 3px;
}
body.ktv-page .archive-back:focus-visible,
body.ktv-page .archive-page:focus-visible,
body.ktv-page a.afisha-chip:focus-visible {
    outline: 2px solid var(--ktv-ink);
    outline-offset: 2px;
}
body.ktv-page .kino-archive .afisha-head {
    padding-top: 8px;
}

body.ktv-page a.afisha-chip {
    text-decoration: none;
}
body.ktv-page .afisha-chip[aria-current="page"] {
    background: var(--ktv-panel);
    color: var(--ktv-ink);
    box-shadow: var(--ktv-shadow);
}

body.ktv-page .archive-pager {
    gap: 14px;
    margin-top: 48px;
}
body.ktv-page .archive-page {
    width: 44px;
    height: 44px;
    border: 0;
    border-radius: 50%;
    background: var(--ktv-panel);
    box-shadow: var(--ktv-shadow);
    color: var(--ktv-ink);
    text-decoration: none;
    transition: box-shadow var(--ktv-fast) var(--ktv-ease), transform var(--ktv-fast) var(--ktv-ease);
}
body.ktv-page .archive-page:hover {
    background: var(--ktv-panel);
    box-shadow: var(--ktv-shadow-lift);
    transform: translateY(-1px);
}
body.ktv-page .archive-page-status {
    min-width: 4.5em;
    color: var(--ktv-ink-3);
    font-family: var(--ktv-text);
    font-size: 0.875rem;
    font-weight: 700;
    letter-spacing: 0;
    text-align: center;
}

/* ==========================================================================
   18. Phones
   ========================================================================== */
@media (max-width: 767.98px) {
    /* The player sheds its panel on phones (kinoteka inline rule), but keeps its
       rounded corners so it still belongs to the page */
    body.ktv-page .tv-frame-container,
    body.ktv-page .venue--sport .tv-frame-container {
        padding: 0;
        background: none;
        box-shadow: none;
        border-radius: 0;
    }
    body.ktv-page .player-viewport,
    body.ktv-page .venue--sport .player-viewport {
        border-radius: 14px;
    }
}

@media (max-width: 575.98px) {
    body.ktv-page .afisha-head__tools {
        width: 100%;
        flex-wrap: nowrap;
    }
    body.ktv-page .afisha-filter {
        flex: 1 1 auto;
        min-width: 0;
    }
    /* The lamp becomes a round icon button beside the filter */
    body.ktv-page .rl-lamp:not(.nav-action-btn) {
        width: 44px;
        min-height: 44px;
        padding: 0;
        justify-content: center;
    }
    body.ktv-page .rl-lamp__label {
        position: absolute;
        width: 1px;
        height: 1px;
        overflow: hidden;
        clip: rect(0 0 0 0);
        white-space: nowrap;
    }
}

@media (prefers-reduced-motion: reduce) {
    body.ktv-page .afisha-card:hover,
    body.ktv-page .kino-tv-cta:hover,
    body.ktv-page .related-event-card:hover,
    body.ktv-page .nav-back:hover,
    body.ktv-page .nav-action-btn:hover,
    body.ktv-page .actions .btn:hover {
        transform: none;
    }
}
