/* Tadaksahak TV · Radio 3.0 — charte du site TV, chargée après app.css (views/tv/layout.eta).
   Bleu nuit, sable, or sahélien, terre cuite ; rouge réservé au direct et aux alertes urgentes.
   Contrastes calculés (WCAG) : texte ≥ 11,5:1, texte secondaire ≥ 6,1:1, or et terre cuite ≥ 5,1:1
   sur les fonds où ils sont employés ; blanc sur le rouge du direct 6,1:1. */

body.tv-site {
  --bg: #0a1428; --bg-2: #0d1931; --surface: #12213f; --surface-2: #1a2c50;
  --text: #f1ead9; --muted: #b8b6ad; --gold: #d9b45b; --gold-strong: #ecd08a;
  --accent: #e9875c; --on-accent: #0a1428; --red: #ff5a4f; --green: #5fbf8f; --border: #26385c;
  --live: #c3141b; --on-live: #ffffff; --rule: #d9b45b;
  --shadow-1: 0 1px 2px rgb(0 0 0 / .35), 0 6px 18px rgb(0 0 0 / .25);
  --radius: 10px; --radius-lg: 14px; --wrap: 78rem;
  color-scheme: dark;
}
@media (prefers-color-scheme: light) {
  :root:not([data-theme="dark"]) body.tv-site { --bg: #f6f1e6; --bg-2: #ede4d1; --surface: #fffdf8; --surface-2: #efe6d4; --text: #0d1b33; --muted: #4a5468; --gold: #765a10; --gold-strong: #5c4508; --accent: #a3401a; --on-accent: #ffffff; --red: #c3141b; --green: #1f6a46; --border: #d7cab0; --rule: #0d1b33; --shadow-1: 0 1px 2px rgb(13 27 51 / .08), 0 6px 18px rgb(13 27 51 / .08); color-scheme: light; }
}
:root[data-theme="light"] body.tv-site { --bg: #f6f1e6; --bg-2: #ede4d1; --surface: #fffdf8; --surface-2: #efe6d4; --text: #0d1b33; --muted: #4a5468; --gold: #765a10; --gold-strong: #5c4508; --accent: #a3401a; --on-accent: #ffffff; --red: #c3141b; --green: #1f6a46; --border: #d7cab0; --rule: #0d1b33; --shadow-1: 0 1px 2px rgb(13 27 51 / .08), 0 6px 18px rgb(13 27 51 / .08); color-scheme: light; }
:root[data-contrast="more"] body.tv-site { --bg: #000000; --bg-2: #000000; --surface: #050a14; --surface-2: #0d1830; --text: #ffffff; --muted: #e8e6df; --gold: #ffd978; --accent: #ffb08a; --border: #c9d3e6; --rule: #ffd978; }
:root[data-theme="light"][data-contrast="more"] body.tv-site { --bg: #ffffff; --bg-2: #ffffff; --surface: #ffffff; --surface-2: #f2ede2; --text: #000000; --muted: #1d2433; --gold: #4d3a06; --accent: #6e2a0f; --border: #1d2433; --rule: #000000; }

body.tv-site { background: var(--bg); }
.tv-site a { color: inherit; }
.tv-site :focus-visible { outline: 3px solid var(--gold); outline-offset: 2px; }

/* ---- Barre supérieure : date, heure de Niamey, langues ---- */
.tv-topbar { background: var(--bg-2); border-block-end: 1px solid var(--border); font-size: .85rem; color: var(--muted); }
.tv-topbar .wrap { display: flex; align-items: center; gap: 1rem; min-block-size: 2.25rem; flex-wrap: wrap; }
.tv-topbar time { font-variant-numeric: tabular-nums; }
.tv-topbar .tv-clock { color: var(--text); font-weight: 600; }
.tv-topbar .langs { margin-inline-start: auto; display: flex; gap: .75rem; }
.tv-topbar .langs a { text-decoration: none; color: var(--muted); }
.tv-topbar .langs a[aria-current] { color: var(--gold); font-weight: 700; }

/* ---- En-tête : marque, recherche, navigation ---- */
.tv-header { background: var(--bg); border-block-end: 3px solid var(--rule); }
.tv-header .header-row { display: flex; align-items: center; gap: 1rem; flex-wrap: wrap; padding-block: .75rem; }
.tv-brand { display: flex; align-items: center; gap: .6rem; text-decoration: none; color: var(--text); }
.tv-brand img { inline-size: 2.75rem; block-size: 2.75rem; border-radius: .5rem; flex: none; }
.tv-brand-name { font: 700 1.2rem/1.05 var(--font-display); letter-spacing: .01em; white-space: nowrap; }
.tv-brand-name strong { color: var(--gold); }
.tv-search { margin-inline-start: auto; display: flex; gap: .4rem; }
.tv-search input { inline-size: min(16rem, 46vw); padding: .45rem .7rem; border: 1px solid var(--border); border-radius: 6px; background: var(--surface); color: var(--text); font: inherit; }
.tv-search button { padding: .45rem .8rem; border: 0; border-radius: 6px; background: var(--gold); color: var(--bg); font-weight: 700; cursor: pointer; }
.tv-nav { display: flex; gap: .2rem; overflow-x: auto; scrollbar-width: thin; border-block-start: 1px solid var(--border); }
.tv-nav a { display: inline-flex; align-items: center; gap: .35rem; padding: .7rem .8rem; white-space: nowrap; text-decoration: none; font-weight: 600; border-block-end: 3px solid transparent; margin-block-end: -3px; }
.tv-nav a[aria-current] { border-block-end-color: var(--gold); color: var(--gold); }
.tv-nav .picto { inline-size: 1.1em; block-size: 1.1em; }
.tv-nav .nav-live { color: var(--text); }

/* ---- Direct et alertes : seul usage du rouge ---- */
.live-badge { display: inline-flex; align-items: center; gap: .4rem; padding: .15rem .55rem; border-radius: 4px; background: var(--live); color: var(--on-live); font: 800 .78rem/1.4 var(--font); letter-spacing: .06em; text-transform: uppercase; }
.live-badge::before { content: ""; inline-size: .5rem; block-size: .5rem; border-radius: 50%; background: currentColor; animation: tv-pulse 1.6s ease-in-out infinite; }
@keyframes tv-pulse { 50% { opacity: .35; } }
@media (prefers-reduced-motion: reduce) { .live-badge::before { animation: none; } }
.tv-breaking { background: var(--live); color: var(--on-live); }
.tv-breaking .wrap { display: flex; gap: .75rem; align-items: baseline; padding-block: .55rem; }
.tv-breaking strong { text-transform: uppercase; letter-spacing: .06em; font-size: .8rem; white-space: nowrap; }
.tv-breaking a { color: inherit; font-weight: 600; }

/* ---- Titres de rubrique (style bandeau) ---- */
.tv-section-head { display: flex; align-items: baseline; gap: .75rem; border-block-start: 3px solid var(--rule); padding-block-start: .5rem; margin-block: 2rem .9rem; }
.tv-section-head h2 { margin: 0; font: 800 1.35rem/1.2 var(--font-display); }
.tv-section-head a { margin-inline-start: auto; font-size: .9rem; color: var(--gold); text-decoration: none; }

/* ---- Pied de page ---- */
.tv-footer { margin-block-start: 3rem; background: var(--bg-2); border-block-start: 3px solid var(--rule); padding-block: 2rem; }
.tv-footer .tv-footer-grid { display: grid; gap: 1.5rem; grid-template-columns: repeat(auto-fit, minmax(13rem, 1fr)); }
.tv-footer h2 { font-size: .85rem; text-transform: uppercase; letter-spacing: .08em; color: var(--muted); margin: 0 0 .5rem; }
.tv-footer ul { list-style: none; padding: 0; margin: 0; display: grid; gap: .35rem; }
.tv-footer a { text-decoration: none; }
.tv-footer a:hover { text-decoration: underline; }
.tv-footer .social-links { display: flex; flex-wrap: wrap; gap: .75rem; list-style: none; padding: 0; margin: 0 0 1rem; }
.tv-footer .copyright { color: var(--muted); font-size: .85rem; margin-block-start: 1.5rem; }

.admin-tv-logo { border-radius: .5rem; }
@media (max-width: 40rem) {
  .tv-search { order: 3; inline-size: 100%; }
  .tv-search input { flex: 1; inline-size: auto; }
  .tv-brand-name { font-size: 1.05rem; }
}

/* ---- Portail : cartes d'articles ---- */
.story { display: grid; gap: .55rem; align-content: start; }
.story-media { display: block; position: relative; overflow: hidden; border-radius: 6px; background: var(--surface-2); aspect-ratio: 16 / 9; }
.story-media img { inline-size: 100%; block-size: 100%; object-fit: cover; display: block; transition: transform .3s ease; }
.story:hover .story-media img { transform: scale(1.02); }
@media (prefers-reduced-motion: reduce) { .story:hover .story-media img { transform: none; } }
.story-kicker { margin: 0; font-size: .78rem; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: var(--accent); }
.story-kicker a { color: inherit; text-decoration: none; }
.story-title { margin: 0; font: 700 1.08rem/1.25 var(--font-display); }
.story-title a { text-decoration: none; }
.story-title a:hover { text-decoration: underline; text-decoration-thickness: 2px; }
.story-standfirst { margin: 0; color: var(--muted); }
.story-meta { margin: 0; font-size: .82rem; color: var(--muted); font-variant-numeric: tabular-nums; }
.story-mt { color: var(--gold); }
.story-play { position: absolute; inset-inline-start: .6rem; inset-block-end: .6rem; inline-size: 2.4rem; block-size: 2.4rem; display: grid; place-items: center; border-radius: 50%; background: rgb(0 0 0 / .65); color: #fff; font-size: .9rem; }
.story-lead .story-title { font-size: clamp(1.6rem, 3.2vw + .6rem, 2.6rem); line-height: 1.12; }
.story-lead .story-standfirst { font-size: 1.1rem; }
.story-compact { padding-block: .7rem; border-block-start: 1px solid var(--border); }
.story-compact:first-of-type { border-block-start: 0; }
.story-row { grid-template-columns: minmax(0, 14rem) 1fr; gap: 1rem; padding-block: 1rem; border-block-start: 1px solid var(--border); }
.story-row:not(:has(.story-media)) { grid-template-columns: 1fr; }
@media (max-width: 40rem) { .story-row { grid-template-columns: 7rem 1fr; } .story-row .story-standfirst { display: none; } }
.story-grid { display: grid; gap: 1.5rem 1.25rem; grid-template-columns: repeat(auto-fill, minmax(15rem, 1fr)); }
.story-grid-3 { grid-template-columns: repeat(auto-fill, minmax(18rem, 1fr)); }
.story-rows { display: grid; }

/* ---- Accueil : une, direct ---- */
.tv-front { display: grid; gap: 1.5rem; grid-template-columns: minmax(0, 2fr) minmax(0, 1fr); margin-block: 1.5rem 1rem; }
.tv-front-side { border-inline-start: 1px solid var(--border); padding-inline-start: 1.25rem; }
.tv-kicker-title { margin: 0 0 .25rem; font-size: .8rem; letter-spacing: .08em; text-transform: uppercase; color: var(--muted); }
@media (max-width: 52rem) { .tv-front { grid-template-columns: 1fr; } .tv-front-side { border-inline-start: 0; padding-inline-start: 0; } }
.tv-live-strip { display: grid; gap: .75rem; grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr)); margin-block: 1rem 2rem; }
.tv-live-card { display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; padding: .85rem 1rem; border: 1px solid var(--border); border-radius: var(--radius); background: var(--surface); text-decoration: none; }
.tv-live-card:hover { border-color: var(--gold); }
.tv-live-label { display: inline-flex; align-items: center; gap: .35rem; font-weight: 700; }
.tv-empty { margin-block: 2rem; }
.episode-list { list-style: none; padding: 0; margin: 0; display: grid; gap: .9rem; }
.episode-list audio, .episode-player { inline-size: 100%; max-inline-size: 40rem; margin-block-start: .4rem; }
.tv-newsletter { margin-block: 2.5rem 1rem; }

/* ---- Article ---- */
.article { max-inline-size: 46rem; margin-inline: auto; margin-block: 1.5rem; }
.article-head h1 { font: 800 clamp(1.7rem, 3vw + .8rem, 2.7rem)/1.12 var(--font-display); margin: .3rem 0 .8rem; }
.article-standfirst { font-size: 1.2rem; line-height: 1.5; color: var(--text); font-weight: 500; margin: 0 0 1rem; }
.article-meta { color: var(--muted); font-size: .9rem; border-block: 1px solid var(--border); padding-block: .6rem; }
.article-meta a { color: var(--text); }
.article-langs { font-size: .9rem; }
.article-cover { margin: 1.25rem 0; }
.article-cover img { inline-size: 100%; block-size: auto; border-radius: 6px; display: block; }
.article-cover figcaption, .art-figure figcaption { font-size: .85rem; color: var(--muted); margin-block-start: .4rem; }
.article-body { font-size: 1.12rem; line-height: 1.75; }
.article-body p { margin-block: 0 1.1rem; max-inline-size: 72ch; }
.article-body h2 { font: 700 1.4rem/1.25 var(--font-display); margin-block: 2rem .7rem; }
.article-body blockquote { margin: 1.5rem 0; padding-inline-start: 1rem; border-inline-start: 4px solid var(--gold); font-family: var(--font-display); font-size: 1.25rem; }
.article-body blockquote footer { font: .9rem var(--font); color: var(--muted); margin-block-start: .4rem; }
.art-figure { margin: 1.5rem 0; }
.art-figure img, .art-figure video { inline-size: 100%; block-size: auto; border-radius: 6px; }
.art-video iframe { inline-size: 100%; aspect-ratio: 16 / 9; border: 0; border-radius: 6px; }
.art-audio audio { inline-size: 100%; }
.article-sources, .article-corrections { margin-block-start: 2rem; padding: 1rem 1.2rem; border-radius: var(--radius); background: var(--surface); border: 1px solid var(--border); font-size: .95rem; }
.article-sources h2, .article-corrections h2 { margin: 0 0 .5rem; font-size: 1rem; text-transform: uppercase; letter-spacing: .06em; color: var(--muted); }
.article-corrections { border-color: var(--gold); }
.article-tags a { display: inline-block; margin: .2rem .3rem .2rem 0; padding: .15rem .55rem; border-radius: 999px; background: var(--surface-2); text-decoration: none; font-size: .88rem; }
.article-share { margin-block-start: 1.25rem; font-size: .92rem; }
.article-mt { margin-block-start: .75rem; }
[data-script="tifinagh"] { font-family: "Noto Sans Tifinagh", var(--font); }

/* ---- Pages : profils, équipe, pastilles, pagination ---- */
.person-head { display: flex; gap: 1rem; align-items: flex-start; margin-block: 1.5rem; }
.person-head img { border-radius: 50%; object-fit: cover; flex: none; }
.person-head h1 { margin: 0 0 .3rem; font: 800 1.8rem/1.15 var(--font-display); }
.team-grid { list-style: none; padding: 0; display: grid; gap: 1rem; grid-template-columns: repeat(auto-fill, minmax(16rem, 1fr)); }
.team-grid li { display: flex; gap: .75rem; align-items: center; }
.team-grid img { border-radius: 50%; object-fit: cover; }
.tv-site .pills { display: flex; flex-wrap: wrap; gap: .4rem; margin-block: 1rem; }
.tv-site .pills a { padding: .3rem .75rem; border: 1px solid var(--border); border-radius: 999px; text-decoration: none; font-size: .9rem; }
.tv-site .pills a[aria-current] { background: var(--gold); color: var(--bg); border-color: var(--gold); }
.pager { display: flex; gap: 1rem; justify-content: center; margin-block: 2rem; }
.tv-search-page { margin-block: 1rem; flex-wrap: wrap; align-items: center; }
.tv-section-head h1 { margin: 0; font: 800 1.7rem/1.2 var(--font-display); }

/* ---- Radio 24 h sur 24 ---- */
.radio24 audio { width: 100%; margin: .5rem 0; }
.radio24-now { font-size: 1.05rem; margin: .25rem 0; }
.radio24-label { display: inline-block; font-size: .8rem; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; padding: .1rem .45rem; border-radius: .3rem; background: var(--tv-or, #c9a227); color: #111; margin-inline-end: .35rem; }
.radio24-options { font-size: .9rem; }
.radio24-partners code { word-break: break-all; }
.radio24-history ol { margin: .4rem 0 0; padding-inline-start: 1.4rem; }
body.radio24-popup { padding: 1rem; max-width: 30rem; margin: 0 auto; }
body.radio24-popup .antenne-logo { max-width: 14rem; height: auto; display: block; margin: 0 auto .75rem; }

/* Participation du public et paiement en ligne (lot 5) */
.community-block { margin-block: 2rem; padding-block-start: 1rem; border-block-start: 1px solid var(--border); }
.poll { margin-block: 1rem 1.5rem; }
.poll-form .check { display: flex; gap: .5rem; align-items: center; }
.poll-results { list-style: none; padding: 0; display: grid; gap: .4rem; max-inline-size: 36rem; }
.poll-results li { display: grid; grid-template-columns: minmax(8rem, 1fr) 2fr auto; gap: .6rem; align-items: center; }
.poll-bar { inline-size: 100%; block-size: .7rem; appearance: none; border: 0; border-radius: 999px; overflow: hidden; background: var(--surface-2, #ddd); accent-color: var(--accent); }
.poll-bar::-webkit-progress-bar { background: var(--surface-2, #ddd); }
.poll-bar::-webkit-progress-value { background: var(--accent); }
.poll-bar::-moz-progress-bar { background: var(--accent); }
.notice.test-mode { border-inline-start: .35rem solid #b45309; }
.pay-form { max-inline-size: 36rem; }
.actions-row { display: flex; flex-wrap: wrap; gap: .6rem; }
.form label.check { display: flex; gap: .55rem; align-items: flex-start; font-weight: 400; }
.form label.check input[type=checkbox] { inline-size: 1.15rem; block-size: 1.15rem; flex: none; padding: 0; margin-block-start: .2rem; accent-color: var(--accent); }
