/*====================================================
IMPACT AFRIQUE IPTV
STYLE.CSS - PARTIE 1
====================================================*/

*{
margin:0;
padding:0;
box-sizing:border-box;
}

html{
scroll-behavior:smooth;
}

body{

font-family:Arial,Helvetica,sans-serif;

background:#111118;

color:#fff;

overflow:hidden;

}

/*========================
LAYOUT
========================*/

.layout{

display:flex;

width:100%;

height:100vh;

}

/*========================
SIDEBAR
========================*/

.sidebar{

width:370px;

background:linear-gradient(180deg,#6a00b8,#181828);

display:flex;

flex-direction:column;

padding:20px;

overflow-y:auto;

}

.sidebar::-webkit-scrollbar{

width:6px;

}

.sidebar::-webkit-scrollbar-thumb{

background:#7b2cff;

border-radius:20px;

}

/*========================
LOGO
========================*/

.logo{

display:flex;

align-items:center;

gap:15px;

margin-bottom:25px;

}

.logo img{

width:65px;

height:65px;

border-radius:15px;

background:#fff;

padding:5px;

object-fit:contain;

}

.logo h2{

font-size:24px;

font-weight:700;

}

/*========================
SEARCH
========================*/

.search{

position:relative;

margin-bottom:20px;

}

.search i{

position:absolute;

left:15px;

top:16px;

color:#999;

font-size:16px;

}

.search input{

width:100%;

height:50px;

border:none;

outline:none;

padding-left:45px;

border-radius:14px;

background:#222235;

color:white;

font-size:15px;

}

/*========================
TABS
========================*/

.tabs{

display:flex;

gap:10px;

margin-bottom:20px;

}

.tab{

flex:1;

height:45px;

border:none;

border-radius:12px;

background:#2a2a3d;

color:white;

cursor:pointer;

font-size:15px;

font-weight:bold;

transition:.3s;

}

.tab.active{

background:white;

color:#6a00b8;

}

/*========================
CHANNEL LIST
========================*/

.channel-list{

display:flex;

flex-direction:column;

gap:15px;

}

.channel-item{

display:flex;

align-items:center;

gap:15px;

background:#202030;

padding:12px;

border-radius:18px;

cursor:pointer;

transition:.3s;

border:2px solid transparent;

}

.channel-item:hover{

transform:translateX(6px);

background:#2c2c45;

}

.channel-item.active{

background:linear-gradient(135deg,#7c3aed,#9333ea);

border:2px solid white;

box-shadow:0 0 20px rgba(124,58,237,.6);

}

/*========================
LOGO TV
========================*/

.logo-tv{

position:relative;

}

.logo-tv img{

width:65px;

height:65px;

border-radius:16px;

background:white;

padding:4px;

object-fit:contain;

}

.live-dot{

position:absolute;

bottom:-2px;

right:-2px;

width:14px;

height:14px;

background:red;

border:2px solid white;

border-radius:50%;

animation:pulse 1s infinite;

}

@keyframes pulse{

0%{

transform:scale(.8);

opacity:.5;

}

50%{

transform:scale(1.2);

opacity:1;

}

100%{

transform:scale(.8);

opacity:.5;

}

}

/*========================
INFOS
========================*/

.infos{

flex:1;

}

.infos h3{

font-size:18px;

margin-bottom:5px;

}

.infos p{

font-size:13px;

color:#d5d5d5;

}

.playing{

display:inline-block;

margin-top:8px;

background:red;

padding:5px 12px;

border-radius:20px;

font-size:11px;

font-weight:bold;

}

.fav{

font-size:24px;

color:#FFD700;

}
/*====================================================
STYLE.CSS - PARTIE 2
PLAYER
====================================================*/

.content{

flex:1;

display:flex;

flex-direction:column;

padding:25px;

overflow-y:auto;

background:#101018;

}

/*==========================
PLAYER
==========================*/

.player{

width:100%;

}

.video-box{

background:#000;

border-radius:20px;

overflow:hidden;

box-shadow:0 10px 30px rgba(0,0,0,.45);

}

.video-box iframe{

width:100%;

height:500px;

border:none;

display:block;

}

.video-box video{

width:100%;

height:500px;

display:block;

background:black;

}

.no-video{

height:500px;

display:flex;

justify-content:center;

align-items:center;

font-size:30px;

background:#111;

color:#999;

}

/*==========================
DETAILS
==========================*/

.channel-details{

margin-top:25px;

background:#1b1b2d;

border-radius:20px;

padding:25px;

box-shadow:0 8px 25px rgba(0,0,0,.35);

}

/*==========================
TOP
==========================*/

.top{

display:flex;

align-items:center;

gap:20px;

margin-bottom:25px;

}

.big-logo{

width:95px;

height:95px;

border-radius:20px;

background:white;

padding:5px;

object-fit:contain;

}

.top h1{

font-size:32px;

margin-bottom:10px;

}

.badge-live{

display:inline-block;

padding:7px 16px;

border-radius:30px;

background:#ff0000;

font-size:12px;

font-weight:bold;

margin-bottom:15px;

}

.top p{

color:#d2d2d2;

line-height:1.7;

}

/*==========================
GRID
==========================*/

.info-grid{

display:grid;

grid-template-columns:repeat(2,1fr);

gap:18px;

}

/*==========================
CARDS
==========================*/

.card{

display:flex;

align-items:flex-start;

gap:15px;

padding:18px;

border-radius:16px;

background:#25253b;

transition:.3s;

}

.card:hover{

transform:translateY(-4px);

background:#30304b;

}

.card i{

width:45px;

height:45px;

display:flex;

justify-content:center;

align-items:center;

border-radius:12px;

background:#7c3aed;

font-size:20px;

color:white;

}

.card strong{

display:block;

margin-bottom:6px;

font-size:15px;

}

.card p{

color:#d8d8d8;

font-size:14px;

line-height:1.5;

}

.card a{

color:#4db8ff;

text-decoration:none;

font-size:14px;

word-break:break-all;

}

.card a:hover{

text-decoration:underline;

}
/*====================================================
STYLE.CSS - PARTIE 3
RESPONSIVE + ANIMATIONS
====================================================*/

/* Scroll */

.content::-webkit-scrollbar,
.sidebar::-webkit-scrollbar{

width:8px;

}

.content::-webkit-scrollbar-thumb,
.sidebar::-webkit-scrollbar-thumb{

background:#7c3aed;

border-radius:30px;

}

/* Boutons */

button{

cursor:pointer;

font-family:inherit;

}

a{

transition:.3s;

}

/* Animations */

@keyframes fadeIn{

from{

opacity:0;

transform:translateY(20px);

}

to{

opacity:1;

transform:translateY(0);

}

}

.player{

animation:fadeIn .5s ease;

}

.channel-item{

animation:fadeIn .4s ease;

}

/* Responsive tablette */

@media(max-width:1200px){

.sidebar{

width:320px;

}

.video-box iframe,
.video-box video{

height:420px;

}

.big-logo{

width:80px;

height:80px;

}

.top h1{

font-size:28px;

}

}

/* Responsive téléphone : lecteur en haut, chaînes en bas */

@media(max-width:900px){

body{

overflow:auto;

}

.layout{

display:flex;

flex-direction:column;

width:100%;

height:auto;

min-height:100vh;

}

.content{

order:1;

width:100%;

padding:15px;

overflow:visible;

}

.sidebar{

order:2;

width:100%;

height:auto;

position:relative;

padding:15px;

overflow:visible;

}

.video-box{

width:100%;

}

.video-box iframe,
.video-box video{

width:100%;

height:auto;

min-height:230px;

aspect-ratio:16 / 9;

object-fit:contain;

}

.iframe-player-wrapper{

min-height:230px !important;

}

.iframe-player-wrapper iframe{

min-height:230px !important;

}

.top{

flex-direction:column;

align-items:center;

text-align:center;

}

.big-logo{

width:85px;

height:85px;

}

.top h1{

font-size:24px;

}

.info-grid{

grid-template-columns:1fr;

}

.card{

padding:15px;

}

}

/* Très petits écrans */

@media(max-width:500px){

.logo img{

width:55px;

height:55px;

}

.logo h2{

font-size:18px;

}

.channel-item{

padding:10px;

}

.logo-tv img{

width:55px;

height:55px;

}

.infos h3{

font-size:15px;

}

.search input{

height:45px;

font-size:14px;

}

.tab{

height:40px;

font-size:14px;

}

.video-box iframe,
.video-box video{

height:auto;

min-height:210px;

aspect-ratio:16 / 9;

}

.channel-details{

padding:18px;

}

.card{

gap:10px;

}

.card i{

width:40px;

height:40px;

font-size:18px;

}

}

/* Couleur sélection */

.channel-item.active .playing{

display:inline-block;

}

.channel-item.active .infos h3{

color:#fff;

}

/* Icône favori */

.fav:hover{

color:#FFD700;

transform:scale(1.2);

}

/* Ombres */

.player,
.channel-details,
.sidebar{

box-shadow:0 0 25px rgba(0,0,0,.25);

}

/* Fin du fichier */
