:root{
    --r7-bg:#050914;
    --r7-surface:#0d1524;
    --r7-surface-2:#121d30;
    --r7-surface-soft:rgba(15,25,42,.78);
    --r7-text:#f5f8ff;
    --r7-muted:#9fb0c8;
    --r7-primary:#159cff;
    --r7-primary-2:#6b4cff;
    --r7-success:#22c77a;
    --r7-danger:#ef4056;
    --r7-warning:#ffc83d;
    --r7-border:rgba(255,255,255,.12);
    --r7-radius-sm:8px;
    --r7-radius:14px;
    --r7-radius-lg:22px;
    --r7-focus-shadow:0 0 0 3px rgba(21,156,255,.45),0 0 30px rgba(21,156,255,.55);
    --r7-transition:transform .14s ease,border-color .14s ease,box-shadow .14s ease,background .14s ease;
}

body.r7-app{
    color:var(--r7-text);
    background-color:var(--r7-bg);
    letter-spacing:.01em;
}

body.r7-app *{ box-sizing:border-box; }

body.r7-app .menu,
body.r7-app .card,
body.r7-app .homeCard,
body.r7-app .movieBtn,
body.r7-app .seriesHeroAction,
body.r7-app .playerRecentChannelCard,
body.r7-app .exitDialogButton{
    transition:var(--r7-transition);
}

body.r7-app [data-r7-focused="true"]{
    will-change:transform;
}

body.r7-app .menu.active,
body.r7-app .card.focus,
body.r7-app .homeCard.focus,
body.r7-app .movieBtn.focus,
body.r7-app .seriesHeroAction.focus,
body.r7-app .playerRecentChannelCard.focus,
body.r7-app .exitDialogButton.focused{
    border-color:#fff !important;
    box-shadow:var(--r7-focus-shadow) !important;
}

body.r7-app .menu.active{
    background:linear-gradient(135deg,var(--r7-primary),var(--r7-primary-2)) !important;
}

body.r7-app .card.focus,
body.r7-app .homeCard.focus{
    transform:scale(1.035);
}

.r7-badge{
    display:inline-flex;
    min-height:25px;
    padding:0 10px;
    align-items:center;
    border-radius:999px;
    color:#dce8f8;
    background:rgba(255,255,255,.1);
    font-size:12px;
    font-weight:800;
}
.r7-badge-primary{ background:rgba(21,156,255,.2); color:#70c3ff; }
.r7-badge-success{ background:rgba(34,199,122,.18); color:#6ee7aa; }
.r7-badge-danger{ background:rgba(239,64,86,.18); color:#ff8998; }

.r7-action{
    display:inline-flex;
    min-height:42px;
    padding:0 20px;
    align-items:center;
    justify-content:center;
    border:2px solid var(--r7-border);
    border-radius:var(--r7-radius-sm);
    background:var(--r7-surface-soft);
    color:var(--r7-text);
    font-weight:800;
}
.r7-action.primary{ background:linear-gradient(135deg,var(--r7-primary),var(--r7-primary-2)); border-color:transparent; }
.r7-action.disabled{ opacity:.45; }

.r7-empty{
    width:100%;
    padding:70px 30px;
    text-align:center;
    border:1px solid var(--r7-border);
    border-radius:var(--r7-radius-lg);
    background:var(--r7-surface-soft);
}
.r7-empty-title{ font-size:26px; font-weight:900; }
.r7-empty-text{ margin-top:8px; color:var(--r7-muted); font-size:16px; }

body.r7-app #appToast.r7-toast{
    border:1px solid var(--r7-border);
    border-radius:12px;
    background:rgba(5,10,20,.95);
    box-shadow:0 16px 45px rgba(0,0,0,.5);
}

body.r7-app #main,
body.r7-app #content,
body.r7-app #movieScreen,
body.r7-app #playerScreen{
    isolation:isolate;
}

@media(max-width:1280px){
    body.r7-app .card.focus,
    body.r7-app .homeCard.focus{ transform:scale(1.02); }
    .r7-action{ min-height:36px; padding:0 15px; font-size:13px; }
}


/* =========================================================
   RIBEIRO TV PRO 7.0 — ETAPA 2 / TV AO VIVO
   ========================================================= */

#r7LiveSwitchStatus{
    position:fixed;
    z-index:14500;
    top:42px;
    left:54px;
    display:flex;
    width:515px;
    min-height:104px;
    box-sizing:border-box;
    align-items:center;
    padding:14px 18px;
    overflow:hidden;
    border:1px solid rgba(101,183,255,.38);
    border-radius:16px;
    color:#fff;
    background:
        linear-gradient(135deg,rgba(9,18,34,.97),rgba(17,37,65,.94));
    box-shadow:
        0 18px 45px rgba(0,0,0,.55),
        0 0 28px rgba(22,134,255,.2);
    opacity:1;
    transform:translateY(0);
    transition:opacity .18s ease,transform .18s ease;
}

