/* =========================================== */
/* STAFFEL-DETAIL-SEITE                       */
/* =========================================== */

/* Breadcrumb */
.season-breadcrumb {
    margin-bottom: var(--spacing-4);
}

.season-breadcrumb a {
    color: var(--text-sub);
    text-decoration: none;
    font-size: var(--font-size-sm);
    display: inline-flex;
    align-items: center;
    gap: var(--spacing-4);
    transition: color 0.2s;
}

.season-breadcrumb a:hover {
    color: var(--text);
}

/* Durchschnittliche Episoden-Wertung Badge */
.episode-avg-badge {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    padding: 4px 12px;
    border-radius: var(--radius-full);
    font-size: 13px;
    font-weight: 500;
    line-height: 1;
    background: var(--sky-blue);
    color: var(--text-darker);
    white-space: nowrap;
}

.episode-avg-label {
    font-weight: 400;
    opacity: 0.85;
}

.episode-avg-value {
    font-weight: 400;
}

/* =========================================== */
/* SEASON UPPER: 2/3 + 1/3 Layout             */
/* =========================================== */

.season-upper {
    display: contents;
}

.season-upper-main {
    display: contents;
}

.season-upper-side {
    display: contents;
}

.season-episodes-full {
    display: contents;
}

/* =========================================== */
/* EPISODEN-LISTE                             */
/* =========================================== */

/* Episoden-Wertungszeile (zwischen Meta und Handlung) */
.episode-ratings-row {
    display: flex;
    align-items: center;
    gap: var(--spacing-8);
    margin-top: var(--spacing-4);
}

.episode-ratings-label {
    font-size: var(--font-size-xs);
    color: var(--text-sub);
    white-space: nowrap;
}

.episodes-section-header {
    display: flex;
    align-items: center;
    gap: var(--spacing-12);
    margin-bottom: var(--spacing-16);
    flex-wrap: wrap;
}

.episodes-section-header h2 {
    margin-bottom: 0;
}

.episode-list {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: var(--spacing-12);
}

.episode-card {
    background: var(--background-light);
    border-radius: var(--spacing-8);
    overflow: hidden;
}

.episode-layout {
    display: flex;
    gap: var(--spacing-12);
    padding: var(--spacing-12);
}

/* Vorschaubild */
.episode-still {
    flex-shrink: 0;
    width: 120px;
    height: 68px;
    border-radius: var(--spacing-4);
    overflow: hidden;
    background: var(--background-light);
}

.episode-still img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.episode-still-placeholder {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    height: 100%;
    color: var(--text-sub);
    font-size: 1.5rem;
}

/* Info-Bereich */
.episode-info {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: var(--spacing-4);
}

.episode-header-row {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: var(--spacing-12);
}

.episode-title {
    margin: 0;
    font-size: var(--font-size-base);
    font-weight: 500;
    color: var(--text);
    line-height: 1.3;
}

.episode-number {
    color: var(--text-sub);
    font-weight: 400;
    margin-right: 2px;
}

/* Bewertungsbereich pro Folge */
.episode-ratings {
    display: flex;
    align-items: center;
    gap: var(--spacing-8);
    flex-shrink: 0;
}

/* Episode-Bewerten Button */
.episode-rate-btn {
    white-space: nowrap;
    border-color: var(--text);
}

.episode-rate-btn:hover {
    border-color: var(--text);
    background: var(--text);
    color: var(--background-dark);
}

.episode-rate-btn.active,
.episode-rate-btn.rated {
    border-color: var(--text);
    color: var(--text);
    background: transparent;
}

.episode-rate-btn.active > i,
.episode-rate-btn.rated > i {
    color: var(--sky-blue);
}

.episode-rate-btn.active:hover,
.episode-rate-btn.rated:hover {
    border-color: var(--text);
    background: var(--text);
    color: var(--black);
}

