/* ------------------------------------------------------------------
   KC Cinemax theme — ROYAL EDITION
   ------------------------------------------------------------------ */

:root {
    /* KC brand palette */
    --primary:           #6C3CE1;
    --primary-dark:      #4B28B0;
    --primary-light:     #9B7BFF;
    --secondary:         #142033;
    --accent:            #FF6B6B;
    --gold:              #E5B84B;
    --gradient-primary:  linear-gradient(135deg, #6C3CE1 0%, #E94057 50%, #F27121 100%);
    --gradient-dark:     linear-gradient(135deg, #142033 0%, #0F1626 100%);
    --shadow:            0 20px 60px rgba(0, 0, 0, 0.35);
    --shadow-hover:      0 30px 80px rgba(229, 184, 75, 0.20);
    --transition:        all 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275);

    /* Fluid type scale */
    --fs-hero-title:     clamp(2rem, 8vw, 4.5rem);
    --fs-hero-sub:       clamp(0.95rem, 2.5vw, 1.2rem);
    --fs-section-title:  clamp(1.7rem, 5vw, 2.8rem);
    --fs-cta-title:      clamp(1.6rem, 5vw, 3rem);

    /* App theme — ROYAL */
    --kc-bg:        #0F1626;         /* midnight navy */
    --kc-bg-2:      #142033;         /* lighter navy for gradients */
    --kc-surface:   #1B2740;         /* card surface */
    --kc-surface-2: #24324F;         /* deeper pill surface */
    --kc-border:    #2E3D5C;         /* navy border */
    --kc-text:      #F6F1E4;         /* warm cream text */
    --kc-muted:     #A6B0C8;         /* cool bluish grey */
    --kc-gold:      var(--gold);
    --kc-gold-2:    #F2CE6E;         /* lighter gold */
    --kc-amber:     #C9963A;         /* deeper amber */
    --kc-red:       #D9455F;
    --kc-green:     #3FA96A;
}

/* Base
   ------------------------------------------------------------------ */
html, body {
    height: 100%;
    max-width: 100%;
    overflow-x: hidden;
}

body {
    font-family: 'Poppins', system-ui, -apple-system, 'Segoe UI', Roboto,
                 'Helvetica Neue', Arial,
                 'Segoe UI Symbol', 'Noto Sans Symbols 2', sans-serif;
    font-weight: 400;
    font-size: 1rem;
    line-height: 1.6;
    color: var(--kc-text);
}

body.kc-body {
    background: radial-gradient(1200px 600px at 50% -200px, #1F2F4D 0%, #0F1626 60%) fixed;
    min-height: 100vh;
    height: auto;
    display: flex;
    flex-direction: column;
    overflow-y: auto;
    overflow-x: hidden;
}

body.kc-body > .kc-main {
    flex: 1 0 auto;
    min-height: 0;
    width: 100%;
}

body.kc-body > footer.kc-footer {
    flex-shrink: 0;
    display: block;
    height: auto;
    max-height: none;
    overflow: visible;
    position: relative;
    width: 100%;
}

/* Typography
   ------------------------------------------------------------------ */
h1, h2, h3, h4, h5, h6,
.h1, .h2, .h3, .h4, .h5, .h6 {
    font-family: 'Poppins', system-ui, sans-serif;
    font-weight: 700;
    line-height: 1.2;
    letter-spacing: -0.3px;
    color: var(--kc-text);
}

h1 { font-size: var(--fs-hero-title);    font-weight: 900; letter-spacing: -1px; }
h2 { font-size: var(--fs-section-title); font-weight: 800; }
h3 { font-size: 1.5rem;                  font-weight: 700; }
h4 { font-size: 1.25rem;                 font-weight: 700; }
h5 { font-size: 1.1rem;                  font-weight: 600; }
h6 { font-size: 1rem;                    font-weight: 600; }

p { font-size: 1rem; line-height: 1.65; color: var(--kc-text); }

.lead, .kc-tagline {
    font-size: var(--fs-hero-sub);
    line-height: 1.6;
    font-weight: 400;
    color: var(--kc-muted);
}

/* Navbar
   ------------------------------------------------------------------ */
.kc-navbar {
    background: rgba(15, 22, 38, .9);
    backdrop-filter: saturate(140%) blur(8px);
    border-bottom: 1px solid var(--kc-border);
}
.kc-brand { display: inline-flex; align-items: center; gap: .5rem; text-decoration: none; }
.kc-brand-mark {
    background: linear-gradient(135deg, var(--kc-gold-2), var(--kc-amber));
    color: #1a1200;
    font-weight: 900;
    letter-spacing: .5px;
    padding: .15rem .55rem;
    border-radius: .35rem;
    font-size: .95rem;
}
.kc-brand-name {
    color: var(--kc-text);
    font-weight: 800;
    letter-spacing: 2px;
    font-size: 1.05rem;
}
.kc-navbar .nav-link {
    color: #D6DEEF;
    font-weight: 500;
    font-size: .95rem;
    padding: .5rem 1rem !important;
    transition: color .25s ease;
}
.kc-navbar .nav-link:hover,
.kc-navbar .nav-link.active { color: var(--kc-gold-2); }

/* Footer
   ------------------------------------------------------------------ */
.kc-footer {
    border-top: 1px solid var(--kc-border);
    background: #0A0F1C;
    margin-top: 4rem;
    padding: 2rem 0 1rem;
}
.kc-footer p, .kc-footer .kc-muted { font-size: .9rem; color: var(--kc-muted); }
.kc-muted { color: var(--kc-muted); }

/* Buttons
   ------------------------------------------------------------------ */
.btn {
    font-family: 'Poppins', system-ui, sans-serif;
    font-weight: 600;
    letter-spacing: .2px;
    transition: var(--transition);
}
.btn-kc-gold {
    background: linear-gradient(135deg, var(--kc-gold-2), var(--kc-amber));
    color: #1a1200;
    font-weight: 700;
    border: 0;
    padding: .6rem 1.4rem;
}
.btn-kc-gold:hover {
    color: #1a1200;
    transform: translateY(-2px);
    box-shadow: var(--shadow-hover);
}
.btn-kc-outline {
    border: 1px solid var(--kc-border);
    color: var(--kc-text);
    background: transparent;
    padding: .6rem 1.4rem;
}
.btn-kc-outline:hover {
    border-color: var(--kc-gold);
    color: var(--kc-gold-2);
    transform: translateY(-2px);
}

/* Section headings
   ------------------------------------------------------------------ */
.kc-section { padding: 3rem 0; }
.kc-section-title {
    display: flex;
    align-items: center;
    gap: 1rem;
    font-size: var(--fs-section-title);
    font-weight: 800;
    letter-spacing: -0.5px;
    color: var(--kc-text);
    margin-bottom: 1.5rem;
}
.kc-section-title::after {
    content: "";
    flex: 1 1 auto;
    height: 1px;
    background: linear-gradient(90deg, var(--kc-gold), transparent);
}
.kc-section-title .badge { font-size: .75rem; font-weight: 600; }

/* Homepage hero
   ------------------------------------------------------------------ */
.kc-hero {
    position: relative;
    padding: 6rem 0 4rem;
    text-align: center;
    overflow: hidden;
}
.kc-hero::before {
    content: "";
    position: absolute;
    inset: 0;
    background: radial-gradient(600px 300px at 50% 0%, rgba(229, 184, 75, .14), transparent 70%);
    pointer-events: none;
}
.kc-hero h1 {
    font-size: var(--fs-hero-title);
    font-weight: 900;
    letter-spacing: -1px;
    line-height: 1.08;
    background: linear-gradient(135deg, var(--kc-gold-2), var(--kc-amber));
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
    margin: 0;
}
.kc-hero p.kc-tagline {
    font-size: var(--fs-hero-sub);
    color: var(--kc-muted);
    letter-spacing: 3px;
    text-transform: uppercase;
    font-weight: 500;
    margin-top: .75rem;
}

/* Movie cards
   ------------------------------------------------------------------ */
.kc-card {
    background: var(--kc-surface);
    border: 1px solid var(--kc-border);
    border-radius: .65rem;
    overflow: hidden;
    height: 100%;
    display: flex;
    flex-direction: column;
    transition: transform .3s ease, border-color .3s ease, box-shadow .3s ease;
}
.kc-card:hover {
    transform: translateY(-4px);
    border-color: rgba(229, 184, 75, .35);
    box-shadow: var(--shadow);
}
.kc-poster-wrap {
    position: relative;
    aspect-ratio: 2 / 3;
    background: #0A0F1C;
    overflow: hidden;
}
.kc-poster {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    transition: transform .5s ease;
}
.kc-card:hover .kc-poster { transform: scale(1.05); }
.kc-badge-row {
    position: absolute;
    top: .5rem;
    left: .5rem;
    display: flex;
    gap: .25rem;
    flex-wrap: wrap;
}
.kc-badge {
    font-size: .65rem;
    font-weight: 700;
    letter-spacing: 1px;
    text-transform: uppercase;
    padding: .25rem .55rem;
    border-radius: .25rem;
    background: rgba(15, 22, 38, .85);
    color: var(--kc-gold-2);
    border: 1px solid rgba(229, 184, 75, .35);
    backdrop-filter: blur(4px);
}
.kc-badge.soon { color: #F6F1E4; border-color: rgba(255, 255, 255, .25); }

.kc-card-body {
    padding: .9rem 1rem 1.1rem;
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
}
.kc-card-title {
    font-size: 1.05rem;
    font-weight: 700;
    letter-spacing: -0.2px;
    margin: 0 0 .4rem;
    color: var(--kc-text);
    line-height: 1.3;
}
.kc-meta {
    font-size: .8rem;
    color: var(--kc-muted);
    display: flex;
    gap: .5rem;
    flex-wrap: wrap;
    align-items: center;
}
.kc-meta i { color: var(--kc-gold); opacity: .85; font-size: .85rem; }
.kc-card-desc {
    font-size: .85rem;
    color: var(--kc-muted);
    line-height: 1.55;
    margin: .55rem 0 .9rem;
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.kc-card-footer {
    margin-top: auto;
    padding-top: 1rem;
}

/* Showtime pills
   ------------------------------------------------------------------ */
.kc-pill-row { display: flex; flex-wrap: wrap; gap: .5rem; }
.kc-pill {
    display: inline-flex;
    align-items: center;
    gap: .4rem;
    padding: .45rem .85rem;
    border-radius: 999px;
    background: var(--kc-surface-2);
    border: 1px solid var(--kc-border);
    color: var(--kc-text);
    text-decoration: none;
    font-size: .85rem;
    font-weight: 600;
    transition: all .2s ease;
}
.kc-pill:hover {
    border-color: var(--kc-gold);
    color: var(--kc-gold-2);
    transform: translateY(-1px);
}
.kc-pill .seats { font-size: .72rem; color: var(--kc-muted); font-weight: 400; }
.kc-pill.sold-out { opacity: .45; pointer-events: none; cursor: not-allowed; }

/* Empty state
   ------------------------------------------------------------------ */
.kc-empty { text-align: center; padding: 4rem 1rem; color: var(--kc-muted); }
.kc-empty i { font-size: 2rem; color: var(--kc-border); display: block; margin-bottom: .75rem; }

/* Movie detail (legacy)
   ------------------------------------------------------------------ */
.kc-detail-hero {
    display: grid;
    grid-template-columns: 1fr;
    gap: 2rem;
    padding: 2rem 0 1rem;
}
@media (min-width: 768px) {
    .kc-detail-hero { grid-template-columns: 280px 1fr; }
}
.kc-detail-poster {
    aspect-ratio: 2 / 3;
    border-radius: .65rem;
    overflow: hidden;
    border: 1px solid var(--kc-border);
    background: #0A0F1C;
}
.kc-detail-poster img { width: 100%; height: 100%; object-fit: cover; }
.kc-detail-title {
    font-weight: 800;
    letter-spacing: -0.5px;
    font-size: var(--fs-section-title);
    margin: 0 0 .5rem;
    line-height: 1.15;
}
.kc-detail-meta { color: var(--kc-muted); font-size: .9rem; margin-bottom: 1rem; }
.kc-detail-meta .dot { margin: 0 .5rem; color: var(--kc-border); }
.kc-detail-desc { color: #D5DCEC; line-height: 1.7; font-size: .95rem; }

/* Showtime cards with poster (showtimes.php)
   ------------------------------------------------------------------ */
.kc-showtime-card { padding: 0; overflow: hidden; }
.kc-showtime-inner {
    display: flex;
    align-items: stretch;
    gap: 0;
    height: 100%;
}
.kc-showtime-poster {
    flex: 0 0 90px;
    display: block;
    overflow: hidden;
    background: #0A0F1C;
    position: relative;
    aspect-ratio: 2 / 3;
    align-self: flex-start;
}
.kc-showtime-poster img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    transition: transform .4s ease;
}
.kc-showtime-card:hover .kc-showtime-poster img { transform: scale(1.06); }
.kc-showtime-details {
    flex: 1 1 auto;
    padding: .85rem .95rem 1rem;
    display: flex;
    flex-direction: column;
    min-width: 0;
}
.kc-showtime-details .kc-card-title { font-size: .98rem; }
.kc-showtime-details .mt-2 { margin-top: auto !important; }
@media (max-width: 575.98px) {
    .kc-showtime-poster { flex: 0 0 80px; }
    .kc-showtime-details { padding: .7rem .8rem .85rem; }
}

/* Single-card grids go full width on mobile
   ------------------------------------------------------------------ */
@media (max-width: 575.98px) {
    .row > [class*="col-"]:only-child {
        flex: 0 0 100%;
        max-width: 100%;
    }
}

/* ------------------------------------------------------------------
   Movie hero (movie.php)
   ------------------------------------------------------------------ */
.kc-movie-hero {
    position: relative;
    overflow: hidden;
    padding: 4rem 0 3rem;
    margin-bottom: 1rem;
    min-height: 420px;
}
@media (min-width: 992px) {
    .kc-movie-hero { min-height: 520px; }
}

.kc-movie-hero-bg-wrap {
    position: absolute;
    inset: 0;
    overflow: hidden;
    z-index: 0;
    pointer-events: none;
}
.kc-movie-hero-bg {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: right center;
    filter: blur(2px) brightness(0.75) saturate(110%);
    opacity: .9;
    display: block;
}

.kc-movie-hero-overlay {
    position: absolute;
    inset: 0;
    background: linear-gradient(
        90deg,
        rgba(15, 22, 38, 1) 0%,
        rgba(15, 22, 38, .85) 30%,
        rgba(15, 22, 38, .5) 55%,
        rgba(15, 22, 38, 0) 80%,
        rgba(15, 22, 38, .35) 100%
    );
    z-index: 1;
}

.kc-movie-hero-inner {
    position: relative;
    z-index: 2;
    display: grid;
    grid-template-columns: 1fr;
    gap: 2rem;
    align-items: center;
}
@media (min-width: 768px) {
    .kc-movie-hero-inner {
        grid-template-columns: 260px 1fr;
        gap: 3rem;
    }
}

.kc-movie-hero-poster {
    width: 100%;
    max-width: 260px;
    margin: 0 auto;
    aspect-ratio: 2 / 3;
    border-radius: .85rem;
    overflow: hidden;
    border: 1px solid rgba(229, 184, 75, .25);
    box-shadow:
        0 25px 60px rgba(0, 0, 0, .7),
        0 0 0 1px rgba(229, 184, 75, .15);
    background: #0A0F1C;
}
.kc-movie-hero-poster img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

.kc-movie-hero-info { min-width: 0; }

.kc-movie-hero-title {
    font-size: clamp(1.75rem, 5vw, 3rem);
    font-weight: 900;
    letter-spacing: -1px;
    line-height: 1.05;
    margin: 0 0 1rem;
    color: #FFFFFF;
    text-shadow: 0 4px 30px rgba(0, 0, 0, .8);
}

.kc-movie-hero-meta {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .35rem;
    font-size: .95rem;
    color: #D6DEEF;
    margin-bottom: 1.5rem;
}
.kc-movie-hero-meta .dot { color: rgba(255, 255, 255, .35); }
.kc-movie-hero-meta .kc-cert {
    display: inline-block;
    padding: .1rem .5rem;
    border: 1px solid rgba(229, 184, 75, .5);
    border-radius: .25rem;
    font-size: .78rem;
    font-weight: 600;
    letter-spacing: .5px;
    color: var(--kc-gold-2);
}

.kc-movie-hero-actions {
    display: flex;
    flex-wrap: wrap;
    gap: .75rem;
}

.kc-btn-lg {
    padding: .8rem 1.6rem;
    font-size: 1rem;
    font-weight: 700;
    border-radius: .5rem;
}

.kc-movie-about {
    padding: 2rem 1rem 1rem;
    max-width: 900px;
}

/* ------------------------------------------------------------------
   Showtimes grid — tile with gold date badge + row-style showtimes
   ------------------------------------------------------------------ */
.kc-date-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 1rem;
    margin-bottom: 1.75rem;
}

.kc-date-tile {
    background: var(--kc-surface);
    border: 1px solid var(--kc-border);
    border-radius: .85rem;
    padding: 1rem;
    display: flex;
    flex-direction: column;
    gap: .85rem;
}

.kc-date-tile-head {
    display: flex;
    align-items: center;
    gap: .85rem;
    padding-bottom: .85rem;
    border-bottom: 1px solid var(--kc-border);
    position: relative;
}

.kc-date-badge {
    flex: 0 0 auto;
    width: 56px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: .45rem .25rem .35rem;
    border-radius: .55rem;
    background: linear-gradient(180deg, #F2CE6E 0%, #E5B84B 55%, #C9963A 100%);
    color: #1a1200;
    box-shadow: 0 4px 12px rgba(229, 184, 75, .30),
                inset 0 1px 0 rgba(255,255,255,.35);
    text-align: center;
    line-height: 1;
}
.kc-date-badge-month {
    font-size: .62rem;
    font-weight: 800;
    letter-spacing: .12em;
}
.kc-date-badge-day {
    font-size: 1.35rem;
    font-weight: 900;
    line-height: 1;
    margin: .1rem 0;
}
.kc-date-badge-weekday {
    font-size: .58rem;
    font-weight: 700;
    letter-spacing: .12em;
    opacity: .85;
}

.kc-date-tile-title {
    flex: 1 1 auto;
    min-width: 0;
    display: flex;
    align-items: center;
}
.kc-date-title-day {
    font-size: 1.1rem;
    font-weight: 800;
    color: var(--kc-text);
    letter-spacing: -0.3px;
    line-height: 1.15;
}

.kc-date-tile-icon {
    flex: 0 0 auto;
    font-size: 1.65rem;
    color: rgba(229, 184, 75, .25);
    padding-right: .25rem;
}

.kc-date-tile-body {
    display: flex;
    flex-direction: column;
    gap: .55rem;
}

.kc-showtime-row {
    display: flex;
    align-items: center;
    gap: .65rem;
    padding: .7rem .85rem;
    border-radius: .55rem;
    border: 1.5px solid rgba(229, 184, 75, .45);
    background: rgba(229, 184, 75, .04);
    color: var(--kc-text);
    text-decoration: none;
    transition: transform .15s ease, border-color .15s ease,
                background .15s ease, box-shadow .15s ease;
}
.kc-showtime-row:hover {
    transform: translateY(-1px);
    border-color: var(--kc-gold);
    background: rgba(229, 184, 75, .10);
    color: var(--kc-text);
    box-shadow: 0 6px 16px rgba(0, 0, 0, .30);
}

.kc-showtime-icon {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 26px;
    height: 26px;
    color: var(--kc-gold-2);
    font-size: 1.15rem;
}

.kc-showtime-time {
    flex: 0 0 auto;
    font-size: 1rem;
    font-weight: 800;
    letter-spacing: -0.2px;
    color: var(--kc-text);
    white-space: nowrap;
}

.kc-showtime-seats {
    flex: 1 1 auto;
    display: inline-flex;
    align-items: center;
    gap: .35rem;
    font-size: .78rem;
    color: var(--kc-muted);
    min-width: 0;
    padding-left: .65rem;
    border-left: 1px solid var(--kc-border);
    margin-left: .35rem;
}
.kc-seat-dot {
    width: .5rem;
    height: .5rem;
    border-radius: 50%;
    background: var(--kc-green);
    flex: 0 0 auto;
}

.kc-showtime-arrow {
    flex: 0 0 auto;
    color: var(--kc-gold);
    font-size: 1rem;
    transition: transform .15s ease;
}
.kc-showtime-row:hover .kc-showtime-arrow {
    transform: translateX(2px);
}

/* Almost full (<=20 seats left) */
.kc-showtime-row.kc-row-almost {
    border-color: rgba(232, 137, 12, .55);
    background: rgba(232, 137, 12, .05);
}
.kc-showtime-row.kc-row-almost .kc-seat-dot {
    background: #E8890C;
}
.kc-showtime-row.kc-row-almost .kc-showtime-seats {
    color: #E8890C;
}

/* Sold out — muted, not clickable */
.kc-showtime-row.kc-row-sold {
    border-color: #3a4458;
    background: rgba(58, 68, 88, .12);
    opacity: .6;
    cursor: not-allowed;
    pointer-events: none;
}
.kc-showtime-row.kc-row-sold .kc-showtime-time {
    color: #7a8298;
}
.kc-showtime-row.kc-row-sold .kc-showtime-seats {
    color: #7a8298;
}
.kc-showtime-row.kc-row-sold .kc-seat-dot {
    background: #7a8298;
}
.kc-showtime-row.kc-row-sold .kc-showtime-arrow {
    color: #5a6379;
}

@media (max-width: 1199.98px) {
    .kc-date-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 767.98px) {
    .kc-date-grid { grid-template-columns: 1fr; gap: .75rem; }
    .kc-date-badge { width: 52px; }
    .kc-date-badge-day { font-size: 1.25rem; }
    .kc-date-title-day { font-size: 1.05rem; }
    .kc-date-tile-icon { font-size: 1.45rem; }
    .kc-showtime-time { font-size: .95rem; }
}
@media (max-width: 479.98px) {
    .kc-showtime-row { gap: .5rem; padding: .6rem .7rem; }
    .kc-showtime-seats { font-size: .72rem; }
}

/* Mobile tweaks
   ------------------------------------------------------------------ */
@media (max-width: 575.98px) {
    .kc-card-desc { -webkit-line-clamp: 2; }
    .kc-hero { padding: 4rem 0 2.5rem; }
    .kc-section { padding: 2rem 0; }

    .kc-movie-hero { padding: 2.5rem 0 2rem; }
    .kc-movie-hero-poster { max-width: 180px; }
    .kc-movie-hero-title { font-size: 1.75rem; text-align: center; }
    .kc-movie-hero-meta { justify-content: center; font-size: .85rem; }
    .kc-movie-hero-actions { justify-content: center; }
    .kc-btn-lg { padding: .7rem 1.2rem; font-size: .9rem; }
    .kc-movie-about { padding: 1.5rem .5rem .5rem; }
}

/* Symbol fallback
   ------------------------------------------------------------------ */
body, h1, h2, h3, h4, h5, h6, .btn, button, input, select, textarea {
    font-family: 'Poppins', system-ui, -apple-system, 'Segoe UI', Roboto,
                 'Helvetica Neue', Arial,
                 'Segoe UI Symbol', 'Noto Sans Symbols 2', sans-serif;
}

/* ------------------------------------------------------------------
   Trailer modal (movie.php)
   ------------------------------------------------------------------ */
.kc-trailer-modal .modal-content {
    background: var(--kc-surface);
    border: 1px solid var(--kc-border);
    border-radius: .65rem;
    overflow: hidden;
}
.kc-trailer-modal .modal-header {
    padding: 1rem 1.25rem .25rem;
    color: var(--kc-text);
    border-bottom: 0;
}
.kc-trailer-modal .modal-title {
    color: var(--kc-text);
    font-weight: 700;
    letter-spacing: -0.3px;
}
.kc-trailer-modal .modal-body {
    padding: .75rem 1rem 1rem;
}

.kc-trailer-ratio {
    position: relative;
    width: 100%;
    padding-top: 56.25%;
    background: #000;
    border-radius: .45rem;
    overflow: hidden;
}
.kc-trailer-ratio iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: 0;
    display: block;
}

.kc-trailer-modal + .modal-backdrop,
.modal-backdrop.show {
    opacity: .8;
    background: #000;
}

@media (max-width: 575.98px) {
    .kc-trailer-modal .modal-dialog { margin: .5rem; }
    .kc-trailer-modal .modal-header { padding: .75rem 1rem .15rem; }
    .kc-trailer-modal .modal-title { font-size: .85rem; }
}

/* ==========================================================================
   Cast & Crew — public movie page
   ========================================================================== */

.kc-movie-cast-wrap,
.kc-movie-crew-wrap {
    padding: 2rem 0 0;
}

.kc-cast-scroller {
    display: flex;
    flex-wrap: nowrap;
    gap: 1rem;
    overflow-x: auto;
    overflow-y: hidden;
    padding: .5rem .25rem 1rem;
    -webkit-overflow-scrolling: touch;
    scroll-snap-type: x proximity;
    scrollbar-width: thin;
    scrollbar-color: rgba(229, 184, 75, .25) transparent;
}
.kc-cast-scroller::-webkit-scrollbar {
    height: 6px;
}
.kc-cast-scroller::-webkit-scrollbar-thumb {
    background: rgba(229, 184, 75, .25);
    border-radius: 999px;
}

.kc-cast-card {
    flex: 0 0 auto;
    width: 130px;
    text-align: center;
    scroll-snap-align: start;
}

.kc-cast-photo {
    width: 120px;
    height: 120px;
    margin: 0 auto .65rem;
    border-radius: 50%;
    overflow: hidden;
    background: #24324F;
    border: 1px solid var(--kc-border);
    box-shadow: 0 6px 20px rgba(0, 0, 0, .35);
}
.kc-cast-photo img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

.kc-cast-name {
    font-size: .9rem;
    font-weight: 600;
    line-height: 1.3;
    color: var(--kc-text);
    margin-bottom: .15rem;
}
.kc-cast-role {
    font-size: .78rem;
    color: var(--kc-muted);
    line-height: 1.25;
}

.kc-movie-crew-wrap {
    overflow: hidden;
}

.kc-crew-group {
    margin-bottom: 1.75rem;
    width: 100%;
}
.kc-crew-group:last-child {
    margin-bottom: 0;
}

.kc-crew-role {
    font-size: .8rem;
    font-weight: 700;
    letter-spacing: 1.5px;
    text-transform: uppercase;
    color: var(--kc-gold, #E5B84B);
    margin: 0 0 .75rem;
}

.kc-crew-group .kc-cast-scroller {
    display: flex;
    flex-wrap: nowrap;
    overflow-x: auto;
    overflow-y: hidden;
    gap: 1rem;
    padding: .5rem .25rem .5rem;
    -webkit-overflow-scrolling: touch;
    scroll-snap-type: x proximity;
    scrollbar-width: thin;
    scrollbar-color: rgba(229, 184, 75, .25) transparent;
}
.kc-crew-group .kc-cast-scroller::-webkit-scrollbar {
    height: 6px;
}
.kc-crew-group .kc-cast-scroller::-webkit-scrollbar-thumb {
    background: rgba(229, 184, 75, .25);
    border-radius: 999px;
}

.kc-crew-group .kc-cast-card {
    flex: 0 0 auto;
    scroll-snap-align: start;
}

.kc-crew-group .kc-cast-card {
    width: 110px;
}
.kc-crew-group .kc-cast-photo {
    width: 100px;
    height: 100px;
    margin-bottom: .5rem;
}
.kc-crew-group .kc-cast-name {
    font-size: .82rem;
}

@media (max-width: 575.98px) {
    .kc-cast-card { width: 108px; }
    .kc-cast-photo { width: 100px; height: 100px; }
    .kc-cast-name { font-size: .82rem; }
    .kc-cast-role { font-size: .72rem; }

    .kc-crew-group .kc-cast-card { width: 92px; }
    .kc-crew-group .kc-cast-photo { width: 84px; height: 84px; }
    .kc-crew-group .kc-cast-name { font-size: .78rem; }
}

/* ==========================================================================
   Go to top
   ========================================================================== */
.kc-goto-top {
  position: fixed;
  right: 1.25rem;
  bottom: 1.25rem;
  z-index: 9999;

  width: 46px;
  height: 46px;
  border-radius: 50%;
  border: 0;
  padding: 0;

  display: inline-flex;
  align-items: center;
  justify-content: center;

  color: #1a1200;
  cursor: pointer;

  background: linear-gradient(135deg, #F2CE6E 0%, #E5B84B 50%, #C9963A 100%);
  box-shadow:
    0 8px 22px rgba(229, 184, 75, .45),
    0 2px 8px rgba(0, 0, 0, .35),
    0 0 0 1px rgba(255, 255, 255, .08) inset;

  opacity: 0;
  visibility: hidden;
  transform: translateY(10px);

  transition: opacity .25s ease, transform .25s ease, visibility .25s ease, box-shadow .2s ease;
}

.kc-goto-top.is-visible {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
}

.kc-goto-top:hover {
  transform: translateY(-2px);
  box-shadow:
    0 12px 30px rgba(229, 184, 75, .6),
    0 2px 8px rgba(0, 0, 0, .4),
    0 0 0 1px rgba(255, 255, 255, .12) inset;
}

.kc-goto-top:active {
  transform: translateY(1px) scale(.97);
}

.kc-goto-top:focus-visible {
  outline: 2px solid #F2CE6E;
  outline-offset: 3px;
}
@media (max-width: 575.98px) {
  .kc-goto-top {
    right: .85rem;
    bottom: .85rem;
    width: 42px;
    height: 42px;
  }
  .kc-goto-top svg {
    width: 18px;
    height: 18px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .kc-goto-top {
    transition: none;
  }
}

/* ==========================================================================
   Footer full-height + mobile width safety
   ========================================================================== */
body.kc-body {
  min-height: 100vh;
  height: auto;
  overflow-y: auto;
}
body.kc-body > .kc-main {
  flex: 1 0 auto;
  min-height: 0;
}
body.kc-body > footer.kc-footer {
  flex-shrink: 0;
  display: block;
  height: auto;
  max-height: none;
  overflow: visible;
  position: relative;
}

@media (max-width: 991.98px) {
  body.kc-body {
    overflow-x: hidden;
  }

  nav.kc-navbar,
  .kc-navbar {
    width: 100%;
    max-width: 100%;
  }
  nav.kc-navbar .container {
    width: 100%;
    max-width: 100%;
    padding-left: 1rem;
    padding-right: 1rem;
  }

  footer.kc-footer {
    width: 100%;
    max-width: 100%;
  }
  footer.kc-footer .kc-footer-container {
    width: 100%;
    max-width: 100%;
    padding-left: 1rem;
    padding-right: 1rem;
  }
}