#r7LiveSwitchStatus.hidden{
    display:none;
}

.r7LiveSwitchLogo{
    flex:0 0 92px;
    width:92px;
    height:70px;
    border-radius:11px;
    background-color:#fff;
    background-position:center;
    background-repeat:no-repeat;
    background-size:contain;
    box-shadow:0 7px 18px rgba(0,0,0,.32);
}

.r7LiveSwitchLogo.empty{
    line-height:70px;
    text-align:center;
    color:#60718b;
    background:#111d2e;
    font-size:21px;
    font-weight:900;
}

.r7LiveSwitchText{
    min-width:0;
    flex:1;
    margin-left:16px;
}

.r7LiveSwitchEyebrow{
    color:#54b2ff;
    font-size:12px;
    line-height:16px;
    font-weight:900;
    letter-spacing:1.4px;
}

.r7LiveSwitchName{
    overflow:hidden;
    margin-top:2px;
    color:#fff;
    font-size:24px;
    line-height:29px;
    font-weight:900;
    white-space:nowrap;
    text-overflow:ellipsis;
}

.r7LiveSwitchProgramme{
    overflow:hidden;
    margin-top:3px;
    color:#b6c5d9;
    font-size:14px;
    line-height:19px;
    white-space:nowrap;
    text-overflow:ellipsis;
}

.r7LiveSwitchSpinner{
    width:27px;
    height:27px;
    margin-left:13px;
    border:3px solid rgba(255,255,255,.22);
    border-top-color:#4faeff;
    border-radius:50%;
    animation:r7LiveSpin .85s linear infinite;
}

@keyframes r7LiveSpin{
    to{ transform:rotate(360deg); }
}

/* HUD ao vivo mais compacto e legível. */
body.r7-section-canais #playerTop{
    padding-top:42px;
}

body.r7-section-canais #playerArtwork{
    width:112px;
    height:82px;
    border-radius:13px;
    background-color:#fff;
    background-size:contain;
}

body.r7-section-canais #channelName{
    max-width:760px;
    overflow:hidden;
    font-size:31px;
    line-height:37px;
    white-space:nowrap;
    text-overflow:ellipsis;
}

body.r7-section-canais #playerEpgNow{
    max-width:890px;
    margin-top:8px;
}

body.r7-section-canais #playerEpgNext{
    max-width:890px;
    margin-top:5px;
}

/* Painéis da TV ao vivo usam o mesmo acabamento da versão 7. */
#playerSidePanel,
#playerEpgGuide,
#playerRecentChannels{
    border-color:rgba(99,180,255,.2);
    box-shadow:
        0 20px 55px rgba(0,0,0,.58),
        0 0 35px rgba(23,128,255,.12);
}

.playerSideChannel.focus,
.playerRecentChannelCard.focus,
.epgGuideItem.focus{
    border-color:#fff;
    box-shadow:
        0 0 0 2px rgba(48,159,255,.43),
        0 0 28px rgba(42,148,255,.58);
}

