/* ===================================================
   css/movies.css
   Movie Search — distinct UI/UX from manga's horizontal
   list cards, per Architecture & UX Plan + explicit
   clarification: movies/TV each get their own look, not
   a reskinned manga page. Poster-grid layout (JustWatch/
   streaming-app convention) instead of manga's list rows.
=================================================== */

/* Distinct "movie mode" accent, layered on top of the shared
   :root vars from style.css — subtle teal instead of manga's
   purple/gold, so it visually reads as a different mode. */
:root{
    --movie-accent:#2dd4bf;
    --movie-accent-soft:rgba(45,212,191,.16);
}

/* ==========================
   MODE TOGGLE (Manga | Movies)
========================== */
.mode-toggle{
    display:flex;
    gap:4px;
    background:rgba(255,255,255,.04);
    border:1px solid var(--border);
    border-radius:999px;
    padding:4px;
}
.mode-toggle-link{
    padding:6px 16px;
    border-radius:999px;
    font-size:.85rem;
    font-weight:600;
    text-decoration:none;
    color:var(--text-muted);
    transition:var(--transition);
}
.mode-toggle-link.active{
    background:var(--purple-soft);
    color:var(--text-bright);
}
.mode-toggle-link:not(.active):hover{
    color:var(--text-main);
}
/* On movies.html, the active tab reads teal instead of purple. */
body.movie-mode .mode-toggle-link.active{
    background:var(--movie-accent-soft);
    color:var(--movie-accent);
}

/* ==========================
   FILTER PANEL
========================== */
.movie-filter-panel{
    display:flex;
    flex-direction:column;
    gap:16px;
    padding:16px;
    margin-bottom:20px;
    border-radius:var(--radius);
    background:var(--glass);
    border:1px solid var(--border);
}
.movie-filter-group{
    display:flex;
    flex-direction:column;
    gap:8px;
}
.movie-filter-label{
    font-size:.8rem;
    font-weight:600;
    color:var(--text-muted);
    text-transform:uppercase;
    letter-spacing:.04em;
}
.movie-filter-select{
    padding:10px 12px;
    border-radius:12px;
    background:var(--bg-dark-2);
    border:1px solid var(--border);
    color:var(--text-main);
    font-size:.9rem;
}
.filter-chip-row{
    display:flex;
    flex-wrap:wrap;
    gap:8px;
}
.filter-chip{
    padding:6px 14px;
    border-radius:999px;
    background:rgba(255,255,255,.04);
    border:1px solid var(--border);
    color:var(--text-main);
    font-size:.82rem;
    cursor:pointer;
    transition:var(--transition);
}
.filter-chip:hover{
    border-color:var(--movie-accent);
}
.filter-chip.active{
    background:var(--movie-accent-soft);
    border-color:var(--movie-accent);
    color:var(--movie-accent);
}
.movie-apply-filters-btn{
    align-self:flex-start;
    padding:10px 20px;
    border-radius:999px;
    background:var(--movie-accent);
    color:#062622;
    font-weight:700;
    border:none;
    cursor:pointer;
    transition:var(--transition);
}
.movie-apply-filters-btn:hover{
    filter:brightness(1.08);
}

/* ==========================
   RESULTS GRID (poster cards, not list rows)
========================== */
.movie-grid{
    display:grid;
    grid-template-columns:repeat(auto-fill, minmax(150px, 1fr));
    gap:18px;
    width:100%;
}

.movie-card{
    display:flex;
    flex-direction:column;
    border-radius:16px;
    overflow:hidden;
    background:rgba(255,255,255,.03);
    border:1px solid rgba(255,255,255,.06);
    box-shadow:0 12px 28px rgba(0,0,0,.28);
    cursor:pointer;
    transition:transform .3s ease, box-shadow .3s ease;
}
.movie-card:hover{
    transform:translateY(-4px);
    box-shadow:0 18px 40px rgba(0,0,0,.4);
}

