/*
Theme Name: IPTV Premium
Theme URI: https://iptv-premium.tech/
Description: Thème en blocs léger pour IPTV Premium — charte « Spectre ». Les tokens vivent dans theme.json ; ce fichier ne contient que ce que theme.json ne sait pas exprimer.
Version: 0.1.0
Requires at least: 6.6
Requires PHP: 8.1
Author: IPTV Premium
Text Domain: iptv-premium
License: GPL-2.0-or-later
*/

/* ==========================================================================
   1. Tokens (alias courts des presets theme.json, pour le CSS et le JS)
   ========================================================================== */
:root {
	--nuit: #0d1230;
	--nuit-hover: #1a2040;
	--nuit-bleu: #12307a;
	--violet: #5B2EFF;
	--violet-hover: #4a21e0;
	--violet-nuit: #C9B8FF;
	--magenta: #FF2E88;
	--magenta-hover: #ff5aa3;
	--rose-nuit: #FFC2DD;
	--ambre: #C4530A;
	--ambre-hover: #A3430A;
	--ambre-trait: #FF9A2E;
	--encre: #0d1230;
	--encre-2: #1f2657;
	--encre-3: #3a4170;
	--attenue: #565e87;
	--sur-nuit: #c9cfe6;
	--sur-nuit-2: #a0a7c8;
	--blanc: #FFFFFF;
	--lavande: #F3F1FA;
	--craie: #F7F6F2;
	--bord: #e4e1d8;
	--bord-2: #e0ddd5;
	--bord-fort: #cfcabd;
	--filet: #ebe8df;
	--filet-2: #e9e7e1;
	--bord-lavande: #d9d2f5;
	--bord-actif: #c9bdf7;
	--succes: #11815a;
	--succes-texte: #0f6b48;
	--succes-fond: #e9f4ee;
	--succes-bord: #b4dbc4;
	--erreur: #c4310a;

	--spectre: linear-gradient(90deg,#5B2EFF 0%,#5B2EFF 45%,#FF2E88 55%,#FF2E88 100%);
	--nuit-profonde: linear-gradient(155deg,#12307a 0%,#0d1230 65%);

	--f-titre: "Bricolage Grotesque", system-ui, sans-serif;
	--f-texte: "Plus Jakarta Sans", system-ui, sans-serif;

	--container: 1240px;
	/* Maquettes en content-box : 1240px de contenu + gouttières de chaque côté */
	--container-outer: calc(var(--container) + 2 * var(--gutter));
	--gutter: clamp(20px,5vw,48px);
	--section: clamp(64px,8vw,112px);

	--r-sm: 12px;
	--r-btn: 14px;
	--r-md: 18px;
	--r-card: 26px;
	--r-xl: 32px;
	--r-pill: 999px;

	--sh-carte: 0 18px 50px rgba(13,18,48,0.05);
	--sh-carte-survol: 0 22px 50px rgba(13,18,48,0.10);
	--sh-avant: 0 30px 70px rgba(13,18,48,0.28);
	--sh-anneau: 0 0 0 3px rgba(255,46,136,0.9);
	--sh-ambre: 0 14px 34px rgba(196,83,10,0.28);

	--ease: cubic-bezier(.22,1,.36,1);
	--header-h: 92px;
}

/* ==========================================================================
   2. Base
   ========================================================================== */
html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }
body { overflow-x: clip; -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; }
img, svg, video { max-width: 100%; height: auto; }
:where(h1,h2,h3,h4) { text-wrap: balance; margin: 0; }
:where(p) { text-wrap: pretty; }
:focus-visible { outline: 2px solid var(--violet); outline-offset: 3px; border-radius: 8px; }
.is-dark :focus-visible, .iptv-dark :focus-visible { outline-color: var(--violet-nuit); }
[id] { scroll-margin-top: 100px; }
::selection { background: var(--violet); color: #fff; }

/* Lien d'évitement */
.iptv-skip {
	position: absolute; top: 8px; left: -9999px; z-index: 1000;
	background: var(--nuit); color: #fff; padding: 12px 16px; border-radius: 10px;
	font-weight: 700;
}
.iptv-skip:focus { left: 12px; color: #fff; }

.screen-reader-text, .sr-only {
	position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px;
	overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0;
}

/* ==========================================================================
   3. Mise en page : container, sections, grilles
   ========================================================================== */
.iptv-container {
	width: 100%; max-width: var(--container-outer); margin-inline: auto;
	padding-inline: var(--gutter); box-sizing: border-box;
}
.iptv-section { padding-block: var(--section); }
.iptv-section--flush-top { padding-top: 0; }
.iptv-section--flush-bottom { padding-bottom: 0; }

/* Grille fluide : toujours auto-fit, jamais de nombre de colonnes figé.
   Le minimum se règle par variable : style="--min:270px" ou classes ci-dessous. */
.iptv-grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, var(--min, 240px)), 1fr));
	gap: var(--gap, 20px);
}
.iptv-grid--170 { --min: 170px; }
.iptv-grid--220 { --min: 220px; }
.iptv-grid--230 { --min: 230px; }
.iptv-grid--250 { --min: 250px; }
.iptv-grid--270 { --min: 270px; }
.iptv-grid--360 { --min: 360px; }
.iptv-grid--380 { --min: 380px; }
.iptv-grid--420 { --min: 420px; }
.iptv-grid--440 { --min: 440px; }
.iptv-grid--center { align-items: center; }
.iptv-grid--start { align-items: start; }

/* Mosaïque « De quoi remplir toutes vos soirées » (README › Responsive) :
   ≥ 1000px : 4 colonnes, grande tuile 2×2 ; 640–999px : 2 colonnes, grande tuile 2×2 ; < 640px : 1 colonne. */
.iptv-mosaic { display: grid; gap: 18px; grid-template-columns: 1fr; grid-auto-rows: 300px; }
@media (min-width: 640px) {
	.iptv-mosaic { grid-template-columns: repeat(2, minmax(0,1fr)); }
	.iptv-mosaic > .is-big { grid-column: span 2; grid-row: span 2; }
}
@media (min-width: 1000px) {
	.iptv-mosaic { grid-template-columns: repeat(4, minmax(0,1fr)); }
}

.iptv-stack { display: flex; flex-direction: column; gap: var(--gap, 16px); }
.iptv-row { display: flex; flex-wrap: wrap; gap: var(--gap, 12px); align-items: center; }
.iptv-measure { max-width: 700px; }
.iptv-prose { max-width: 760px; }

/* ==========================================================================
   4. Typographie utilitaire
   ========================================================================== */
.iptv-display {
	font-family: var(--f-titre); font-weight: 800;
	font-size: clamp(46px,7vw,100px); line-height: .92; letter-spacing: -0.055em;
}
.iptv-display em, .iptv-display .is-light { font-weight: 400; font-style: italic; letter-spacing: -0.04em; }
.iptv-h2 { font-family: var(--f-titre); font-weight: 800; font-size: clamp(34px,4.6vw,62px); line-height: 1; letter-spacing: -0.045em; }
.iptv-h2--sm { font-size: clamp(30px,3.8vw,50px); line-height: 1.02; letter-spacing: -0.04em; }
.iptv-h2--xs { font-size: clamp(28px,3.4vw,40px); line-height: 1.05; letter-spacing: -0.035em; }
.iptv-h2--cta { font-size: clamp(36px,5vw,68px); line-height: .98; letter-spacing: -0.05em; }
.iptv-lead { font-size: 17px; line-height: 1.65; color: var(--encre-3); margin: 0; }
.iptv-lead--hero { font-size: clamp(17px,1.6vw,20px); line-height: 1.6; max-width: 500px; }
.iptv-small { font-size: 13px; color: var(--attenue); }
.iptv-price { font-family: var(--f-titre); font-weight: 800; letter-spacing: -0.04em; line-height: normal; }

/* Sur-titre : 12px, 700, capitales, trait 22×2 devant */
.iptv-eyebrow {
	display: inline-flex; align-items: center; gap: 10px; align-self: flex-start; width: fit-content;
	font-family: var(--f-texte); font-size: 12px; font-weight: 700;
	letter-spacing: .2em; text-transform: uppercase; color: var(--violet); margin: 0;
}
.iptv-eyebrow::before { content: ""; width: 22px; height: 2px; border-radius: 2px; background: var(--spectre); flex-shrink: 0; }
.iptv-eyebrow--ambre { color: var(--ambre); }
.iptv-eyebrow--ambre::before { background: var(--magenta); }
.iptv-eyebrow--nuit { color: var(--violet-nuit); }
.iptv-eyebrow--nuit::before, .iptv-eyebrow--plain::before { display: none; }

/* Spectre — un seul élément par écran */
.iptv-spectre-text { background: var(--spectre); -webkit-background-clip: text; background-clip: text; color: transparent; }
.iptv-spectre-rule { height: 3px; border-radius: 2px; background: var(--spectre); }
.iptv-spectre-ribbon {
	align-self: flex-start; font-size: 11px; font-weight: 800; letter-spacing: .12em; text-transform: uppercase;
	color: #fff; background: linear-gradient(120deg,#5B2EFF 0%,#5B2EFF 45%,#FF2E88 55%,#FF2E88 100%);
	border-radius: var(--r-pill); padding: 6px 12px;
}

/* ==========================================================================
   5. Boutons (.ux-press = micro-interaction partagée, cf. UXLayer)
   ========================================================================== */
.iptv-btn {
	display: inline-flex; align-items: center; justify-content: center; gap: 8px;
	font-family: var(--f-titre); font-weight: 800; font-size: 16px; line-height: 1.1;
	min-height: 52px; padding: 16px 22px; box-sizing: border-box;
	border-radius: var(--r-btn); border: 1px solid transparent;
	white-space: nowrap; text-align: center; cursor: pointer; text-decoration: none;
	transition: background-color .18s ease, color .18s ease, border-color .18s ease, box-shadow .18s ease, transform .18s ease;
}
.iptv-btn--lg { font-size: 17px; min-height: 58px; padding: 18px 30px; border-radius: 16px; }
.iptv-btn--sm { font-size: 15px; min-height: 44px; padding: 12px 20px; }
.iptv-btn--block { width: 100%; }