@media(max-width:1280px){
    #r7LiveSwitchStatus{
        top:26px;
        left:32px;
        width:410px;
        min-height:82px;
        padding:10px 13px;
        border-radius:12px;
    }

    .r7LiveSwitchLogo{
        flex-basis:70px;
        width:70px;
        height:54px;
    }

    .r7LiveSwitchLogo.empty{
        line-height:54px;
        font-size:17px;
    }

    .r7LiveSwitchName{
        font-size:19px;
        line-height:23px;
    }

    .r7LiveSwitchProgramme{
        font-size:12px;
        line-height:16px;
    }

    body.r7-section-canais #playerArtwork{
        width:85px;
        height:63px;
    }

    body.r7-section-canais #channelName{
        font-size:25px;
        line-height:30px;
    }
}


/* =========================================================
   RIBEIRO TV PRO 7.0 — ETAPA 3 / FILMES E SÉRIES
   ========================================================= */

#r7MovieMetadata{
    display:flex;
    flex-wrap:wrap;
    gap:8px;
    min-height:31px;
    margin:7px 0 10px;
}

.r7VodBadge{
    display:inline-flex;
    min-height:28px;
    box-sizing:border-box;
    align-items:center;
    padding:0 11px;
    border:1px solid rgba(255,255,255,.2);
    border-radius:7px;
    color:#d8e3f2;
    background:rgba(8,16,29,.68);
    font-size:13px;
    font-weight:800;
}

.r7VodBadge.rating{
    color:#ffe684;
    border-color:rgba(255,213,80,.35);
    background:rgba(84,61,5,.42);
}

.r7VodBadge.quality{
    color:#d9f3ff;
    border-color:rgba(66,174,255,.4);
    background:rgba(12,93,154,.42);
}

#r7MovieNavigationHint,
#r7SeriesNavigationHint{
    display:flex;
    flex-wrap:wrap;
    gap:15px;
    margin-top:11px;
    color:#91a6c0;
    font-size:12px;
    font-weight:750;
}

body.r7-vod-movie-open #movieInfo{
    max-width:1040px;
}

body.r7-vod-movie-open #movieSynopsis{
    max-width:940px;
    max-height:130px;
    overflow:hidden;
    line-height:1.5;
}

body.r7-vod-movie-open #movieButtons{
    display:flex;
    flex-wrap:wrap;
    gap:10px;
}

body.r7-vod-movie-open .movieBtn{
    min-width:150px;
    justify-content:center;
}

body.r7-vod-movie-open #movieRelatedSection{
    border-top:1px solid rgba(255,255,255,.1);
    padding-top:13px;
}

/* Série: ações com o mesmo padrão da tela de filmes. */
body.r7-vod-series-active #seriesHeroActions{
    margin-top:14px;
}

body.r7-vod-series-active .seriesHeroAction{
    min-width:138px;
    min-height:44px;
    border-radius:9px;
}

body.r7-vod-series-active #seriesHeroPlot{
    max-width:920px;
    max-height:105px;
    overflow:hidden;
}

/* Episódios com número, progresso e estado assistido. */
.card-episode .episodeBanner,
.card-episode .cardBanner{
    position:relative;
    overflow:hidden;
}

.r7EpisodeOverlay{
    position:absolute;
    inset:0;
    pointer-events:none;
    background:
        linear-gradient(
            to top,
            rgba(3,7,13,.9) 0%,
            rgba(3,7,13,.15) 48%,
            rgba(3,7,13,0) 70%
        );
}

.r7EpisodeNumber{
    position:absolute;
    top:9px;
    left:9px;
    min-width:33px;
    padding:5px 7px;
    border-radius:6px;
    color:#fff;
    background:rgba(3,8,17,.82);
    font-size:11px;
    font-weight:900;
    text-align:center;
}

