/* Compléments à common.css (toast, fenêtres, formulaires, bannières) */
.toast{position:fixed;left:50%;bottom:calc(22px + env(safe-area-inset-bottom,0px));transform:translate(-50%,20px);opacity:0;background:var(--tx);color:var(--bg);padding:11px 18px;border-radius:12px;font-size:14px;z-index:90;transition:.3s;max-width:90vw;pointer-events:none}
.toast.on{opacity:1;transform:translate(-50%,0)}.toast.k{background:var(--ko);color:#fff}
.mdl{position:fixed;inset:0;background:#0b102088;backdrop-filter:blur(4px);display:grid;place-items:center;z-index:80;padding:16px;animation:up .25s both}
.mdl>div{background:var(--bg);border:1px solid var(--bd);border-radius:18px;padding:22px;width:100%;max-width:560px;max-height:88vh;overflow:auto}
.mdl pre{background:#0b1020;color:#d6e2ff;padding:14px;border-radius:12px;font-size:12px;overflow:auto;max-height:46vh;white-space:pre}
.mdl .acts{display:flex;gap:8px;justify-content:flex-end;margin-top:14px;flex-wrap:wrap}
.pw{font-size:26px;letter-spacing:4px;font-weight:700;text-align:center;padding:14px;border-radius:12px;background:var(--ac2);color:var(--ac);margin:10px 0}
.banner{padding:12px 14px;border-radius:12px;margin-bottom:14px;border:1px solid var(--bd);border-left:4px solid var(--warn);background:var(--card)}.banner.k{border-left-color:var(--ko)}
.live{display:inline-flex;align-items:center;font-size:12px;color:var(--mut);gap:6px}.live i{width:8px;height:8px;border-radius:50%;background:var(--ok);animation:pulse 2s infinite}.live.off i{background:var(--ko);animation:none}
.side .who{margin-top:auto;padding:14px 10px 0;font-size:12px;color:var(--mut);border-top:1px solid var(--bd)}.side .who b{display:block;color:var(--tx);font-size:13px}
.side .who button{margin-top:8px;padding:6px 12px;font-size:12px}.side .ft{margin-top:6px;padding-top:8px}
.sm{padding:6px 12px;font-size:13px}
.empty{padding:26px;text-align:center;color:var(--mut)}
.pill.g{background:#5f6b8522;color:var(--mut)}
.tag{font-size:12px;color:var(--mut)}
.linkbox{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.linkbox code{flex:1 1 220px;background:var(--ac2);padding:9px 12px;border-radius:10px;font-size:13px;overflow:auto;white-space:nowrap}
.cut{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:10px}
.k2{display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}
h4{margin:14px 0 6px;font-size:14px}
@media print{.side,.top,.bg,.noprint{display:none!important}main{margin:0}}
.al{--c:var(--ok)}.al.ko{--c:var(--ko)}.al.w{--c:var(--warn)}

.al.i{--c:var(--ac)}
pre.code{background:#0b1020;color:#d6e2ff;padding:14px;border-radius:12px;font-size:12px;overflow:auto;max-height:42vh;white-space:pre}
.steps{display:flex;gap:8px;flex-wrap:wrap;margin:6px 0 16px}.stp{display:flex;align-items:center;gap:8px;padding:8px 14px;border-radius:99px;border:1px solid var(--bd);background:var(--card);color:var(--mut);font-size:14px}.stp b{display:grid;place-items:center;width:22px;height:22px;border-radius:50%;background:var(--ac2);color:var(--ac);font-size:12px}
.stp.on{border-color:var(--ac);color:var(--tx)}.stp.on b{background:var(--ac);color:#fff}.stp.ok b{background:var(--ok);color:#fff}
.chk{display:flex;gap:12px;align-items:flex-start;padding:12px 4px;border-bottom:1px solid var(--bd)}.chk>b{flex:none;display:grid;place-items:center;width:26px;height:26px;border-radius:50%;color:#fff;background:var(--ok)}.chk.ko>b{background:var(--ko)}.chk.w>b{background:var(--warn)}
.chk em{font-style:normal;color:var(--mut);font-size:13px}.chk em.hint{color:var(--tx)}
.trk{display:flex;gap:4px;flex-wrap:wrap}.trk span{font-size:12px;padding:3px 9px;border-radius:99px;background:var(--ac2);color:var(--mut)}.trk .done{background:#1fb97a22;color:var(--ok)}.trk .cur{background:var(--ac);color:#fff}
details.card summary{cursor:pointer;list-style:none}details.card summary::-webkit-details-marker{display:none}

/* ---- Typographie : Poppins embarquée, plus de gras, hiérarchie nette ---- */
body{font-feature-settings:"tnum" 1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}
h1{font-weight:800;font-size:27px;letter-spacing:-.4px;line-height:1.15;margin:0 0 6px}
h2{font-weight:700;letter-spacing:-.2px}
h3{font-weight:700;font-size:16.5px;letter-spacing:-.1px;margin:0 0 12px}
h4{font-weight:700}
.sub{font-weight:500;font-size:14px;line-height:1.6;max-width:70ch}
label,.mut{font-weight:600}
.mut{font-weight:500}
label{font-size:12.5px;letter-spacing:.2px}
.grp{font-weight:700;font-size:11.5px;letter-spacing:1.2px}
.side a{font-weight:600;font-size:14px;padding:11px 13px}
.side a.on{font-weight:700}
.bn{font-weight:800;letter-spacing:.2px}
.bn small{font-weight:600;letter-spacing:2px;font-size:11px;text-transform:none}
.brand .bn{max-width:175px}.bnn{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
button,.cta,.pri,.sm{font-family:inherit;font-weight:700;letter-spacing:.1px}
input,select,textarea{font-family:inherit;font-weight:600}
th{font-weight:700;font-size:12px;letter-spacing:.5px;text-transform:uppercase}
td{font-weight:500}
td b,.tag,.pill{font-weight:700}
.tag{font-weight:600}
.big{font-weight:800;letter-spacing:-.6px}
.banner,.err,.note{font-weight:600}
.toast{font-weight:600}
.ticket b{font-weight:800}
.card{padding-top:20px}
.card h3+p.mut,.card h3+.mut{margin-top:-4px}
@media(max-width:820px){h1{font-size:23px}}

/* ======== v27 : habillage « bleu profond + orange » ======== */
.wfi{width:40px;height:40px;flex:none;border-radius:12px;display:grid;place-items:center;background:linear-gradient(135deg,#ff9a3c,#ff6a00);box-shadow:0 6px 16px #ff6a0066}.wfi svg{width:22px;height:22px}
.lgo{display:block;max-width:100%;height:auto}
.brand.lg{background:#fff;border-radius:16px;padding:10px 12px;margin:0 4px 18px;box-shadow:0 8px 22px -10px #0b1f5c88}.brand.lg .lgo{width:100%}
#auth>.brand.lg{max-width:260px;margin:0 auto 18px;border:1px solid var(--bd)}
.top .wfi{width:30px;height:30px;border-radius:9px}.top .wfi svg{width:17px;height:17px}.top .lgo.tp{height:28px;width:auto}
/* menu latéral */
.side{background:linear-gradient(185deg,#0b1f5c 0%,#1646b8 100%);color:#fff;border-right:0;backdrop-filter:none}
.side a{color:#e6eeff}.side a:hover{background:rgba(255,255,255,.13)}
.side a.on{background:rgba(255,255,255,.2);color:#fff;box-shadow:inset 3px 0 var(--or)}
.side .grp{color:#a9bdf0}
.side .brand .bn{color:#fff}.side .brand .bn small{color:#ffb27a}
.side .who{border-top-color:rgba(255,255,255,.2);color:#cdd9f7}.side .who b{color:#fff}.side .who a{color:#ffd0a8}
.side .tag,.side .mut,.side .ft{color:#b9c9f5}
.side .who button,.side .who select{background:rgba(255,255,255,.12);color:#fff;border-color:rgba(255,255,255,.25)}
.side .who select option{color:#0b1020}
.side .live{color:#b9c9f5}
/* « Contacter » + petit logo discret */
.cfoot{text-align:center;margin-top:14px}
.cfoot a{display:inline-block;font-weight:700;font-size:13px;color:var(--ac);text-decoration:none;padding:7px 14px;border-radius:99px;border:1.5px solid currentColor}
.cfoot .lgbox{display:inline-block;margin-top:10px;background:#fff;border-radius:10px;padding:4px 12px;border:1px solid var(--bd)}.cfoot .lgo.sm{height:22px;width:auto}
.side .cfoot{margin-top:14px;padding:0 6px}.side .cfoot a{color:#fff;border-color:rgba(255,255,255,.45);background:rgba(255,255,255,.1)}.side .cfoot a:hover{background:rgba(255,255,255,.2)}
.side .cfoot .lgbox{border:0}
/* portail captif : bandeau avec le nom du WiFi du distributeur, aucun logo DIATRA TECH */
.phead{background:linear-gradient(135deg,#0b1f5c,#1646b8 60%,#2a7bff);color:#fff;border-radius:20px;padding:16px 18px;margin-bottom:16px;box-shadow:0 14px 30px -14px #0b1f5c}
.phead .wfi{width:46px;height:46px;background:linear-gradient(135deg,#ff9a3c,#ff6a00)}.phead .wfi svg{width:25px;height:25px}
.phead .bn{color:#fff;font-size:19px;line-height:1.2}.phead .bn small{display:block;color:#cfe0ff;font-size:12px;letter-spacing:.3px;margin-top:3px;font-weight:600}
.pfoot{text-align:center;margin-top:22px;padding-top:16px;border-top:1px solid var(--bd)}
.pf-b{display:flex;gap:10px;justify-content:center;margin-top:10px;flex-wrap:wrap}
.pf-b a{display:inline-block;padding:9px 18px;border-radius:99px;font-weight:700;font-size:13px;text-decoration:none;color:var(--ac);border:1.5px solid var(--ac);background:var(--card)}.pf-b a:last-child{color:#128c4a;border-color:#25d366}
.plan{border-radius:16px}
button.cta{background:linear-gradient(135deg,#ff9a3c,#ff6a00);border-color:transparent;box-shadow:0 8px 20px -8px #ff6a00}

/* v28.2 : provenance des tickets et débit */
.pv{display:inline-block;padding:3px 10px;border-radius:99px;font-size:12px;font-weight:700;white-space:nowrap}
.pv.om{background:#fff0e0;color:#c4580a}.pv.ma{background:#e3edff;color:#1646b8}.pv.st{background:#e9fbf1;color:#15803d}.pv.ro{background:#eceff5;color:#4a5878;border:1px dashed #9aa7c4}
@media(prefers-color-scheme:dark){:root:not([data-theme="light"]) .pv.om{background:#3a2210;color:#ffb366}}
:root[data-theme="dark"] .pv.om{background:#3a2210;color:#ffb366}
/* iPhone : un champ dont la police est inférieure à 16 px fait zoomer la page à la saisie (et décale le portail) */
@media(max-width:820px){input,select,textarea{font-size:16px}}
/* v28.2 : onglets des tickets — l'onglet choisi se voit */
#main .sq{display:flex;gap:8px;flex-wrap:wrap}#main .sq button{font-weight:700}
#main .sq button[aria-pressed="true"]{background:var(--ac);color:#fff;border-color:var(--ac)}
/* v28.3 : tableau de bord en direct, quota FAI, suppression des tickets */
.lvh{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin:4px 0 12px}.lvt{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.lvt button[aria-pressed="true"]{background:var(--ac);color:#fff;border-color:var(--ac)}
.lvg{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.lvc small,.big small{font-size:14px;font-weight:600}
.lvs{margin:18px 0 6px;font-size:15px}
.lvc svg{display:block;margin:4px 0}
.qbar{height:10px;border-radius:10px;background:var(--bd);overflow:hidden;margin-top:5px}.qbar i{display:block;height:100%;border-radius:10px;transition:width .6s}.qbar.s{height:7px;width:110px}
.qbox{margin-top:14px;padding:14px;border-radius:12px;background:var(--ac2)}
.lvtb td{vertical-align:middle}
button.dng{color:var(--ko);border-color:var(--ko)}button.dng:disabled{opacity:.45}
@media(min-width:760px){.lvc.w2{grid-column:span 2}}
.lvtb{width:100%}.card .chh{flex-wrap:wrap;gap:6px}
.lv2{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(min(100%,400px),1fr));margin-top:16px}.lv2>.card{min-width:0;overflow-x:auto}

/* v28.5 : barre de temps restant */
.rbar{height:5px;width:90px;border-radius:4px;background:var(--line,#e3e8f2);overflow:hidden;margin-top:4px}.rbar i{display:block;height:100%;border-radius:4px}