.movie-poster-container{
    position:relative;
    width:100%;
    aspect-ratio:2 / 3; /* standard poster ratio, distinct from manga's cover crop */
    background:rgba(255,255,255,.03);
    overflow:hidden;
}
.movie-poster{
    width:100%;
    height:100%;
    object-fit:cover;
    transition:transform .5s ease;
}
.movie-card:hover .movie-poster{
    transform:scale(1.06);
}

.movie-rating-badge{
    position:absolute;
    top:8px;
    right:8px;
    padding:3px 8px;
    border-radius:999px;
    background:rgba(12,10,22,.75);
    backdrop-filter:blur(6px);
    color:var(--gold);
    font-size:.78rem;
    font-weight:700;
}

.movie-info{
    padding:10px 12px 12px;
    display:flex;
    flex-direction:column;
    gap:4px;
}
.movie-title{
    font-size:.92rem;
    font-weight:700;
    color:var(--text-title);
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
}
.movie-meta{
    display:flex;
    gap:8px;
    font-size:.78rem;
    color:var(--text-muted);
}
.movie-providers{
    display:flex;
    gap:6px;
    margin-top:2px;
}
.provider-logo{
    width:22px;
    height:22px;
    border-radius:6px;
    object-fit:cover;
}
.movie-providers-none{
    font-size:.72rem;
    color:var(--text-muted);
    font-style:italic;
}
.movie-overview{
    font-size:.78rem;
    color:var(--text-main);
    line-height:1.4;
    display:-webkit-box;
    -webkit-line-clamp:3;
    -webkit-box-orient:vertical;
    overflow:hidden;
    margin-top:2px;
}

.movie-skeleton-poster{
    aspect-ratio:2 / 3;
    width:100%;
}

/* ==========================
   PAGINATION / STATUS
========================== */
.movie-results-header{
    display:flex;
    justify-content:space-between;
    align-items:baseline;
    margin-bottom:14px;
}
.movie-pagination{
    display:flex;
    justify-content:center;
    margin-top:24px;
}

/* ==========================================
   MOVIE DETAIL VIEW (js/movies/movieDetail.js)
   Mirrors .detail-view's full-screen overlay pattern from detail.css,
   scoped under its own class since movies.html deliberately doesn't
   load detail.css (own layout, own everything).
========================================== */
.movie-detail-view{
    position:fixed;
    inset:0;
    z-index:900;
    background:#0c0a16;
    opacity:0;
    pointer-events:none;
    transform:translateY(12px);
    transition:opacity .25s ease, transform .25s ease;
    overflow:hidden;
}
.movie-detail-view.open{
    opacity:1;
    pointer-events:auto;
    transform:translateY(0);
}
body.detail-open{ overflow:hidden; }