.r7EpisodeWatched,
.r7EpisodeContinue{
    position:absolute;
    right:9px;
    bottom:12px;
    padding:5px 8px;
    border-radius:6px;
    color:#fff;
    background:rgba(18,133,80,.92);
    font-size:10px;
    font-weight:900;
}

.r7EpisodeContinue{
    background:rgba(25,125,230,.94);
}

.r7EpisodeProgress{
    position:absolute;
    left:9px;
    right:9px;
    bottom:5px;
    height:4px;
    overflow:hidden;
    border-radius:4px;
    background:rgba(255,255,255,.28);
}

.r7EpisodeProgress div{
    height:100%;
    border-radius:4px;
    background:#27a4ff;
}

/* Favoritos unificados recebem identificação clara. */
.card{
    position:relative;
}

.r7FavoriteType{
    position:absolute;
    top:9px;
    left:9px;
    z-index:5;
    padding:5px 8px;
    border:1px solid rgba(255,255,255,.18);
    border-radius:6px;
    color:#fff;
    background:rgba(4,11,22,.84);
    font-size:9px;
    font-weight:900;
    letter-spacing:.8px;
}

@media(max-width:1280px){

    .r7VodBadge{
        min-height:23px;
        padding:0 8px;
        font-size:11px;
    }

    #r7MovieNavigationHint,
    #r7SeriesNavigationHint{
        gap:10px;
        margin-top:7px;
        font-size:10px;
    }

    body.r7-vod-movie-open #movieSynopsis{
        max-height:86px;
    }

    body.r7-vod-series-active .seriesHeroAction{
        min-width:105px;
        min-height:34px;
    }

    body.r7-vod-series-active #seriesHeroPlot{
        max-height:70px;
    }
}


/* =========================================================
   RIBEIRO TV PRO 7.0 — VERSÃO FINAL
   ESTABILIDADE, DESEMPENHO E ACABAMENTO
   ========================================================= */

.r7-system-status{
    position:fixed;
    z-index:20000;
    top:24px;
    right:30px;
    max-width:470px;
    box-sizing:border-box;
    padding:12px 18px;
    border:1px solid rgba(93,181,255,.35);
    border-radius:10px;
    color:#fff;
    background:rgba(8,18,32,.96);
    box-shadow:0 15px 38px rgba(0,0,0,.46);
    font-size:14px;
    line-height:20px;
    font-weight:800;
}

.r7-system-status.hidden{
    display:none;
}

.r7-system-status.success{
    border-color:rgba(49,214,139,.45);
    background:rgba(10,66,47,.96);
}

.r7-system-status.error{
    border-color:rgba(255,91,91,.5);
    background:rgba(90,23,30,.97);
}

.r7-system-status.offline{
    border-color:rgba(255,191,72,.5);
    background:rgba(78,54,13,.97);
}

.r7-image-error{
    opacity:.2;
    background:#121d2c;
}

body:not(.r7-ready) #app,
body:not(.r7-ready) #playerScreen{
    opacity:0;
}

body.r7-ready #app,
body.r7-ready #playerScreen{
    opacity:1;
    transition:opacity .18s ease;
}

.card,
.menuItem,
.movieBtn,
.seriesHeroAction,
.playerSideChannel,
.playerRecentChannelCard,
.epgGuideItem{
    backface-visibility:hidden;
    transform:translateZ(0);
}

body.r7-app-paused *,
body.r7-app-paused *:before,
body.r7-app-paused *:after{
    animation-play-state:paused !important;
    transition:none !important;
}

body.r7-stable .card,
body.r7-stable .movieBtn,
body.r7-stable .seriesHeroAction,
body.r7-stable .playerSideChannel,
body.r7-stable .playerRecentChannelCard{
    transition:
        transform .12s ease,
        border-color .12s ease,
        box-shadow .12s ease,
        background-color .12s ease;
}

@media(max-width:1280px){
    .r7-system-status{
        top:16px;
        right:20px;
        max-width:380px;
        padding:9px 13px;
        font-size:12px;
        line-height:16px;
    }
}
