.stream-wrapper { max-width:1400px; margin:0 auto; padding:0 20px 40px; }

/* HEADER */
.stream-header {
    display:flex; justify-content:space-between; align-items:flex-start;
    flex-wrap:wrap; gap:16px; padding:20px 0 16px;
    border-bottom:1px solid rgba(255,255,255,0.1); margin-bottom:24px;
}
.stream-main-title {
    font-size:1.6rem; font-weight:900; color:#ffe066;
    display:flex; align-items:center; gap:12px; flex-wrap:wrap;
}
.stream-free-badge {
    background:linear-gradient(135deg,#27ae60,#1e8449);
    color:#fff; font-size:0.7rem; padding:4px 12px;
    border-radius:20px; font-weight:800; letter-spacing:1px;
}
.stream-subtitle { color:#aaa; font-size:0.85rem; margin-top:4px; }
.stream-legal-note {
    background:rgba(39,174,96,0.1); border:1px solid rgba(39,174,96,0.3);
    color:#2ecc71; padding:10px 16px; border-radius:10px;
    font-size:0.82rem; text-align:center;
}

/* BLOCS */
.stream-section-block { margin-bottom:32px; }
.stream-block-title {
    font-size:1.1rem; font-weight:800; color:#ffe066;
    margin-bottom:16px; padding-bottom:8px;
    border-bottom:2px solid rgba(255,224,102,0.2);
}

/* GRILLE CHAÎNES */
.stream-grid {
    display:grid; grid-template-columns:repeat(auto-fill,minmax(320px,1fr)); gap:16px;
}

/* CARTE CHAÎNE */
.stream-card {
    background:rgba(255,255,255,0.05); border:1px solid rgba(255,255,255,0.1);
    border-radius:14px; padding:18px; display:flex; flex-direction:column; gap:12px;
    transition:transform .2s, box-shadow .2s;
}
.stream-card:hover { transform:translateY(-4px); box-shadow:0 8px 28px rgba(0,0,0,0.3); }
.stream-card-official { border-color:rgba(255,224,102,0.3); }

.stream-card-top { display:flex; gap:14px; align-items:flex-start; }
.stream-logo-wrap {
    width:56px; height:56px; border-radius:12px; border:2px solid;
    display:flex; align-items:center; justify-content:center; flex-shrink:0;
}
.stream-logo { font-size:1.6rem; }
.stream-name-row { display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin-bottom:4px; }
.stream-name { font-size:1.05rem; font-weight:800; color:#f0f0f0; }
.stream-badge {
    font-size:0.65rem; font-weight:800; padding:2px 8px;
    border-radius:10px; color:#fff; letter-spacing:.5px;
}
.stream-country { color:#aaa; font-size:0.78rem; margin-bottom:4px; }
.stream-desc { color:#bbb; font-size:0.82rem; line-height:1.4; }

.stream-meta { display:flex; flex-wrap:wrap; gap:8px; }
.stream-meta-item {
    background:rgba(255,255,255,0.08); color:#ccc;
    font-size:0.75rem; padding:4px 10px; border-radius:12px;
    display:flex; align-items:center; gap:5px;
}
.stream-meta-item.ok { background:rgba(39,174,96,0.15); color:#2ecc71; }
.stream-meta-item.warn { background:rgba(230,126,34,0.15); color:#e67e22; }

.stream-note {
    background:rgba(255,255,255,0.05); color:#999;
    font-size:0.78rem; padding:8px 12px; border-radius:8px;
    border-left:3px solid rgba(255,255,255,0.2);
}

.stream-actions { display:flex; gap:8px; flex-wrap:wrap; margin-top:4px; }
.stream-btn {
    padding:9px 18px; border-radius:9px; font-size:0.82rem;
    font-weight:700; cursor:pointer; text-decoration:none;
    display:inline-flex; align-items:center; gap:7px;
    transition:transform .15s, box-shadow .15s; border:none;
}
.stream-btn:hover { transform:translateY(-2px); box-shadow:0 4px 16px rgba(0,0,0,0.3); }
.stream-btn-primary { color:#fff; }
.stream-btn-embed {
    background:rgba(255,255,255,0.1); color:#fff;
    border:1px solid rgba(255,255,255,0.2) !important;
}

/* MATCHS HAÏTI */
.haiti-matches-grid {
    display:grid; grid-template-columns:repeat(auto-fill,minmax(340px,1fr)); gap:16px;
}
.haiti-match-card {
    background:rgba(215,38,96,0.08); border:1px solid rgba(215,38,96,0.25);
    border-radius:14px; padding:18px; display:flex; flex-direction:column; gap:10px;
    transition:box-shadow .2s;
}
.haiti-match-card.match-today {
    border-color:#d72660; box-shadow:0 0 20px rgba(215,38,96,0.3);
    animation:matchGlow 2s infinite;
}
@keyframes matchGlow {
    0%,100% { box-shadow:0 0 20px rgba(215,38,96,0.3); }
    50%      { box-shadow:0 0 35px rgba(215,38,96,0.6); }
}

.match-group-label {
    font-size:0.72rem; font-weight:700; color:#d72660;
    text-transform:uppercase; letter-spacing:1px;
}
.match-teams {
    display:flex; align-items:center; justify-content:center;
    gap:16px; font-size:1.1rem; font-weight:800; color:#f0f0f0;
}
.match-vs {
    background:rgba(255,224,102,0.2); color:#ffe066;
    font-size:0.75rem; padding:4px 10px; border-radius:8px; font-weight:900;
}
.match-details-row {
    display:flex; flex-direction:column; gap:4px;
    color:#aaa; font-size:0.8rem;
}
.match-details-row span { display:flex; align-items:center; gap:7px; }

.match-status {
    display:inline-block; padding:4px 12px; border-radius:12px;
    font-size:0.75rem; font-weight:700; width:fit-content;
}
.match-status.live { background:rgba(231,76,60,0.2); color:#e74c3c; animation:livePulse 1.2s infinite; }
.match-status.upcoming { background:rgba(39,174,96,0.2); color:#2ecc71; }
.match-status.past { background:rgba(100,100,100,0.2); color:#888; }
@keyframes livePulse { 0%,100%{opacity:1} 50%{opacity:.5} }

.match-channels-label { font-size:0.8rem; color:#aaa; font-weight:600; }
.match-channels-btns { display:flex; flex-wrap:wrap; gap:8px; }
.match-channel-btn {
    border:1px solid; padding:5px 12px; border-radius:8px;
    font-size:0.78rem; font-weight:700; text-decoration:none;
    transition:all .2s; background:transparent;
}
.match-channel-btn:hover { background:rgba(255,255,255,0.1); }

/* FIFA+ BANNER */
.stream-fifaplus-banner {
    background:linear-gradient(135deg,rgba(26,107,204,0.2),rgba(26,107,204,0.05));
    border:2px solid rgba(26,107,204,0.4); border-radius:18px;
    padding:28px; margin-top:12px;
}
.fifaplus-content { display:flex; gap:24px; flex-wrap:wrap; align-items:flex-start; }
.fifaplus-logo {
    font-size:2rem; font-weight:900; color:#1a6bcc;
    background:rgba(26,107,204,0.15); padding:16px 24px;
    border-radius:14px; white-space:nowrap;
}
.fifaplus-text { flex:1; min-width:200px; }
.fifaplus-text h3 { color:#ffe066; font-size:1.2rem; margin-bottom:8px; }
.fifaplus-text p  { color:#bbb; font-size:0.88rem; margin-bottom:12px; line-height:1.6; }
.fifaplus-features { list-style:none; display:flex; flex-wrap:wrap; gap:8px; }
.fifaplus-features li {
    color:#2ecc71; font-size:0.8rem;
    display:flex; align-items:center; gap:6px;
}
.fifaplus-cta { display:flex; flex-direction:column; gap:8px; justify-content:center; }
.fifaplus-btn {
    background:linear-gradient(135deg,#1a6bcc,#0d4d99);
    color:#fff; padding:12px 22px; border-radius:10px;
    text-decoration:none; font-weight:800; font-size:0.9rem;
    display:flex; align-items:center; gap:8px;
    transition:transform .2s, box-shadow .2s;
}
.fifaplus-btn:hover { transform:translateY(-2px); box-shadow:0 6px 20px rgba(26,107,204,0.5); }
.fifaplus-store-btn {
    background:rgba(255,255,255,0.08); color:#ddd;
    border:1px solid rgba(255,255,255,0.2); padding:9px 16px;
    border-radius:9px; text-decoration:none; font-size:0.82rem;
    font-weight:600; display:flex; align-items:center; gap:7px;
    transition:all .2s;
}
.fifaplus-store-btn:hover { background:rgba(255,255,255,0.15); color:#fff; }

/* MODAL */
.stream-modal-overlay {
    position:fixed; inset:0; background:rgba(0,0,0,0.85);
    z-index:9999; display:flex; align-items:center; justify-content:center;
    padding:20px;
}
.stream-modal {
    background:#1a1a2e; border:1px solid rgba(255,255,255,0.15);
    border-radius:16px; width:100%; max-width:900px;
    overflow:hidden;
}
.stream-modal-header {
    display:flex; justify-content:space-between; align-items:center;
    padding:16px 20px; border-bottom:1px solid rgba(255,255,255,0.1);
    background:rgba(255,255,255,0.05);
}
.stream-modal-header h3 { color:#ffe066; font-size:1rem; font-weight:800; }
.stream-modal-close {
    background:rgba(231,76,60,0.2); border:1px solid #e74c3c;
    color:#e74c3c; width:32px; height:32px; border-radius:8px;
    cursor:pointer; font-size:1rem; font-weight:700;
    display:flex; align-items:center; justify-content:center;
}
.stream-iframe {
    width:100%; height:480px; display:block;
}
.stream-modal-note {
    padding:10px 16px; color:#888; font-size:0.78rem;
    background:rgba(0,0,0,0.3);
}
.stream-modal-note a { color:#ffe066; }

/* RADIO HAÏTIENNE */
.radio-grid {
    display:grid; grid-template-columns:repeat(auto-fill,minmax(300px,1fr)); gap:16px;
}
.radio-card {
    background:rgba(255,255,255,0.05); border:1px solid rgba(255,255,255,0.1);
    border-radius:14px; padding:18px; display:flex; flex-direction:column; gap:14px;
    transition:transform .2s, box-shadow .2s, border-color .3s;
}
.radio-card:hover { transform:translateY(-4px); box-shadow:0 8px 28px rgba(0,0,0,0.3); }
.radio-card-active { border-color:rgba(46,204,113,0.5) !important; box-shadow:0 0 20px rgba(46,204,113,0.15) !important; }

.radio-card-top { display:flex; gap:14px; align-items:flex-start; }
.radio-logo-wrap {
    width:56px; height:56px; border-radius:12px; border:2px solid;
    display:flex; align-items:center; justify-content:center; flex-shrink:0;
}
.radio-logo { font-size:1.7rem; }
.radio-name-row { display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin-bottom:4px; }
.radio-name { font-size:1.05rem; font-weight:800; color:#f0f0f0; }
.radio-freq-badge {
    font-size:0.65rem; font-weight:800; padding:2px 8px;
    border-radius:10px; color:#fff; letter-spacing:.5px;
}
.radio-desc { color:#bbb; font-size:0.82rem; line-height:1.4; }

.radio-controls { display:flex; align-items:center; flex-wrap:wrap; gap:10px; }
.radio-play-btn {
    display:inline-flex; align-items:center; gap:8px;
    padding:9px 18px; border-radius:9px; border:none; cursor:pointer;
    font-size:0.85rem; font-weight:700; color:#fff;
    background:var(--radio-color, #444);
    transition:transform .15s, box-shadow .15s, background .2s;
}
.radio-play-btn:hover { transform:translateY(-2px); box-shadow:0 4px 16px rgba(0,0,0,0.35); }
.radio-play-btn.radio-btn-playing { background:linear-gradient(135deg,#0d2416,#27ae60) !important; }

.radio-live-indicator {
    display:flex; align-items:center; gap:7px;
    color:#2ecc71; font-size:0.75rem; font-weight:800; letter-spacing:1px;
}
.radio-live-dot {
    width:8px; height:8px; border-radius:50%; background:#2ecc71;
    animation:livePulse 1.2s infinite;
}
.radio-site-btn {
    margin-left:auto; display:inline-flex; align-items:center; gap:6px;
    color:#aaa; font-size:0.78rem; text-decoration:none;
    transition:color .2s;
}
.radio-site-btn:hover { color:#ffe066; }

/* RESPONSIVE */
@media (max-width:768px) {
    .stream-grid, .haiti-matches-grid, .radio-grid { grid-template-columns:1fr; }
    .fifaplus-content { flex-direction:column; }
    .stream-header { flex-direction:column; }
    .radio-site-btn { margin-left:0; }
}

/* HAITI ALERT BANNER */
.stream-haiti-alert {
    display:flex; align-items:center; gap:16px;
    background:linear-gradient(135deg,#0d2416 0%,#1a4a2e 100%);
    border:2px solid #27ae60; border-radius:14px;
    padding:18px 22px; margin-bottom:28px;
}
.stream-haiti-alert-icon { font-size:2rem; flex-shrink:0; }
.stream-haiti-alert-text { flex:1; color:#e0f5e9; font-size:0.92rem; line-height:1.5; }
.stream-haiti-alert-text strong { color:#ffe066; }
.stream-haiti-alert-btn {
    flex-shrink:0; display:inline-flex; align-items:center; gap:8px;
    background:#27ae60; color:#fff; text-decoration:none;
    padding:10px 20px; border-radius:10px; font-weight:700; font-size:0.9rem;
    transition:background .2s, transform .15s;
    white-space:nowrap;
}
.stream-haiti-alert-btn:hover { background:#2ecc71; transform:translateY(-2px); }

/* HAITI / DIASPORA SECTION TITLES */
.stream-block-title-haiti { color:#27ae60; }
.stream-block-title-diaspora { color:#95a5a6; }
.stream-diaspora-note {
    color:#aaa; font-size:0.85rem; margin:-12px 0 16px;
    padding:10px 14px; background:#111; border-radius:8px; border-left:3px solid #555;
}

/* HAITI BADGE ON CARDS */
.stream-haiti-badge {
    display:inline-flex; align-items:center; gap:4px;
    font-size:0.72rem; font-weight:700; padding:2px 8px; border-radius:6px;
    letter-spacing:0.5px;
}
.stream-haiti-ok { background:#0d2416; color:#27ae60; border:1px solid #27ae60; }
.stream-haiti-no { background:#1a0a0a; color:#c0392b; border:1px solid #c0392b; }

/* CARD GEO STATUS */
.stream-card-haiti-no { opacity:0.75; }
.stream-card-haiti-no:hover { opacity:1; }

.stream-price-badge {
    display:inline-flex; align-items:center; gap:4px;
    font-size:0.68rem; font-weight:800; padding:2px 7px; border-radius:6px;
    letter-spacing:0.5px; text-transform:uppercase;
}
.stream-free  { background:#0d2416; color:#27ae60; border:1px solid #27ae60; }
.stream-paid  { background:#2a1a00; color:#FFB703; border:1px solid #FFB703; }

@media (max-width:600px) {
    .stream-haiti-alert { flex-direction:column; text-align:center; }
    .stream-haiti-alert-btn { width:100%; justify-content:center; }
}
