/* IPTV Manager — styles revendeur (hérite des variables du thème : jour / nuit) */
.iptv-rs{
  --i-bg:var(--surface,#fff);--i-bg2:var(--surface-2,#f3f4f6);--i-inset:var(--bg,#f8fafc);
  --i-line:var(--line,#e5e7eb);--i-text:var(--text,#111827);--i-muted:var(--muted,#6b7280);
  --i-accent:var(--accent,#2563eb);--i-ok:var(--ok,#16a34a);--i-bad:var(--bad,#dc2626);
  color:var(--i-text);
}
html[data-theme="dark"] .iptv-rs,body.dark-mode .iptv-rs,body.dark .iptv-rs{
  --i-bg:var(--surface,#1e293b);--i-bg2:var(--surface-2,#273449);--i-inset:var(--bg,#0f172a);
  --i-line:var(--line,#334155);--i-text:var(--text,#e5e7eb);--i-muted:var(--muted,#94a3b8);
  --i-ok:var(--ok,#4ade80);--i-bad:var(--bad,#f87171);
}
@media (prefers-color-scheme:dark){
  html:not([data-theme]) .iptv-rs{--i-bg:#1e293b;--i-bg2:#273449;--i-inset:#0f172a;--i-line:#334155;--i-text:#e5e7eb;--i-muted:#94a3b8;--i-ok:#4ade80;--i-bad:#f87171}
}
.iptv-rs small{color:var(--i-muted)}

/* Carte niveau */
.iptv-level-card{display:grid;grid-template-columns:1fr auto;gap:14px 20px;align-items:center;background:var(--i-bg);border:1px solid var(--i-line);border-radius:14px;padding:18px 20px;margin:0 0 20px;box-shadow:var(--shadow,none)}
.iptv-lc-main{display:flex;align-items:center;gap:14px;min-width:0}
.iptv-lc-txt{display:flex;flex-direction:column;gap:2px;min-width:0}
.iptv-lc-txt strong{font-size:20px;line-height:1.2;color:var(--i-text)}
.iptv-lc-txt span{font-size:13px;color:var(--i-muted)}
.iptv-lc-bal{text-align:right;display:flex;flex-direction:column}
.iptv-lc-bal b{font-size:20px;color:var(--i-text)}
.iptv-lc-prog{grid-column:1/-1;display:flex;flex-direction:column;gap:6px}
.iptv-lc-bar{height:8px;border-radius:99px;background:var(--i-bg2);overflow:hidden;border:1px solid var(--i-line)}
.iptv-lc-bar i{display:block;height:100%;background:var(--i-accent);border-radius:99px}
.iptv-lc-actions{grid-column:1/-1;display:flex;gap:8px;flex-wrap:wrap}
.iptv-lvl-badge{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;border-radius:50%;overflow:hidden;vertical-align:middle}
.iptv-lvl-badge svg{display:block}
.iptv-lvl-img{width:100%;height:100%;object-fit:cover;border-radius:50%;display:block}
@media (max-width:560px){.iptv-level-card{grid-template-columns:1fr}.iptv-lc-bal{text-align:left}}

/* Tableaux / formulaires */
.iptv-rs .iptv-scroll{overflow-x:auto}
.iptv-rs table{width:100%;color:var(--i-text)}
.iptv-rs table th,.iptv-rs table td{border-color:var(--i-line)}
.iptv-amt{white-space:nowrap;font-weight:700}
.iptv-pos{color:var(--i-ok)}.iptv-neg{color:var(--i-bad)}
.iptv-nowrap{white-space:nowrap}
.iptv-pager{padding:14px 20px;display:flex;gap:8px}
.iptv-rp-filters{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 16px}
.iptv-rp-filters input[type=search]{flex:1 1 200px;min-width:0}
.iptv-rs input[type=text],.iptv-rs input[type=search],.iptv-rs select{background:var(--i-inset);color:var(--i-text);border:1px solid var(--i-line);border-radius:8px;padding:9px 12px}

/* Recharge */
.iptv-topup{margin:0 0 20px}
.iptv-box-pad{padding:16px 20px}
.iptv-presets{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 14px}
.iptv-preset{cursor:pointer}
.iptv-preset input{position:absolute;opacity:0;pointer-events:none}
.iptv-preset span{display:inline-block;padding:9px 14px;border:1px solid var(--i-line);border-radius:10px;background:var(--i-inset);color:var(--i-text);font-weight:600}
.iptv-preset input:checked+span{border-color:var(--i-accent);box-shadow:0 0 0 2px var(--i-accent)}
.iptv-preset input:focus-visible+span{outline:2px solid var(--i-accent);outline-offset:2px}
.iptv-topup-custom{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.iptv-muted{color:var(--i-muted);font-size:13px}
.iptv-sub{margin:18px 0 8px;font-size:15px}
.iptv-pending{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.iptv-pending li{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--i-line);border-radius:10px;background:var(--i-bg2)}

/* Boutons sur les commandes */
.iptv-order-links{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0 0}
.iptv-order-links .iptv-ol-btn{font-size:13px;padding:6px 12px}

/* Menu du compte (thème) : niveau sous le nom */
.iptv-nav-level{display:inline-flex;align-items:center;gap:5px;margin-top:3px;font-size:12px;font-weight:700;color:inherit;opacity:.9}
.iptv-nav-level .iptv-lvl-badge{border-radius:50%}

/* Parrainage */
.iptv-ref-hero{display:flex;flex-wrap:wrap;gap:14px;align-items:center;justify-content:space-between;background:var(--i-bg);border:1px solid var(--i-line);border-radius:14px;padding:18px 20px;margin:0 0 16px}
.iptv-ref-hero small{color:var(--i-muted)}
.iptv-ref-link{margin-top:6px}.iptv-ref-link code{display:inline-block;max-width:100%;word-break:break-all;background:var(--i-inset);border:1px solid var(--i-line);border-radius:8px;padding:8px 12px;color:var(--i-text);font-weight:700}
.iptv-ref-actions{display:flex;gap:8px;flex-wrap:wrap}
.iptv-ref-steps{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;margin:0 0 16px}
.iptv-ref-steps div{display:flex;gap:12px;align-items:center;background:var(--i-bg);border:1px solid var(--i-line);border-radius:12px;padding:12px 14px}
.iptv-ref-steps b{flex:0 0 auto;width:30px;height:30px;border-radius:50%;background:var(--i-accent);color:#fff;display:inline-flex;align-items:center;justify-content:center}
.iptv-ref-steps span{font-size:13px;color:var(--i-text)}
.iptv-ref-stats{margin:0 0 18px}
.iptv-rs .iptv-sum{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:12px}
.iptv-rs .iptv-sum-item{background:var(--i-bg);border:1px solid var(--i-line);border-radius:12px;padding:12px 16px;display:flex;flex-direction:column;gap:2px;color:var(--i-text)}
.iptv-rs .iptv-sum-item b{font-size:22px;line-height:1.15}.iptv-rs .iptv-sum-item span{font-size:12px;color:var(--i-muted)}
.iptv-rs .iptv-sum-item.is-ok b{color:var(--i-ok)}.iptv-rs .iptv-sum-item.is-warn b{color:#d97706}
.iptv-ref-st{display:inline-block;padding:2px 9px;border-radius:99px;font-size:11px;font-weight:700;background:var(--i-bg2);color:var(--i-muted)}
.iptv-ref-st.is-rewarded{background:rgba(22,163,74,.15);color:var(--i-ok)}.iptv-ref-st.is-pending{background:rgba(217,119,6,.15);color:#d97706}
.iptv-copy-btn-mini{background:var(--i-bg2);border:1px solid var(--i-line);color:var(--i-text);font-size:11px;padding:3px 8px;border-radius:4px;cursor:pointer}

/* Fiche produit : durée / format en cartes */
.iptv-tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(132px,1fr));gap:10px;margin:6px 0 4px}
.iptv-select-hidden{position:absolute!important;opacity:0!important;pointer-events:none!important;width:1px!important;height:1px!important;overflow:hidden}
.iptv-tile{appearance:none;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;min-height:64px;padding:10px 12px;border-radius:12px;cursor:pointer;font:inherit;
  background:var(--surface-2,#f3f4f6);color:var(--text,#111827);border:1.5px solid var(--line,#e5e7eb);transition:border-color .15s,box-shadow .15s,transform .1s}
.iptv-tile:hover{border-color:var(--accent,#2563eb)}
.iptv-tile:focus-visible{outline:2px solid var(--accent,#2563eb);outline-offset:2px}
.iptv-tile.is-on{border-color:var(--accent,#2563eb);box-shadow:0 0 0 2px var(--accent,#2563eb) inset;background:color-mix(in srgb,var(--accent,#2563eb) 12%,var(--surface,#fff))}
.iptv-tile-name{font-weight:800;font-size:15px;line-height:1.2}
.iptv-tile-price{font-size:12.5px;color:var(--muted,#6b7280);line-height:1.25}
.iptv-tile.is-on .iptv-tile-price{color:var(--text,#111827)}
.iptv-tile-flag{font-size:10.5px;font-weight:800;text-transform:uppercase;letter-spacing:.3px;color:var(--bad,#dc2626)}
.iptv-tile.is-flagged:not(.is-on){opacity:.65}
@media (max-width:480px){.iptv-tiles{grid-template-columns:repeat(2,1fr)}}

/* Tuiles : désactivées (rupture) */
.iptv-tile:disabled,.iptv-tile.is-disabled{cursor:not-allowed;opacity:.45;text-decoration:line-through}
.iptv-tile:disabled .iptv-tile-flag{text-decoration:none}
.iptv-select-hidden{display:none!important}

/* Achat direct revendeur */
.iptv-buy-row{--iptv-h:48px;display:flex;flex-wrap:nowrap;gap:10px;align-items:stretch;width:100%;flex:1 1 100%;margin:0}
.iptv-buy-row>*{height:var(--iptv-h)!important;min-height:var(--iptv-h)!important;box-sizing:border-box;margin:0!important}
.iptv-buy-row>.quantity{flex:none;display:flex}
.iptv-buy-row>.quantity .qty{height:100%!important;width:76px}
.iptv-buy-row>.single_add_to_cart_button,.iptv-buy-row>.iptv-direct-buy-btn{flex:1 1 0!important;width:auto!important;min-width:0;display:inline-flex;align-items:center;justify-content:center;text-align:center;border-radius:12px!important;font-weight:700;line-height:1.15;padding:0 12px!important;font-size:.95rem}
.iptv-buy-row>.nv-fav,.iptv-buy-row>.nv-fav-lg{flex:none;width:var(--iptv-h)!important}
.iptv-direct-buy-btn{background:var(--accent,#2563eb)!important;color:#fff!important;border:2px solid var(--accent,#2563eb)!important;cursor:pointer}
.iptv-direct-buy-btn:hover{filter:brightness(1.08)}
.iptv-direct-buy-btn .iptv-db-ico{width:20px;height:20px;flex:none;margin-inline-end:6px}
.iptv-buy-row>.iptv-direct-buy-btn{flex:0 0 auto!important;width:auto!important;padding:0 18px!important;white-space:nowrap}
form.cart.iptv-has-direct{flex-wrap:wrap}
@media (max-width:480px){.iptv-buy-row>.iptv-direct-buy-btn{padding:0 12px!important}.iptv-direct-buy-btn .iptv-db-ico{margin-inline-end:4px}.iptv-buy-row{gap:6px}.iptv-buy-row>.quantity .qty{width:52px}.iptv-buy-row>.single_add_to_cart_button,.iptv-buy-row>.iptv-direct-buy-btn{font-size:.78rem;padding:0 6px!important}.iptv-buy-row>.single_add_to_cart_button::before{display:none}}
.iptv-modal-overlay{position:fixed;inset:0;z-index:100000;background:rgba(2,6,23,.6);display:flex;align-items:center;justify-content:center;padding:16px}
.iptv-modal{background:var(--surface,#fff);color:var(--text,#111827);border:1px solid var(--line,#e5e7eb);border-radius:16px;max-width:520px;width:100%;max-height:90vh;overflow:auto;padding:20px;box-shadow:0 20px 50px rgba(0,0,0,.35)}
.iptv-modal-title{margin:0 0 12px;font-size:20px}
.iptv-modal-meta{margin:10px 0;color:var(--muted,#6b7280);font-size:13px}
.iptv-modal-row{display:flex;align-items:center;gap:8px;padding:6px 0;border-bottom:1px dashed var(--line,#e5e7eb);flex-wrap:wrap}
.iptv-modal-label{color:var(--muted,#6b7280);font-size:13px;min-width:90px}
.iptv-modal-val{font-weight:700}
.iptv-modal-card{background:var(--surface-2,#f8fafc);border:1px solid var(--line,#e5e7eb);border-radius:12px;padding:12px;margin:10px 0}
.iptv-modal-sub{font-size:12.5px;color:var(--muted,#6b7280);margin-bottom:4px}
.iptv-modal-code{flex:1;min-width:0;word-break:break-all;font-size:15px;font-weight:700;background:var(--bg,#fff);padding:4px 8px;border-radius:8px;border:1px solid var(--line,#e5e7eb)}
.iptv-modal-copy{padding:4px 10px!important;font-size:12px!important}
.iptv-modal-foot{display:flex;gap:8px;justify-content:flex-end;margin-top:14px;flex-wrap:wrap}
.iptv-modal-err{color:var(--bad,#dc2626);font-weight:700}
.iptv-modal-spin{width:32px;height:32px;margin:14px auto;border:3px solid var(--line,#e5e7eb);border-top-color:var(--accent,#2563eb);border-radius:50%;animation:iptvspin .8s linear infinite}
@keyframes iptvspin{to{transform:rotate(360deg)}}
.iptv-find-code{margin:16px 0;padding:14px 16px;border-radius:14px;border:1px solid var(--accent,#2563eb);background:color-mix(in srgb,var(--accent,#2563eb) 8%,var(--surface,#fff));color:var(--text,#111827)}
.iptv-find-code p{margin:0 0 8px}
.iptv-find-code .button{margin-top:4px}
.iptv-modal-row.is-total .iptv-modal-val{font-size:18px;color:var(--accent,#2563eb)}

/* Points et récompenses */
.iptv-pts-head p{color:var(--muted,#6b6985);margin:.2em 0 1em}
.iptv-pts-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px;margin:0 0 20px}
.iptv-pts-card{display:flex;flex-direction:column;gap:2px;padding:16px;border:1px solid var(--line,#e6e5f0);border-radius:var(--r,12px);background:var(--surface,#fff)}
.iptv-pts-card small{color:var(--muted,#6b6985)}.iptv-pts-card b{font-size:1.9rem;line-height:1.1}.iptv-pts-card span{font-size:.85rem;color:var(--muted,#6b6985)}
.iptv-pts-card.is-main{background:linear-gradient(135deg,var(--accent-dark,#4533c9),var(--accent,#5b45f0));color:#fff;border-color:transparent}.iptv-pts-card.is-main small,.iptv-pts-card.is-main span{color:rgba(255,255,255,.85)}
.iptv-pts-steps{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:12px;list-style:none;margin:0 0 20px;padding:0;counter-reset:s}
.iptv-pts-steps li{counter-increment:s;padding:14px 16px;border:1px solid var(--line,#e6e5f0);border-radius:var(--r,12px);background:var(--surface,#fff);display:flex;flex-direction:column;gap:4px}
.iptv-pts-steps li::before{content:counter(s);width:26px;height:26px;border-radius:50%;background:var(--accent,#5b45f0);color:#fff;display:grid;place-items:center;font-weight:700;font-size:.85rem}
.iptv-pts-steps span{color:var(--muted,#6b6985);font-size:.9rem}
.iptv-pts-tablewrap{overflow-x:auto;margin:12px 0}
.iptv-pts-table{width:100%;border-collapse:collapse}.iptv-pts-table th,.iptv-pts-table td{padding:10px 12px;border-bottom:1px solid var(--line,#e6e5f0);text-align:start;white-space:nowrap}
.iptv-pts-table tr.is-current{background:color-mix(in srgb,var(--accent,#5b45f0) 10%,transparent);font-weight:600}
.iptv-pts-table .is-plus{color:#0f9d6a;font-weight:700}.iptv-pts-table .is-minus{color:#dc2626;font-weight:700}
.iptv-pts-next{margin:6px 0 16px;font-weight:600}
.iptv-pts-box{margin:0 0 16px;padding:14px 16px;border:1px dashed var(--accent,#5b45f0);border-radius:var(--r,12px);background:color-mix(in srgb,var(--accent,#5b45f0) 6%,transparent)}
.iptv-pts-box h4{margin:0 0 6px}.iptv-pts-box p{margin:0 0 8px}.iptv-pts-ok{color:#0f9d6a;font-weight:700}
.iptv-pts-form{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:6px 0}.iptv-pts-form input[type=number]{width:120px}
.iptv-pts-chip{display:inline-flex;align-items:center;gap:5px;margin-top:4px;padding:2px 10px;border-radius:99px;background:color-mix(in srgb,var(--accent,#5b45f0) 12%,transparent);color:var(--accent,#5b45f0);font-weight:700;font-size:.78rem}