.movie-detail-backdrop{
    position:absolute;
    inset:0;
    background-size:cover;
    background-position:center top;
    filter:blur(2px) brightness(.35);
    z-index:0;
}
.movie-detail-scroll{
    position:relative;
    z-index:1;
    height:100%;
    overflow-y:auto;
    padding-bottom:40px;
}
.movie-detail-back-btn{
    position:sticky;
    top:14px;
    left:14px;
    width:38px;
    height:38px;
    border-radius:50%;
    border:1px solid var(--border);
    background:rgba(12,10,22,.7);
    backdrop-filter:blur(10px);
    color:var(--text-bright);
    font-size:1.4rem;
    cursor:pointer;
    margin:14px;
    z-index:2;
}
.movie-detail-poster-wrap{
    display:flex;
    justify-content:center;
    margin-top:-10px;
}
.movie-detail-poster{
    width:150px;
    aspect-ratio:2/3;
    object-fit:cover;
    border-radius:14px;
    box-shadow:0 10px 30px rgba(0,0,0,.5);
    border:1px solid var(--border);
}
.movie-detail-body{
    max-width:640px;
    margin:18px auto 0;
    padding:0 20px;
    text-align:center;
}
.movie-detail-title{
    font-size:1.4rem;
    font-weight:700;
    color:var(--text-bright);
}
.movie-detail-meta{
    display:flex;
    justify-content:center;
    gap:12px;
    color:var(--text-muted);
    font-size:.85rem;
    margin-top:4px;
}
.movie-detail-source-tag{
    color:var(--movie-accent);
}
.movie-detail-genre-row{
    display:flex;
    flex-wrap:wrap;
    justify-content:center;
    gap:6px;
    margin-top:10px;
}
.movie-detail-genre-chip{
    padding:4px 12px;
    border-radius:999px;
    background:var(--movie-accent-soft);
    color:var(--movie-accent);
    font-size:.72rem;
    font-weight:600;
}
.movie-detail-actions{
    display:flex;
    gap:10px;
    justify-content:center;
    margin:18px 0;
}
.movie-detail-save-btn, .movie-detail-share-btn{
    padding:10px 20px;
    border-radius:999px;
    border:1px solid var(--border);
    background:rgba(255,255,255,.05);
    color:var(--text-main);
    font-weight:600;
    font-size:.82rem;
    cursor:pointer;
}
.movie-detail-save-btn.active{
    background:var(--movie-accent-soft);
    color:var(--movie-accent);
    border-color:var(--movie-accent);
}
.movie-detail-section-heading{
    text-align:left;
    margin-top:22px;
    font-size:.95rem;
    color:var(--text-bright);
}
.movie-detail-overview{
    text-align:left;
    color:var(--text-main);
    font-size:.85rem;
    line-height:1.5;
    margin-top:6px;
}
.movie-detail-providers{
    display:flex;
    gap:10px;
    margin-top:8px;
    justify-content:flex-start;
    flex-wrap:wrap;
}
.movie-detail-provider-logo{
    width:36px;
    height:36px;
    border-radius:9px;
    object-fit:cover;
}
.movie-detail-providers-none{
    text-align:left;
    color:var(--text-muted);
    font-size:.8rem;
    font-style:italic;
    margin-top:6px;
}
.movie-detail-provider-link{
    display:inline-block;
    margin-top:8px;
    color:var(--movie-accent);
    font-size:.8rem;
    text-decoration:none;
}

/* ==========================================
   MODE SWITCHER (replaces the 2-way .mode-toggle)
   Scales to N categories — Manga / Movies now, TV Shows / Books later —
   without redesigning the header again. Dropdown pattern instead of a
   pill toggle, same shared component on both pages via js/modeSwitcher.js.
========================================== */
.mode-switcher{
    position:relative;
}
.mode-switcher-btn{
    display:flex;
    align-items:center;
    gap:6px;
    padding:8px 14px;
    border-radius:999px;
    border:1px solid var(--border);
    background:rgba(255,255,255,.04);
    color:var(--text-bright);
    font-size:.85rem;
    font-weight:600;
    cursor:pointer;
}
.mode-switcher-btn:hover{ border-color:rgba(139,124,246,.4); }
.mode-switcher-chevron{
    font-size:.7rem;
    color:var(--text-muted);
    transition:transform .2s ease;
}
.mode-switcher.open .mode-switcher-chevron{ transform:rotate(180deg); }

.mode-switcher-menu{
    position:absolute;
    top:calc(100% + 8px);
    left:0;
    min-width:180px;
    background:rgba(18,15,28,.97);
    backdrop-filter:blur(18px);
    border:1px solid var(--border);
    border-radius:16px;
    padding:6px;
    box-shadow:var(--shadow);
    list-style:none;
    margin:0;
    z-index:600;
    display:none;
}
.mode-switcher.open .mode-switcher-menu{ display:block; }

.mode-switcher-item{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:8px;
    padding:9px 12px;
    border-radius:10px;
    font-size:.85rem;
    font-weight:600;
    color:var(--text-main);
    text-decoration:none;
    cursor:pointer;
}
.mode-switcher-item:hover:not(.disabled){
    background:var(--purple-soft);
    color:var(--text-bright);
}
.mode-switcher-item.active{
    color:var(--purple-bright);
}
body.movie-mode .mode-switcher-item.active{
    color:var(--movie-accent);
}
.mode-switcher-item.disabled{
    color:var(--text-muted);
    cursor:default;
    opacity:.55;
}
.mode-switcher-item.disabled em{
    font-style:normal;
    font-size:.68rem;
    background:rgba(255,255,255,.08);
    padding:2px 7px;
    border-radius:999px;
}