/* Achat principal sur fond clair (ambre) */
.iptv-btn--buy { background: var(--ambre); color: #fff; box-shadow: 0 8px 20px rgba(196,83,10,0.22); }
.iptv-btn--buy.iptv-btn--lg { box-shadow: var(--sh-ambre); }
.iptv-btn--buy:hover, .iptv-btn--buy:focus-visible { background: var(--ambre-hover); color: #fff; }
.iptv-btn--buy.iptv-btn--lg:hover { transform: translateY(-1px); }

/* Nuit (cartes tarifaires, commander) */
.iptv-btn--nuit { background: var(--nuit); color: #fff; }
.iptv-btn--nuit:hover, .iptv-btn--nuit:focus-visible { background: var(--nuit-hover); color: #fff; }

/* Blanc à anneau magenta, sur fond nuit */
.iptv-btn--light { background: #fff; color: var(--nuit); box-shadow: var(--sh-anneau); }
.iptv-btn--light:hover, .iptv-btn--light:focus-visible { background: var(--lavande); color: var(--nuit); }

/* Secondaire sur fond clair */
.iptv-btn--ghost { background: #fff; color: var(--nuit); border-color: var(--bord); }
.iptv-btn--ghost:hover, .iptv-btn--ghost:focus-visible { border-color: var(--nuit); color: var(--nuit); }

/* Secondaire sur fond nuit */
.iptv-btn--ghost-nuit { background: transparent; color: #fff; border-color: rgba(255,255,255,0.3); }
.iptv-btn--ghost-nuit:hover, .iptv-btn--ghost-nuit:focus-visible { border-color: #fff; color: #fff; }

/* Lien violet encadré */
.iptv-btn--outline { background: #fff; color: var(--violet); border-color: #e3dcff; font-size: 15px; }
.iptv-btn--outline:hover { background: var(--lavande); color: var(--violet-hover); }

.ux-press { transition: transform .18s ease, box-shadow .18s ease, background-color .18s ease, color .18s ease, border-color .18s ease; }
.ux-press:active { transform: translateY(1px) scale(.985); }

/* Ligne de confiance sous chaque CTA principal */
.iptv-trust-line { display: flex; flex-wrap: wrap; gap: 10px 22px; font-size: 14px; color: var(--attenue); }

/* ==========================================================================
   6. Cartes, pastilles, surfaces
   ========================================================================== */
.iptv-card {
	background: #fff; color: var(--encre); border: 1px solid var(--bord);
	border-radius: var(--r-card); padding: clamp(24px,3vw,32px);
	display: flex; flex-direction: column; gap: 16px;
}
.iptv-card--shadow { box-shadow: var(--sh-carte); }
.iptv-card--sm { border-radius: var(--r-md); padding: 20px 22px; gap: 6px; }
.iptv-card--block { border-radius: var(--r-xl); padding: clamp(26px,4vw,48px); }
.iptv-card--craie { background: var(--craie); }
.iptv-card--nuit {
	background: var(--nuit-profonde); color: #fff; border-color: var(--nuit); box-shadow: var(--sh-avant);
}
.iptv-card--nuit :where(p, li) { color: var(--sur-nuit); }
.iptv-card--nuit :where(h2, h3, h4) { color: #fff; }
.iptv-card--hover { transition: transform .25s var(--ease), box-shadow .25s ease, border-color .25s ease; }
.iptv-card--hover:hover { transform: translateY(-3px); box-shadow: var(--sh-carte-survol); border-color: var(--violet); }

.iptv-dark { background: var(--nuit); color: #fff; }
.iptv-dark :where(h1,h2,h3,h4) { color: #fff; }
.iptv-dark :where(p) { color: var(--sur-nuit); }
.iptv-lavande { background: var(--lavande); }
.iptv-blanc { background: #fff; }
.iptv-filets { border-block: 1px solid var(--filet); }

/* Pastille d'information */
.iptv-chip {
	display: inline-flex; align-items: center; gap: 8px; align-self: flex-start; width: fit-content;
	font-size: 13px; font-weight: 700; color: var(--encre);
	background: #fff; border: 1px solid var(--bord); border-radius: var(--r-pill); padding: 7px 13px;
}

/* Pastilles de sélection (≥ 44px) — état piloté par aria-pressed / aria-checked / aria-selected */
.iptv-pill {
	font-family: var(--f-texte); font-size: 14px; font-weight: 700;
	min-height: 44px; padding: 10px 18px; border-radius: var(--r-pill);
	background: #fff; color: var(--encre-3); border: 1px solid var(--bord);
	cursor: pointer; transition: all .2s ease;
}
.iptv-pill:is([aria-pressed="true"],[aria-checked="true"],[aria-selected="true"]) {
	background: var(--nuit); color: #fff; border-color: var(--nuit);
}

/* Tuiles de choix (assistant, appareils) */
.iptv-tile {
	display: flex; flex-direction: column; align-items: flex-start; gap: 6px;
	text-align: left; border-radius: var(--r-md); padding: 16px; min-height: 44px;
	color: var(--encre); background: var(--craie); border: 2px solid transparent;
	cursor: pointer; transition: all .2s ease; font: inherit;
}
.iptv-tile:hover { border-color: var(--bord-actif); }
.iptv-tile:is([aria-pressed="true"],[aria-checked="true"],[aria-selected="true"]) {
	background: var(--lavande); border-color: var(--violet);
}

/* Point « live » */
.iptv-live-dot { width: 8px; height: 8px; border-radius: 50%; background: #ff3b30; flex-shrink: 0; animation: iptvPulse 1.6s ease-in-out infinite; }
.iptv-dot { width: 6px; height: 6px; border-radius: 50%; background: var(--magenta); flex-shrink: 0; }

/* Messages */
.iptv-note-ok { background: var(--succes-fond); border: 1px solid var(--succes-bord); color: var(--succes-texte); border-radius: var(--r-sm); padding: 12px 14px; }
.iptv-error { color: var(--erreur); font-size: 13px; font-weight: 600; }

/* Placeholder visible « à renseigner » — ne jamais masquer */
.iptv-todo {
	display: inline-block; font-size: 12px; font-weight: 800; letter-spacing: .04em;
	color: #7a2e00; background: #fff1d6; border: 1px dashed #e0a458; border-radius: 6px; padding: 2px 8px;
}

/* ==========================================================================
   7. Animations
   ========================================================================== */
@keyframes iptvPulse { 0%,100% { opacity: 1; } 50% { opacity: .35; } }
@keyframes iptvMarquee { from { transform: translateX(0); } to { transform: translateX(-50%); } }
@keyframes omRise { from { opacity: 0; transform: translateY(14px); } to { opacity: 1; transform: none; } }
@keyframes priceIn { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: none; } }
@keyframes tvFloat { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-8px); } }

.iptv-rise { animation: omRise .7s var(--ease) both; }
.iptv-rise--2 { animation-delay: .08s; }
.iptv-rise--3 { animation-delay: .16s; }

.iptv-marquee { overflow: hidden; }
.iptv-marquee__track { display: flex; width: max-content; animation: iptvMarquee 38s linear infinite; }

/* ==========================================================================
   8. Structure WordPress : pas de marges parasites entre sections
   ========================================================================== */
.wp-site-blocks > *, .wp-block-post-content > * { margin-block: 0; }
.wp-block-post-content > .alignfull { margin-inline: 0; max-width: none; }
/* Les groupes du thème gèrent leurs espacements (gap) : on neutralise les marges du flux WordPress. */
[class*="iptv-"].is-layout-flow > *, [class*="iptv-"] > .wp-block-group, .iptv-faq > .wp-block-details { margin-block-start: 0; }
.is-layout-flow > .iptv-pricing-trust { margin-top: 26px; }
.iptv-stack--12 { --gap: 12px; }
.iptv-stack--14 { --gap: 14px; }
.iptv-faq-grid { --gap: clamp(32px,5vw,64px); align-items: start; }
.iptv-steps__in { --gap: clamp(24px,4vw,48px); }
.iptv-hp { position: absolute !important; left: -9999px; width: 1px; height: 1px; overflow: hidden; }

/* ==========================================================================
   9. Header (sticky, pastille vitrée)
   ========================================================================== */
/* Le wrapper de template part ne doit pas borner le sticky : on le retire de l'arbre de boîtes. */
.wp-site-blocks > .wp-block-template-part:has(.iptv-header) { display: contents; }
.iptv-header { position: sticky; top: 12px; z-index: 60; padding: 0 clamp(12px,3vw,28px); }
.admin-bar .iptv-header { top: 44px; }
.iptv-header__bar {
	max-width: var(--container); margin: 0 auto; box-sizing: border-box;
	display: flex; align-items: center; gap: 18px; min-height: 68px; padding: 10px 10px 10px 18px;
	background: rgba(255,255,255,0.78); -webkit-backdrop-filter: blur(20px) saturate(180%); backdrop-filter: blur(20px) saturate(180%);
	border: 1px solid rgba(13,18,48,0.08); border-radius: 20px; box-shadow: 0 12px 40px rgba(13,18,48,0.08);
	transition: background-color .2s ease, box-shadow .2s ease;
}
.iptv-header.is-scrolled .iptv-header__bar { background: rgba(255,255,255,0.9); }
.iptv-header__brand { display: flex; align-items: center; gap: 11px; flex-shrink: 0; color: var(--encre); }
.iptv-header__brand:hover { color: var(--encre); }
.iptv-header__name { font-family: var(--f-titre); font-size: 17px; font-weight: 600; letter-spacing: -0.01em; white-space: nowrap; }
.iptv-header__name-sub { font-weight: 400; color: var(--attenue); }
.iptv-header__nav { display: flex; align-items: center; gap: 22px; margin-left: auto; font-size: 15px; font-weight: 500; min-width: 0; }
.iptv-header__nav a { white-space: nowrap; color: var(--encre-3); transition: color .18s ease; }
.iptv-header__nav a:hover, .iptv-header__nav a[aria-current="page"] { color: var(--encre); }
/* « > » : seuls les 2 premiers liens de 1er niveau (pas les liens d'un sous-menu) */
.iptv-header__nav > a:nth-child(1), .iptv-header__nav > a:nth-child(2) { color: var(--violet); }
.iptv-header__nav > a:nth-child(2) { font-weight: 700; }
.iptv-header__nav > a:nth-child(2):hover { color: var(--violet-hover); }
/* Sous-menu de 1er niveau (maillage 7.2 : « Installation » → guides par appareil). Lien parent + bouton aria-expanded ;
   panneau rendu côté serveur (liens explorables), ouvert par site.js (clic, clavier, survol à la souris). */
.iptv-header__sub { position: relative; display: flex; align-items: center; gap: 2px; }
.iptv-header__sub-btn {
	display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0;
	width: 24px; height: 32px; padding: 0; margin-right: -4px; border: 0; border-radius: 8px;
	background: transparent; color: var(--encre-3); cursor: pointer; transition: color .18s ease, background-color .18s ease;
}
.iptv-header__sub-btn svg { transform: rotate(90deg); transition: transform .2s var(--ease); }
.iptv-header__sub-btn:hover, .iptv-header__sub-btn[aria-expanded="true"] { color: var(--violet); background: var(--lavande); }
.iptv-header__sub-btn[aria-expanded="true"] svg { transform: rotate(-90deg); }
.iptv-header__sub-menu { position: absolute; top: calc(100% + 26px); left: 50%; transform: translateX(-50%); z-index: 70; }
.iptv-header__sub-menu[hidden] { display: none; }
.iptv-header__sub-menu::before { content: ""; position: absolute; left: 0; right: 0; bottom: 100%; height: 28px; } /* pont de survol */
.iptv-header__sub-box {
	box-sizing: border-box; min-width: 250px; width: max-content; max-width: min(460px, calc(100vw - 48px));
	padding: 14px; background: #fff; border: 1px solid rgba(13,18,48,0.08); border-radius: 18px; box-shadow: 0 20px 50px rgba(13,18,48,0.14);
}
.iptv-header__sub-k { margin: 0 0 6px; padding: 4px 12px 0; font-size: 11px; font-weight: 700; letter-spacing: .16em; text-transform: uppercase; color: var(--attenue); }
.iptv-header__sub-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 2px; }
.iptv-header__sub-list--2 { grid-template-columns: repeat(2, minmax(0,1fr)); column-gap: 6px; }
.iptv-header__nav .iptv-header__sub-list a { display: flex; align-items: center; min-height: 40px; box-sizing: border-box; padding: 8px 12px; border-radius: 10px; font-size: 15px; font-weight: 500; color: var(--encre-2); }
.iptv-header__nav .iptv-header__sub-list a:hover, .iptv-header__nav .iptv-header__sub-list a:focus-visible { background: var(--lavande); color: var(--violet); }
.iptv-header__nav .iptv-header__sub-list a[aria-current="page"] { color: var(--violet); font-weight: 700; }
/* 1180–1319 px : le bouton du sous-menu prend ~22 px ; on resserre l'écart entre liens pour garder la barre sur une ligne. */
@media (min-width: 1180px) and (max-width: 1319px) { .iptv-header__nav { gap: 18px; } }
.iptv-header__actions { display: flex; align-items: center; gap: 16px; flex-shrink: 0; margin-left: auto; }
.iptv-header__cart {
	position: relative; display: inline-flex; align-items: center; justify-content: center;
	width: 42px; height: 42px; border-radius: 12px; color: var(--encre-3);
	border: 1px solid var(--bord-2); background: rgba(255,255,255,0.6); transition: all .18s ease;
}
.iptv-header__cart:hover { color: var(--violet); border-color: var(--bord-fort); background: #fff; }
.iptv-header__badge {
	position: absolute; top: -5px; right: -5px; min-width: 18px; height: 18px; box-sizing: border-box;
	display: flex; align-items: center; justify-content: center; padding: 0 4px;
	font-family: var(--f-titre); font-size: 11px; font-weight: 800; color: #fff;
	background: var(--nuit); border: 2px solid #fff; border-radius: 999px;
}
.iptv-header__badge[hidden] { display: none; }
.iptv-header__cta { border-radius: var(--r-btn); box-shadow: none; }
.iptv-header__burger {
	display: none; flex-direction: column; justify-content: center; gap: 5px;
	width: 44px; height: 44px; padding: 0 11px; box-sizing: border-box; cursor: pointer;
	border: 1px solid var(--bord-2); border-radius: 12px; background: rgba(255,255,255,0.7);
}
.iptv-header__burger span { display: block; height: 2px; width: 100%; border-radius: 2px; background: var(--nuit); transition: transform .22s ease, opacity .18s ease; }
.iptv-header.is-open .iptv-header__burger span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.iptv-header.is-open .iptv-header__burger span:nth-child(2) { opacity: 0; }
.iptv-header.is-open .iptv-header__burger span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }
.iptv-header__panel {
	max-width: var(--container); margin: 8px auto 0; box-sizing: border-box;
	background: rgba(255,255,255,0.97); -webkit-backdrop-filter: blur(20px); backdrop-filter: blur(20px);
	border: 1px solid rgba(13,18,48,0.08); border-radius: 20px; box-shadow: 0 20px 50px rgba(13,18,48,0.14);
	max-height: calc(100vh - 110px); overflow-y: auto;
}
.iptv-header__panel nav { padding: 8px var(--gutter) 24px; display: flex; flex-direction: column; }
.iptv-header__panel nav > a:not(.iptv-btn) {
	display: flex; align-items: center; justify-content: space-between; min-height: 49px; box-sizing: border-box;
	font-size: 17px; font-weight: 600; color: var(--encre-2); padding: 15px 4px; border-bottom: 1px solid var(--filet-2);
}
.iptv-header__panel nav > a:not(.iptv-btn):hover { color: var(--violet); }
.iptv-header__panel nav > a[aria-current="page"] { font-weight: 700; color: var(--violet); background: #f3f2ef; border-radius: 10px; padding-inline: 12px; }
/* Panneau mobile : ligne « Installation » + bouton « Guides par appareil » (accordéon aria-expanded) */
.iptv-header__prow { display: flex; align-items: center; justify-content: space-between; gap: 10px; border-bottom: 1px solid var(--filet-2); }
.iptv-header__prow > a { flex: 1 1 auto; min-width: 0; display: flex; align-items: center; min-height: 49px; box-sizing: border-box; padding: 15px 4px; font-size: 17px; font-weight: 600; color: var(--encre-2); }
.iptv-header__prow > a:hover { color: var(--violet); }
.iptv-header__prow > a[aria-current="page"] { font-weight: 700; color: var(--violet); }
.iptv-header__ptoggle {
	display: inline-flex; align-items: center; gap: 6px; flex-shrink: 0; min-height: 40px; padding: 8px 12px; box-sizing: border-box;
	font-family: var(--f-texte); font-size: 13px; font-weight: 700; line-height: 1.2; color: var(--violet);
	background: transparent; border: 1px solid var(--bord-2); border-radius: 10px; cursor: pointer; transition: background-color .18s ease, border-color .18s ease;
}
.iptv-header__ptoggle svg { transform: rotate(90deg); transition: transform .2s var(--ease); }
.iptv-header__ptoggle[aria-expanded="true"] { background: var(--lavande); border-color: var(--bord-lavande); }
.iptv-header__ptoggle[aria-expanded="true"] svg { transform: rotate(-90deg); }
.iptv-header__psub {
	list-style: none; margin: 0; padding: 6px 0 10px 4px; border-bottom: 1px solid var(--filet-2);
	display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%,190px),1fr)); gap: 0 12px;
}
.iptv-header__psub[hidden] { display: none; }
.iptv-header__psub a { display: flex; align-items: center; gap: 10px; min-height: 44px; box-sizing: border-box; padding: 10px 8px; border-radius: 10px; font-size: 15px; font-weight: 500; color: var(--encre-3); }
.iptv-header__psub a::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: var(--magenta); flex-shrink: 0; }
.iptv-header__psub a:hover { color: var(--violet); }
.iptv-header__psub a[aria-current="page"] { font-weight: 700; color: var(--violet); background: #f3f2ef; }
.iptv-header__panel-cta { margin-top: 20px; font-size: 17px; border-radius: var(--r-btn); }
.iptv-header__panel-trial { margin-top: 10px; color: var(--violet); border: 1px solid var(--bord-fort); background: transparent; }
.iptv-header__panel-trial:hover { background: #f3f2ef; color: var(--violet-hover); }
@media (max-width: 1179px) {
	.iptv-header__nav { display: none; }
	.iptv-header__burger { display: flex; }
}
@media (max-width: 519px) {
	.iptv-header__cta, .iptv-header__name-sub { display: none; }
}

/* ==========================================================================
   10. Héros de l'accueil + TV zappable + bandeau appareils
   ========================================================================== */
.iptv-hero { padding: clamp(44px,7vw,96px) var(--gutter) clamp(40px,5vw,64px); max-width: var(--container-outer); margin: 0 auto; box-sizing: border-box; }
.iptv-hero__grid { --min: 440px; --gap: clamp(36px,5vw,64px); align-items: center; }
.iptv-hero__left { display: flex; flex-direction: column; gap: 26px; }
.iptv-hero__chip { font-size: 13px; font-weight: 600; padding: 8px 14px 8px 10px; gap: 10px; border-color: #e4e1d8; }
.iptv-hero__from { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; }
.iptv-hero__from .iptv-price { font-size: clamp(30px,3vw,38px); }
.iptv-hero__btns { display: flex; gap: 12px; flex-wrap: wrap; }
.iptv-hero__links { display: flex; gap: 10px 22px; flex-wrap: wrap; font-size: 14px; color: var(--attenue); }
.iptv-hero__links a { font-weight: 700; }
@media (max-width: 519px) {
	.iptv-hero__btns { flex-direction: column; }
	.iptv-hero__btns .iptv-btn { width: 100%; }
}

.iptv-tv__frame { position: relative; border-radius: 30px; box-shadow: 0 60px 120px rgba(13,18,48,0.30); }
.iptv-tv__screen { position: relative; border-radius: 28px; overflow: hidden; aspect-ratio: 16/9; background: #07060f; }
.iptv-tv__img {
	position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover;
	opacity: 0; transform: scale(1.04); transition: opacity .6s ease, transform 1.2s ease;
}
.iptv-tv__img.is-on { opacity: 1; transform: scale(1); }
.iptv-tv__now {
	position: absolute; left: 14px; right: 14px; bottom: 14px; display: flex; align-items: center; justify-content: space-between; gap: 12px;
	background: rgba(10,12,18,0.72); border: 1px solid rgba(255,255,255,0.10); border-radius: 14px; padding: 10px 14px;
}
.iptv-tv__label { display: flex; align-items: center; gap: 8px; font-size: 13px; font-weight: 700; color: #fff; }
.iptv-tv__rec { width: 7px; height: 7px; border-radius: 50%; background: #ff3b30; }
.iptv-tv__sub { font-size: 12px; color: var(--sur-nuit-2); white-space: nowrap; }
.iptv-tv__chans { display: flex; gap: 8px; flex-wrap: wrap; justify-content: center; margin-top: 16px; }
.iptv-tv__hint { text-align: center; font-size: 13px; color: var(--attenue); margin: 10px 0 0; }

.iptv-marquee { background: var(--nuit); }
.iptv-marquee__item { display: flex; align-items: center; gap: 14px; padding: 22px 26px; font-family: var(--f-titre); font-size: 18px; font-weight: 600; color: #dde2ee; white-space: nowrap; }

/* ==========================================================================
   11. Formule en 2 clics
   ========================================================================== */
.iptv-reco__wiz { background: #fff; border: 1px solid var(--bord); border-radius: 28px; padding: clamp(24px,3.5vw,36px); display: flex; flex-direction: column; gap: 28px; }
.iptv-reco__q { font-family: var(--f-titre); font-size: 19px; font-weight: 800; }
.iptv-reco__q span { color: var(--violet); }
.iptv-reco__usages { display: grid; gap: 10px; grid-template-columns: repeat(auto-fit, minmax(min(100%,150px),1fr)); }
.iptv-reco__usage { position: relative; padding-top: 18px; text-wrap: balance; }
.iptv-reco__check {
	position: absolute; top: 10px; right: 10px; width: 22px; height: 22px; border-radius: 50%;
	display: flex; align-items: center; justify-content: center; background: linear-gradient(135deg,#5B2EFF,#FF2E88);
	transform: scale(0); opacity: 0; transition: all .2s ease;
}
.iptv-reco__icon { display: inline-flex; width: 40px; height: 40px; border-radius: 12px; align-items: center; justify-content: center; background: rgba(13,18,48,0.05); transition: all .2s ease; }
.iptv-reco__usage[aria-pressed="true"] .iptv-reco__check { transform: scale(1); opacity: 1; }
.iptv-reco__usage[aria-pressed="true"] .iptv-reco__icon { background: #fff; box-shadow: 0 6px 16px rgba(91,46,255,0.18); }
.iptv-reco__label { font-family: var(--f-titre); font-size: 16px; font-weight: 800; }
.iptv-reco__hint { font-size: 13px; opacity: .75; }
.iptv-reco__screens { display: grid; gap: 10px; grid-template-columns: repeat(3, minmax(0,1fr)); }
.iptv-reco__screen { align-items: center; justify-content: center; text-align: center; gap: 8px; font-family: var(--f-titre); font-size: 16px; font-weight: 800; padding: 14px 8px; }
.iptv-reco__sub { font-family: var(--f-texte); font-size: 12px; font-weight: 600; opacity: .7; }
.iptv-reco__tvs { display: flex; gap: 4px; align-items: flex-end; height: 26px; }
.iptv-reco__tvs span { display: block; border-radius: 3px; border: 2px solid #8a8fb0; box-shadow: 0 3px 0 -1px #8a8fb0; }
.iptv-reco__tvs--1 span { width: 34px; height: 22px; }
.iptv-reco__tvs--2 span { width: 22px; height: 16px; }
.iptv-reco__tvs--3 span { width: 16px; height: 12px; }
.iptv-reco__screen[aria-pressed="true"] .iptv-reco__tvs span { border-color: var(--violet); box-shadow: 0 3px 0 -1px var(--violet); background: linear-gradient(135deg,#5B2EFF33,#FF2E8833); }
.iptv-reco__mini {
	display: none; position: sticky; bottom: 12px; z-index: 5; align-items: center; gap: 12px; margin-top: 8px;
	background: linear-gradient(135deg,#12307a,#0d1230); color: #fff; border-radius: 18px; padding: 12px 12px 12px 14px;
	box-shadow: 0 18px 40px rgba(13,18,48,0.35), 0 0 0 1px rgba(255,255,255,0.08) inset;
}
.iptv-reco__mini-txt { display: flex; flex-direction: column; gap: 2px; flex: 1 1 auto; min-width: 0; font-size: 12px; color: var(--sur-nuit); white-space: nowrap; }
.iptv-reco__mini-k { font-size: 10px; font-weight: 700; letter-spacing: .16em; text-transform: uppercase; color: var(--violet-nuit); }
.iptv-reco__mini-txt > strong { font-family: var(--f-titre); font-size: 15px; font-weight: 800; line-height: 1.15; color: #fff; white-space: normal; }
.iptv-reco__mini-txt span strong { font-family: var(--f-titre); font-size: 18px; letter-spacing: -0.02em; color: #fff; }
.iptv-reco__mini-go { flex-shrink: 0; font-family: var(--f-titre); font-size: 15px; font-weight: 800; color: var(--nuit); background: #fff; border: 0; border-radius: 14px; padding: 0 16px; min-height: 48px; cursor: pointer; box-shadow: var(--sh-anneau); }
@media (max-width: 519px) {
	.iptv-reco__usages { grid-template-columns: repeat(2, minmax(0,1fr)); }
	.iptv-reco__screen { font-size: 14px; }
	.iptv-reco__mini { display: flex; }
}
.iptv-reco__right { display: flex; flex-direction: column; gap: 10px; }
.iptv-reco__card {
	--accent: var(--violet);
	position: relative; overflow: hidden; background: var(--nuit-profonde); color: #fff; border-radius: 28px;
	padding: clamp(26px,3.5vw,40px); display: flex; flex-direction: column; gap: 18px; box-shadow: 0 40px 90px rgba(13,18,48,0.28);
}
.iptv-reco__card[data-plan="VIP"] { --accent: #FF9A2E; }
.iptv-reco__card[data-plan="Adulte"] { --accent: #FF2E88; }
.iptv-reco__top { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.iptv-reco__k { font-size: 12px; font-weight: 700; letter-spacing: .2em; text-transform: uppercase; color: var(--violet-nuit); white-space: nowrap; }
.iptv-reco__match { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; font-weight: 800; color: var(--nuit); background: #fff; border-radius: 999px; padding: 6px 10px; white-space: nowrap; }
.iptv-reco__match > span:first-child { width: 7px; height: 7px; border-radius: 50%; background: var(--succes); }
.iptv-reco__id { display: flex; align-items: center; gap: 18px; }
.iptv-reco__pack-wrap { flex-shrink: 0; width: 74px; perspective: 600px; }
.iptv-reco__pack {
	width: 74px; height: 98px; box-sizing: border-box; border-radius: 6px; padding: 8px; display: flex; flex-direction: column; gap: 2px;
	transform: rotateY(-18deg) rotateX(4deg); transform-style: preserve-3d; transition: background .5s, transform .5s;
	box-shadow: -8px 12px 24px rgba(0,0,0,0.45), inset 0 0 0 1px rgba(255,255,255,0.18);
	background: linear-gradient(165deg, var(--accent) 0%, #0d1230 70%);
}
.iptv-reco__pack-k { font-size: 7px; font-weight: 800; letter-spacing: .2em; text-transform: uppercase; color: rgba(255,255,255,0.7); }
.iptv-reco__pack-n { font-family: var(--f-titre); font-size: 15px; font-weight: 800; letter-spacing: -0.04em; line-height: 1; }
.iptv-reco__pack-g { margin-top: auto; display: grid; grid-template-columns: repeat(3,1fr); gap: 2px; }
.iptv-reco__pack-g i { height: 8px; border-radius: 2px; background: rgba(255,255,255,0.14); }
.iptv-reco__pack-g i.a { background: var(--accent); }
.iptv-reco__name { font-family: var(--f-titre); font-size: clamp(30px,3.6vw,44px); font-weight: 800; letter-spacing: -0.04em; line-height: 1; }
.iptv-reco__detail { font-size: 14px; color: var(--sur-nuit); }
.iptv-reco__pricing { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; }
.iptv-reco__price { font-family: var(--f-titre); font-size: clamp(34px,4vw,48px); font-weight: 800; letter-spacing: -0.04em; white-space: nowrap; line-height: 1; }
.iptv-reco__per { font-size: 14px; color: var(--sur-nuit); }
.iptv-reco__per strong { color: #fff; }
.iptv-reco__saving { flex-basis: 100%; width: max-content; align-self: flex-start; font-size: 13px; font-weight: 700; color: var(--nuit); background: linear-gradient(90deg,#FFC94A,#FF9A2E); border-radius: 999px; padding: 5px 10px; box-sizing: border-box; }
.iptv-reco__sep { height: 1px; background: rgba(255,255,255,0.14); }
.iptv-reco__feats { display: flex; flex-wrap: wrap; gap: 10px 18px; }
.iptv-reco__feats span, .iptv-avis__rules span, .iptv-pricing__feats span { display: flex; align-items: flex-start; gap: 10px; font-size: 15px; line-height: 1.5; }
.iptv-reco__feats span { flex: 1 1 220px; min-width: 0; color: #e6e9f5; }
.iptv-reco__feats i {
	flex-shrink: 0; width: 20px; height: 20px; border-radius: 50%;
	background: rgba(255,255,255,0.12) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='11' height='11' viewBox='0 0 12 12' fill='none'%3E%3Cpath d='M2.5 6.2l2.3 2.3 4.7-5' stroke='%23C9B8FF' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 11px no-repeat;
}
.iptv-reco__why { font-size: 15px; line-height: 1.55; color: #fff; background: rgba(255,255,255,0.07); border: 1px solid rgba(255,255,255,0.12); border-radius: 14px; padding: 12px 14px; }
.iptv-reco__why strong { color: var(--violet-nuit); }
.iptv-reco__note { font-size: 13px; font-weight: 600; color: var(--rose-nuit); }
.iptv-reco__go { margin-top: auto; font-size: 17px; border-radius: 16px; padding: 18px 24px; white-space: normal; }
.iptv-reco__nothing { text-align: center; font-size: 13px; color: var(--sur-nuit-2); }
.iptv-reco__alt { font: 600 14px/1.4 var(--f-texte); color: var(--rose-nuit); background: transparent; border: 1px dashed rgba(255,217,168,0.45); border-radius: 12px; padding: 12px 14px; min-height: 44px; cursor: pointer; }
.iptv-reco__compare { text-align: center; font-size: 14px; font-weight: 700; color: var(--sur-nuit); }
.iptv-reco__compare:hover { color: #fff; }

/* Variante compacte (OutilsIPTV) */
.iptv-reco--compact { padding-top: clamp(56px,7vw,96px); }
.iptv-reco__h2c { font-size: clamp(32px,4.2vw,56px); }
.iptv-reco__usages--c { grid-template-columns: repeat(auto-fit, minmax(min(100%,150px),1fr)); }
.iptv-reco__screen--c { align-items: center; font-family: var(--f-titre); font-size: 17px; font-weight: 800; }
.iptv-reco__card--c { gap: 16px; }
.iptv-reco__c-line { display: flex; align-items: baseline; justify-content: space-between; gap: 16px; flex-wrap: wrap; font-family: var(--f-titre); font-size: clamp(34px,4vw,48px); font-weight: 800; letter-spacing: -0.04em; }
.iptv-reco__c-line span:last-child { white-space: nowrap; }
.iptv-reco__c-detail { font-size: 15px; color: var(--sur-nuit); }
.iptv-reco__c-feats { display: contents; }
.iptv-reco__c-feats span { display: flex; gap: 10px; font-size: 15px; line-height: 1.55; color: #e6e9f5; }
.iptv-reco__c-feats b { color: var(--violet-nuit); font-weight: 800; }
@media (max-width: 519px) { .iptv-reco__usages--c { grid-template-columns: repeat(2, minmax(0,1fr)); } }

/* ==========================================================================
   12. Vérificateur d'appareil + test de connexion
   ========================================================================== */
.iptv-device.iptv-card { gap: clamp(28px,4vw,48px); }
.iptv-device__grid { display: grid; gap: 10px; margin-top: 4px; grid-template-columns: repeat(auto-fit, minmax(min(100%,130px),1fr)); }
.iptv-device__btn { align-items: center; justify-content: center; text-align: center; font-family: var(--f-titre); font-size: 15px; font-weight: 800; min-height: 52px; }
.iptv-device__res { background: var(--craie); border: 1px solid var(--bord); border-radius: 24px; padding: clamp(22px,3vw,32px); display: flex; flex-direction: column; gap: 16px; }
.iptv-device__ok { display: flex; align-items: center; justify-content: center; width: 44px; height: 44px; border-radius: 14px; background: var(--succes-fond); }
.iptv-device__title { font-family: var(--f-titre); font-size: 22px; font-weight: 800; }
.iptv-device__steps { margin: 0; padding-left: 20px; display: flex; flex-direction: column; gap: 10px; font-size: 15px; line-height: 1.6; color: var(--encre-2); }
/* Titre de bloc partagé rendu en <p> (étude 5.0) : mêmes métriques que l'ancien H2 */
.iptv-tools-title { margin: 0; color: var(--encre); }
/* Liens explorables vers les guides (étude 7.3.1), un par page cible ; .is-match = guide de l'appareil sélectionné */
.iptv-device__guides { display: flex; flex-direction: column; gap: 10px; margin-top: 4px; min-width: 0; }
.iptv-device__guides-k { margin: 0; font-size: 12px; font-weight: 700; letter-spacing: .16em; text-transform: uppercase; color: var(--attenue); }
.iptv-device__guides ul { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 8px; }
.iptv-device__guides li { max-width: 100%; }
.iptv-device__guides a {
	display: inline-flex; align-items: center; gap: 8px; max-width: 100%; min-height: 40px; box-sizing: border-box; padding: 8px 14px;
	border: 1px solid var(--bord); border-radius: 14px; background: #fff; color: var(--encre-2);
	font-size: 14px; font-weight: 700; line-height: 1.35; transition: border-color .18s ease, background-color .18s ease, color .18s ease;
}
.iptv-device__guides a svg { flex-shrink: 0; color: var(--violet); }
.iptv-device__guides a span { min-width: 0; }
.iptv-device__guides a small { font-size: 12.5px; font-weight: 500; color: var(--attenue); }
.iptv-device__guides a small::before { content: "· "; }
.iptv-device__guides a:hover, .iptv-device__guides a.is-match { border-color: var(--violet); color: var(--violet); }
.iptv-device__guides a.is-match { background: var(--lavande); }
.iptv-device__res a[hidden] { display: none; }
@media (max-width: 519px) { .iptv-device.iptv-card { gap: clamp(28px,4vw,48px); }
.iptv-device__grid { grid-template-columns: repeat(2, minmax(0,1fr)); } }

.iptv-speed {
	position: relative; overflow: hidden; background: var(--nuit-profonde); color: #fff; border-radius: var(--r-xl);
	padding: clamp(28px,4.5vw,56px); display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%,360px),1fr));
	gap: clamp(28px,4vw,48px); align-items: center;
}
.iptv-speed h2 { color: #fff; }
.iptv-speed p { font-size: 17px; line-height: 1.65; color: var(--sur-nuit); margin: 0; }
.iptv-speed__run { align-self: flex-start; background: #fff; color: var(--nuit); border: 0; min-height: 56px; padding: 18px 28px; }
.iptv-speed__run:hover { background: var(--lavande); color: var(--nuit); }
.iptv-speed__run[aria-busy="true"] { cursor: progress; opacity: .7; }
.iptv-speed__panel { background: rgba(255,255,255,0.06); border: 1px solid rgba(255,255,255,0.12); border-radius: 24px; padding: clamp(22px,3vw,32px); display: flex; flex-direction: column; gap: 18px; }
.iptv-speed__val { font-family: var(--f-titre); font-size: clamp(48px,6vw,72px); font-weight: 800; letter-spacing: -0.05em; line-height: 1; }
.iptv-speed__unit { font-size: 16px; color: var(--sur-nuit-2); }
.iptv-speed__track { height: 10px; border-radius: 999px; background: rgba(255,255,255,0.12); overflow: hidden; }
.iptv-speed__bar { height: 100%; width: 0; border-radius: 999px; background: linear-gradient(90deg,#FF2E88,#5B2EFF); transition: width .8s var(--ease); }
.iptv-speed__tiers { display: grid; gap: 8px; grid-template-columns: repeat(3, minmax(0,1fr)); }
.iptv-speed__tier { display: flex; flex-direction: column; gap: 3px; border-radius: 14px; padding: 12px; background: rgba(255,255,255,0.04); border: 1px solid rgba(255,255,255,0.10); color: var(--sur-nuit-2); }
.iptv-speed__tier.is-ok { background: rgba(17,129,90,0.22); border-color: rgba(120,220,170,0.45); color: #fff; }
.iptv-speed__tier strong { font-family: var(--f-titre); font-size: 16px; font-weight: 800; }
.iptv-speed__tier span { font-size: 12px; opacity: .8; }
.iptv-speed__verdict { font-size: 15px; line-height: 1.6; color: #e6e9f5; }
.iptv-speed__note { font-size: 12px; color: #8a93b8; }
@media (max-width: 519px) {
	.iptv-speed__run { align-self: stretch; }
	.iptv-speed__tiers { grid-template-columns: 1fr; }
	.iptv-speed__tier { flex-direction: row; align-items: center; justify-content: space-between; }
}

/* ==========================================================================
   13. Univers, formules, étapes
   ========================================================================== */
.iptv-univers {
	position: relative; min-height: 340px; border-radius: var(--r-card); overflow: hidden; background: var(--nuit);
	display: flex; align-items: flex-end; color: #fff; transition: transform .3s var(--ease), box-shadow .3s ease;
}
.iptv-univers:hover { transform: translateY(-6px); box-shadow: 0 30px 60px rgba(13,18,48,0.25); color: #fff; }
.iptv-univers--static:hover { transform: none; box-shadow: none; } /* carte sans lien (page cible en noindex) */
.iptv-univers__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: left top; }
.iptv-univers::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(13,18,48,0.05) 0%, rgba(13,18,48,0.35) 45%, rgba(13,18,48,0.96) 100%); }
.iptv-univers__txt { position: relative; z-index: 1; padding: 24px; display: flex; flex-direction: column; gap: 6px; }
.iptv-univers__txt strong { font-family: var(--f-titre); font-size: 26px; font-weight: 800; letter-spacing: -0.02em; }
.iptv-univers__txt span { font-size: 14px; line-height: 1.55; color: #dde2ee; }

.iptv-section-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 20px 40px; flex-wrap: wrap; margin-bottom: 32px; }
.iptv-pricing__spacer { height: 26px; }
.iptv-pricing__name { font-size: 26px; letter-spacing: -0.02em; }
.iptv-pricing__desc { font-size: 15px; line-height: 1.55; color: var(--encre-3); }
.iptv-pricing__price { font-size: 42px; }
.iptv-pricing__per { font-size: 14px; color: var(--attenue); }
.iptv-pricing__month { font-size: 14px; font-weight: 600; color: var(--violet); }
.iptv-pricing__feats { display: flex; flex-direction: column; gap: 9px; }
.iptv-pricing__feats span { color: var(--encre-2); }
.iptv-pricing__feats i { font-style: normal; color: var(--violet); font-weight: 800; }
.iptv-pricing__foot { font-size: 13px; color: var(--attenue); }
.iptv-pricing__cta { margin-top: auto; }
.iptv-card--nuit .iptv-pricing__desc { color: var(--sur-nuit); }
.iptv-card--nuit .iptv-pricing__per, .iptv-card--nuit .iptv-pricing__foot { color: var(--sur-nuit-2); }
.iptv-card--nuit .iptv-pricing__month, .iptv-card--nuit .iptv-pricing__feats i { color: var(--violet-nuit); }
.iptv-card--nuit .iptv-pricing__feats span { color: #e6e9f5; }
.iptv-pricing-trust { display: flex; flex-wrap: wrap; gap: 10px 26px; justify-content: center; margin-top: 26px; font-size: 14px; color: var(--encre-3); }
.iptv-pricing-trust a { font-weight: 700; }

.iptv-steps { background: #fff; border-block: 1px solid var(--filet); }
.iptv-steps__in { max-width: var(--container-outer); margin: 0 auto; box-sizing: border-box; padding: clamp(64px,8vw,104px) var(--gutter); }
.iptv-step { display: flex; flex-direction: column; gap: 12px; }
.iptv-step__n { font-family: var(--f-titre); font-size: 56px; font-weight: 800; line-height: 1; letter-spacing: -0.05em; color: var(--violet); }
.iptv-step__t { font-family: var(--f-titre); font-size: 22px; font-weight: 800; letter-spacing: -0.02em; margin: 0; line-height: 1.2; }
.iptv-step p:not(.iptv-step__n) { font-size: 15px; line-height: 1.65; margin: 0; }

/* ==========================================================================
   14. Avis
   ========================================================================== */
.iptv-avis { padding-top: clamp(56px,7vw,96px); }
.iptv-avis__head { display: flex; align-items: flex-end; justify-content: space-between; gap: 20px 32px; flex-wrap: wrap; margin-bottom: 28px; }
.iptv-avis__score { background: var(--nuit-profonde); color: #fff; border-radius: 28px; padding: clamp(24px,3vw,34px); display: flex; flex-direction: column; gap: 18px; }
.iptv-avis__avg { font-family: var(--f-titre); font-size: 64px; font-weight: 800; letter-spacing: -0.05em; line-height: 1; }
.iptv-avis__count { font-size: 15px; color: var(--sur-nuit-2); }
.iptv-avis__stars { display: flex; gap: 4px; color: var(--violet-nuit); font-size: 22px; letter-spacing: 2px; }
.iptv-avis__stars--empty { color: rgba(255,255,255,0.28); font-size: 26px; letter-spacing: 3px; }
.iptv-avis__wait { font-family: var(--f-titre); font-size: 24px; font-weight: 800; letter-spacing: -0.02em; }
.iptv-avis__wait-txt { font-size: 15px; line-height: 1.6; color: var(--sur-nuit); }
.iptv-avis__sep { height: 1px; background: rgba(255,255,255,0.14); }
.iptv-avis__rules { display: flex; flex-direction: column; gap: 10px; }
.iptv-avis__rules span { font-size: 14px; color: #e6e9f5; }
.iptv-avis__rules i { font-style: normal; color: var(--violet-nuit); font-weight: 800; }
.iptv-avis__score .iptv-btn--light { border: 0; }
.iptv-avis__empty { background: #fff; border: 1px dashed #d8cdb8; border-radius: 22px; padding: clamp(22px,3vw,32px); display: flex; flex-direction: column; gap: 10px; }
.iptv-avis__empty strong { font-family: var(--f-titre); font-size: 19px; font-weight: 800; }
.iptv-avis__empty span { font-size: 15px; line-height: 1.6; color: var(--encre-3); }
.iptv-avis__empty .iptv-btn { align-self: flex-start; }
.iptv-avis__item { background: #fff; border: 1px solid var(--bord); border-radius: 22px; padding: 22px 24px; display: flex; flex-direction: column; gap: 10px; }
.iptv-avis__item p { margin: 0; font-size: 16px; line-height: 1.65; color: var(--encre-2); }
.iptv-avis__item-top { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.iptv-avis__item-stars { color: var(--violet); font-size: 17px; letter-spacing: 2px; }
.iptv-avis__verified { font-size: 12px; font-weight: 700; color: var(--succes-texte); background: var(--succes-fond); border: 1px solid var(--succes-bord); border-radius: 999px; padding: 4px 10px; white-space: nowrap; }
.iptv-avis__reply { background: var(--craie); border-radius: 14px; padding: 12px 14px; font-size: 14px; line-height: 1.55; color: var(--encre-3); }
.iptv-avis__form { background: #fff; border: 2px solid var(--violet); border-radius: 24px; padding: clamp(22px,3vw,30px); display: flex; flex-direction: column; gap: 16px; }
.iptv-avis__form[hidden] { display: none; }
.iptv-avis__form-t { font-family: var(--f-titre); font-size: 20px; font-weight: 800; }
.iptv-avis__rating { border: 0; padding: 0; margin: 0; display: flex; gap: 6px; flex-direction: row-reverse; justify-content: flex-end; }
.iptv-avis__rating label { position: relative; cursor: pointer; }
.iptv-avis__rating input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.iptv-avis__rating span[aria-hidden] { display: flex; align-items: center; justify-content: center; width: 48px; height: 48px; border-radius: 12px; border: 1px solid var(--bord); background: #fff; font-size: 26px; line-height: 1; color: #d8d4c8; }
.iptv-avis__rating label:hover span[aria-hidden], .iptv-avis__rating label:hover ~ label span[aria-hidden],
.iptv-avis__rating input:checked + span[aria-hidden], .iptv-avis__rating label:has(input:checked) ~ label span[aria-hidden] { color: var(--magenta); }
.iptv-avis__rating input:focus-visible + span { outline: 2px solid var(--violet); outline-offset: 2px; }
.iptv-avis__err { font-size: 14px; color: #9a2c08; background: #fff1ea; border: 1px solid #f3c2a8; border-radius: 12px; padding: 11px 14px; }
.iptv-avis__err[hidden] { display: none; }
.iptv-avis__cancel { font: 600 14px var(--f-texte); color: var(--encre-3); background: transparent; border: 0; cursor: pointer; min-height: 44px; }
.iptv-field { display: flex; flex-direction: column; gap: 6px; font-size: 13px; font-weight: 700; color: var(--encre); }
.iptv-field :is(input, select, textarea) { font: 400 15px/1.5 var(--f-texte); padding: 13px 14px; border: 1px solid var(--bord); border-radius: 12px; background: #fff; color: var(--encre); width: 100%; box-sizing: border-box; }
.iptv-field textarea { resize: vertical; }

/* ==========================================================================
   15. FAQ (blocs Détails), CTA final
   ========================================================================== */
.iptv-faq { display: flex; flex-direction: column; gap: 10px; }
.iptv-faq details, .iptv-faq .wp-block-details { background: #fff; border: 1px solid var(--bord); border-radius: 20px; overflow: hidden; margin: 0; }
.iptv-faq summary {
	list-style: none; display: flex; align-items: center; justify-content: space-between; gap: 16px;
	padding: 22px 24px; min-height: 64px; box-sizing: border-box; cursor: pointer;
	font-family: var(--f-titre); font-size: 17px; font-weight: 700; line-height: normal; color: var(--encre);
}
.iptv-faq summary::-webkit-details-marker { display: none; }
.iptv-faq summary::after { content: "+"; font-size: 24px; font-weight: 400; color: var(--violet); flex-shrink: 0; transition: transform .25s ease; }
.iptv-faq details[open] summary::after { transform: rotate(45deg); }
.iptv-faq details > :not(summary) { padding: 0 24px; margin: 0; font-size: 16px; line-height: 1.7; color: var(--encre-3); }
.iptv-faq details > :last-child { padding-bottom: 22px; }

.iptv-cta-final { padding: 0 var(--gutter) var(--section); }
.iptv-cta-final__box {
	position: relative; overflow: hidden; max-width: calc(var(--container) + 2 * clamp(24px,5vw,72px)); margin: 0 auto; box-sizing: border-box;
	background: var(--nuit); border-radius: 36px; padding: clamp(56px,8vw,104px) clamp(24px,5vw,72px);
	display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%,380px),1fr)); gap: 36px; align-items: center;
}
.iptv-cta-final__box h2 { color: #fff; }
.iptv-cta-final__box p { font-size: 18px; line-height: 1.6; color: var(--sur-nuit); margin: 0; }
.iptv-cta-final .iptv-btn { font-size: 17px; border-radius: 16px; padding: 18px 30px; min-height: 58px; }

/* ==========================================================================
   16. Aller plus loin, engagements (RassuranceBand)
   ========================================================================== */
.iptv-apl { padding: clamp(56px,7vw,88px) 0; background: linear-gradient(180deg,#f7f5f0,#f1eee7); }
.iptv-apl__card {
	display: flex; flex-direction: column; gap: 6px; background: #fff; border: 1px solid var(--bord); border-radius: var(--r-md);
	padding: 20px 22px; color: var(--encre); box-shadow: 0 12px 34px rgba(13,18,48,0.05);
}
.iptv-apl__card:hover { transform: translateY(-3px); box-shadow: 0 22px 50px rgba(13,18,48,0.10); border-color: var(--violet); color: var(--encre); }
.iptv-apl__t { font-family: var(--f-titre); font-size: 18px; font-weight: 800; letter-spacing: -0.02em; display: flex; justify-content: space-between; align-items: center; gap: 10px; }
.iptv-apl__d { font-size: 14px; color: var(--attenue); line-height: 1.5; }

@keyframes rbPulse { 0%,100% { box-shadow: 0 0 0 0 rgba(17,129,90,0.45); } 70% { box-shadow: 0 0 0 8px rgba(17,129,90,0); } }
.iptv-rassurance { background: linear-gradient(180deg,#f7f5f0 0%,#f1eee7 100%); }
.iptv-rassurance__in { padding-block: clamp(56px,7vw,96px); display: flex; flex-direction: column; gap: clamp(24px,3.5vw,40px); }
.iptv-rassurance__head { align-items: end; }
.iptv-rassurance__lead { font-size: 16px; line-height: 1.65; margin: 0; max-width: 560px; }
.iptv-rassurance__status { display: flex; align-items: center; justify-content: space-between; gap: 14px; background: #fff; border: 1px solid var(--bord-2); border-radius: 20px; padding: 16px 18px; color: var(--encre); }
.iptv-rassurance__status:hover { border-color: var(--violet); color: var(--encre); }
.iptv-rassurance__status-l { display: flex; align-items: center; gap: 12px; min-width: 0; }
.iptv-rassurance__status-l > span:last-child { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.iptv-rassurance__status strong { font-family: var(--f-titre); font-size: 16px; font-weight: 800; }
.iptv-rassurance__pulse { flex-shrink: 0; width: 12px; height: 12px; border-radius: 50%; background: var(--succes); animation: rbPulse 2s ease-out infinite; }
.iptv-rassurance__k { font-size: 11px; font-weight: 700; letter-spacing: .16em; text-transform: uppercase; color: var(--attenue); }
.iptv-rassurance__k--nuit { color: var(--violet-nuit); }
.iptv-rassurance__go { flex-shrink: 0; font-family: var(--f-titre); font-size: 14px; font-weight: 800; color: var(--violet); white-space: nowrap; }
.iptv-rassurance__not { background: #fff; border: 1px solid var(--bord-2); border-radius: 20px; padding: 20px; display: flex; flex-direction: column; gap: 10px; }
.iptv-rassurance__not strong { font-family: var(--f-titre); font-size: 18px; font-weight: 800; line-height: 1.15; letter-spacing: -0.02em; }
.iptv-rassurance__not > span:last-child { font-size: 14px; line-height: 1.6; color: var(--encre-3); }
.iptv-rassurance__never { align-self: flex-start; font-size: 11px; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; color: #8f2621; background: #fbecea; border: 1px solid #efc4bf; border-radius: 999px; padding: 5px 9px; }
.iptv-rassurance__pay { background: var(--nuit-profonde); color: #fff; border-radius: 24px; padding: 24px 26px; display: flex; flex-direction: column; gap: 14px; }
.iptv-rassurance__steps { list-style: none; margin: 0; padding: 0; counter-reset: rb; display: flex; flex-direction: column; gap: 8px; font-size: 14px; line-height: 1.55; color: #e6e9f5; }
.iptv-rassurance__steps li { counter-increment: rb; display: flex; gap: 10px; }
.iptv-rassurance__steps li::before { content: counter(rb); color: var(--violet-nuit); font-weight: 800; }
.iptv-rassurance__contact { background: #fff; border: 1px solid var(--bord-2); border-radius: 24px; padding: 24px 26px; display: flex; flex-direction: column; gap: 14px; }
.iptv-rassurance__link { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 14px; border-radius: 14px; background: #f4f6fb; color: var(--encre); }
.iptv-rassurance__link:hover { background: #eceff7; color: var(--encre); }
.iptv-rassurance__link > span:first-child { display: flex; flex-direction: column; gap: 1px; }
.iptv-rassurance__link strong { font-family: var(--f-titre); font-size: 15px; font-weight: 800; }
.iptv-rassurance__link > span:first-child > span { font-size: 13px; color: var(--attenue); }
.iptv-rassurance__link .iptv-rassurance__go { font-size: 13px; }

/* ==========================================================================
   17. Footer
   ========================================================================== */
.iptv-footer { border-top: 1px solid var(--filet); background: linear-gradient(180deg,#FFFFFF,#F7F6F2); transition: padding-bottom .2s ease; }
.has-buybar .iptv-footer { padding-bottom: 96px; }
.iptv-footer__since { padding-top: clamp(28px,4vw,44px); }
.iptv-trust-since { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%,220px),1fr)); gap: 14px; background: var(--nuit); color: #fff; border-radius: 24px; padding: clamp(18px,2.5vw,26px); }
.iptv-trust-since__main, .iptv-trust-since__item { display: flex; align-items: center; gap: 12px; min-width: 0; }
.iptv-trust-since__main { gap: 14px; }
.iptv-trust-since__badge { display: flex; flex-direction: column; align-items: center; justify-content: center; flex-shrink: 0; width: 60px; height: 60px; border-radius: 16px; background: linear-gradient(135deg,#5B2EFF,#FF2E88); }
.iptv-trust-since__badge span { font-size: 9px; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; }
.iptv-trust-since__badge strong { font-family: var(--f-titre); font-size: 20px; font-weight: 800; letter-spacing: -0.03em; line-height: 1; }
.iptv-trust-since__icon { flex-shrink: 0; width: 40px; height: 40px; border-radius: 12px; background: rgba(255,255,255,0.08); display: flex; align-items: center; justify-content: center; }
.iptv-trust-since__txt { display: flex; flex-direction: column; gap: 2px; }
.iptv-trust-since__txt strong { font-family: var(--f-titre); font-size: 15px; font-weight: 800; }
.iptv-trust-since__main .iptv-trust-since__txt strong { font-size: 17px; }
.iptv-trust-since__txt span { font-size: 13px; line-height: 1.45; color: var(--sur-nuit); }
/* 4 colonnes de liens (Formules, Guides par appareil, Aide, Informations) : 2 × 2 sous 1000 px, une ligne au-delà */
.iptv-footer__cols { padding-block: clamp(36px,5vw,56px) 28px; display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 32px 20px; }
@media (min-width: 1000px) { .iptv-footer__cols { grid-template-columns: repeat(4, minmax(0,1fr)); gap: 32px 24px; } }
.iptv-footer__brand { display: flex; flex-direction: column; gap: 14px; min-width: 0; grid-column: 1 / -1; }
.iptv-footer__logo { display: flex; align-items: center; gap: 10px; color: var(--encre); font-family: var(--f-titre); font-size: 18px; font-weight: 800; align-self: flex-start; }
.iptv-footer__logo:hover { color: var(--encre); }
.iptv-footer__logo span span { font-weight: 400; color: var(--attenue); }
.iptv-footer__brand p { margin: 0; font-size: 14px; line-height: 1.6; max-width: 300px; }
.iptv-footer__cta { align-self: flex-start; font-size: 14px; min-height: 0; padding: 11px 16px; border-radius: 12px; box-shadow: none; }
.iptv-footer__col { display: flex; flex-direction: column; gap: 12px; min-width: 0; }
.iptv-footer__title { font-family: var(--f-titre); font-size: 13px; font-weight: 800; letter-spacing: .16em; text-transform: uppercase; color: var(--encre); }
.iptv-footer__col nav { display: flex; flex-direction: column; gap: 9px; }
.iptv-footer__col nav a { font-size: 15px; color: var(--encre-3); }
.iptv-footer__col nav a:hover { color: var(--violet); }
.iptv-footer__bottom { padding-block: 20px 32px; border-top: 1px solid var(--filet); display: flex; flex-wrap: wrap; gap: 12px 24px; align-items: center; justify-content: space-between; font-size: 13px; color: var(--attenue); }

/* ==========================================================================
   18. Couche UX : progression, retour en haut, « Bon retour », barre d'achat
   ========================================================================== */
@keyframes uxRise { from { opacity: 0; transform: translateY(14px); } to { opacity: 1; transform: none; } }
@keyframes uxPop { 0% { transform: scale(.96); } 60% { transform: scale(1.03); } 100% { transform: scale(1); } }
.iptv-progress { position: fixed; left: 0; top: 0; right: 0; height: 3px; z-index: 99; background: var(--spectre); transform-origin: 0 50%; transform: scaleX(0); pointer-events: none; }
.iptv-progress[hidden] { display: none; }
.iptv-totop {
	position: fixed; right: 14px; bottom: 24px; z-index: 88; width: 48px; height: 48px; border-radius: 50%;
	border: 1px solid var(--bord); background: #fff; color: var(--nuit); cursor: pointer;
	box-shadow: 0 10px 30px rgba(13,18,48,0.16); display: flex; align-items: center; justify-content: center; animation: uxPop .35s ease;
}
.iptv-totop[hidden] { display: none; }
.has-buybar .iptv-totop { bottom: 92px; }
.iptv-welcome {
	position: fixed; left: 12px; right: 12px; top: 88px; z-index: 85; max-width: 720px; margin: 0 auto; box-sizing: border-box;
	display: flex; align-items: center; justify-content: space-between; gap: 12px;
	background: #fff; border: 1px solid var(--bord); border-left: 4px solid var(--magenta); border-radius: 16px;
	padding: 12px 12px 12px 16px; box-shadow: 0 18px 50px rgba(13,18,48,0.14); animation: uxRise .5s var(--ease);
}
.iptv-welcome[hidden] { display: none; }
.iptv-welcome__txt { font-size: 14px; line-height: 1.45; color: var(--encre-2); min-width: 0; }
.iptv-welcome__txt strong { font-family: var(--f-titre); font-weight: 800; color: var(--encre); }
.iptv-welcome__actions { display: flex; gap: 8px; align-items: center; flex-shrink: 0; }
.iptv-welcome__actions .iptv-btn { font-size: 14px; min-height: 44px; padding: 11px 16px; border-radius: 12px; }
.iptv-welcome__close { width: 44px; height: 44px; border: 0; background: transparent; font-size: 22px; color: var(--attenue); cursor: pointer; border-radius: 12px; }
@media (max-width: 559px) { .iptv-welcome { top: 76px; } }

.iptv-buybar {
	position: fixed; left: 12px; right: 12px; bottom: 12px; z-index: 90; max-width: 760px; margin: 0 auto; box-sizing: border-box;
	display: flex; align-items: center; gap: 14px; background: rgba(13,18,48,0.94); color: #fff;
	-webkit-backdrop-filter: blur(16px); backdrop-filter: blur(16px);
	border: 1px solid rgba(255,255,255,0.08); border-radius: 20px; padding: 8px 6px 8px 14px; box-shadow: 0 24px 60px rgba(13,18,48,0.40);
	animation: uxRise .35s var(--ease);
}
.iptv-buybar[hidden] { display: none; }
.iptv-buybar__icon { display: flex; align-items: center; justify-content: center; flex-shrink: 0; width: 40px; height: 40px; border-radius: 12px; background: var(--magenta); }
.iptv-buybar__body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.iptv-buybar__line { display: flex; align-items: baseline; gap: 6px 8px; white-space: nowrap; }
.iptv-buybar__name, .iptv-buybar__price { font-family: var(--f-titre); font-size: 17px; font-weight: 800; }
.iptv-buybar__price { color: var(--violet-nuit); }
.iptv-buybar__month { font-size: 13px; color: var(--sur-nuit); }
.iptv-buybar__sub { font-size: 13px; color: var(--sur-nuit-2); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.iptv-buybar__sub a { color: var(--rose-nuit); font-weight: 700; }
.iptv-buybar__cta {
	flex-shrink: 0; display: inline-flex; align-items: center; min-height: 48px; box-sizing: border-box; padding: 12px 20px;
	font-family: var(--f-titre); font-size: 15px; font-weight: 800; white-space: nowrap; color: var(--nuit); background: var(--magenta); border-radius: 14px;
}
.iptv-buybar__cta:hover { background: var(--lavande); color: var(--nuit); }
.iptv-buybar__close { flex-shrink: 0; width: 36px; height: 36px; border: 0; border-radius: 10px; background: transparent; color: var(--sur-nuit-2); font-size: 20px; cursor: pointer; padding: 0; }
@media (max-width: 519px) {
	.iptv-buybar { gap: 8px; }
	.iptv-buybar__icon, .iptv-buybar__month, .iptv-buybar__arrow { display: none; }
	.iptv-buybar__cta { padding: 12px 14px; }
	.iptv-buybar__close { width: 28px; }
}

/* ==========================================================================
   19. Pages internes : dégradé de tête, héros de page, fil d'Ariane
   ========================================================================== */
body:not(.home) .wp-site-blocks { background: linear-gradient(180deg,#f3f2ef 0,rgba(247,246,243,0) 1200px) no-repeat; }
.iptv-page-hero { padding: 28px var(--gutter) clamp(45px,5.5vw,72px); max-width: var(--container-outer); margin: 0 auto; box-sizing: border-box; }
.iptv-page-hero__in { max-width: 720px; display: flex; flex-direction: column; gap: 18px; }
.iptv-page-h1 { font-family: var(--f-titre); font-size: clamp(40px,5.4vw,76px); font-weight: 800; line-height: .96; letter-spacing: -0.05em; text-wrap: pretty; }
.iptv-page-lead { font-size: 19px; line-height: 1.65; color: var(--encre-3); margin: 0; }
.iptv-fil { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; font-size: 13px; color: var(--attenue); margin-bottom: 36px; }
.iptv-fil a { color: var(--attenue); }
.iptv-fil a:hover { color: var(--violet); }
.iptv-fil [aria-current] { color: var(--encre-3); }
.iptv-h2--md { font-size: clamp(30px,3.8vw,50px); line-height: 1.04; letter-spacing: -0.038em; }
.iptv-section-top { padding-top: clamp(64px,8vw,104px); }
.iptv-grid--340 { --min: 340px; }
.iptv-grid--320 { --min: 320px; }
.iptv-faq-grid--44 { --gap: 44px; align-items: start; }
.iptv-stack--18 { --gap: 18px; }
.iptv-es-why p { margin: 0; }
.iptv-faq-grid--64 { --gap: 64px; }
.is-layout-flow > .iptv-mb-40, .iptv-mb-40 { margin-bottom: 40px; }
.iptv-section-head--40 { gap: 40px; margin-bottom: 40px; }

/* ==========================================================================
   20. Offres : sélecteur appareils × durée
   ========================================================================== */
.iptv-offres { padding-top: clamp(45px,5.5vw,72px); }
.iptv-offres__ctrl { display: flex; flex-direction: column; align-items: center; gap: 14px; margin-bottom: 38px; }
.iptv-offres__rows { display: flex; flex-direction: column; align-items: center; gap: 10px; width: 100%; min-width: 0; }
.iptv-offres__row { display: flex; align-items: center; justify-content: center; flex-wrap: wrap; gap: 8px 12px; max-width: 100%; }
.iptv-offres__k { font-size: 12px; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; color: var(--attenue); min-width: 74px; text-align: center; }
.iptv-seg { display: flex; flex-wrap: wrap; justify-content: center; gap: 4px; max-width: 100%; background: #f3f2ef; border: 1px solid var(--bord-2); border-radius: 16px; padding: 5px; }
.iptv-seg__btn { font: 600 14px/1.2 var(--f-texte); border: 0; border-radius: 12px; padding: 12px 18px; min-height: 44px; cursor: pointer; white-space: nowrap; background: transparent; color: var(--encre-3); transition: all .18s ease; }
.iptv-seg__btn[aria-checked="true"] { background: #fff; color: var(--encre); box-shadow: 0 2px 8px rgba(13,18,48,0.10); }
.iptv-offres__reco { display: flex; align-items: center; gap: 10px; font-size: 13px; font-weight: 600; color: #3b2a8f; background: var(--lavande); border: 1px solid var(--bord-lavande); border-radius: 12px; padding: 10px 14px; }
.iptv-offres__reco[hidden] { display: none; }
.iptv-offres__rule { font-size: 14px; color: var(--encre-3); text-align: center; }
.iptv-offres__grid { align-items: start; }
.iptv-offre {
	position: relative; background: #fff; border: 1px solid var(--bord-2); border-radius: var(--r-card); padding: 34px 28px;
	display: flex; flex-direction: column; gap: 22px; transition: transform .22s var(--ease), box-shadow .22s ease, border-color .22s ease;
}
.iptv-offre:hover { transform: translateY(-6px); border-color: var(--bord-actif); box-shadow: 0 26px 60px rgba(13,18,48,0.10), 0 0 0 4px rgba(255,46,136,0.14); }
.iptv-offre--nuit { background: linear-gradient(160deg,#1a1650 0%,#0d1230 60%); color: #fff; border-color: transparent; box-shadow: var(--sh-avant); }
.iptv-offre--nuit:hover { border-color: transparent; box-shadow: 0 36px 80px rgba(13,18,48,0.34), 0 0 0 4px rgba(255,46,136,0.24); }
.iptv-offre__ribbon { position: absolute; top: -14px; left: 28px; font-size: 11px; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; color: #fff; background: linear-gradient(90deg,#5B2EFF,#FF2E88); border-radius: 999px; padding: 8px 14px; box-shadow: 0 8px 20px rgba(91,46,255,0.35); }
.iptv-offre__name { font-family: var(--f-titre); font-size: 21px; font-weight: 800; }
.iptv-offre__chip { font-size: 11px; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; color: var(--violet-nuit); background: rgba(255,255,255,0.08); border: 1px solid rgba(255,255,255,0.14); border-radius: 999px; padding: 5px 11px; }
.iptv-offre__chip--nuit { background: var(--nuit); border-color: var(--nuit); }
.iptv-offre__desc { font-size: 14px; line-height: 1.6; color: var(--encre-3); }
.iptv-offre--nuit .iptv-offre__desc { color: var(--sur-nuit); }
.iptv-offre__has { display: flex; flex-direction: column; gap: 22px; }
.iptv-offre__has[hidden], .iptv-offre__none[hidden] { display: none; }
.iptv-offre__price { font-family: var(--f-titre); font-size: 48px; font-weight: 800; letter-spacing: -0.04em; line-height: 1; }
.iptv-offre__per { font-size: 15px; color: var(--encre-3); white-space: nowrap; }
.iptv-offre--nuit .iptv-offre__per { color: var(--sur-nuit); }
.iptv-offre__month { font-size: 14px; font-weight: 700; color: var(--violet); }
.iptv-offre--nuit .iptv-offre__month { color: #FFB6D3; }
.iptv-offre__once { font-size: 12px; color: var(--attenue); }
.iptv-offre--nuit .iptv-offre__once { color: var(--sur-nuit-2); }
.iptv-offre__cta { font-size: 16px; padding: 16px 24px; white-space: normal; }
.iptv-offre__cta.iptv-btn--buy { box-shadow: 0 10px 24px rgba(196,83,10,0.22); }
.iptv-offre__cta:hover { transform: translateY(-2px); }
.iptv-btn--offre-vip { background: #fff; color: var(--nuit); box-shadow: 0 12px 28px rgba(255,46,136,0.28); }
.iptv-btn--offre-vip:hover { color: var(--nuit); box-shadow: 0 18px 36px rgba(255,46,136,0.36); }
.iptv-offre__trial { font-size: 13px; font-weight: 600; color: var(--violet); text-align: center; margin-top: -10px; }
.iptv-offre__none { display: flex; flex-direction: column; gap: 22px; }
.iptv-offre__note { background: #f3f2ef; border: 1px dashed var(--bord-fort); border-radius: 16px; padding: 16px 18px; font-size: 14px; line-height: 1.55; color: var(--encre-3); }
.iptv-offre--nuit .iptv-offre__note { background: rgba(255,255,255,0.06); border-color: rgba(255,255,255,0.25); color: var(--sur-nuit); }
.iptv-offre__ask { font-family: var(--f-titre); font-size: 15px; font-weight: 500; text-align: center; color: var(--nuit); background: #fff; border: 1px solid var(--bord-fort); border-radius: 14px; padding: 14px 22px; }
.iptv-offre__ask:hover { border-color: var(--violet); color: var(--violet); }
.iptv-offre--nuit .iptv-offre__ask { color: #fff; background: rgba(255,255,255,0.08); border-color: rgba(255,255,255,0.25); }
.iptv-offre--nuit .iptv-offre__ask:hover { background: rgba(255,255,255,0.16); color: #fff; }
.iptv-offre__sep { height: 1px; background: var(--filet-2); }
.iptv-offre--nuit .iptv-offre__sep { background: rgba(255,255,255,0.12); }
.iptv-offre__feats { display: flex; flex-direction: column; gap: 12px; font-size: 15px; color: var(--encre-2); }
.iptv-offre--nuit .iptv-offre__feats { color: #fff; }
.iptv-offre__feats > div, .iptv-bouquet__feats > div { display: flex; gap: 11px; }
.iptv-offre__feats svg, .iptv-bouquet__feats svg, .iptv-bouquet__trial svg { flex-shrink: 0; margin-top: 3px; }

/* ==========================================================================
   21. Boîte produit 3D + bouquets
   ========================================================================== */
@keyframes packSpin { 0%,100% { transform: rotateY(-18deg) rotateX(6deg) translateY(0); } 50% { transform: rotateY(-40deg) rotateX(4deg) translateY(-8px); } }
@keyframes packSheen { 0% { transform: translateX(-140%) skewX(-18deg); } 60%,100% { transform: translateX(240%) skewX(-18deg); } }
@keyframes chipOrbit { 0%,100% { transform: translateZ(90px) translateY(0); } 50% { transform: translateZ(90px) translateY(-9px); } }
.iptv-pack { position: relative; display: flex; justify-content: center; padding: 18px 0 8px; }
/* Halo : dégradé radial net (règle Spectre : pas de filter:blur) */
.iptv-pack__glow { position: absolute; left: 50%; top: 46%; width: 92%; aspect-ratio: 1; transform: translate(-50%,-50%); border-radius: 50%; background: radial-gradient(circle, color-mix(in srgb, var(--accent) 53%, transparent) 0%, rgba(255,46,136,0.14) 38%, rgba(13,18,48,0) 66%); pointer-events: none; }
.iptv-pack__ground { position: absolute; left: 50%; bottom: 0; width: 60%; height: 22px; transform: translateX(-50%); border-radius: 50%; background: radial-gradient(ellipse at center, rgba(0,0,0,0.6) 0%, rgba(0,0,0,0) 70%); }
.iptv-pack::after { content: ""; position: absolute; left: 8%; right: 8%; bottom: 6px; height: 1px; background: linear-gradient(90deg, rgba(255,255,255,0), rgba(255,255,255,0.35), rgba(255,255,255,0)); }
.iptv-pack__stage { position: relative; width: clamp(150px,54%,215px); perspective: 1100px; }
.iptv-pack__box { position: relative; aspect-ratio: 3/4; transform-style: preserve-3d; transform: rotateY(-26deg) rotateX(5deg); animation: packSpin 9s ease-in-out infinite; transition: transform .7s var(--ease); }
.iptv-pack:hover .iptv-pack__box { animation-play-state: paused; transform: rotateY(-44deg) rotateX(4deg) translateY(-12px); }
.iptv-pack__top { position: absolute; left: 0; right: 0; top: 0; height: 78px; transform-origin: 50% 0%; transform: rotateX(90deg); background: linear-gradient(90deg,#1a1f4a,#0d1230 60%,#131842); border-radius: 5px 5px 0 0; box-shadow: inset 0 -1px 0 rgba(255,255,255,0.12); overflow: hidden; }
.iptv-pack__top span { position: absolute; inset: 0; background: linear-gradient(115deg, color-mix(in srgb, var(--accent) 40%, transparent) 0%, rgba(255,255,255,0.18) 35%, rgba(255,46,136,0.35) 70%, rgba(255,255,255,0) 100%); }
.iptv-pack__chip {
	position: absolute; padding: 6px 10px; border-radius: 999px; background: rgba(255,255,255,0.14); -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px);
	border: 1px solid rgba(255,255,255,0.35); color: #fff; font-size: 10px; font-weight: 800; letter-spacing: .04em; white-space: nowrap;
	box-shadow: 0 10px 24px rgba(0,0,0,0.35); transform: translateZ(90px); animation: chipOrbit 5s ease-in-out infinite; transition: opacity .4s, transform .4s;
}
.iptv-pack__chip--1 { left: -52px; top: 32%; }
.iptv-pack__chip--2 { left: -36px; top: 58%; animation-duration: 6s; animation-delay: .7s; }
.iptv-pack__chip--3 { left: -24px; top: 84%; animation-duration: 7s; animation-delay: 1.4s; }
.iptv-pack:hover .iptv-pack__chip { opacity: 0; transform: translateZ(90px) translateY(14px); }
.iptv-pack__side { position: absolute; top: 0; bottom: 0; left: 100%; width: 78px; transform-origin: 0% 50%; transform: rotateY(90deg); background: linear-gradient(180deg,#141838,#080a16); border-radius: 0 5px 5px 0; box-shadow: inset 1px 0 0 rgba(255,255,255,0.10); padding: 14px 8px; display: flex; flex-direction: column; gap: 9px; overflow: hidden; }
.iptv-pack__inc-k { font-size: 8px; font-weight: 800; letter-spacing: .2em; text-transform: uppercase; color: #9aa2cf; }
.iptv-pack__inc { display: flex; align-items: center; gap: 7px; font-size: 11px; font-weight: 700; color: #fff; white-space: nowrap; }
.iptv-pack__inc i { width: 14px; height: 14px; border-radius: 50%; flex-shrink: 0; background: var(--accent) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 10 10' fill='none'%3E%3Cpath d='M2 5.2l2 2 4-4.4' stroke='%230d1230' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 8px no-repeat; }
.iptv-pack__front { position: absolute; inset: 0; border-radius: 6px; overflow: hidden; background: var(--face); box-shadow: inset 0 0 0 1px rgba(255,255,255,0.10), -18px 30px 50px rgba(0,0,0,0.55); display: flex; flex-direction: column; padding: 14px 14px 12px; gap: 10px; }
.iptv-pack__front::before { content: ""; position: absolute; inset: 0; background: linear-gradient(115deg, rgba(255,255,255,0.14) 0%, rgba(255,255,255,0) 38%); pointer-events: none; }
.iptv-pack__sheen { position: absolute; top: -20%; bottom: -20%; width: 34%; background: linear-gradient(90deg, rgba(255,255,255,0) 0%, rgba(255,255,255,0.22) 50%, rgba(255,255,255,0) 100%); animation: packSheen 6s ease-in-out infinite; pointer-events: none; }
.iptv-pack__brand { position: relative; display: flex; align-items: center; gap: 5px; font-size: 8.5px; font-weight: 800; letter-spacing: .18em; text-transform: uppercase; color: #fff; }
.iptv-pack__brand span { width: 11px; height: 11px; border-radius: 3px; background: linear-gradient(135deg,#5B2EFF 0%,#5B2EFF 45%,#FF2E88 55%,#FF2E88 100%); }
.iptv-pack__title { position: relative; display: flex; flex-direction: column; align-items: center; gap: 4px; margin-top: 6px; }
.iptv-pack__title span { font-size: 9px; font-weight: 700; letter-spacing: .24em; text-transform: uppercase; color: #9aa2cf; }
.iptv-pack__title strong { font-family: var(--f-titre); font-size: 34px; font-weight: 800; line-height: .95; letter-spacing: -0.045em; color: #fff; }
.iptv-pack__screen { position: relative; margin-top: auto; border-radius: 5px; background: #06070d; box-shadow: 0 0 0 1px rgba(255,255,255,0.14); padding: 6px; display: flex; flex-direction: column; gap: 5px; }
.iptv-pack__screen > div:first-child { display: flex; align-items: center; justify-content: space-between; font-size: 7px; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; color: #fff; }
.iptv-pack__screen > div:first-child span:last-child { color: #9aa2cf; font-weight: 700; letter-spacing: .12em; }
.iptv-pack__screen > div:first-child i { display: inline-block; width: 5px; height: 5px; border-radius: 50%; background: #ff3b30; margin-right: 4px; }
.iptv-pack__tiles { display: grid; grid-template-columns: repeat(4,1fr); gap: 4px; }
.iptv-pack__tiles i { border-radius: 3px; background: rgba(255,255,255,0.10); aspect-ratio: 16/10; display: block; }
.iptv-pack__tiles i.a { background: var(--tile); }
.iptv-pack__foot { position: relative; font-size: 9px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: #dfe9ff; text-align: center; }
.iptv-pack__seal { position: absolute; top: -22px; left: -28px; width: 64px; height: 64px; border-radius: 50%; background: var(--tile); transform: translateZ(46px) rotate(-8deg); display: flex; align-items: center; justify-content: center; box-shadow: 0 14px 30px rgba(0,0,0,0.5), inset 0 0 0 3px rgba(255,255,255,0.3); }
.iptv-pack__seal span { font-family: var(--f-titre); font-size: 22px; font-weight: 800; letter-spacing: -0.03em; color: var(--nuit); text-align: center; line-height: 1; }
.iptv-pack__seal.is-small span { font-size: 12px; }

.iptv-bouquet { position: relative; background: #fff; border: 1px solid var(--bord-2); border-radius: var(--r-card); overflow: hidden; display: flex; flex-direction: column; box-shadow: var(--sh-carte); transition: transform .22s var(--ease), box-shadow .22s ease, border-color .22s ease; }
.iptv-bouquet:hover { transform: translateY(-5px); border-color: var(--bord-actif); box-shadow: 0 30px 68px rgba(13,18,48,0.10); }
.iptv-bouquet__link { position: absolute; inset: 0; z-index: 3; border-radius: inherit; }
.iptv-bouquet__visual { position: relative; background: linear-gradient(165deg,#12307a 0%,#001c4f 100%); padding: 22px 22px 24px; display: flex; flex-direction: column; gap: 16px; }
.iptv-bouquet__top { position: relative; display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.iptv-bouquet__brand { display: flex; align-items: center; gap: 9px; font-family: var(--f-titre); font-size: 14px; font-weight: 800; letter-spacing: .02em; color: #fff; }
.iptv-bouquet__brand > span span { font-weight: 400; color: var(--sur-nuit-2); }
.iptv-bouquet__tag { font-size: 11px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: var(--violet-nuit); white-space: nowrap; }
.iptv-bouquet__caption { position: relative; font-size: 14px; font-weight: 600; line-height: 1.5; color: #fff; text-align: center; }
.iptv-bouquet__body { position: relative; padding: 26px; display: flex; flex-direction: column; gap: 18px; flex: 1; }
.iptv-bouquet__name { font-size: 22px; letter-spacing: -0.02em; line-height: normal; }
.iptv-bouquet__badge { padding: 5px 12px; }
.iptv-bouquet__price { font-family: var(--f-titre); font-size: 34px; font-weight: 800; letter-spacing: -0.03em; }
.iptv-bouquet__per, .iptv-bouquet__month { font-size: 14px; color: var(--attenue); }
.iptv-bouquet__month { font-size: 13px; }
.iptv-bouquet__feats { display: flex; flex-direction: column; gap: 10px; font-size: 15px; line-height: 1.55; color: var(--encre-2); }
.iptv-bouquet__trial { display: flex; gap: 11px; font-size: 14px; line-height: 1.55; color: var(--succes-texte); background: var(--succes-fond); border: 1px solid var(--succes-bord); border-radius: 14px; padding: 13px 15px; }
.iptv-bouquet__notrial { display: flex; gap: 11px; align-items: flex-start; font-size: 14px; line-height: 1.55; color: #3b2a8f; background: var(--lavande); border: 1px solid var(--bord-lavande); border-radius: 14px; padding: 13px 15px; }
.iptv-bouquet__notrial i { width: 7px; height: 7px; border-radius: 50%; background: var(--magenta); margin-top: 6px; flex-shrink: 0; }
.iptv-bouquet__refund { font-size: 13px; line-height: 1.55; color: var(--attenue); }
.iptv-bouquet__refund a { position: relative; z-index: 4; font-weight: 600; }
.iptv-bouquet__cta { margin-top: auto; text-align: center; font-family: var(--f-titre); font-size: 16px; font-weight: 800; color: #fff; background: var(--nuit); border-radius: 14px; padding: 16px 24px; box-shadow: 0 12px 30px rgba(13,18,48,0.28); }
.iptv-link-outline { display: inline-flex; align-items: center; gap: 8px; font-family: var(--f-titre); font-size: 15px; font-weight: 800; color: var(--violet); border: 1px solid var(--bord-fort); border-radius: 12px; padding: 14px 22px; white-space: nowrap; }
.iptv-link-outline:hover { background: #f3f2ef; color: var(--violet-hover); }
@media (prefers-reduced-motion: reduce) { .iptv-pack__box, .iptv-pack__chip, .iptv-pack__sheen { animation: none !important; } }

/* ==========================================================================
   22. Tableau comparatif court, FAQ en lignes, bande « Une question ? »
   ========================================================================== */
.iptv-cmp { background: #fff; border: 1px solid var(--bord-2); border-radius: var(--r-card); overflow: hidden; box-shadow: 0 14px 45px rgba(13,18,48,0.04); }
.iptv-cmp__row { display: grid; grid-template-columns: 2fr 1fr 1fr 1fr; padding: 18px 32px; border-top: 1px solid var(--filet-2); font-size: 15px; align-items: center; }
.iptv-cmp__row > :first-child { color: var(--encre-2); }
.iptv-cmp__row > :not(:first-child) { display: flex; align-items: center; justify-content: center; min-width: 0; padding: 0 6px; font-size: 14px; line-height: 1.35; color: var(--encre-3); text-align: center; }
.iptv-cmp__head { padding: 22px 32px; background: #f3f2ef; font-family: var(--f-titre); font-size: 15px; font-weight: 600; border-top: 0; border-bottom: 1px solid var(--bord-2); }
.iptv-cmp__head > :first-child { color: var(--attenue); font-family: var(--f-texte); font-size: 12px; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; }
.iptv-cmp__head > :not(:first-child) { font-size: 15px; color: var(--encre); }
.iptv-cmp__head + .iptv-cmp__row { border-top: 0; }
@media (max-width: 559px) { .iptv-cmp__row { padding: 14px 16px; grid-template-columns: 1.4fr 1fr 1fr 1fr; font-size: 14px; } .iptv-cmp__row > :not(:first-child) { font-size: 12px; } }

.iptv-faq--lines { gap: 0; }
.iptv-faq--lines details, .iptv-faq--lines .wp-block-details { background: transparent; border: 0; border-bottom: 1px solid var(--filet-2); border-radius: 0; }
.iptv-faq--lines summary { padding: 24px 0; min-height: 0; gap: 24px; font-size: 18px; font-weight: 500; transition: color .18s ease; }
.iptv-faq--lines summary:hover { color: var(--violet); }
.iptv-faq--lines summary::after { content: "+"; font-size: 22px; font-weight: 300; transform: none !important; }
.iptv-faq--lines details[open] summary::after { content: "−"; }
.iptv-faq--lines details > :not(summary) { padding: 0 60px 0 0; margin-top: -6px; line-height: 1.75; }
.iptv-faq--lines details > :last-child { padding-bottom: 26px; }
.iptv-link-arrow { font-family: var(--f-titre); font-size: 15px; font-weight: 500; display: inline-flex; align-items: center; gap: 8px; transition: gap .18s ease; margin-top: 6px; }
.iptv-link-arrow:hover { gap: 12px; }

.iptv-ask { background: var(--nuit); margin-top: 104px; }
.iptv-ask__in { max-width: var(--container-outer); margin: 0 auto; box-sizing: border-box; padding: clamp(60px,7.4vw,96px) var(--gutter); }
.iptv-ask__box { text-align: center; display: flex; flex-direction: column; align-items: center; gap: 22px; }
.iptv-ask__box h2 { color: #fff; }
.iptv-ask__box p { font-size: 18px; line-height: 1.6; color: var(--sur-nuit-2); margin: 0; max-width: 520px; }
.iptv-ask .iptv-btn--light { font-size: 17px; border-radius: 14px; padding: 18px 38px; margin-top: 6px; min-height: 0; }
.iptv-ask .iptv-trust-line { gap: 6px 14px; font-size: 13px; color: var(--attenue); margin-top: 10px; }

/* ==========================================================================
   23. ConversionBand
   ========================================================================== */
.iptv-cb__reviews { padding-top: clamp(56px,7vw,96px); display: flex; flex-direction: column; gap: 24px; }
.iptv-cb__head { display: flex; align-items: end; justify-content: space-between; gap: 20px; flex-wrap: wrap; }
.iptv-cb__h2 { font-size: clamp(28px,3.6vw,46px); line-height: 1.04; letter-spacing: -0.038em; }
.iptv-cb__all { font-family: var(--f-titre); font-size: 15px; font-weight: 800; white-space: nowrap; }
.iptv-cb__review { background: #fff; border: 1px solid var(--bord-2); border-radius: 22px; padding: 22px 24px; display: flex; flex-direction: column; gap: 12px; }
.iptv-cb__review p { margin: 0; font-size: 15px; line-height: 1.65; color: var(--encre-2); font-style: italic; }
.iptv-cb__review-top, .iptv-cb__review-foot { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.iptv-cb__review-foot { margin-top: auto; }
.iptv-cb__review-foot strong { font-family: var(--f-titre); font-size: 15px; font-weight: 800; }
.iptv-cb__device { font-size: 12px; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; color: var(--encre); background: #f4f6fb; border-radius: 999px; padding: 6px 10px; }
.iptv-cb__stars { font-size: 12px; font-weight: 700; color: var(--attenue); }
.iptv-cb__outcome { font-size: 12px; font-weight: 700; color: var(--succes-texte); background: var(--succes-fond); border: 1px solid var(--succes-bord); border-radius: 999px; padding: 5px 9px; white-space: nowrap; }
.iptv-cb__cta-wrap { padding-block: clamp(48px,6vw,80px) clamp(56px,7vw,96px); }
.iptv-cb__cta { position: relative; overflow: hidden; background: linear-gradient(150deg,#12307a 0%,#0d1230 62%); color: #fff; border-radius: var(--r-xl); padding: clamp(28px,4vw,48px); display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%,300px),1fr)); gap: clamp(24px,4vw,44px); align-items: center; box-shadow: 0 40px 90px rgba(13,18,48,0.28); }
.iptv-cb__free { display: inline-flex; align-items: center; gap: 8px; align-self: flex-start; font-size: 12px; font-weight: 800; letter-spacing: .18em; text-transform: uppercase; color: var(--nuit); background: linear-gradient(90deg,#FFC94A,#FF9A2E); border-radius: 999px; padding: 7px 12px; }
.iptv-cb__title { font-family: var(--f-titre); font-size: clamp(30px,4vw,52px); font-weight: 800; line-height: 1; letter-spacing: -0.045em; color: #fff; }
.iptv-cb__cta p { font-size: 16px; line-height: 1.65; color: var(--sur-nuit); margin: 0; max-width: 520px; }
.iptv-cb__btn { font-size: 17px; border-radius: 16px; padding: 17px 26px; min-height: 0; }
.iptv-cb__btn.iptv-btn--light { box-shadow: 0 0 0 3px rgba(255,46,136,0.9), 0 18px 40px rgba(0,0,0,0.3); }
.iptv-cb__btn--ghost { color: #fff; background: rgba(255,255,255,0.08); border: 1px solid rgba(255,255,255,0.22); padding: 16px 24px; }
.iptv-cb__btn--ghost:hover { background: rgba(255,255,255,0.14); color: #fff; }
.iptv-cb__moment { display: flex; align-items: center; justify-content: space-between; gap: 10px; background: rgba(255,255,255,0.07); border: 1px solid rgba(255,255,255,0.12); border-radius: 18px; padding: 16px 18px; }
.iptv-cb__moment > span:first-child { display: flex; flex-direction: column; gap: 2px; }
.iptv-cb__moment strong { font-family: var(--f-titre); font-size: 16px; font-weight: 800; line-height: 1.2; }
.iptv-cb__k { font-size: 11px; font-weight: 700; letter-spacing: .16em; text-transform: uppercase; color: var(--violet-nuit); }
.iptv-cb__clock { font-family: var(--f-titre); font-size: 22px; font-weight: 800; letter-spacing: -0.02em; white-space: nowrap; }
.iptv-cb__facts { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 10px; }
.iptv-cb__facts > span { display: flex; flex-direction: column; gap: 3px; background: rgba(255,255,255,0.07); border: 1px solid rgba(255,255,255,0.12); border-radius: 14px; padding: 12px 14px; }
.iptv-cb__facts .iptv-cb__k { letter-spacing: .14em; }
.iptv-cb__facts strong { font-family: var(--f-titre); font-size: 15px; font-weight: 800; }
.iptv-cb__fine { font-size: 13px; line-height: 1.55; color: var(--sur-nuit-2); }
.iptv-cb__bar { position: fixed; left: 12px; right: 12px; bottom: 12px; z-index: 60; display: flex; gap: 8px; background: rgba(255,255,255,0.92); -webkit-backdrop-filter: blur(16px); backdrop-filter: blur(16px); border: 1px solid var(--bord); border-radius: 18px; padding: 8px; box-shadow: 0 18px 50px rgba(13,18,48,0.18); animation: uxRise .4s var(--ease); }
.iptv-cb__bar[hidden] { display: none; }
.iptv-cb__bar a { display: flex; align-items: center; justify-content: center; gap: 8px; font-family: var(--f-titre); font-size: 15px; font-weight: 800; border-radius: 12px; min-height: 48px; white-space: nowrap; }
.iptv-cb__bar-trial { flex: 1; color: var(--nuit); background: #f4f6fb; border: 1px solid var(--bord-2); }
.iptv-cb__bar-offers { flex: 1.2; color: #fff; background: var(--ambre); box-shadow: 0 10px 24px rgba(196,83,10,0.28); }
.iptv-cb__bar-offers:hover { color: #fff; }
.iptv-cb__bar-offers span { font-size: 12px; font-weight: 700; background: rgba(255,255,255,0.18); border-radius: 999px; padding: 3px 7px; }
.has-cb-bar .iptv-buybar { display: none; }

/* Barre d'achat « pages » (blanche, pleine largeur) */
.iptv-buybar--page {
	left: 0; right: 0; bottom: 0; max-width: none; border-radius: 0; padding: 0; display: block;
	background: #fff; color: var(--encre); border: 0; border-top: 1px solid var(--bord-2); box-shadow: 0 -14px 50px rgba(13,18,48,0.10);
	-webkit-backdrop-filter: none; backdrop-filter: none;
}
.iptv-buybar__in { max-width: var(--container-outer); margin: 0 auto; box-sizing: border-box; padding: 14px var(--gutter); display: flex; align-items: center; gap: 22px; flex-wrap: wrap; }
.iptv-buybar__from { display: flex; align-items: baseline; gap: 7px; flex-shrink: 0; font-size: 14px; color: var(--encre-3); white-space: nowrap; }
.iptv-buybar__from > span:first-child { color: var(--attenue); }
.iptv-buybar__from strong { font-family: var(--f-titre); font-size: 21px; font-weight: 800; color: var(--encre); }
.iptv-buybar__pitch { font-size: 14px; color: var(--encre-3); flex: 1; min-width: 180px; }
.iptv-buybar__acts { display: flex; align-items: center; gap: 14px; flex-shrink: 0; }
.iptv-buybar__trial { font-size: 15px; font-weight: 500; color: var(--encre-3); }
.iptv-buybar__trial:hover { color: var(--violet); }
.iptv-buybar--page .iptv-btn { font-size: 15px; border-radius: 12px; padding: 13px 24px; }
@media (max-width: 519px) {
	.iptv-buybar__plan, .iptv-buybar__pitch, .iptv-buybar__trial { display: none; }
	.iptv-buybar__in { justify-content: space-between; flex-wrap: nowrap; }
}

/* ==========================================================================
   24. Fiche produit
   ========================================================================== */
.iptv-eyebrow--mag::before { background: var(--magenta); }
.iptv-eyebrow--spectre::before { display: block; background: var(--spectre); }
.iptv-hl { position: relative; display: inline-block; white-space: nowrap; }
.iptv-hl::after { content: ""; position: absolute; left: 0; right: 0; bottom: .05em; height: .13em; background: var(--magenta); opacity: .35; border-radius: 999px; mix-blend-mode: multiply; }
.iptv-product__hero { border-bottom: 1px solid var(--filet-2); }
.iptv-product__hero-in { max-width: var(--container-outer); margin: 0 auto; box-sizing: border-box; padding: 28px var(--gutter) clamp(45px,5.5vw,72px); }
.iptv-product__hero .iptv-fil { margin-bottom: 32px; }
.iptv-product__lead { font-size: 18px; line-height: 1.6; color: var(--encre-3); margin: 0; }
.iptv-tag { font-size: 12px; font-weight: 600; color: var(--encre-2); background: #fff; border: 1px solid var(--bord); border-radius: 999px; padding: 7px 13px; white-space: nowrap; }

/* Scène : boîte 3D + 1 à 3 écrans (README « Scène 3D des écrans ») */
@keyframes boxFloat { 0%,100% { transform: rotateY(24deg) rotateX(3deg) translateY(0); } 50% { transform: rotateY(24deg) rotateX(3deg) translateY(-6px); } }
.iptv-scene { position: relative; margin: 0; overflow: hidden; border-radius: var(--r-card); background: linear-gradient(160deg,#16357f 0%,#0b1a45 55%,#060d24 100%); color: #fff; padding: clamp(20px,2.6vw,30px); display: flex; flex-direction: column; gap: 22px; box-shadow: 0 40px 90px rgba(10,12,24,0.35), inset 0 0 0 1px rgba(255,255,255,0.08); }
.iptv-scene__stripe { position: absolute; left: 0; right: 0; top: 0; height: 4px; background: var(--spectre); }
.iptv-scene__head { position: relative; display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; flex-wrap: wrap; }
.iptv-scene__k { font-size: 12px; font-weight: 700; letter-spacing: .22em; text-transform: uppercase; color: #dfe9ff; }
.iptv-scene__name { font-family: var(--f-titre); font-size: clamp(40px,4.8vw,64px); font-weight: 800; line-height: .9; letter-spacing: -0.05em; background: var(--spectre); -webkit-background-clip: text; background-clip: text; color: transparent; }
.iptv-scene__q { font-size: 11px; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; color: var(--nuit); background: linear-gradient(100deg,#5B2EFF,#FF2E88); border-radius: 999px; padding: 7px 13px; white-space: nowrap; }
.iptv-scene__row { display: flex; align-items: flex-end; gap: clamp(12px,3%,22px); }
.iptv-scene__box-wrap { flex: 0 0 auto; width: clamp(104px,21%,144px); perspective: 900px; align-self: flex-end; margin-bottom: 14px; }
.iptv-scene__box { position: relative; aspect-ratio: 3/4; transform-style: preserve-3d; transform: rotateY(24deg) rotateX(3deg); animation: boxFloat 7s ease-in-out infinite; animation-delay: -2s; }
.iptv-scene__spine { position: absolute; top: 0; bottom: 0; left: 0; width: 26px; transform-origin: 100% 50%; transform: rotateY(-90deg); background: linear-gradient(180deg,#1c2044,#0a0c18); display: flex; align-items: center; justify-content: center; overflow: hidden; border-radius: 3px 0 0 3px; }
.iptv-scene__spine span { writing-mode: vertical-rl; transform: rotate(180deg); font-size: 8px; font-weight: 800; letter-spacing: .22em; text-transform: uppercase; color: #9aa2cf; white-space: nowrap; }
.iptv-scene__face { position: absolute; inset: 0; border-radius: 5px; overflow: hidden; background: linear-gradient(170deg,#161a3d 0%,#0d1230 55%,#070915 100%); box-shadow: inset 0 0 0 1px rgba(255,255,255,0.08), 12px 24px 40px rgba(0,0,0,0.5); display: flex; flex-direction: column; padding: 9px 9px 8px; gap: 6px; }
.iptv-scene__tint { position: absolute; inset: 0; background: linear-gradient(135deg,#5B2EFF,#FF2E88); opacity: .16; mix-blend-mode: screen; pointer-events: none; }
.iptv-scene__brand { position: relative; display: flex; align-items: center; gap: 4px; font-size: 7.5px; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; color: #dfe9ff; }
.iptv-scene__brand span { width: 10px; height: 10px; border-radius: 3px; background: linear-gradient(135deg,#5B2EFF,#FF2E88); }
.iptv-scene__seal { position: relative; align-self: center; margin-top: 2px; width: 54px; height: 54px; border-radius: 50%; background: linear-gradient(135deg, var(--accent), #FF2E88); display: flex; flex-direction: column; align-items: center; justify-content: center; box-shadow: 0 8px 20px rgba(0,0,0,0.45), inset 0 0 0 3px rgba(255,255,255,0.22); color: var(--nuit); text-align: center; }
.iptv-scene__seal strong { font-family: var(--f-titre); font-size: 11px; font-weight: 800; line-height: 1; letter-spacing: -0.03em; }
.iptv-scene__seal span { font-size: 5.5px; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; }
.iptv-scene__title { position: relative; text-align: center; }
.iptv-scene__title span { display: block; font-size: 7px; font-weight: 700; letter-spacing: .2em; text-transform: uppercase; color: #9aa2cf; }
.iptv-scene__title strong { display: block; font-family: var(--f-titre); font-size: 19px; font-weight: 800; line-height: 1; letter-spacing: -0.04em; }
.iptv-scene__shot { position: relative; margin-top: auto; border-radius: 4px; overflow: hidden; aspect-ratio: 16/9; box-shadow: 0 0 0 1px rgba(255,255,255,0.12); }
.iptv-scene__shot img { width: 100%; height: 100%; object-fit: cover; display: block; }
.iptv-scene__foot { position: relative; font-size: 6.5px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: #dfe9ff; text-align: center; }
.iptv-scene__ground { position: absolute; left: -10%; right: -10%; bottom: -14px; height: 22px; border-radius: 50%; background: radial-gradient(ellipse at center, rgba(0,0,0,0.55), rgba(0,0,0,0) 70%); transform: translateZ(-30px); }
.iptv-scene__stage { flex: 1 1 0; min-width: 0; position: relative; perspective: 1400px; perspective-origin: 50% 30%; min-height: clamp(160px,17vw,230px); padding-top: 10px; display: flex; flex-direction: column; justify-content: flex-end; }
.iptv-scene__tvs { --rx: 0deg; --ry: 0deg; position: relative; transform-style: preserve-3d; transition: transform .5s var(--ease); transform: rotateX(var(--rx)) rotateY(var(--ry)); }
.iptv-scene__row3 { position: relative; display: flex; align-items: flex-end; justify-content: center; transform-style: preserve-3d; animation: tvFloat 7s ease-in-out infinite; }
.iptv-scene__halo { position: absolute; left: 8%; right: 8%; bottom: -22px; height: 44px; border-radius: 50%; background: radial-gradient(ellipse at 50% 50%, rgba(91,46,255,0.45), rgba(255,46,136,0.18) 45%, transparent 75%); transform: translateZ(-80px); pointer-events: none; }
.iptv-tv3 { flex: 0 1 auto; min-width: 0; transition: all .55s var(--ease); transform-style: preserve-3d; }
.iptv-tv3--2, .iptv-tv3--3 { overflow: hidden; width: 0; opacity: 0; transform: translateY(16px) translateZ(-120px); transform-origin: 0% 50%; }
.iptv-tv3--1 { width: 100%; transform-origin: 100% 50%; }
[data-devices="2"] .iptv-tv3--1 { width: 60%; transform: translateZ(-30px) rotateY(16deg); }
[data-devices="2"] .iptv-tv3--2 { width: 60%; opacity: 1; transform: translateZ(-30px) rotateY(-16deg); }
[data-devices="3"] .iptv-tv3--1 { width: 48%; transform: translateZ(-90px) rotateY(28deg); }
[data-devices="3"] .iptv-tv3--2 { width: 50%; opacity: 1; transform: translateZ(40px); z-index: 2; }
[data-devices="3"] .iptv-tv3--3 { width: 48%; opacity: 1; transform: translateZ(-90px) rotateY(-28deg); }
.iptv-tv3__bezel { position: relative; background: var(--spectre); border-radius: 16px; padding: 2px; box-shadow: 0 20px 40px rgba(0,0,0,0.55); }
.iptv-tv3__panel { position: relative; background: #050608; border-radius: 14px; padding: 5px; }
.iptv-tv3__screen { position: relative; border-radius: 6px; overflow: hidden; aspect-ratio: 16/9; background: #0A0C11; }
.iptv-tv3__screen img { width: 100%; height: 100%; object-fit: cover; display: block; }
.iptv-tv3__foot { width: 26%; height: 7px; margin: 0 auto; background: linear-gradient(180deg,#050608,#1d1f26); border-radius: 0 0 5px 5px; }
.iptv-tv3__label { display: block; text-align: center; margin-top: 6px; font-size: 11px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: #dfe9ff; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.iptv-scene__cap { position: relative; display: flex; align-items: center; justify-content: space-between; gap: 10px 16px; flex-wrap: wrap; border-top: 1px dashed rgba(255,255,255,0.18); padding-top: 16px; }
.iptv-scene__cap strong { font-family: var(--f-titre); font-size: 20px; font-weight: 800; }
.iptv-scene__cap span { font-size: 13px; color: #dfe9ff; }
@media (prefers-reduced-motion: reduce) { .iptv-scene__box, .iptv-scene__row3 { animation: none !important; } }

/* Carte d'achat */
.iptv-buy { background: #fff; border: 1px solid var(--bord); border-radius: var(--r-card); padding: 28px; display: flex; flex-direction: column; gap: 20px; box-shadow: 0 22px 57px rgba(13,18,48,0.07); }
.iptv-buy__k { font-size: 12px; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: var(--attenue); }
.iptv-seg--left { justify-content: flex-start; background: var(--craie); border-color: var(--bord); border-radius: 14px; }
.iptv-seg--left .iptv-seg__btn { font-weight: 700; border-radius: 14px; }
.iptv-buy__fixed { display: inline-flex; align-self: flex-start; align-items: center; gap: 8px; font-size: 14px; font-weight: 700; color: var(--encre); background: #f3f2ef; border: 1px solid var(--bord-2); border-radius: 14px; padding: 12px 18px; min-height: 44px; box-sizing: border-box; white-space: nowrap; }
.iptv-buy__fixed i { width: 7px; height: 7px; border-radius: 50%; background: var(--magenta); }
.iptv-buy__has, .iptv-buy__none, .iptv-buy__actions { display: flex; flex-direction: column; gap: 20px; }
.iptv-buy__has[hidden], .iptv-buy__none[hidden], .iptv-buy__actions[hidden] { display: none; }
.iptv-buy__price { font-family: var(--f-titre); font-size: 48px; font-weight: 800; letter-spacing: -0.04em; line-height: 1; white-space: nowrap; }
.iptv-buy__per { font-size: 16px; color: var(--encre-3); white-space: nowrap; }
.iptv-buy__month { font-size: 15px; font-weight: 700; color: var(--violet); }
.iptv-buy__vat { font-size: 13px; color: var(--attenue); }
.iptv-buy__bonus { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 8px; margin-top: 4px; padding: 8px 12px; font-size: 14px; color: #0f6b48; background: #e9f6ef; border: 1px solid #bfe3cf; border-radius: 12px; }
.iptv-buy__bonus strong { font-weight: 800; }
.iptv-buy__bonus[hidden] { display: none; }
.iptv-buy__incl { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; font-size: 14px; color: var(--encre-2); }
.iptv-buy__incl li { display: flex; align-items: flex-start; gap: 9px; }
.iptv-buy__incl svg { flex-shrink: 0; margin-top: 2px; }
.iptv-buy__stock { display: flex; align-items: center; gap: 9px; font-size: 14px; color: var(--succes-texte); font-weight: 600; }
.iptv-buy__stock i { width: 8px; height: 8px; border-radius: 50%; background: var(--succes); }
.iptv-buy .iptv-btn--lg { border-radius: 14px; min-height: 56px; }
.iptv-buy__later { font: 700 14px var(--f-texte); color: var(--violet); background: transparent; border: 0; padding: 6px; min-height: 44px; cursor: pointer; text-decoration: underline; text-underline-offset: 3px; margin-top: -8px; }
.iptv-buy__later:hover { color: #3b2a8f; }
.iptv-buy__reass { display: flex; flex-wrap: wrap; justify-content: center; font-size: 13px; color: var(--attenue); gap: 6px 16px; margin-top: -8px; }
.iptv-buy__added { background: var(--succes-fond); border: 1px solid var(--succes-bord); border-radius: 14px; padding: 18px; display: flex; flex-direction: column; gap: 12px; }
.iptv-buy__added[hidden] { display: none; }
.iptv-buy__added strong { font-family: var(--f-titre); font-size: 16px; font-weight: 800; color: var(--succes-texte); }
.iptv-buy__added > span { font-size: 14px; line-height: 1.55; color: var(--encre-2); }
.iptv-buy__cartbtn { font-size: 15px; color: var(--nuit); background: #fff; border-radius: 14px; padding: 14px 22px; min-height: 0; box-shadow: 0 10px 26px rgba(255,46,136,0.30); }
.iptv-buy__cartbtn:hover { background: var(--lavande); color: var(--nuit); }
.iptv-buy__edit { font: 600 14px var(--f-texte); color: var(--encre-3); background: transparent; border: 0; cursor: pointer; }
.iptv-buy__note { background: var(--craie); border: 1px dashed var(--bord-fort); border-radius: 14px; padding: 18px; font-size: 15px; line-height: 1.55; color: var(--encre-3); }
.iptv-buy__ask { background: var(--spectre); color: var(--nuit); border-radius: 14px; padding: 16px 26px; }
.iptv-buy__ask:hover { background: var(--lavande); color: var(--nuit); }

/* Coût réel + compatibilité */
.iptv-calc { background: linear-gradient(155deg,#12307a 0%,#0d1230 70%); color: #fff; border-radius: var(--r-card); padding: clamp(24px,3vw,34px); display: flex; flex-direction: column; gap: 14px; }
.iptv-calc__k { font-size: 12px; font-weight: 700; letter-spacing: .2em; text-transform: uppercase; color: var(--violet-nuit); }
.iptv-calc__h { font-family: var(--f-titre); font-size: clamp(30px,3.8vw,48px); font-weight: 800; line-height: 1.05; letter-spacing: -0.035em; margin: 0; }
.iptv-calc .iptv-calc__h { color: #fff; }
.iptv-calc__line { font-size: 16px; line-height: 1.6; color: var(--sur-nuit); }
.iptv-calc__grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 8px; margin-top: 6px; }
.iptv-calc__grid > span { display: flex; flex-direction: column; gap: 3px; background: rgba(255,255,255,0.06); border: 1px solid rgba(255,255,255,0.12); border-radius: 14px; padding: 12px; }
.iptv-calc__grid > span > span { font-size: 11px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: var(--sur-nuit-2); }
.iptv-calc__grid strong { font-family: var(--f-titre); font-size: 18px; font-weight: 800; }
.iptv-chk { background: #fff; border: 1px solid var(--bord); border-radius: var(--r-card); padding: clamp(24px,3vw,34px); display: flex; flex-direction: column; gap: 14px; }
.iptv-chk__list { display: flex; flex-wrap: wrap; gap: 8px; }
.iptv-chk__btn { font: 700 14px var(--f-texte); border-radius: 999px; padding: 10px 16px; min-height: 44px; cursor: pointer; transition: all .2s ease; background: #fff; color: var(--encre-3); border: 1px solid var(--bord); }
/* Écart maquette : texte nuit (et non blanc) sur magenta, pour un contraste AA (5,6:1 au lieu de 3,3:1). */
.iptv-chk__btn[aria-checked="true"] { background: var(--magenta); color: var(--nuit); border-color: var(--violet); }
.iptv-chk__res { display: flex; align-items: center; gap: 12px; background: #eaf1fd; border-radius: 14px; padding: 14px 16px; font-size: 15px; line-height: 1.55; color: var(--encre-2); }
.iptv-chk__ok { display: flex; align-items: center; justify-content: center; width: 36px; height: 36px; flex-shrink: 0; border-radius: 14px; background: #fff; color: var(--violet); font-weight: 800; }
.iptv-chk__buy { font-family: var(--f-titre); font-size: 16px; font-weight: 800; color: var(--nuit); background: var(--magenta); border-radius: 14px; padding: 14px 22px; min-height: 48px; box-sizing: border-box; display: inline-flex; align-items: center; white-space: nowrap; }
.iptv-chk__buy:hover { color: var(--nuit); background: var(--magenta-hover); }
.iptv-chk__toggle { font: 700 14px var(--f-texte); color: var(--violet); background: transparent; border: 0; padding: 10px 0; min-height: 44px; cursor: pointer; }
.iptv-chk__steps { margin: 0; padding: 14px 16px 14px 34px; display: flex; flex-direction: column; gap: 8px; background: var(--craie); border: 1px solid var(--bord); border-radius: 14px; font-size: 15px; line-height: 1.55; color: var(--encre-2); }
.iptv-chk__steps[hidden] { display: none; }

/* De la commande au canapé */
.iptv-after { background: #eef3fc; margin-top: clamp(64px,8vw,104px); }
.iptv-after__in { padding-block: clamp(64px,8vw,104px); }
.iptv-after__step { display: flex; flex-direction: column; gap: 10px; background: #fff; border: 1px solid var(--bord); border-top: 3px solid var(--violet); border-radius: var(--r-card); padding: 24px; box-shadow: 0 14px 34px rgba(13,18,48,0.05); }
.iptv-after__n { display: flex; align-items: center; justify-content: center; width: 40px; height: 40px; border-radius: 14px; background: linear-gradient(140deg,#5B2EFF,#0f2350); color: #fff; box-shadow: 0 8px 18px rgba(13,18,48,0.18); font-family: var(--f-titre); font-size: 17px; font-weight: 800; }
.iptv-after__step strong { font-family: var(--f-titre); font-size: 19px; font-weight: 800; }
.iptv-after__step > span:last-child { font-size: 15px; line-height: 1.6; color: var(--encre-3); }

/* Onglets */
.iptv-ptabs__bar { display: flex; gap: 8px; flex-wrap: wrap; border-bottom: 1px solid var(--bord-2); margin-bottom: 32px; }
.iptv-ptabs__bar [role="tab"] { font: 800 16px var(--f-titre); border: 0; border-bottom: 3px solid transparent; background: transparent; padding: 14px 18px; cursor: pointer; color: var(--attenue); transition: all .18s ease; }
.iptv-ptabs__bar [aria-selected="true"] { color: var(--violet); border-bottom-color: var(--violet); }
.iptv-ptabs [role="tabpanel"][hidden] { display: none; }
.iptv-ptabs__desc { max-width: 780px; display: flex; flex-direction: column; gap: 18px; }
.iptv-ptabs__desc .iptv-eyebrow { margin-bottom: 12px; }
.iptv-ptabs__desc p { font-size: 17px; line-height: 1.7; color: var(--encre-3); margin: 0; }
.iptv-spec { background: #fff; border: 1px solid var(--bord); border-radius: var(--r-card); padding: 22px; }
.iptv-spec > div:first-child { font-size: 12px; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: var(--attenue); margin-bottom: 8px; }
.iptv-spec > div:last-child { font-size: 16px; font-weight: 600; color: var(--encre); }
.iptv-faq--card { gap: 12px; }
.iptv-faq--card details { border-radius: var(--r-card); }
.iptv-faq--card summary::after { font-size: 20px; transform: none !important; }
.iptv-faq--card details[open] summary::after { content: "−"; }
.iptv-faq--card details > p { padding: 0 24px 22px; margin: 0; }

/* Prêt à regarder */
.iptv-ready { position: relative; overflow: hidden; background: linear-gradient(150deg,#5B2EFF -30%,#0f2350 70%); border-radius: var(--r-xl); padding: clamp(28px,4vw,48px); display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%,340px),1fr)); gap: clamp(24px,4vw,44px); align-items: center; color: #fff; }
.iptv-ready__list { display: flex; flex-wrap: wrap; gap: 8px 18px; font-size: 15px; color: #e6e9f5; }
.iptv-ready__btn { font-size: 17px; border-radius: 14px; padding: 18px 30px; min-height: 56px; }
.iptv-ready__btn2 { font-size: 16px; border-radius: 14px; padding: 17px 24px; min-height: 56px; border-color: rgba(255,255,255,0.32); }
.iptv-ready__btn2:hover { background: rgba(255,255,255,0.10); }
.iptv-ready__tv > div { background: #0a0c12; border-radius: 16px; padding: 7px; box-shadow: 0 30px 60px rgba(0,0,0,0.45); }
.iptv-ready__tv img { display: block; width: 100%; height: auto; aspect-ratio: 16/9; object-fit: cover; border-radius: 10px; }
.iptv-ready__tv i { display: block; width: 24%; height: 7px; margin: 0 auto; background: #0a0c12; border-radius: 0 0 8px 8px; }

/* Autres formules */
.iptv-other { --og: linear-gradient(160deg, var(--oc) -40%, #0d1230 75%); background: #fff; border: 1px solid var(--bord); border-radius: var(--r-card); overflow: hidden; display: flex; flex-direction: column; color: var(--encre); transition: transform .25s var(--ease), box-shadow .25s ease, border-color .25s ease; }
.iptv-other[data-other="adulte"] { --og: linear-gradient(160deg,#b8285f -40%,#3a0c20 75%); }
.iptv-other[data-other="vip"] { --og: linear-gradient(160deg,#5B2EFF -40%,#1a1206 75%); }
.iptv-other:hover { border-color: var(--oc); transform: translateY(-4px); box-shadow: 0 22px 57px rgba(13,18,48,0.10); color: var(--encre); }
.iptv-other__visual { position: relative; background: var(--og); padding: 22px 22px 18px; }
.iptv-other__img { border-radius: 14px; overflow: hidden; aspect-ratio: 1; box-shadow: 0 14px 30px rgba(0,0,0,0.35); }
.iptv-other__img img { display: block; width: 100%; height: 100%; object-fit: cover; }
.iptv-other__tag { position: absolute; top: 12px; right: 12px; font-size: 11px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: #fff; background: var(--oc); border: 1px solid rgba(255,255,255,0.35); border-radius: 999px; padding: 5px 11px; white-space: nowrap; }
.iptv-other[data-other="vip"] .iptv-other__tag { background: var(--nuit); }
.iptv-other__body { padding: 22px 24px 24px; display: flex; flex-direction: column; gap: 8px; flex: 1; }
.iptv-other__top { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; flex-wrap: wrap; }
.iptv-other__top strong { font-family: var(--f-titre); font-size: 22px; font-weight: 800; letter-spacing: -0.02em; }
.iptv-other__top span { font-size: 14px; font-weight: 700; color: var(--oc); white-space: nowrap; }
.iptv-other__sub { font-size: 14px; line-height: 1.55; color: var(--encre-3); }
.iptv-other__go { margin-top: auto; padding-top: 8px; display: inline-flex; align-items: center; gap: 6px; font-size: 14px; font-weight: 700; color: var(--oc); }

.iptv-ask--product { margin-top: clamp(64px,8vw,104px); }
.iptv-ask__buy { font-size: 17px; color: var(--nuit); background: #fff; border-radius: 14px; padding: 18px 30px; box-shadow: 0 14px 36px rgba(255,46,136,0.30); margin-top: 6px; min-height: 0; }
.iptv-ask__buy:hover { background: var(--lavande); color: var(--nuit); }
.iptv-ask__sup { font-size: 16px; border-radius: 14px; padding: 17px 26px; margin-top: 6px; min-height: 0; border-color: rgba(255,255,255,0.32); }
.iptv-ask__sup:hover { background: rgba(255,255,255,0.10); }
.iptv-buybar--product .iptv-buybar__from strong { white-space: nowrap; }
.iptv-buybar--product .iptv-btn--nuit { border-radius: 14px; padding: 14px 22px; min-height: 48px; box-shadow: 0 6px 20px rgba(13,18,48,0.28); }
.iptv-other[data-other="standard"] { --og: linear-gradient(160deg,#5B2EFF -40%,#0f2350 75%); }

/* Gammes Adulte et VIP (Produit-Adulte / Produit-VIP.dc.html). Standard n'a pas de modificateur : rendu inchangé.
   --pa accent · --pa-bar trait des sur-titres · --pa-soft textes clairs de la scène · --pa-deep fond sombre des dégradés */
.iptv-product--adulte {
	--pa: #b8285f; --pa-hover: #931c4a; --pa-bar: #b8285f; --pa-soft: #ffe3ee; --pa-deep: #3a0c20;
	--pa-scene: linear-gradient(160deg,#5a1236 0%,#2c0a22 55%,#140512 100%);
	--pa-stripe: linear-gradient(100deg,#ffb3cf,#ff5c93,#ffb3cf);
	--pa-name: linear-gradient(100deg,#ffb3cf 0%,#ff5c93 50%,#ffb3cf 100%);
	--pa-q: linear-gradient(100deg,#ffb3cf,#ff5c93);
	--pa-box: linear-gradient(135deg,#b8285f,#FF2E88);
	--pa-res: #fcebf2; --pa-after: #fcedf2;
}
.iptv-product--vip {
	--pa: #5B2EFF; --pa-hover: #1a2040; --pa-bar: #0d1230; --pa-soft: #fff2d6; --pa-deep: #1a1206;
	--pa-scene: linear-gradient(160deg,#3a2808 0%,#1d1405 55%,#0b0803 100%);
	--pa-stripe: linear-gradient(100deg,#FFE08A,#FF2E88,#FFE08A);
	--pa-name: linear-gradient(100deg,#FFE08A 0%,#FF2E88 50%,#FFE08A 100%);
	--pa-q: linear-gradient(100deg,#FFE08A,#FF2E88);
	--pa-box: linear-gradient(135deg,#FFC94A,#FF7A0F);
	--pa-res: #fff4e6; --pa-after: #fff4e8;
}
.iptv-product--gamme .iptv-fil a:hover { color: var(--pa); }
.iptv-product--gamme .iptv-eyebrow--mag { color: var(--pa); }
.iptv-product--gamme .iptv-eyebrow--mag::before { background: var(--pa-bar); }
.iptv-product__kicker { align-self: center; }
.iptv-product--vip .iptv-product__kicker::before { background: var(--spectre); }
.iptv-product__tag { flex-shrink: 0; font-size: 11px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: #fff; background: var(--pa, var(--violet)); border-radius: 999px; padding: 7px 13px; white-space: nowrap; }
.iptv-product--vip .iptv-product__tag { background: linear-gradient(120deg,#5B2EFF 0%,#5B2EFF 45%,#FF2E88 55%,#FF2E88 100%); }
.iptv-product--adulte .iptv-hl::after { background: var(--pa); }
.iptv-product--gamme .iptv-scene { background: var(--pa-scene); }
.iptv-product--gamme .iptv-scene__stripe { background: var(--pa-stripe); }
.iptv-product--gamme .iptv-scene__k, .iptv-product--gamme .iptv-tv3__label, .iptv-product--gamme .iptv-scene__cap span { color: var(--pa-soft); }
.iptv-product--gamme .iptv-scene__name { background-image: var(--pa-name); }
.iptv-product--gamme .iptv-scene__q { background: var(--pa-q); }
.iptv-product--gamme .iptv-scene__tint, .iptv-product--gamme .iptv-scene__brand span, .iptv-product--gamme .iptv-scene__seal { background: var(--pa-box); }
.iptv-product--gamme .iptv-scene__seal strong { font-size: 18px; }
/* VIP : le 3e emplacement invite vers Adulte 3 écrans (grisé, comme la maquette) */
.iptv-product--vip .iptv-tv3--3 { visibility: hidden; transform: translateY(16px); }
.iptv-product--vip [data-devices="3"] .iptv-tv3--3 { visibility: visible; width: 33%; opacity: .4; filter: grayscale(1); transform: translateY(0); }
.iptv-tv3__up { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 6px; text-align: center; aspect-ratio: 16/10; box-sizing: border-box; padding: 10px; border-radius: 14px; border: 2px dashed rgba(255,201,74,0.55); background: rgba(255,201,74,0.08); color: #fff2d6; transition: all .2s ease; overflow: hidden; }
.iptv-tv3__up:hover { background: rgba(255,201,74,0.16); border-color: var(--violet); color: #fff; }
.iptv-tv3__up-plus { display: flex; align-items: center; justify-content: center; width: 34px; height: 34px; flex-shrink: 0; border-radius: 50%; background: var(--violet); color: var(--nuit); font-family: var(--f-titre); font-size: 22px; font-weight: 800; line-height: 1; }
.iptv-tv3__up strong { font-family: var(--f-titre); font-size: 14px; font-weight: 800; line-height: 1.2; }
.iptv-tv3__up small { font-size: 12px; line-height: 1.35; color: #e8d9b8; }
/* Carte d'achat : « Ajouter au panier » en bouton bordé */
.iptv-buy .iptv-buy__later--btn { font: 800 16px var(--f-titre); color: var(--pa); background: #fff; border: 1px solid var(--bord); border-radius: 14px; padding: 16px 26px; min-height: 52px; margin-top: 0; text-decoration: none; transition: all .18s ease; }
.iptv-buy .iptv-buy__later--btn:hover { background: var(--craie); color: var(--pa-hover); }
.iptv-buy .iptv-buy__later--btn ~ .iptv-buy__reass { margin-top: 0; }
/* Compatibilité, étapes, onglets, FAQ, bande « Votre choix » */
.iptv-product--gamme .iptv-chk__res { background: var(--pa-res); }
.iptv-product--gamme .iptv-chk__ok, .iptv-product--gamme .iptv-chk__toggle { color: var(--pa); }
.iptv-product--adulte .iptv-chk__btn[aria-checked="true"] { background: #b8285f; color: #fff; border-color: #b8285f; }
.iptv-product--vip .iptv-chk__btn[aria-checked="true"] { background: var(--nuit); color: #fff; border-color: var(--violet); }
.iptv-product--adulte .iptv-chk__buy { background: #b8285f; color: #fff; }
.iptv-product--adulte .iptv-chk__buy:hover { background: #931c4a; color: #fff; }
.iptv-product--vip .iptv-chk__buy { background: var(--nuit); color: #fff; }
.iptv-product--vip .iptv-chk__buy:hover { background: var(--nuit-hover); color: #fff; }
.iptv-product--gamme .iptv-after { background: var(--pa-after); }
.iptv-product--gamme .iptv-after__step { border-top-color: var(--pa); }
.iptv-product--gamme .iptv-after__n { background: linear-gradient(140deg, var(--pa), var(--pa-deep)); }
.iptv-product--gamme .iptv-ptabs__bar [aria-selected="true"] { color: var(--pa); border-bottom-color: var(--pa); }
.iptv-product--gamme .iptv-faq summary::after { color: var(--pa); }
.iptv-product--gamme .iptv-ready { background: linear-gradient(150deg, var(--pa) -30%, var(--pa-deep) 70%); }
.iptv-product--adulte .iptv-buybar__trial:hover { color: var(--pa); }

/* ==========================================================================
   25. Pages d'achat : étapes, Panier, Commande, Confirmation
   ========================================================================== */
.iptv-steps-nav { max-width: var(--container-outer); margin: 0 auto; padding: 18px var(--gutter) 0; box-sizing: border-box; }
.iptv-steps-nav ol { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 8px; }
.iptv-steps-nav li { display: flex; flex-direction: column; gap: 8px; min-width: 0; }
.iptv-steps-nav li > span:first-child { height: 4px; border-radius: 999px; background: var(--bord); }
.iptv-steps-nav li.is-on > span:first-child { background: var(--spectre); }
.iptv-steps-nav li > span:last-child { font-size: 12px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: #8a90ad; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.iptv-steps-nav li.is-on > span:last-child { color: var(--encre-3); }
.iptv-steps-nav li[aria-current] > span:last-child { font-weight: 800; color: var(--encre); }
.iptv-co-hero { position: relative; overflow-x: clip; background: linear-gradient(180deg,#f3f2ef 0%,#FFFFFF 100%); border-bottom: 1px solid var(--filet-2); }
.iptv-co-hero__in { max-width: var(--container-outer); margin: 0 auto; box-sizing: border-box; padding: 22px var(--gutter) 36px; }
.iptv-co-hero__in--conf { padding: clamp(45px,5.5vw,72px) var(--gutter) clamp(42px,5.2vw,68px); }
.iptv-co-hero .iptv-fil { margin-bottom: 28px; }
.iptv-co-h1 { font-family: var(--f-titre); font-size: clamp(34px,4.4vw,56px); font-weight: 800; line-height: .98; letter-spacing: -0.045em; text-wrap: pretty; }
.iptv-co-lead { font-size: 18px; line-height: 1.65; color: var(--encre-3); margin: 0; max-width: 560px; }
.iptv-co { padding-block: clamp(40px,4.9vw,64px) clamp(64px,8vw,104px); }
.iptv-co__grid { display: grid; grid-template-columns: minmax(0,1.35fr) minmax(320px,.9fr); gap: 36px; align-items: start; }
.iptv-co__main { display: flex; flex-direction: column; gap: 22px; min-width: 0; }
.iptv-co__sum { order: 2; position: sticky; top: 104px; background: #fff; border: 1px solid var(--bord-2); border-radius: var(--r-card); padding: 30px; display: flex; flex-direction: column; gap: 20px; box-shadow: 0 18px 50px rgba(13,18,48,0.06); }
.iptv-co__grid > :not(.iptv-co__sum) { order: 1; }
@media (max-width: 899px) {
	.iptv-co__grid { grid-template-columns: minmax(0,1fr); }
	.iptv-co__sum { order: 0; position: static; padding: 22px; }
}
.iptv-co__sum-t, .iptv-co__form-t { font-family: var(--f-titre); font-size: 19px; font-weight: 800; }
.iptv-co__form-t { font-size: 20px; }
.iptv-co__item { display: flex; align-items: flex-start; gap: 14px; }
.iptv-co__item strong { font-family: var(--f-titre); font-size: 17px; font-weight: 800; }
.iptv-co__item span { font-size: 14px; line-height: 1.5; color: var(--attenue); }
.iptv-co__init { width: 52px; height: 52px; border-radius: 14px; background: linear-gradient(140deg,#5B2EFF,#4a21e0); display: flex; align-items: center; justify-content: center; flex-shrink: 0; font-family: var(--f-titre); font-size: 18px; font-weight: 800; color: var(--violet-nuit); }
.iptv-co__price { font-family: var(--f-titre); font-size: 22px; font-weight: 800; white-space: nowrap; }
.iptv-co__sep { height: 1px; background: var(--filet-2); }
.iptv-co__line { display: flex; justify-content: space-between; gap: 16px; font-size: 15px; color: var(--encre-3); }
.iptv-co__line strong { font-weight: 600; color: var(--encre); white-space: nowrap; }
.iptv-co__line strong.is-ok { color: var(--succes-texte); }
.iptv-co__total { display: flex; justify-content: space-between; align-items: baseline; gap: 16px; }
.iptv-co__total span { font-family: var(--f-titre); font-size: 17px; font-weight: 800; }
.iptv-co__total strong { font-family: var(--f-titre); font-size: 30px; font-weight: 800; letter-spacing: -0.03em; white-space: nowrap; }
.iptv-co__monthly { font-size: 13px; color: var(--attenue); margin-top: -8px; line-height: 1.6; }
.iptv-co__pay { display: flex; align-items: center; gap: 9px; font-size: 13px; line-height: 1.55; color: var(--attenue); }
.iptv-co__pay svg { flex-shrink: 0; }
.iptv-co__edit { display: inline-flex; align-items: center; gap: 8px; align-self: center; font-size: 14px; font-weight: 600; color: var(--encre-3); }
.iptv-co__edit:hover { color: var(--violet); }
.iptv-co__form { background: #fff; border: 1px solid var(--bord-2); border-radius: var(--r-card); padding: 32px; display: flex; flex-direction: column; gap: 22px; box-shadow: 0 18px 50px rgba(13,18,48,0.05); }
@media (max-width: 519px) { .iptv-co__form { padding: 22px; } }
.iptv-co__field { display: flex; flex-direction: column; gap: 7px; }
.iptv-co__label { font-size: 13px; font-weight: 700; color: var(--encre-2); padding: 0; }
.iptv-co__field input, .iptv-co__field select { font: 400 16px var(--f-texte); color: var(--encre); background: #fff; border: 1px solid var(--bord-2); border-radius: 14px; padding: 15px 16px; outline: none; transition: border-color .18s ease, box-shadow .18s ease; width: 100%; box-sizing: border-box; }
.iptv-co__field input:focus, .iptv-co__field select:focus { border-color: var(--violet); box-shadow: 0 0 0 3px rgba(0,63,163,0.14); }
.iptv-co__field.has-err input { border-color: var(--erreur); }
.iptv-co__help { font-size: 13px; line-height: 1.55; color: var(--attenue); }
.iptv-field__err { display: flex; gap: 9px; align-items: flex-start; font-size: 13px; line-height: 1.55; color: #8f2621; }
.iptv-field__err i { width: 7px; height: 7px; border-radius: 50%; background: #b4302a; margin-top: 6px; flex-shrink: 0; }
.iptv-co__devs { border: 0; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 12px; min-width: 0; }
.iptv-seg--co { background: #f3f2ef; border-color: var(--bord-2); }
.iptv-seg__radio { position: relative; }
.iptv-seg__radio input { position: absolute; opacity: 0; inset: 0; margin: 0; cursor: pointer; }
.iptv-seg__radio span { display: inline-flex; align-items: center; font: 700 14px var(--f-texte); border-radius: 10px; padding: 12px 18px; min-height: 44px; box-sizing: border-box; white-space: nowrap; color: var(--encre-3); transition: all .18s ease; }
.iptv-seg__radio input:checked + span { background: #fff; color: var(--encre); box-shadow: 0 2px 8px rgba(13,18,48,0.10); }
.iptv-seg__radio input:focus-visible + span { outline: 2px solid var(--violet); outline-offset: 2px; }
.iptv-co__nocharge { display: flex; gap: 12px; align-items: flex-start; background: #f3f2ef; border: 1px solid var(--bord-2); border-radius: 16px; padding: 18px; font-size: 14px; line-height: 1.6; color: var(--encre-2); }
.iptv-co__nocharge svg { flex-shrink: 0; margin-top: 2px; }
.iptv-co__cgv { display: flex; align-items: flex-start; gap: 14px; cursor: pointer; min-height: 44px; font-size: 14px; line-height: 1.6; color: var(--encre-3); }
.iptv-co__cgv input { width: 22px; height: 22px; margin: 1px 0 0; accent-color: var(--violet); cursor: pointer; flex-shrink: 0; }
.iptv-co__cgv a { font-weight: 600; }
.iptv-co__submit { font-size: 17px; border-radius: 14px; padding: 19px 28px; min-height: 56px; box-shadow: 0 14px 34px rgba(13,18,48,0.28); white-space: normal; }
.iptv-co__submit:hover { transform: translateY(-1px); }
.iptv-co__submit[aria-busy="true"] { opacity: .7; cursor: progress; }
.iptv-co__q { display: flex; align-items: center; justify-content: center; gap: 8px; flex-wrap: wrap; font-size: 13px; line-height: 1.55; color: var(--attenue); text-align: center; }
.iptv-co__q a { font-weight: 700; }
.iptv-co__proofs > div { display: flex; gap: 11px; font-size: 14px; line-height: 1.6; color: var(--encre-3); }
.iptv-co__proofs svg { flex-shrink: 0; }
.iptv-co__empty { background: #fff; border: 1px dashed #d8cdb8; border-radius: var(--r-card); padding: clamp(24px,4vw,40px); display: flex; flex-direction: column; gap: 12px; align-items: flex-start; max-width: 640px; }
.iptv-co__empty strong { font-family: var(--f-titre); font-size: 22px; font-weight: 800; }
.iptv-co__empty span { font-size: 15px; line-height: 1.6; color: var(--encre-3); }
.iptv-link-outline--sm { font-size: 15px; padding: 12px 20px; }

.iptv-conf__ok { display: inline-flex; align-items: center; gap: 11px; align-self: flex-start; background: var(--succes-fond); border: 1px solid var(--succes-bord); border-radius: 999px; padding: 9px 16px; }
.iptv-conf__ok span { font-size: 13px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--succes-texte); }
.iptv-conf { padding-block: clamp(45px,5.5vw,72px) clamp(64px,8vw,104px); }
.iptv-conf__card { background: #fff; border: 1px solid var(--bord-2); border-radius: var(--r-card); padding: 34px; display: flex; flex-direction: column; gap: 26px; box-shadow: 0 18px 50px rgba(13,18,48,0.05); }
@media (max-width: 519px) { .iptv-conf__card { padding: 22px; } }
.iptv-conf__k { font-size: 12px; font-weight: 700; letter-spacing: .18em; text-transform: uppercase; color: var(--violet); }
.iptv-conf__t { font-family: var(--f-titre); font-size: 24px; font-weight: 800; letter-spacing: -0.02em; }
.iptv-conf__steps { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; }
.iptv-conf__steps li { display: flex; gap: 20px; position: relative; }
.iptv-conf__steps li:not(:last-child)::before { content: ""; position: absolute; left: 18px; top: 46px; bottom: 8px; width: 2px; background: var(--bord-2); border-radius: 999px; }
.iptv-conf__steps li > div { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 8px; padding-bottom: 34px; }
.iptv-conf__steps li:last-child > div { padding-bottom: 0; }
.iptv-conf__steps strong { font-family: var(--f-titre); font-size: 19px; font-weight: 800; }
.iptv-conf__steps li > div > span { font-size: 16px; line-height: 1.68; color: var(--encre-3); }
.iptv-conf__n { display: flex; align-items: center; justify-content: center; width: 38px; height: 38px; border-radius: 50%; background: var(--violet); color: #fff; font-family: var(--f-titre); font-size: 15px; font-weight: 800; flex-shrink: 0; }
.iptv-conf__chip { display: inline-flex; align-items: center; gap: 9px; align-self: flex-start; margin-top: 6px; font-size: 14px; font-weight: 600; color: var(--encre-2); background: #f3f2ef; border: 1px solid var(--bord-2); border-radius: 12px; padding: 10px 14px; }
.iptv-conf__recap { background: #fff; border: 1px solid var(--bord-2); border-radius: var(--r-card); padding: 30px; display: flex; flex-direction: column; gap: 18px; box-shadow: 0 18px 50px rgba(13,18,48,0.05); }
.iptv-conf__rt { font-family: var(--f-titre); font-size: 19px; font-weight: 800; }
.iptv-conf__row { display: flex; justify-content: space-between; gap: 20px; padding-bottom: 13px; border-bottom: 1px solid var(--filet-2); flex-wrap: wrap; }
.iptv-conf__row span { font-size: 14px; color: var(--attenue); }
.iptv-conf__row strong { font-size: 15px; font-weight: 600; text-align: right; overflow-wrap: anywhere; }
.iptv-conf__help { background: #f3f2ef; border: 1px solid var(--bord-fort); border-radius: var(--r-card); padding: 28px; display: flex; flex-direction: column; gap: 12px; }
.iptv-conf__help strong { font-family: var(--f-titre); font-size: 17px; font-weight: 800; }
.iptv-conf__help > span { font-size: 15px; line-height: 1.65; color: var(--encre-2); }
.iptv-conf__help a { display: inline-flex; align-items: center; gap: 8px; align-self: flex-start; margin-top: 4px; font-family: var(--f-titre); font-size: 15px; font-weight: 800; }
.iptv-ask .iptv-ask__in > .iptv-trust-line { justify-content: flex-start; }

/* ==========================================================================
   26. Essai gratuit
   ========================================================================== */
.iptv-es-hero { position: relative; overflow: hidden; background: linear-gradient(150deg,#12307a 0%,#0d1230 62%); color: #fff; }
.iptv-es-hero__glow { position: absolute; right: -10%; top: -30%; width: 60vw; max-width: 820px; aspect-ratio: 1; border-radius: 50%; background: radial-gradient(circle, rgba(91,46,255,0.45) 0%, rgba(255,46,136,0.18) 40%, rgba(13,18,48,0) 68%); pointer-events: none; }
.iptv-es-hero__in { position: relative; max-width: var(--container-outer); margin: 0 auto; box-sizing: border-box; padding: clamp(56px,7vw,96px) var(--gutter) clamp(48px,6vw,80px); display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%,420px),1fr)); gap: clamp(32px,5vw,64px); align-items: center; }
.iptv-fil--nuit { margin: 0; color: var(--sur-nuit-2); }
.iptv-fil--nuit a { color: var(--sur-nuit-2); }
.iptv-fil--nuit a:hover { color: var(--violet-nuit); }
.iptv-fil--nuit [aria-current] { color: var(--bord-2); white-space: nowrap; }
.iptv-es-free { display: inline-flex; align-items: center; gap: 8px; align-self: flex-start; font-size: 12px; font-weight: 800; letter-spacing: .18em; text-transform: uppercase; color: var(--nuit); background: linear-gradient(90deg,#FFC94A,#FF9A2E); border-radius: 999px; padding: 7px 12px; }
.iptv-es-free i { width: 7px; height: 7px; border-radius: 50%; background: var(--nuit); }
.iptv-es-h1 { color: #fff; }
.iptv-es-h1 span { background: linear-gradient(90deg,#C9B8FF 0%,#FF9AC5 100%); -webkit-background-clip: text; background-clip: text; color: transparent; }
.iptv-es-lead { font-size: 18px; line-height: 1.65; color: var(--sur-nuit); margin: 0; max-width: 540px; }
.iptv-es-perks { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%,150px),1fr)); gap: 10px; max-width: 560px; }
.iptv-es-perks > span { display: flex; align-items: center; gap: 10px; font-size: 14px; font-weight: 600; background: rgba(255,255,255,0.07); border: 1px solid rgba(255,255,255,0.12); border-radius: 14px; padding: 12px 14px; }
.iptv-es-perks i { flex-shrink: 0; width: 28px; height: 28px; border-radius: 9px; background: linear-gradient(135deg,#5B2EFF,#FF2E88); display: inline-flex; align-items: center; justify-content: center; }
.iptv-es-go { align-self: flex-start; font-size: 17px; border-radius: 16px; padding: 17px 26px; box-shadow: 0 0 0 3px rgba(255,46,136,0.9), 0 18px 40px rgba(0,0,0,0.3); }
.iptv-es-go svg { transform: rotate(180deg); }
.iptv-es-tabs { display: flex; gap: 6px; flex-wrap: wrap; }
.iptv-es-tabs button { font: 800 13px var(--f-titre); border-radius: 999px; padding: 9px 14px; min-height: 40px; cursor: pointer; white-space: nowrap; transition: all .18s; background: rgba(255,255,255,0.06); color: var(--sur-nuit); border: 1px solid rgba(255,255,255,0.16); }
.iptv-es-tabs button[aria-selected="true"] { background: #fff; color: var(--nuit); border-color: #fff; }
.iptv-sim { position: relative; min-height: 340px; display: flex; align-items: center; justify-content: center; perspective: 1400px; }
.iptv-sim__shadow { position: absolute; left: 50%; bottom: 6%; width: 70%; height: 40px; transform: translateX(-50%); border-radius: 50%; background: radial-gradient(ellipse, rgba(0,0,0,0.6), rgba(0,0,0,0) 70%); }
.iptv-sim__frame { position: relative; width: min(100%,520px); aspect-ratio: 16/9; border-radius: 14px; background: #0a0c12; padding: 10px; box-sizing: border-box; box-shadow: 0 50px 100px rgba(0,0,0,0.55), inset 0 0 0 1px rgba(255,255,255,0.12); transform: rotateY(-12deg) rotateX(3deg); transform-style: preserve-3d; transition: all .6s var(--ease); animation: tvFloat 7s ease-in-out infinite; }
.iptv-sim__screen { position: absolute; inset: 10px; overflow: hidden; background: #07060f; border-radius: 6px; }
.iptv-sim__screen img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.iptv-sim__ov { position: absolute; inset: 0; display: flex; flex-direction: column; padding: 18px; }
.iptv-sim__live { display: inline-flex; align-items: center; gap: 7px; font-size: 11px; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; background: rgba(13,18,48,0.75); border: 1px solid rgba(255,255,255,0.18); border-radius: 999px; padding: 6px 10px; align-self: flex-start; }
.iptv-sim__live i { width: 7px; height: 7px; border-radius: 50%; background: #ff3b30; box-shadow: 0 0 0 4px rgba(255,59,48,0.25); }
.iptv-sim__card { margin-top: auto; display: flex; flex-direction: column; gap: 8px; background: rgba(13,18,48,0.86); border: 1px solid rgba(255,255,255,0.14); border-radius: 14px; padding: 12px 14px; }
.iptv-sim__k { font-size: 10px; font-weight: 800; letter-spacing: .16em; text-transform: uppercase; color: var(--violet-nuit); white-space: nowrap; }
.iptv-sim__t { font-family: var(--f-titre); font-size: 15px; font-weight: 800; line-height: 1.2; }
.iptv-sim__dots { display: flex; gap: 4px; }
.iptv-sim__dots i { flex: 1; height: 4px; border-radius: 999px; background: rgba(255,255,255,0.18); transition: background .3s; }
.iptv-sim__dots i.on { background: linear-gradient(90deg,#5B2EFF,#FF2E88); }
.iptv-sim__stand { position: absolute; left: 50%; bottom: -22px; width: 34%; height: 22px; transform: translateX(-50%); background: linear-gradient(180deg,#1a1f3a,#0a0c12); border-radius: 0 0 8px 8px; }
[data-sim="Fire TV"] .iptv-sim__stand { left: auto; right: -18px; top: 40%; bottom: auto; width: 16px; height: 90px; transform: none; border-radius: 8px; background: linear-gradient(180deg,#2a2f4a,#0a0c12); }
[data-sim="Apple TV"] .iptv-sim__stand { left: 8%; bottom: -40px; width: 70px; height: 22px; transform: none; border-radius: 6px; background: linear-gradient(180deg,#2a2f4a,#0a0c12); }
[data-sim="Mobile"] .iptv-sim__frame { width: min(64%,230px); aspect-ratio: 9/19; border-radius: 34px; transform: rotateY(-14deg) rotateX(2deg); }
[data-sim="Mobile"] .iptv-sim__screen { border-radius: 26px; }
[data-sim="Mobile"] .iptv-sim__ov { padding: 46px 10px 14px; }
[data-sim="Mobile"] .iptv-sim__card { gap: 5px; padding: 9px 10px; }
[data-sim="Mobile"] .iptv-sim__t { font-size: 12px; }
[data-sim="Mobile"] .iptv-sim__stand { left: 50%; top: 16px; bottom: auto; width: 70px; height: 18px; transform: translateX(-50%); border-radius: 999px; background: #0a0c12; }
[data-sim="PC / Mac"] .iptv-sim__frame { width: min(100%,560px); aspect-ratio: 16/10; border-radius: 16px 16px 4px 4px; padding: 12px 12px 24px; transform: rotateY(-10deg) rotateX(4deg); }
[data-sim="PC / Mac"] .iptv-sim__screen { inset: 12px 12px 24px; }
[data-sim="PC / Mac"] .iptv-sim__stand { left: -6%; right: -6%; bottom: -14px; width: auto; height: 14px; transform: none; border-radius: 0 0 14px 14px; background: linear-gradient(180deg,#2a2f4a,#0a0c12); }
.iptv-es-facts { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 10px; }
.iptv-es-facts > span, .iptv-ticket__grid > span { display: flex; flex-direction: column; gap: 3px; background: rgba(255,255,255,0.07); border: 1px solid rgba(255,255,255,0.12); border-radius: 14px; padding: 12px 14px; }
.iptv-es-facts > span > span, .iptv-ticket__grid > span > span, .iptv-ticket__k, .iptv-ticket__foot > span > span { font-size: 11px; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: var(--violet-nuit); }
.iptv-es-facts strong, .iptv-ticket__grid strong { font-family: var(--f-titre); font-size: 15px; font-weight: 800; color: #fff; }
@media (prefers-reduced-motion: reduce) { .iptv-sim__frame { animation: none !important; } }

.iptv-es-fab { position: fixed; left: 12px; right: 12px; bottom: 12px; z-index: 40; display: flex; align-items: center; justify-content: space-between; gap: 12px; font-family: var(--f-titre); font-size: 16px; font-weight: 800; color: #fff; background: var(--ambre); border-radius: 16px; padding: 15px 18px; box-shadow: 0 18px 40px rgba(196,83,10,0.35); }
.iptv-es-fab[hidden] { display: none; }
.iptv-es-fab:hover { color: #fff; }
.iptv-es-fab span:last-child { font-size: 12px; font-weight: 700; background: rgba(255,255,255,0.18); border-radius: 999px; padding: 5px 9px; }

.iptv-es-demande { padding-block: clamp(50px,6.2vw,80px) clamp(64px,8vw,104px); scroll-margin-top: 90px; }
.iptv-es-form-card { background: #fff; border: 1px solid var(--bord-2); border-radius: 28px; padding: clamp(24px,3.5vw,36px); box-shadow: 0 24px 64px rgba(13,18,48,0.08); }
.iptv-es-form-card [hidden] { display: none !important; }
.iptv-es-form-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; flex-wrap: wrap; }
.iptv-es-form-t { font-family: var(--f-titre); font-size: 26px; font-weight: 800; letter-spacing: -0.025em; }
.iptv-es-form-s { font-size: 15px; line-height: 1.6; color: var(--attenue); }
.iptv-es-badge { display: inline-flex; align-items: center; gap: 8px; font-size: 12px; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; color: var(--succes-texte); background: var(--succes-fond); border: 1px solid var(--succes-bord); border-radius: 999px; padding: 7px 11px; }
.iptv-es-badge i { width: 7px; height: 7px; border-radius: 50%; background: var(--succes); }
.iptv-es-prog { display: flex; flex-direction: column; gap: 8px; }
.iptv-es-prog > div:first-child { display: flex; justify-content: space-between; font-size: 12px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--attenue); }
.iptv-es-prog__track { height: 6px; border-radius: 999px; background: #eceff7; overflow: hidden; }
.iptv-es-prog__track div { height: 100%; border-radius: 999px; background: linear-gradient(90deg,#5B2EFF,#FF2E88); transition: width .4s var(--ease); }
.iptv-es-q { font-family: var(--f-titre); font-size: 17px; font-weight: 800; }
.iptv-es-q span { color: var(--violet); }
.iptv-es-pack { display: flex; align-items: center; gap: 12px; border-radius: 16px; padding: 14px 16px; min-height: 64px; cursor: pointer; transition: all .18s ease; background: #fff; color: var(--nuit); border: 1px solid var(--bord); font: inherit; text-align: left; }
.iptv-es-pack i { flex-shrink: 0; width: 14px; height: 14px; border-radius: 50%; background: var(--acc); box-shadow: 0 0 0 3px color-mix(in srgb, var(--acc) 20%, transparent); }
.iptv-es-pack > span { display: flex; flex-direction: column; gap: 2px; }
.iptv-es-pack strong { font-family: var(--f-titre); font-size: 16px; font-weight: 800; }
.iptv-es-pack > span > span { font-size: 12px; opacity: .75; }
.iptv-es-pack[aria-checked="true"], .iptv-es-kind[aria-checked="true"] { background: var(--nuit); color: #fff; border-color: var(--nuit); box-shadow: 0 10px 24px rgba(13,18,48,0.22); }
.iptv-es-pack[aria-checked="true"] i { box-shadow: 0 0 0 3px rgba(255,255,255,0.25); }
.iptv-es-kind { display: flex; flex-direction: column; align-items: center; gap: 9px; font: 800 13px var(--f-titre); border-radius: 14px; padding: 14px 8px; min-height: 74px; cursor: pointer; transition: all .18s ease; background: #fff; color: var(--encre-3); border: 1px solid var(--bord); }
.iptv-es-ico { display: block; color: var(--violet); border: 2px solid currentColor; box-sizing: border-box; }
[aria-checked="true"] > .iptv-es-ico { color: var(--violet-nuit); }
.iptv-es-ico--smart-tv { width: 34px; height: 20px; border-radius: 4px; }
.iptv-es-ico--fire-tv { width: 34px; height: 10px; border-radius: 5px; }
.iptv-es-ico--android-tv { width: 34px; height: 20px; border-radius: 4px; border-bottom-width: 5px; }
.iptv-es-ico--apple-tv { width: 26px; height: 26px; border-radius: 7px; }
.iptv-es-ico--mobile { width: 14px; height: 24px; border-radius: 4px; }
.iptv-es-ico--pc-mac { width: 32px; height: 20px; border-radius: 4px 4px 1px 1px; border-bottom-width: 4px; }
.iptv-es-noted { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; font-size: 13px; color: var(--encre-3); background: #f4f6fb; border-radius: 12px; padding: 10px 12px; }
.iptv-es-noted strong { color: var(--encre); }
.iptv-es-remind { display: flex; align-items: flex-start; gap: 10px; font-size: 14px; line-height: 1.5; color: var(--encre-3); cursor: pointer; }
.iptv-es-remind input { width: 18px; height: 18px; margin: 2px 0 0; accent-color: var(--violet); flex-shrink: 0; }
.iptv-es-send { border-radius: 16px; }
.iptv-es-send[aria-busy="true"] { opacity: .7; cursor: progress; }
.iptv-es-safe { display: flex; flex-wrap: wrap; gap: 8px 18px; font-size: 13px; color: var(--attenue); }
.iptv-es-safe span { display: flex; align-items: center; gap: 7px; }
.iptv-es-sent__head { display: flex; flex-direction: column; gap: 14px; text-align: center; align-items: center; padding-top: 8px; }
.iptv-es-sent__ok { display: flex; align-items: center; justify-content: center; width: 64px; height: 64px; border-radius: 50%; background: var(--succes-fond); border: 1px solid var(--succes-bord); animation: priceIn .5s var(--ease); }
.iptv-es-sent__msg { font-size: 16px; line-height: 1.65; color: var(--encre-3); max-width: 420px; }
.iptv-es-ref { display: inline-flex; align-items: center; gap: 10px; font: 800 15px var(--f-titre); letter-spacing: .08em; color: var(--nuit); background: #f4f6fb; border: 1px dashed var(--bord-fort); border-radius: 12px; padding: 12px 16px; cursor: pointer; min-height: 44px; }
.iptv-es-ref small { font: 700 12px var(--f-texte); letter-spacing: 0; color: var(--violet); }
.iptv-es-wait, .iptv-es-creds { display: flex; flex-direction: column; gap: 10px; background: #f4f6fb; border: 1px solid #eceff7; border-radius: 18px; padding: 18px 20px; }
.iptv-es-wait__k { font-size: 12px; font-weight: 800; letter-spacing: .16em; text-transform: uppercase; color: var(--violet); }
.iptv-es-wait > span:not(.iptv-es-wait__k) { display: flex; gap: 12px; align-items: flex-start; font-size: 15px; line-height: 1.55; color: var(--encre-2); }
.iptv-es-wait b, .iptv-es-next b { flex-shrink: 0; display: inline-flex; align-items: center; justify-content: center; border-radius: 50%; background: var(--nuit); color: #fff; font-family: var(--f-titre); font-weight: 800; }
.iptv-es-wait b { width: 24px; height: 24px; font-size: 12px; }
.iptv-es-creds > div { display: grid; grid-template-columns: 110px minmax(0,1fr) auto; gap: 10px; align-items: center; font-size: 14px; }
.iptv-es-creds code { font-size: 13px; background: #fff; border: 1px solid var(--bord); border-radius: 8px; padding: 8px 10px; overflow-wrap: anywhere; }
.iptv-es-creds button { font: 700 12px var(--f-texte); color: var(--violet); background: transparent; border: 0; cursor: pointer; min-height: 36px; }
@media (max-width: 519px) { .iptv-es-creds > div { grid-template-columns: 1fr auto; } .iptv-es-creds > div > span { grid-column: 1 / -1; } }

.iptv-es-side { position: sticky; top: 96px; }
@media (max-width: 759px) { .iptv-es-side { position: static; } }
.iptv-ticket { --acc: #5B2EFF; position: relative; overflow: hidden; background: linear-gradient(155deg,#12307a 0%,#0d1230 65%); color: #fff; border-radius: 28px; padding: clamp(22px,3vw,30px); display: flex; flex-direction: column; gap: 16px; box-shadow: 0 30px 70px rgba(13,18,48,0.25); }
.iptv-ticket::before { content: ""; position: absolute; right: -30%; top: -40%; width: 70%; aspect-ratio: 1; border-radius: 50%; background: radial-gradient(circle, color-mix(in srgb, var(--acc) 40%, transparent) 0%, rgba(13,18,48,0) 65%); transition: background .4s; pointer-events: none; }
.iptv-ticket > * { position: relative; }
.iptv-ticket__top { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; }
.iptv-ticket__k { letter-spacing: .2em; font-size: 12px; }
.iptv-ticket__ready { display: inline-flex; align-items: center; gap: 8px; font-size: 12px; font-weight: 800; }
.iptv-ticket__ring { --p: 240deg; width: 34px; height: 34px; border-radius: 50%; display: flex; align-items: center; justify-content: center; background: conic-gradient(#FF2E88 var(--p), rgba(255,255,255,0.15) 0); transition: background .4s; }
.iptv-ticket__ring span { width: 26px; height: 26px; border-radius: 50%; background: var(--nuit); display: flex; align-items: center; justify-content: center; font-family: var(--f-titre); font-size: 10px; }
.iptv-ticket__id { display: flex; align-items: center; gap: 16px; }
.iptv-ticket__pack-wrap { flex-shrink: 0; width: 64px; perspective: 500px; }
.iptv-ticket__pack { aspect-ratio: 3/4; border-radius: 5px; background: linear-gradient(170deg, color-mix(in srgb, var(--acc) 80%, transparent) 0%, #0d1230 70%); box-shadow: inset 0 0 0 1px rgba(255,255,255,0.18), 8px 12px 24px rgba(0,0,0,0.45); transform: rotateY(-22deg) rotateX(4deg); display: flex; flex-direction: column; gap: 3px; padding: 8px 7px; box-sizing: border-box; transition: background .4s; }
.iptv-ticket__pack span { font-size: 6px; font-weight: 800; letter-spacing: .2em; text-transform: uppercase; color: rgba(255,255,255,0.7); }
.iptv-ticket__pack strong { font-family: var(--f-titre); font-size: 13px; font-weight: 800; letter-spacing: -0.04em; line-height: 1; }
.iptv-ticket__pack i { margin-top: auto; height: 6px; border-radius: 2px; background: rgba(255,255,255,0.18); }
.iptv-ticket__name { font-family: var(--f-titre); font-size: 24px; font-weight: 800; letter-spacing: -0.03em; line-height: 1; }
.iptv-ticket__on { font-size: 14px; color: var(--sur-nuit); }
.iptv-ticket__sep { height: 1px; background: rgba(255,255,255,0.14); }
.iptv-ticket__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%,130px),1fr)); gap: 10px; }
.iptv-ticket__feats { display: flex; flex-direction: column; gap: 8px; }
.iptv-ticket__feats span { display: flex; align-items: flex-start; gap: 10px; font-size: 14px; line-height: 1.5; color: #e6e9f5; }
.iptv-ticket__feats i { flex-shrink: 0; width: 18px; height: 18px; border-radius: 50%; margin-top: 1px; background: rgba(255,255,255,0.12) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 12 12' fill='none'%3E%3Cpath d='M2.5 6.2l2.3 2.3 4.7-5' stroke='%23C9B8FF' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 10px no-repeat; }
.iptv-ticket__cut { height: 0; border-top: 2px dashed rgba(255,255,255,0.18); margin: 4px calc(-1 * clamp(22px,3vw,30px)); }
.iptv-ticket__cut i { position: absolute; top: -12px; width: 24px; height: 24px; border-radius: 50%; background: var(--craie); }
.iptv-ticket__cut i:first-child { left: -12px; }
.iptv-ticket__cut i:last-child { right: -12px; }
.iptv-ticket__foot { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.iptv-ticket__foot > span { display: flex; flex-direction: column; gap: 2px; }
.iptv-ticket__foot > span > span { letter-spacing: .16em; }
.iptv-ticket__foot strong { font-family: var(--f-titre); font-size: 16px; font-weight: 800; letter-spacing: .08em; }
.iptv-ticket__foot s { color: var(--sur-nuit-2); font-weight: 600; }
.iptv-ticket__note { font-size: 13px; line-height: 1.55; color: var(--sur-nuit-2); }
.iptv-es-next { display: flex; flex-direction: column; gap: 14px; background: #fff; border: 1px solid var(--bord-2); border-radius: 24px; padding: 22px 24px; }
.iptv-es-next > strong { font-family: var(--f-titre); font-size: 17px; font-weight: 800; }
.iptv-es-next ol { list-style: none; margin: 0; padding: 0; }
.iptv-es-next li { display: flex; gap: 14px; position: relative; }
.iptv-es-next li:not(:last-child)::before { content: ""; position: absolute; left: 14px; top: 36px; bottom: 4px; width: 2px; background: var(--bord-2); border-radius: 999px; }
.iptv-es-next b { width: 30px; height: 30px; font-size: 13px; }
.iptv-es-next b.is-last { background: linear-gradient(135deg,#5B2EFF,#FF2E88); }
.iptv-es-next li > div { display: flex; flex-direction: column; gap: 3px; padding-bottom: 18px; }
.iptv-es-next li:last-child > div { padding-bottom: 0; }
.iptv-es-next li strong { font-size: 15px; font-weight: 700; }
.iptv-es-next li span { font-size: 14px; line-height: 1.6; color: var(--encre-3); }

.iptv-es-univers { background: linear-gradient(180deg,#f7f5f0 0%,#f1eee7 100%); }
.iptv-es-univers__in { padding-block: clamp(56px,7vw,96px); display: grid; }
.iptv-es-h2 { font-size: clamp(32px,4.2vw,56px); line-height: 1.02; letter-spacing: -0.04em; }
.iptv-es-genre { min-height: 42px; padding: 10px 14px; border-color: var(--bord-2); }
.iptv-verdict { background: #fff; border: 1px solid var(--bord-2); border-radius: 24px; padding: 24px 26px; display: flex; flex-direction: column; gap: 16px; box-shadow: 0 18px 50px rgba(13,18,48,0.05); }
.iptv-verdict__top { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.iptv-verdict__top strong { font-family: var(--f-titre); font-size: 18px; font-weight: 800; }
.iptv-verdict__pill { font-size: 12px; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; border-radius: 999px; padding: 6px 10px; white-space: nowrap; color: #fff; background: var(--attenue); }
.iptv-verdict__txt { font-size: 15px; line-height: 1.65; color: var(--encre-2); }
.iptv-verdict__rows { display: flex; flex-direction: column; gap: 8px; }
.iptv-verdict__rows:empty { display: none; }
.iptv-verdict__rows > span { display: flex; align-items: center; justify-content: space-between; gap: 12px; font-size: 14px; padding: 10px 12px; border-radius: 12px; background: #f4f6fb; }
.iptv-verdict__tag { font-size: 12px; font-weight: 800; border-radius: 999px; padding: 4px 9px; white-space: nowrap; color: var(--succes-texte); background: var(--succes-fond); }
.iptv-verdict__tag.is-ad { color: #8a1650; background: #ffe3ef; }
.iptv-verdict__tag.is-vip { color: #8a4a00; background: #fff1dd; }
.iptv-verdict__cta { border-radius: 14px; padding: 15px 22px; box-shadow: 0 14px 34px rgba(196,83,10,0.28); white-space: normal; }

.iptv-es-retours { padding-block: clamp(56px,7vw,96px); display: flex; flex-direction: column; gap: 28px; }
.iptv-es-review { padding: 24px; gap: 14px; }

.iptv-es-proto { position: relative; background: var(--nuit); color: #fff; overflow: hidden; }
.iptv-es-proto::before { content: ""; position: absolute; left: -10%; bottom: -40%; width: 50vw; max-width: 700px; aspect-ratio: 1; border-radius: 50%; background: radial-gradient(circle, rgba(255,46,136,0.25) 0%, rgba(13,18,48,0) 65%); pointer-events: none; }
.iptv-es-proto__in { position: relative; padding-block: clamp(56px,7vw,96px); display: flex; flex-direction: column; gap: clamp(28px,4vw,44px); }
.iptv-es-clock { display: flex; flex-direction: column; gap: 10px; background: rgba(255,255,255,0.06); border: 1px solid rgba(255,255,255,0.12); border-radius: 22px; padding: 20px 22px; }
.iptv-es-clock > div:first-child { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.iptv-es-clock > div:first-child .iptv-ticket__k { letter-spacing: .16em; }
.iptv-es-clock > div:first-child strong { font-family: var(--f-titre); font-size: 22px; font-weight: 800; letter-spacing: -0.02em; }
.iptv-es-clock__t { font-family: var(--f-titre); font-size: 19px; font-weight: 800; line-height: 1.2; }
.iptv-es-clock > span { font-size: 14px; line-height: 1.6; color: var(--sur-nuit); }
.iptv-es-hours { display: grid; grid-template-columns: repeat(24,1fr); gap: 2px; margin-top: 6px; }
.iptv-es-hours i { height: 26px; border-radius: 2px; background: rgba(255,255,255,0.12); }
.iptv-es-hours i.mid { background: rgba(201,184,255,0.5); }
.iptv-es-hours i.peak { background: linear-gradient(180deg,#FF2E88,#5B2EFF); }
.iptv-es-hours i.now { outline: 2px solid #fff; outline-offset: 1px; }
.iptv-es-hours__lg { display: flex; justify-content: space-between; font-size: 11px; color: var(--sur-nuit-2); }
.iptv-es-check { display: flex; flex-direction: column; gap: 10px; text-align: left; border-radius: 20px; padding: 20px; cursor: pointer; transition: all .2s ease; color: #fff; background: rgba(255,255,255,0.06); border: 1px solid rgba(255,255,255,0.12); font: inherit; }
.iptv-es-check[aria-pressed="true"] { background: rgba(91,46,255,0.28); border-color: rgba(201,184,255,0.6); box-shadow: 0 14px 34px rgba(0,0,0,0.3); }
.iptv-es-check__top { display: flex; align-items: center; justify-content: space-between; gap: 10px; font-size: 12px; font-weight: 800; letter-spacing: .16em; text-transform: uppercase; color: var(--violet-nuit); }
.iptv-es-check__top i { flex-shrink: 0; width: 24px; height: 24px; border-radius: 8px; display: inline-flex; align-items: center; justify-content: center; background: rgba(255,255,255,0.1); border: 1px solid rgba(255,255,255,0.25); transition: all .2s; }
.iptv-es-check__top i svg { opacity: 0; }
.iptv-es-check[aria-pressed="true"] .iptv-es-check__top i { background: linear-gradient(135deg,#FFC94A,#FF9A2E); border-color: transparent; }
.iptv-es-check[aria-pressed="true"] .iptv-es-check__top i svg { opacity: 1; }
.iptv-es-check strong { font-family: var(--f-titre); font-size: 19px; font-weight: 800; line-height: 1.15; }
.iptv-es-check > span:last-child { font-size: 14px; line-height: 1.6; color: var(--sur-nuit); }
.iptv-es-checkbar { display: flex; align-items: center; justify-content: space-between; gap: 14px; flex-wrap: wrap; background: rgba(255,255,255,0.06); border: 1px solid rgba(255,255,255,0.12); border-radius: 18px; padding: 16px 20px; font-size: 15px; color: #e6e9f5; }
.iptv-es-checkbar strong { font-family: var(--f-titre); }
.iptv-es-checkbar__track { flex: 1 1 200px; height: 8px; border-radius: 999px; background: rgba(255,255,255,0.12); overflow: hidden; }
.iptv-es-checkbar__track div { height: 100%; width: 0; border-radius: 999px; background: linear-gradient(90deg,#5B2EFF,#FF2E88); transition: width .4s var(--ease); }
.iptv-es-checkbar__cta { font-family: var(--f-titre); font-size: 15px; font-weight: 800; border-radius: 12px; padding: 13px 18px; white-space: nowrap; color: #fff; background: rgba(255,255,255,0.1); border: 1px solid rgba(255,255,255,0.2); }
.iptv-es-checkbar__cta:hover { color: #fff; }
.iptv-es-checkbar__cta.is-done { color: var(--nuit); background: linear-gradient(90deg,#FFC94A,#FF9A2E); border-color: transparent; }

.iptv-es-transp { padding-block: clamp(56px,7vw,96px); }
.iptv-es-tcard { background: #fff; border: 1px solid var(--bord-2); border-radius: 24px; padding: 26px; display: flex; flex-direction: column; gap: 14px; }
.iptv-es-tcard--nuit { background: linear-gradient(155deg,#12307a 0%,#0d1230 65%); color: #fff; border-color: transparent; }
.iptv-es-tcard--nuit strong { font-family: var(--f-titre); font-size: 20px; font-weight: 800; line-height: 1.2; }
.iptv-es-tcard--nuit > span:not(.iptv-es-tag) { font-size: 15px; line-height: 1.65; color: var(--sur-nuit); }
.iptv-es-tag { display: inline-flex; align-items: center; gap: 8px; align-self: flex-start; font-size: 12px; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; border-radius: 999px; padding: 6px 10px; }
.iptv-es-tag--ok { color: var(--succes-texte); background: var(--succes-fond); border: 1px solid var(--succes-bord); }
.iptv-es-tag--no { color: #8f2621; background: #fbecea; border: 1px solid #efc4bf; }
.iptv-es-tag--gold { color: var(--nuit); background: linear-gradient(90deg,#FFC94A,#FF9A2E); }
.iptv-es-tl { display: flex; gap: 10px; font-size: 15px; line-height: 1.6; color: var(--encre-2); }
.iptv-es-tl b { font-weight: 800; }
.iptv-es-tl b.ok { color: var(--succes); }
.iptv-es-tl b.no { color: #b4302a; }
.iptv-es-tbtn { align-self: flex-start; background: #fff; color: var(--nuit); border-radius: 12px; padding: 13px 18px; margin-top: 4px; min-height: 0; }
.iptv-es-tbtn:hover { background: var(--lavande); color: var(--nuit); }

.iptv-es-faq { background: linear-gradient(180deg,#f7f5f0 0%,#f1eee7 100%); }
.iptv-es-faq__in { padding-block: clamp(50px,6.2vw,80px); }
.iptv-es-why { background: #fff; border: 1px solid var(--bord-2); border-radius: 20px; padding: 22px 24px; display: flex; flex-direction: column; gap: 8px; }
.iptv-es-why strong { font-family: var(--f-titre); font-size: 16px; font-weight: 800; }
.iptv-es-why p { font-size: 15px; line-height: 1.7; color: var(--encre-2); margin: 0; }
.iptv-faq--es details { border-color: var(--bord-2); border-radius: 18px; }
.iptv-faq--es summary { padding: 20px 22px; font-size: 16px; min-height: 0; }
.iptv-faq--es summary::after { font-size: 20px; transform: none !important; }
.iptv-faq--es details[open] summary::after { content: "−"; }
.iptv-faq--es details > :not(summary) { padding: 0 22px; font-size: 15px; }
.iptv-faq--es details > :last-child { padding-bottom: 20px; }

/* ==========================================================================
   27. Support
   ========================================================================== */
.iptv-support [hidden] { display: none !important; }
.iptv-page-hero--line { border-bottom: 1px solid var(--filet-2); max-width: none; }
.iptv-page-hero--line > * { max-width: var(--container); margin-inline: auto; }
.iptv-sup-diag { padding-top: clamp(48px,6vw,72px); }
.iptv-sup-sec { padding-top: clamp(55px,6.8vw,88px); }
.iptv-sup-sec[data-kb] { display: flex; flex-direction: column; gap: 22px; }
.iptv-sup-card { background: #fff; border: 1px solid var(--bord-2); border-radius: 28px; padding: clamp(24px,3.5vw,36px); box-shadow: 0 24px 64px rgba(13,18,48,0.07); display: flex; flex-direction: column; gap: 22px; }
.iptv-sup-k { font-size: 12px; font-weight: 700; letter-spacing: .2em; text-transform: uppercase; color: var(--violet); }
.iptv-sup-h2s { font-family: var(--f-titre); font-size: 26px; font-weight: 800; letter-spacing: -0.03em; line-height: normal; }
.iptv-sup-h2 { font-size: clamp(28px,3.6vw,46px); line-height: 1.04; letter-spacing: -0.038em; }
.iptv-sup-now { font-size: 12px; font-weight: 800; color: var(--succes-texte); background: var(--succes-fond); border: 1px solid var(--succes-bord); border-radius: 999px; padding: 6px 10px; white-space: nowrap; }
.iptv-sup-q { font-family: var(--f-titre); font-size: 16px; font-weight: 800; }
.iptv-sup-q span { color: var(--violet); }
.iptv-sup-chip { font: 600 14px var(--f-texte); border-radius: 12px; padding: 11px 16px; min-height: 44px; cursor: pointer; transition: all .18s ease; background: #fff; color: var(--encre-3); border: 1px solid var(--bord-fort); text-align: center; }
.iptv-sup-chip:is([aria-pressed="true"],[aria-checked="true"]) { background: var(--nuit); color: #fff; border-color: var(--nuit); }
.iptv-sup-chip.is-static { cursor: default; }
.iptv-sup-fix { background: var(--nuit-profonde); color: #fff; border-radius: 20px; padding: 22px 24px; display: flex; flex-direction: column; gap: 14px; }
.iptv-sup-fix__top { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; }
.iptv-sup-gold { font-size: 12px; font-weight: 800; color: var(--nuit); background: linear-gradient(90deg,#FFC94A,#FF9A2E); border-radius: 999px; padding: 5px 9px; white-space: nowrap; }
.iptv-sup-fix__t { font-family: var(--f-titre); font-size: 19px; font-weight: 800; line-height: 1.2; }
.iptv-sup-step { display: flex; align-items: flex-start; gap: 10px; width: 100%; text-align: left; font: 400 14px/1.45 var(--f-texte); color: #fff; background: rgba(255,255,255,0.06); border: 1px solid rgba(255,255,255,0.14); border-radius: 12px; padding: 10px 12px; cursor: pointer; transition: all .18s; }
.iptv-sup-step[aria-pressed="true"] { background: rgba(255,255,255,0.14); }
.iptv-sup-step i { flex-shrink: 0; width: 20px; height: 20px; border-radius: 6px; margin-top: 1px; display: inline-flex; align-items: center; justify-content: center; background: rgba(255,255,255,0.1); border: 1px solid rgba(255,255,255,0.3); }
.iptv-sup-step i svg { opacity: 0; }
.iptv-sup-step[aria-pressed="true"] i { background: linear-gradient(135deg,#FFC94A,#FF9A2E); border-color: transparent; }
.iptv-sup-step[aria-pressed="true"] i svg { opacity: 1; }
.iptv-sup-fix__foot { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; border-top: 1px solid rgba(255,255,255,0.14); padding-top: 12px; font-size: 14px; color: var(--sur-nuit); }
.iptv-sup-esc, .iptv-sup-w { font: 800 14px var(--f-titre); color: var(--nuit); background: #fff; border: 0; border-radius: 12px; padding: 11px 16px; cursor: pointer; white-space: nowrap; min-height: 44px; display: inline-flex; align-items: center; }
.iptv-sup-w:hover, .iptv-sup-esc:hover { background: var(--lavande); color: var(--nuit); }
.iptv-sup-o { font: 800 14px var(--f-titre); color: #fff; background: transparent; border: 1px solid rgba(255,255,255,0.3); border-radius: 12px; padding: 11px 16px; cursor: pointer; white-space: nowrap; min-height: 44px; display: inline-flex; align-items: center; }
.iptv-sup-o:hover { background: rgba(255,255,255,0.1); color: #fff; }
.iptv-sup-chan-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; }
.iptv-sup-open { display: inline-flex; align-items: center; gap: 8px; font-size: 13px; font-weight: 700; color: var(--encre-2); }
.iptv-sup-open i { width: 9px; height: 9px; border-radius: 50%; background: var(--succes); }
.iptv-sup-chan { display: flex; align-items: center; gap: 14px; background: #fff; border: 1px solid var(--bord-2); border-radius: 20px; padding: 18px 20px; color: var(--encre); transition: all .2s ease; }
.iptv-sup-chan:hover { border-color: var(--violet); transform: translateY(-2px); box-shadow: 0 18px 44px rgba(13,18,48,0.10); color: var(--encre); }
.iptv-sup-chan__ico { flex-shrink: 0; width: 46px; height: 46px; border-radius: 14px; background: #f0ecff; border: 1px solid #d9ccff; color: var(--violet); display: flex; align-items: center; justify-content: center; font: 800 18px var(--f-titre); }
.iptv-sup-chan__ico.is-grey { background: #f4f6fb; border-color: #eceff7; color: var(--encre-3); }
.iptv-sup-chan__body { display: flex; flex-direction: column; gap: 3px; min-width: 0; flex: 1; }
.iptv-sup-chan__body strong { font-family: var(--f-titre); font-size: 17px; font-weight: 800; }
.iptv-sup-chan__body > span:not(.iptv-row) { font-size: 14px; line-height: 1.5; color: var(--encre-3); }
.iptv-sup-chan__body small { font-size: 12px; color: var(--attenue); }
.iptv-sup-badge { font-size: 11px; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; color: var(--violet-hover); background: #f0ecff; border: 1px solid #d9ccff; border-radius: 999px; padding: 4px 8px; white-space: nowrap; }
.iptv-sup-badge.is-grey { color: var(--encre-3); background: #f4f6fb; border-color: #eceff7; }
.iptv-sup-chan__go { flex-shrink: 0; font-family: var(--f-titre); font-size: 14px; font-weight: 800; color: var(--violet); white-space: nowrap; }
.iptv-sup-facts { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 10px; }
.iptv-sup-facts > span { display: flex; flex-direction: column; gap: 3px; background: #f4f6fb; border: 1px solid #eceff7; border-radius: 14px; padding: 12px 14px; }
.iptv-sup-facts > span > span { font-size: 11px; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: var(--attenue); }
.iptv-sup-facts strong { font-family: var(--f-titre); font-size: 14px; font-weight: 800; }
.iptv-sup-status { display: flex; align-items: center; justify-content: space-between; gap: 12px; background: #fff; border: 1px dashed var(--bord-fort); border-radius: 16px; padding: 14px 16px; color: var(--encre); font-size: 14px; line-height: 1.5; }
.iptv-sup-status:hover { border-color: var(--violet); color: var(--encre); }
.iptv-sup-search { display: flex; align-items: center; gap: 12px; background: #fff; border: 1px solid var(--bord-fort); border-radius: 16px; padding: 6px 6px 6px 16px; }
.iptv-sup-search:focus-within { border-color: var(--violet); }
.iptv-sup-search input { flex: 1; min-width: 0; border: 0; outline: none; font: 400 16px var(--f-texte); color: var(--encre); background: transparent; padding: 10px 0; }
.iptv-sup-search span { font-size: 12px; font-weight: 700; color: var(--attenue); white-space: nowrap; padding: 0 8px; }
.iptv-sup-kb { background: #fff; border: 1px solid var(--bord-2); border-radius: 20px; overflow: hidden; }
.iptv-sup-kb summary { list-style: none; display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; padding: 18px 20px; cursor: pointer; }
.iptv-sup-kb summary::-webkit-details-marker { display: none; }
.iptv-sup-kb summary::after { content: "+"; flex-shrink: 0; font-size: 20px; color: var(--violet); line-height: 1; }
.iptv-sup-kb[open] summary::after { content: "−"; }
.iptv-sup-kb summary > span { display: flex; flex-direction: column; gap: 6px; }
.iptv-sup-kb__tag, .iptv-sup-kbk { font-size: 11px; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; color: var(--violet); }
.iptv-sup-kb summary strong { font-family: var(--f-titre); font-size: 16px; font-weight: 800; line-height: 1.25; }
.iptv-sup-kb__a { padding: 0 20px 18px; display: flex; flex-direction: column; gap: 12px; }
.iptv-sup-kb__a p { margin: 0; font-size: 14px; line-height: 1.65; color: var(--encre-3); }
.iptv-sup-kb__foot { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; }
.iptv-sup-kb__foot a { font-family: var(--f-titre); font-size: 14px; font-weight: 800; white-space: nowrap; }
.iptv-sup-vote { display: flex; align-items: center; gap: 6px; font-size: 12px; color: var(--attenue); }
.iptv-sup-vote button { font: 800 12px var(--f-texte); border-radius: 999px; padding: 5px 10px; cursor: pointer; min-height: 28px; background: #fff; color: var(--encre-3); border: 1px solid var(--bord-2); }
.iptv-sup-vote button[data-vote="y"].is-on { background: var(--succes-fond); color: var(--succes-texte); border-color: var(--succes-bord); }
.iptv-sup-vote button[data-vote="n"].is-on { background: #fbecea; color: #8f2621; border-color: #efc4bf; }
.iptv-sup-vote__no { font-size: 13px; color: var(--encre-3); }
.iptv-sup-empty { background: #f4f6fb; border: 1px dashed var(--bord-fort); border-radius: 18px; padding: 20px 22px; display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; font-size: 15px; color: var(--encre-2); }
.iptv-sup-track { position: relative; overflow: hidden; background: linear-gradient(150deg,#12307a 0%,#0d1230 62%); color: #fff; border-radius: var(--r-xl); padding: clamp(26px,4vw,44px); display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%,320px),1fr)); gap: clamp(24px,4vw,44px); align-items: start; }
.iptv-sup-track::before { content: ""; position: absolute; right: -10%; top: -50%; width: 50%; aspect-ratio: 1; border-radius: 50%; background: radial-gradient(circle, rgba(91,46,255,0.4) 0%, rgba(13,18,48,0) 65%); pointer-events: none; }
.iptv-sup-track p { font-size: 15px; line-height: 1.65; color: var(--sur-nuit); margin: 0; }
.iptv-sup-stage { display: flex; align-items: center; gap: 12px; width: 100%; text-align: left; font: 600 15px var(--f-texte); color: #fff; border-radius: 14px; padding: 12px 14px; min-height: 48px; cursor: pointer; transition: all .18s; background: rgba(255,255,255,0.05); border: 1px solid rgba(255,255,255,0.12); }
.iptv-sup-stage[aria-checked="true"] { background: rgba(255,255,255,0.16); border-color: rgba(255,255,255,0.4); }
.iptv-sup-stage b { flex-shrink: 0; width: 28px; height: 28px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; font: 800 13px var(--f-titre); background: rgba(255,255,255,0.12); }
.iptv-sup-stage[aria-checked="true"] b { background: linear-gradient(135deg,#FFC94A,#FF9A2E); color: var(--nuit); }
.iptv-sup-stagebox { position: relative; background: rgba(255,255,255,0.07); border: 1px solid rgba(255,255,255,0.14); border-radius: 22px; padding: 22px 24px; display: flex; flex-direction: column; gap: 14px; }
.iptv-sup-stagebox > strong { font-family: var(--f-titre); font-size: 20px; font-weight: 800; line-height: 1.2; }
.iptv-sup-stagebox > span { font-size: 15px; line-height: 1.65; color: #e6e9f5; }
.iptv-sup-stagebox__todo { border-top: 1px solid rgba(255,255,255,0.14); padding-top: 12px; display: flex; flex-direction: column; gap: 8px; }
.iptv-sup-stagebox__todo > span:last-child { font-size: 14px; line-height: 1.6; color: #e6e9f5; }
.iptv-sup-eng { background: #fff; border: 1px solid var(--bord-2); border-radius: 20px; padding: 22px; display: flex; flex-direction: column; gap: 8px; }
.iptv-sup-eng b { font: 800 30px/1 var(--f-titre); letter-spacing: -0.04em; color: var(--violet); }
.iptv-sup-eng strong { font-family: var(--f-titre); font-size: 16px; font-weight: 800; }
.iptv-sup-eng span { font-size: 14px; line-height: 1.6; color: var(--encre-3); }
.iptv-sup-formcard { background: #fff; border: 1px solid var(--bord-2); border-radius: var(--r-card); padding: clamp(24px,3.5vw,40px); box-shadow: 0 14px 45px rgba(13,18,48,0.04); }
.iptv-sup-fh { font-family: var(--f-titre); font-size: 28px; font-weight: 800; letter-spacing: -0.04em; margin: 0 0 8px; }
.iptv-sup-fp { font-size: 15px; line-height: 1.65; margin: 0 0 24px; }
.iptv-sup-mb { margin-bottom: 18px; }
.iptv-sup-ctx { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; background: #f4f6fb; border: 1px solid #eceff7; border-radius: 14px; padding: 12px 14px; margin-bottom: 18px; font-size: 13px; line-height: 1.55; color: var(--encre-2); }
.iptv-sup-ctx button { font: 700 12px var(--f-texte); color: var(--attenue); background: transparent; border: 0; cursor: pointer; white-space: nowrap; min-height: 32px; }
.iptv-sup-f { display: flex; flex-direction: column; gap: 7px; }
.iptv-sup-f > span:first-child, .iptv-sup-f > span[id], .iptv-sup-f > span:not([class]):not(.iptv-sup-drop) { font-size: 12px; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; color: var(--encre-3); }
.iptv-sup-f em { font-style: normal; font-weight: 500; text-transform: none; letter-spacing: 0; color: var(--attenue); }
.iptv-sup-f :is(input, select, textarea) { background: #fff; border: 1px solid var(--bord-fort); border-radius: 12px; padding: 14px 16px; color: var(--encre); font: 400 16px/1.6 var(--f-texte); outline: none; transition: all .18s ease; width: 100%; box-sizing: border-box; }
.iptv-sup-f :is(input, select, textarea):focus { border-color: var(--violet); box-shadow: 0 0 0 3px rgba(91,46,255,0.16); }
.iptv-sup-f [aria-invalid="true"] { border-color: var(--erreur); }
.iptv-sup-f textarea { resize: vertical; }
.iptv-sup-f small { font-size: 12px; color: var(--attenue); line-height: 1.55; }
.iptv-sup-f__row { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.iptv-sup-drop { position: relative; display: flex; align-items: center; justify-content: center; height: 132px; border-radius: 14px; border: 1px dashed var(--bord-fort); background: #f7f6f3; padding: 12px; text-align: center; font-size: 13px; color: var(--attenue); }
.iptv-sup-drop:focus-within { border-color: var(--violet); }
.iptv-sup-drop input { position: absolute; inset: 0; opacity: 0; cursor: pointer; padding: 0; border: 0; }
.iptv-sup-preview { background: #f4f6fb; border: 1px solid #eceff7; border-radius: 16px; padding: 14px 16px; display: flex; flex-direction: column; gap: 8px; font-size: 14px; line-height: 1.6; color: var(--encre-2); }
.iptv-sup-quality { display: flex; align-items: center; gap: 10px; }
.iptv-sup-quality > div { flex: 1; height: 6px; border-radius: 999px; background: #e4e7f2; overflow: hidden; }
.iptv-sup-quality > div > div { height: 100%; width: 15%; border-radius: 999px; background: linear-gradient(90deg,#5B2EFF,#FF2E88); transition: width .3s; }
.iptv-sup-quality span { font-size: 12px; font-weight: 700; color: var(--encre-3); white-space: nowrap; }
.iptv-sup-consent { display: flex; align-items: flex-start; gap: 10px; font-size: 13px; line-height: 1.5; color: var(--encre-3); cursor: pointer; margin-bottom: 20px; }
.iptv-sup-consent input { width: 18px; height: 18px; margin: 2px 0 0; accent-color: var(--violet); flex-shrink: 0; }
.iptv-sup-consent + .iptv-field__err { margin: -12px 0 14px; }
.iptv-sup-send { width: 100%; font-size: 17px; border-radius: 14px; padding: 17px 24px; min-height: 56px; box-shadow: 0 14px 34px rgba(196,83,10,0.28); margin-top: 4px; }
.iptv-sup-send[aria-busy="true"] { opacity: .7; cursor: progress; }
.iptv-sup-sla { font-size: 13px; color: var(--attenue); margin-top: 14px; text-align: center; }
.iptv-sup-sent { display: flex; flex-direction: column; align-items: center; text-align: center; gap: 14px; padding: 12px 0; }
.iptv-sup-pre { background: var(--nuit-profonde); color: #fff; border-radius: var(--r-card); padding: 28px 30px; display: flex; flex-direction: column; gap: 14px; }
.iptv-sup-pre > strong { font-family: var(--f-titre); font-size: 24px; font-weight: 800; line-height: 1.1; letter-spacing: -0.03em; }
.iptv-sup-pre > span:not(.iptv-ticket__k) { font-size: 15px; line-height: 1.65; color: var(--sur-nuit); }
.iptv-sup-self { background: #f3f2ef; border: 1px solid var(--bord-2); border-radius: var(--r-card); padding: 28px 30px; display: flex; flex-direction: column; gap: 10px; }
.iptv-sup-self > strong { font-family: var(--f-titre); font-size: 20px; font-weight: 800; letter-spacing: -0.03em; margin-bottom: 4px; }
.iptv-sup-self a { background: #fff; border: 1px solid var(--bord-2); border-radius: 16px; padding: 16px 18px; display: flex; align-items: center; justify-content: space-between; gap: 12px; color: var(--encre); }
.iptv-sup-self a:hover { border-color: var(--violet); color: var(--encre); }
.iptv-sup-self a > span { display: flex; flex-direction: column; gap: 3px; }
.iptv-sup-self a strong { font-family: var(--f-titre); font-size: 16px; font-weight: 800; }
.iptv-sup-self a span span { font-size: 14px; color: var(--encre-3); }
.iptv-sup-self b { color: var(--violet); }
.iptv-why { padding-bottom: clamp(48px,6vw,72px); }
.iptv-why__box { background: #fff; border: 1px solid #dde2ee; border-radius: var(--r-card); padding: clamp(22px,3vw,30px) clamp(22px,4vw,36px); display: flex; align-items: center; justify-content: space-between; gap: 20px 32px; flex-wrap: wrap; box-shadow: var(--sh-carte); }
.iptv-why__list { display: flex; flex-wrap: wrap; gap: 12px 26px; font-size: 15px; font-weight: 600; color: var(--encre-2); }
.iptv-why__list span { display: flex; align-items: center; gap: 8px; }
.iptv-hero-line { border-bottom: 1px solid var(--filet-2); }
.iptv-page-hero--sup { padding-bottom: clamp(42px,5.2vw,68px); }

/* ==========================================================================
   27b. Installation (guide pas à pas, encart essai, bandeau offre)
   ========================================================================== */
.iptv-outil-c { padding-top: clamp(56px,7vw,96px); scroll-margin-top: 100px; }
.iptv-inst { padding-top: 56px; }
.iptv-inst__devs { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%,140px),1fr)); gap: 14px; margin-bottom: 56px; }
.iptv-inst__dev { display: flex; flex-direction: column; align-items: center; gap: 10px; padding: 22px 12px; border-radius: 18px; cursor: pointer; transition: all .18s ease; font: 600 14px var(--f-texte); background: #fff; border: 1px solid var(--bord-2); color: var(--encre-3); }
.iptv-inst__dev[aria-pressed="true"] { background: #f3f2ef; border: 1.5px solid var(--violet); color: var(--encre); }
.iptv-inst__dev:hover { border-color: var(--violet); }
.iptv-inst__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%,400px),1fr)); gap: clamp(24px,4vw,48px); align-items: start; }
.iptv-inst__main { display: flex; flex-direction: column; gap: 22px; min-width: 0; }
.iptv-inst__head { display: flex; align-items: center; justify-content: space-between; gap: 14px; flex-wrap: wrap; }
.iptv-inst__h2 { font-family: var(--f-titre); font-size: clamp(26px,3vw,34px); font-weight: 800; letter-spacing: -0.04em; line-height: normal; margin: 0; }
.iptv-inst__intro { font-size: 15px; line-height: 1.6; color: var(--encre-3); }
.iptv-inst__seg { font: 800 13px var(--f-titre); border-radius: 10px; padding: 0 14px; min-height: 40px; cursor: pointer; transition: all .18s; background: #fff; color: var(--encre-3); border: 1px solid var(--bord-2); }
.iptv-inst__seg[aria-pressed="true"] { background: var(--nuit); color: #fff; border-color: var(--nuit); }
.iptv-inst__prog { display: flex; flex-direction: column; gap: 8px; background: #fff; border: 1px solid var(--bord-2); border-radius: 18px; padding: 14px 16px; }
.iptv-inst__prog-top { display: flex; justify-content: space-between; gap: 10px; font-size: 13px; font-weight: 700; color: var(--encre-3); }
.iptv-inst__prog-top span:last-child { white-space: nowrap; }
.iptv-inst__bar { height: 8px; border-radius: 999px; background: #eceff7; overflow: hidden; }
.iptv-inst__bar div { height: 100%; width: 0; border-radius: 999px; background: linear-gradient(90deg,#5B2EFF,#FF2E88); transition: width .4s cubic-bezier(.22,1,.36,1); }
.iptv-inst__dots { display: flex; gap: 6px; flex-wrap: wrap; }
.iptv-inst__dot { min-width: 34px; height: 34px; border-radius: 10px; padding: 0 8px; cursor: pointer; font: 800 13px var(--f-titre); transition: all .2s; background: #fff; color: var(--encre-3); border: 1px solid var(--bord-2); }
.iptv-inst__dot.is-cur { background: var(--nuit); color: #fff; border-color: var(--nuit); }
.iptv-inst__dot.is-done { background: var(--succes-fond); color: var(--succes-texte); border-color: var(--succes-bord); }
.iptv-inst__card { background: #fff; border: 1px solid var(--bord-2); border-radius: 24px; padding: clamp(22px,3vw,30px); display: flex; flex-direction: column; gap: 16px; box-shadow: 0 24px 64px rgba(13,18,48,0.07); }
.iptv-inst__card[hidden], .iptv-inst__done[hidden], .iptv-inst__all[hidden], .iptv-inst__help[hidden] { display: none; }
.iptv-inst__st { display: flex; align-items: center; gap: 14px; }
.iptv-inst__n { width: 44px; height: 44px; border-radius: 14px; background: linear-gradient(135deg,#5B2EFF,#FF2E88); color: #fff; font: 800 17px var(--f-titre); display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
.iptv-inst__stt { font-family: var(--f-titre); font-size: 22px; font-weight: 800; line-height: 1.15; letter-spacing: -0.03em; }
.iptv-inst__body { font-size: 16px; line-height: 1.7; color: var(--encre-2); }
.iptv-inst__shot { position: relative; height: clamp(180px,32vw,260px); border-radius: 16px; overflow: hidden; background: #f3f2ef; border: 1px solid var(--bord-2); display: flex; align-items: center; justify-content: center; text-align: center; }
.iptv-inst__shot .iptv-todo { margin: 16px; }
.iptv-inst__shot img, .iptv-inst-apps__shot img { width: 100%; height: 100%; object-fit: contain; display: block; }
.iptv-inst__tip { display: flex; gap: 10px; background: #fff7ec; border: 1px solid #ffe0b8; border-radius: 14px; padding: 12px 14px; }
.iptv-inst__tip span:first-child { flex-shrink: 0; font-size: 12px; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; color: #8a4a00; margin-top: 2px; }
.iptv-inst__tip span:last-child { font-size: 14px; line-height: 1.55; color: var(--encre-2); }
.iptv-inst__nav { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; border-top: 1px solid #eceff7; padding-top: 16px; }
.iptv-inst__prev { font: 800 14px var(--f-titre); color: var(--encre-3); background: #fff; border: 1px solid var(--bord-2); border-radius: 12px; padding: 0 14px; min-height: 52px; cursor: pointer; white-space: nowrap; }
.iptv-inst__prev:disabled { opacity: .45; cursor: default; }
.iptv-inst__next { flex: 1; min-width: 180px; font: 800 16px var(--f-titre); color: #fff; background: var(--ambre); border: 0; border-radius: 14px; padding: 0 22px; min-height: 52px; cursor: pointer; box-shadow: 0 14px 34px rgba(196,83,10,0.28); white-space: nowrap; transition: background .18s; }
.iptv-inst__next:hover { background: var(--ambre-hover, #A3430A); }
.iptv-inst__stuck { font: 800 14px var(--f-titre); color: var(--violet); background: #f0ecff; border: 1px solid #d9ccff; border-radius: 12px; padding: 0 14px; min-height: 52px; cursor: pointer; white-space: nowrap; }
.iptv-inst__help { background: #f4f6fb; border: 1px solid #eceff7; border-radius: 16px; padding: 16px 18px; display: flex; flex-direction: column; gap: 10px; }
.iptv-inst__help-t { font: 800 16px var(--f-titre); }
.iptv-inst__help [data-t="checks"] { display: flex; flex-direction: column; gap: 10px; }
.iptv-inst__help [data-t="checks"] span { display: flex; gap: 10px; font-size: 14px; line-height: 1.55; color: var(--encre-2); }
.iptv-inst__help [data-t="checks"] b { color: var(--violet); font-weight: 800; }
.iptv-inst__help-go { align-self: flex-start; font: 800 14px var(--f-titre); color: #fff; background: var(--nuit); border-radius: 12px; padding: 12px 16px; margin-top: 4px; }
.iptv-inst__help-go:hover { background: #1a2040; color: #fff; }
.iptv-inst__done { background: linear-gradient(155deg,#12307a 0%,#0d1230 65%); color: #fff; border-radius: 24px; padding: clamp(24px,3.5vw,36px); display: flex; flex-direction: column; gap: 16px; box-shadow: 0 30px 70px rgba(13,18,48,0.25); }
.iptv-inst__done-k { display: inline-flex; align-self: flex-start; font-size: 12px; font-weight: 800; letter-spacing: .18em; text-transform: uppercase; color: var(--nuit); background: linear-gradient(90deg,#FFC94A,#FF9A2E); border-radius: 999px; padding: 7px 12px; }
.iptv-inst__done-t { font-family: var(--f-titre); font-size: clamp(26px,3.2vw,38px); font-weight: 800; line-height: 1.05; letter-spacing: -0.04em; }
.iptv-inst__done-p { font-size: 16px; line-height: 1.65; color: var(--sur-nuit); }
.iptv-inst__done-a { font: 800 15px var(--f-titre); color: var(--nuit); background: #fff; border-radius: 12px; padding: 13px 18px; }
.iptv-inst__done-a:hover { background: var(--lavande); color: var(--nuit); }
.iptv-inst__done-r { font: 800 15px var(--f-titre); color: #fff; background: transparent; border: 1px solid rgba(255,255,255,0.3); border-radius: 12px; padding: 13px 18px; cursor: pointer; }
.iptv-inst__all { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 14px; }
.iptv-inst__item { display: grid; grid-template-columns: auto 1fr; gap: 18px; background: #fff; border: 1px solid var(--bord-2); border-radius: 20px; padding: 22px; }
.iptv-inst__chk { width: 40px; height: 40px; border-radius: 14px; cursor: pointer; font: 800 16px var(--f-titre); display: flex; align-items: center; justify-content: center; transition: all .2s; background: #f0ecff; color: var(--violet); border: 1px solid #d9ccff; }
.iptv-inst__chk.is-done { background: var(--succes); color: #fff; border-color: var(--succes); }
.iptv-inst__item-t { font: 800 18px var(--f-titre); }
.iptv-inst__item-b { font-size: 15px; line-height: 1.65; color: var(--encre-3); }
.iptv-inst__item-tip { font-size: 13px; line-height: 1.5; color: #8a4a00; }
.iptv-inst__side { position: sticky; top: 96px; display: flex; flex-direction: column; gap: 14px; }
.iptv-inst__tv { position: relative; border-radius: 22px; overflow: hidden; background: #07060f; aspect-ratio: 16/10; box-shadow: 0 30px 70px rgba(13,18,48,0.25); border: 1px solid rgba(13,18,48,0.1); }
.iptv-inst__tv img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: .35; transition: opacity .5s; }
.iptv-inst__tv-cap { position: absolute; inset: 0; display: flex; flex-direction: column; justify-content: flex-end; padding: 16px; background: linear-gradient(180deg, rgba(7,6,15,0) 40%, rgba(7,6,15,0.85) 100%); }
.iptv-inst__tv-cap span { font-size: 10px; font-weight: 800; letter-spacing: .16em; text-transform: uppercase; color: var(--violet-nuit); }
.iptv-inst__tv-cap strong { font: 800 16px/1.25 var(--f-titre); color: #fff; }
.iptv-inst__tv-badge { position: absolute; left: 14px; top: 14px; font-size: 11px; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; color: #fff; background: rgba(13,18,48,0.7); border: 1px solid rgba(255,255,255,0.18); border-radius: 999px; padding: 5px 9px; }
.iptv-inst__pre { background: #fff; border: 1px solid var(--bord-2); border-radius: 20px; padding: 20px 22px; display: flex; flex-direction: column; gap: 10px; }
.iptv-inst__pre-t { font: 800 16px var(--f-titre); }
.iptv-inst__pq { display: flex; align-items: flex-start; gap: 10px; width: 100%; text-align: left; background: transparent; border: 0; padding: 6px 0; cursor: pointer; font: 400 14px/1.5 var(--f-texte); color: var(--encre-2); }
.iptv-inst__pq i { flex-shrink: 0; width: 20px; height: 20px; border-radius: 6px; margin-top: 1px; display: inline-flex; align-items: center; justify-content: center; background: #fff; border: 1px solid #cfcabd; }
.iptv-inst__pq i svg { opacity: 0; }
.iptv-inst__pq[aria-pressed="true"] { color: var(--attenue); text-decoration: line-through; }
.iptv-inst__pq[aria-pressed="true"] i { background: var(--succes); border-color: var(--succes); }
.iptv-inst__pq[aria-pressed="true"] i svg { opacity: 1; }
.iptv-inst__pre-h { font-size: 13px; line-height: 1.55; color: var(--attenue); }
.iptv-inst__facts { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 8px; }
.iptv-inst__facts > span { display: flex; flex-direction: column; gap: 2px; background: #f4f6fb; border: 1px solid #eceff7; border-radius: 14px; padding: 10px 12px; }
.iptv-inst__facts > span > span { font-size: 10px; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: var(--attenue); }
.iptv-inst__facts strong { font: 800 14px var(--f-titre); }
.iptv-inst__sup { display: flex; align-items: center; justify-content: space-between; gap: 12px; background: #fff; border: 1px dashed #cfcabd; border-radius: 16px; padding: 14px 16px; color: var(--encre); }
.iptv-inst__sup:hover { border-color: var(--violet); color: var(--encre); }
.iptv-inst__sup > span { font-size: 14px; line-height: 1.5; color: var(--encre-2); }
.iptv-inst__sup b { font: 800 14px var(--f-titre); color: var(--violet); white-space: nowrap; }
@media (max-width: 899px) { .iptv-inst__side { position: static; } }

/* Tutoriels par application */
.iptv-inst-apps { padding-block: clamp(64px,8vw,104px); }
.iptv-inst-apps__head { max-width: 760px; margin-bottom: 28px; }
.iptv-inst-apps__tabs { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 22px; }
.iptv-inst-apps__tab { display: inline-flex; align-items: center; gap: 8px; font: 800 15px var(--f-titre); color: var(--encre-3); background: #fff; border: 1px solid var(--bord-2); border-radius: 12px; padding: 0 18px; min-height: 48px; cursor: pointer; transition: all .18s; }
.iptv-inst-apps__tab small { font: 600 12px var(--f-texte); color: var(--attenue); }
.iptv-inst-apps__tab[aria-selected="true"] { background: var(--nuit); color: #fff; border-color: var(--nuit); }
.iptv-inst-apps__tab[aria-selected="true"] small { color: var(--sur-nuit-2); }
.iptv-inst-apps__panel { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%,400px),1fr)); gap: clamp(24px,4vw,48px); align-items: start; background: #fff; border: 1px solid var(--bord-2); border-radius: var(--r-xl); padding: clamp(22px,3.5vw,40px); box-shadow: 0 24px 64px rgba(13,18,48,0.07); }
.iptv-inst-apps__panel[hidden] { display: none; }
.iptv-inst-apps__h3 { font-family: var(--f-titre); font-size: clamp(22px,2.4vw,28px); font-weight: 800; letter-spacing: -0.03em; line-height: 1.15; margin: 0 0 10px; }
.iptv-inst-apps__lead { font-size: 16px; line-height: 1.7; color: var(--encre-2); margin: 0 0 12px; }
.iptv-inst-apps__dev { font-size: 14px; line-height: 1.6; color: var(--encre-3); margin: 0 0 22px; background: #f4f6fb; border: 1px solid #eceff7; border-radius: 12px; padding: 10px 14px; }
.iptv-inst-apps__steps { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 16px; }
.iptv-inst-apps__steps li { display: grid; grid-template-columns: auto 1fr; gap: 14px; }
.iptv-inst-apps__n { width: 38px; height: 38px; border-radius: 12px; background: linear-gradient(135deg,#5B2EFF,#FF2E88); color: #fff; font: 800 14px var(--f-titre); display: flex; align-items: center; justify-content: center; }
.iptv-inst-apps__steps h4 { font: 800 17px/1.3 var(--f-titre); margin: 6px 0 4px; }
.iptv-inst-apps__steps p { font-size: 15px; line-height: 1.65; color: var(--encre-3); margin: 0; }
.iptv-inst-apps__side { display: flex; flex-direction: column; gap: 14px; }
.iptv-inst-apps__shot { aspect-ratio: 16/9; border-radius: 18px; overflow: hidden; background: #f3f1fa; border: 1px solid var(--bord-2); }
.iptv-inst-apps__good { background: #fff7ec; border: 1px solid #ffe0b8; border-radius: 16px; padding: 16px 18px; display: flex; flex-direction: column; gap: 8px; }
.iptv-inst-apps__good strong { font: 800 15px var(--f-titre); color: #8a4a00; }
.iptv-inst-apps__good ul { margin: 0; padding-left: 18px; display: flex; flex-direction: column; gap: 6px; font-size: 14px; line-height: 1.55; color: var(--encre-2); }
.iptv-inst-apps__good a { font: 800 14px var(--f-titre); color: var(--violet); align-self: flex-start; }
.iptv-inst-apps__help { display: flex; align-items: center; justify-content: space-between; gap: 12px; background: #fff; border: 1px dashed #cfcabd; border-radius: 16px; padding: 14px 16px; color: var(--encre); font-size: 14px; line-height: 1.5; }
.iptv-inst-apps__help:hover { border-color: var(--violet); color: var(--encre); }
.iptv-inst-apps__help b { font: 800 14px var(--f-titre); color: var(--violet); white-space: nowrap; }
.iptv-inst-faq { padding-bottom: clamp(64px,8vw,104px); }
.iptv-inst-faq__head { margin-bottom: 24px; }

.iptv-trialbox { padding-bottom: clamp(64px,8vw,104px); }
.iptv-trialbox__in { background: #f3f2ef; border: 1px solid #cfcabd; border-radius: 32px; padding: clamp(28px,4vw,48px) clamp(22px,4vw,44px); display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%,300px),1fr)); gap: 40px; align-items: center; }
.iptv-trialbox__p { font-size: 17px; line-height: 1.65; color: var(--encre-3); margin: 0; }
.iptv-trialbox__f label { font-size: 13px; font-weight: 600; color: var(--encre-3); }
.iptv-trialbox__f input { font: 400 16px var(--f-texte); color: var(--encre); background: #fff; border: 1px solid var(--bord-2); border-radius: 14px; padding: 16px 18px; width: 100%; box-sizing: border-box; }
.iptv-trialbox__f input:focus { outline: none; border-color: var(--violet); box-shadow: 0 0 0 3px rgba(91,46,255,0.16); }
.iptv-trialbox__f input[aria-invalid="true"] { border-color: var(--erreur); }
.iptv-trialbox__go { font: 800 16px var(--f-titre); color: #fff; background: var(--spectre); border: 0; border-radius: 14px; padding: 17px 26px; cursor: pointer; box-shadow: 0 14px 36px rgba(91,46,255,0.30); transition: all .18s ease; }
.iptv-trialbox__go:hover { transform: translateY(-1px); }
.iptv-trialbox__s { font-size: 13px; line-height: 1.55; color: var(--attenue); }

.iptv-offer-band { padding-top: clamp(48px,6vw,80px); }
.iptv-offer-band__box { display: flex; align-items: center; justify-content: space-between; gap: 18px 32px; flex-wrap: wrap; background: linear-gradient(155deg,#12307a 0%,#0d1230 70%); color: #fff; border-radius: 28px; padding: clamp(24px,3.5vw,40px); }
.iptv-offer-band__txt { display: flex; flex-direction: column; gap: 8px; max-width: 620px; }
.iptv-offer-band__k { font-size: 12px; font-weight: 700; letter-spacing: .2em; text-transform: uppercase; color: var(--violet-nuit); }
.iptv-offer-band__t { font-family: var(--f-titre); font-size: clamp(26px,3.2vw,40px); font-weight: 800; line-height: 1.05; letter-spacing: -0.035em; }
.iptv-offer-band__s { font-size: 15px; color: var(--sur-nuit); }
.iptv-offer-band__a { font: 800 16px var(--f-titre); color: var(--nuit); background: #fff; border-radius: 14px; padding: 16px 26px; white-space: nowrap; box-shadow: 0 0 0 3px rgba(255,46,136,0.9); }
.iptv-offer-band__a:hover { background: var(--lavande); color: var(--nuit); }
.iptv-offer-band__b { font: 800 16px var(--f-titre); color: #fff; border: 1px solid rgba(255,255,255,0.3); border-radius: 14px; padding: 15px 22px; white-space: nowrap; }
.iptv-offer-band__b:hover { background: rgba(255,255,255,0.1); color: #fff; }

/* Accroche-mot clé placée DANS le H1 (étude SEO : la requête d'abord, le slogan ensuite) */
h1 .iptv-h1-kw { display: flex; font-family: var(--f-texte); font-size: 12px; font-weight: 700; line-height: 1.3; letter-spacing: .2em; text-transform: uppercase; color: var(--violet); font-style: normal; margin: 0 0 18px; text-wrap: balance; }
h1 .iptv-h1-kw.iptv-eyebrow--nuit, .iptv-es-h1 .iptv-h1-kw { color: var(--violet-nuit); background: none; -webkit-background-clip: border-box; background-clip: border-box; }
.iptv-display .iptv-h1-kw { margin-bottom: 22px; }

/* Abonnements : en-tête de la section #choisir (tableau fusionné depuis l'ancien Comparateur) */
.iptv-abo-choisir { padding-bottom: 28px; scroll-margin-top: 90px; }

/* Bande finale « Prêt à regarder ce soir ? » */
.iptv-pret { padding: clamp(64px,8vw,104px) var(--gutter); background: var(--nuit); color: #fff; }
.iptv-pret__in { max-width: 880px; margin: 0 auto; display: flex; flex-direction: column; align-items: center; text-align: center; gap: 22px; }
.iptv-pret__h { font-family: var(--f-titre); font-size: clamp(34px,4.6vw,60px); font-weight: 800; line-height: 1; letter-spacing: -0.04em; margin: 0; text-wrap: balance; color: #fff; }
.iptv-pret__p { font-size: 18px; line-height: 1.6; color: var(--sur-nuit); margin: 0; max-width: 560px; }
.iptv-pret__btn { font: 800 18px var(--f-titre); color: var(--nuit); background: var(--ambre-trait); border-radius: 14px; padding: 18px 30px; min-height: 56px; display: inline-flex; align-items: center; box-shadow: 0 18px 44px rgba(255,154,46,0.35); transition: all .18s ease; }
.iptv-pret__btn:hover { background: #ffa24d; color: var(--nuit); transform: translateY(-2px); }
.iptv-pret__trust { display: flex; flex-wrap: wrap; justify-content: center; gap: 6px 16px; font-size: 14px; color: var(--sur-nuit-2); }

/* Titres de blocs partagés rendus en <p> (étude 5.0 : H2 réservés au plan éditorial). Deux classes pour passer
   devant « :root :where(p) » de theme.json (interligne 1.65, couleur encre-3) et garder le rendu des anciens H2. */
.iptv-apl .iptv-apl__h, .iptv-rassurance .iptv-rassurance__h, .iptv-cb__cta .iptv-cb__title { text-wrap: balance; }
.iptv-apl .iptv-apl__h { margin: 0; line-height: 1.05; color: var(--encre); }
.iptv-rassurance .iptv-rassurance__h { margin: 0; line-height: 1.02; color: var(--encre); }
.iptv-pret .iptv-pret__h { line-height: 1; color: #fff; }
.iptv-pret .iptv-pret__p { color: var(--sur-nuit); }
.iptv-cb__cta .iptv-cb__title { margin: 0; font-size: clamp(30px,4vw,52px); line-height: 1; color: #fff; max-width: none; }
.iptv-reco .iptv-tools-title { line-height: 1; color: var(--encre); }
.iptv-device .iptv-tools-title { line-height: 1.02; color: var(--encre); }
/* Questionnaire « formule en 2 clics » : 3 usages (formule Adulte gelée, pas de tuile) → la dernière tuile occupe la ligne sur téléphone. */
@media (max-width: 519px) {
	.iptv-reco__usages > .iptv-reco__usage:last-child:nth-child(odd) { grid-column: 1 / -1; }
}

/* ==========================================================================
   28. Mouvement réduit
   ========================================================================== */
@media (prefers-reduced-motion: reduce) {
	html { scroll-behavior: auto; }
	*, *::before, *::after {
		animation-duration: .01ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: .01ms !important;
	}
	.ux-press:active, .iptv-card--hover:hover { transform: none; }
}