.rating-circle.small {
    width: 32px;
    height: 32px;
    font-size: 12px;
    position: unset;
}

/* Meta-Informationen */
.episode-meta {
    display: flex;
    align-items: center;
    gap: var(--spacing-4);
    color: var(--text-sub);
    font-size: var(--font-size-sm);
}

/* Handlung */
.episode-overview {
    margin: var(--spacing-4) 0 0;
    font-size: var(--font-size-sm);
    color: var(--text-sub);
    line-height: 1.5;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.episode-overview-wrap.expanded .episode-overview {
    display: block;
    -webkit-line-clamp: unset;
}

.episode-overview-toggle {
    background: none;
    border: none;
    padding: 0;
    margin-top: var(--spacing-4);
    color: var(--text-link);
    font-size: var(--font-size-sm);
    cursor: pointer;
}

.episode-overview-toggle:hover {
    color: var(--text-link-hover);
    opacity: 1;
}

.episode-overview-toggle .show-less {
    display: none;
}

.episode-overview-wrap.expanded .episode-overview-toggle .show-more {
    display: none;
}

.episode-overview-wrap.expanded .episode-overview-toggle .show-less {
    display: inline;
}

/* =========================================== */
/* DESKTOP: Season-Layout                     */
/* =========================================== */

@media (min-width: 769px) {
    /* movie-content im Column-Layout für Season-Details */
    .movie-content:has(.season-upper) {
        flex-direction: column;
    }

    .season-upper {
        display: flex;
        gap: var(--spacing-32);
        width: 100%;
    }

    .season-upper-main {
        display: flex;
        flex-direction: column;
        gap: var(--spacing-24);
        flex: 2 1 0;
        min-width: 0;
    }

    .season-upper-side {
        display: flex;
        flex-direction: column;
        gap: var(--spacing-24);
        flex: 1 0 0;
        align-self: flex-start;
        position: sticky;
        top: 94px;
    }

    .season-upper-main > section,
    .season-upper-side > section {
        margin-bottom: 0;
        border-radius: var(--radius-lg);
        border: var(--border-light);
    }

    /* Wenn kein Review: upper-main nimmt 100% ein */
    .season-upper:not(:has(.season-upper-side > *)) .season-upper-main {
        flex: 1 1 100%;
    }

    .season-upper:not(:has(.season-upper-side > *)) {
        gap: 0;
    }

    .season-episodes-full {
        display: block;
        width: 100%;
    }

    .season-episodes-full > .episodes-section {
        border-radius: var(--radius-lg);
        border: var(--border-light);
        padding: var(--spacing-24);
    }

    /* Handlung im oberen Bereich: bessere Typografie */
    .season-upper-main .overview p {
        font-size: 1.05rem;
        line-height: 1.75;
        color: var(--text);
    }
}

/* =========================================== */
/* RESPONSIVE                                 */
/* =========================================== */

@media screen and (max-width: 768px) {
    /* Mobile Reihenfolge: Freunde → Handlung → Review → Episoden */
    .movie-content:has(.season-upper) .friend-section { order: 1; }
    .movie-content:has(.season-upper) .overview { order: 2; }
    .movie-content:has(.season-upper) .own-review-section { order: 3; }
    .movie-content:has(.season-upper) .season-episodes-full { order: 4; }

    /* Episoden-Block als sichtbarer Container (nicht contents) */
    .season-episodes-full {
        display: block;
    }

    .episodes-section {
        border-radius: var(--radius-lg);
        border: var(--border-light);
    }

    .episode-list {
        grid-template-columns: 1fr;
        gap: var(--spacing-8);
    }

    .episode-layout {
        gap: var(--spacing-12);
        padding: var(--spacing-12);
    }

    .episode-still {
        width: 100px;
        height: 56px;
    }

    .episode-title {
        font-size: var(--font-size-sm);
    }

    .episode-rate-btn {
        font-size: var(--font-size-xs) !important;
        padding: 5px 10px !important;
    }
}

@media screen and (max-width: 480px) {
    .episode-layout {
        padding: var(--spacing-8);
        gap: var(--spacing-8);
    }

    .episode-still {
        width: 80px;
        height: 45px;
    }

    .rating-circle.tmdb.small {
        width: 28px;
        height: 28px;
        font-size: 11px;
    }

    .episode-meta {
        font-size: var(--font-size-xs);
    }

    .episode-overview {
        font-size: var(--font-size-xs);
    }

    .episode-overview-toggle {
        font-size: var(--font-size-xs);
    }
}

/* Staffel-Review Sektion */
.season-review-section {
    margin: 0;
}

/* Episode Review-Indikator (eigener) — nutzt .review-indicator Klassen aus review-modal.css */

/* Context-Menu Wrapper */
.episode-context-menu-wrap {
    position: relative;
    flex-shrink: 0;
}

/* Episode-Context-Button: erbt .menu-toggle Styles aus components.css */
.episode-context-btn {
    width: 28px;
    height: 28px;
    font-size: 14px;
}

.episode-context-menu {
    display: none;
    position: absolute;
    top: 100%;
    right: 0;
    z-index: var(--z-dropdown, 100);
    min-width: 180px;
    background: var(--background-light);
    border: 1px solid var(--border);
    border-radius: var(--spacing-8);
    padding: var(--spacing-4) 0;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
}

.episode-context-menu.open {
    display: block;
}

.episode-context-item {
    display: flex;
    align-items: center;
    gap: var(--spacing-8);
    width: 100%;
    padding: var(--spacing-8) var(--spacing-12);
    border: none;
    background: transparent;
    color: var(--text);
    font-size: var(--font-size-sm);
    cursor: pointer;
    text-align: left;
    transition: background-color 0.15s;
}

.episode-context-item:hover {
    background: var(--background-hover);
}

.episode-context-item i {
    font-size: var(--font-size-base);
    width: 20px;
    text-align: center;
    flex-shrink: 0;
}

.episode-context-item.active {
    color: var(--text);
}

.episode-context-item.active > i {
    color: var(--sky-blue);
}

/* Freunde auf Episoden-Kacheln */
.episode-friends {
    display: flex;
    flex-wrap: wrap;
    gap: var(--spacing-4);
    margin-top: var(--spacing-8);
}

.episode-friends .friend-avatar {
    width: 48px;
    height: 48px;
}

.episode-friends .friend-info h4 {
    font-size: var(--font-size-sm);
    font-weight: 500;
    margin: 0;
}

a.episode-friend-chip,
button.episode-friend-chip {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 2px 8px 2px 2px;
    background: var(--card-bg);
    border-radius: var(--radius-full);
    font-size: var(--font-size-xs);
    color: var(--text-sub);
    text-decoration: none;
    transition: background-color 0.15s;
    border: none;
    cursor: pointer;
    font-family: inherit;
}

.episode-friend-chip:hover {
    background: var(--background-hover);
}

.episode-friend-chip img {
    width: 20px;
    height: 20px;
    border-radius: 50%;
    object-fit: cover;
}

.episode-friend-name {
    color: var(--text-sub);
}

.episode-friend-rating {
    font-weight: 500;
    color: var(--text);
}

.episode-friend-chip.has-review-only i {
    font-size: var(--font-size-xs);
    color: var(--sky-blue);
}

/* Light-Theme: Episode-Cards bekommen Border + Shadow, damit sie sich
   vom Body-Hintergrund abheben (im Dark erzeugt --background-light bereits
   genug Tiefenunterschied). */
:root[data-theme="light"] .episode-card{
    border: var(--border-light);
    box-shadow: var(--shadow-sm);
}

:root[data-theme="light"] .season-review-section{
    background: var(--background-light);
    border: var(--border-light);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-sm);
    padding: var(--spacing-24);
}
