/* NovyChat — application indépendante (même serveur que Kibaro). Style fidèle à la démo NovyChat : clair par défaut, mode sombre, vert émeraude. */
:root{--em:#059669;--em2:#047857;--em5:#10b981;--em4:#34d399;--em50:#ecfdf5;--amber:#f59e0b;--rose:#f43f5e;--rose6:#e11d48;
  --bg:#f8fafc;--card:#fff;--line:#e2e8f0;--line2:#f1f5f9;--txt:#1e293b;--mut:#64748b;--mut2:#94a3b8;--in:#fff;--inl:#e2e8f0;--soft:#f1f5f9;--hover:#f1f5f9;--chatbg:#f1f5f9;--other:#fff;--othertxt:#1e293b;--sh:0 10px 40px rgba(15,23,42,.18)}
html.nvdark{--bg:#020617;--card:#0f172a;--line:rgba(255,255,255,.1);--line2:rgba(255,255,255,.05);--txt:#f1f5f9;--mut:#94a3b8;--mut2:#64748b;--in:#1e293b;--inl:rgba(255,255,255,.1);--soft:#1e293b;--hover:rgba(255,255,255,.05);--chatbg:#1e293b;--other:#334155;--othertxt:#f1f5f9;--sh:0 10px 40px rgba(0,0,0,.5)}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;height:100%;background:var(--bg);color:var(--txt);font:14px/1.45 Inter,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer;padding:0}
input,textarea,select{font:inherit;color:var(--txt)}
.hidden{display:none!important}
.av{border-radius:9999px;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:700;flex-shrink:0;overflow:hidden;position:relative}
.av img{width:100%;height:100%;object-fit:cover}
.av .dot{position:absolute;right:1px;bottom:1px;width:11px;height:11px;border-radius:50%;background:#22c55e;border:2px solid var(--card)}
.btn{background:var(--em);color:#fff;border-radius:12px;padding:10px 16px;font-weight:600;font-size:14px;transition:background .15s}
.btn:hover{background:var(--em2)}.btn:disabled{background:#cbd5e1;cursor:not-allowed}
.btn.ghost{background:transparent;color:var(--em);border:1px solid var(--em)}.btn.ghost:hover{background:var(--em50)}
html.nvdark .btn.ghost:hover{background:rgba(16,185,129,.1)}
.btn.red{background:var(--rose6)}.btn.red:hover{background:#be123c}
.inp{width:100%;border:1px solid var(--inl);background:var(--in);border-radius:12px;padding:10px 14px;font-size:14px;outline:0}
.inp:focus{border-color:var(--em5);box-shadow:0 0 0 3px rgba(16,185,129,.25)}
.err{color:var(--rose);font-size:12px;min-height:0}.err:empty{display:none}
.mut{color:var(--mut)}.small{font-size:12px}
/* ---------- inscription / connexion ---------- */
#auth{min-height:100%;display:flex;align-items:center;justify-content:center;gap:28px;flex-wrap:wrap;padding:16px;background:linear-gradient(135deg,#0f172a,#022c22 50%,#0f172a)}
.acard{width:100%;max-width:384px;background:#fff;color:#1e293b;border-radius:24px;box-shadow:0 25px 50px -12px rgba(0,0,0,.5);padding:32px}
.acard .inp{background:#fff;color:#1e293b;border-color:#e2e8f0}
.alogo{display:flex;flex-direction:column;align-items:center;margin-bottom:24px}
.aicon{width:56px;height:56px;border-radius:16px;background:linear-gradient(135deg,#10b981,#f59e0b);display:flex;align-items:center;justify-content:center;font-size:26px;margin-bottom:12px}
.alogo h1{font-size:20px;font-weight:700;margin:0;color:#1e293b}.alogo p{font-size:12px;color:#64748b;text-align:center;margin:4px 0 0}
.afield{margin-bottom:16px}.afield label{display:block;font-size:12px;font-weight:600;color:#475569;margin-bottom:4px}
.aphone{display:flex}.aphone select{border:1px solid #e2e8f0;border-right:0;border-radius:12px 0 0 12px;background:#f8fafc;color:#475569;font-size:14px;padding:0 6px;max-width:122px;outline:0}
.aphone .inp{border-radius:0 12px 12px 0}
.ahint{font-size:11px;color:#94a3b8;margin-top:4px}
.acard .btn{width:100%;padding:11px}
.aotp{font-size:24px;text-align:center;letter-spacing:.5em;font-weight:700;padding:12px}
.arow{display:flex;justify-content:space-between;font-size:12px;margin-top:14px;color:#94a3b8}.arow .lk{color:#059669;font-weight:500}
.lk{color:var(--em);cursor:pointer}.lk:hover{text-decoration:underline}
.atest{background:#fffbeb;border:1px dashed #f59e0b;border-radius:12px;padding:10px;text-align:center;font-size:13px;color:#92400e;margin-bottom:14px}.atest b{font-size:22px;letter-spacing:.2em;color:#059669;display:block}
.asep{display:flex;align-items:center;gap:10px;color:#94a3b8;font-size:12px;margin:18px 0 12px}.asep::before,.asep::after{content:"";flex:1;height:1px;background:#e2e8f0}
.aalt{text-align:center;font-size:13px;color:#64748b}
.aqr{width:100%;max-width:520px;background:#fff;color:#1e293b;border-radius:24px;box-shadow:0 25px 50px -12px rgba(0,0,0,.5);padding:28px 30px}
.aqr h2{font-size:22px;margin:0 0 16px}.aqrb{display:flex;gap:22px;align-items:center}
.aqr ol{flex:1;list-style:none;margin:0;padding:0;counter-reset:q}.aqr li{counter-increment:q;position:relative;padding:0 0 14px 36px;font-size:14px;line-height:1.45}
.aqr li::before{content:counter(q);position:absolute;left:0;top:0;width:24px;height:24px;border-radius:50%;border:1.5px solid #059669;color:#059669;font-weight:700;font-size:12px;display:flex;align-items:center;justify-content:center}
.aqr li small{color:#64748b}
.qrbox{position:relative;width:200px;height:200px;flex:none;border-radius:14px;overflow:hidden;background:#fff;border:1px solid #e2e8f0;display:flex;align-items:center;justify-content:center}
.qrbox svg{width:100%;height:100%;display:block}.qrbox.scanned svg{filter:blur(3px) opacity(.5)}
.qrbox .qlogo{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:42px;height:42px;border-radius:11px;background:linear-gradient(135deg,#10b981,#f59e0b);display:flex;align-items:center;justify-content:center;font-size:20px;box-shadow:0 0 0 4px #fff}
.qrbox .qre{width:100%;height:100%;border:0;background:#f8fafc;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;font-weight:600;color:#1e293b}
.qrbox .qre span{width:56px;height:56px;border-radius:50%;background:#059669;color:#fff;font-size:28px;display:flex;align-items:center;justify-content:center}
.aqrs{font-size:13px;color:#059669;min-height:18px;margin-top:8px}
.aqrk{display:flex;gap:8px;align-items:center;font-size:13px;margin-top:10px;color:#475569}
@media(max-width:899px){.aqr{display:none}}
/* ---------- application ---------- */
#app{height:100%;display:flex;overflow:hidden;position:relative;background:var(--bg)}
#side{flex:1;display:flex;flex-direction:column;min-width:0;background:var(--bg)}
#main{display:none}
@media(min-width:900px){#side{flex:0 0 400px;border-right:1px solid var(--line)}#main{display:flex;flex:1;flex-direction:column;min-width:0;background:var(--chatbg)}
  #main .empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;color:var(--mut);text-align:center;padding:30px}}
.hd{height:56px;display:flex;align-items:center;gap:8px;padding:0 16px;background:var(--card);border-bottom:1px solid var(--line);flex-shrink:0}
.hd .brand{font-weight:700;font-size:18px;color:var(--em);display:flex;align-items:center;gap:8px}
.hd .brand i{width:28px;height:28px;border-radius:9px;background:linear-gradient(135deg,#10b981,#f59e0b);display:flex;align-items:center;justify-content:center;font-style:normal;font-size:14px}
.hd .sp{flex:1}
.ib{padding:8px;border-radius:10px;font-size:18px;line-height:1;color:var(--mut)}.ib:hover{background:var(--hover);color:var(--txt)}
.plus{background:var(--em);color:#fff;border-radius:9999px;width:36px;height:36px;font-size:22px;line-height:1;display:flex;align-items:center;justify-content:center}.plus:hover{background:var(--em2)}
.srch{padding:8px 16px;background:var(--card);border-bottom:1px solid var(--line2);flex-shrink:0}
.srch input{width:100%;background:var(--soft);border:0;border-radius:12px;padding:9px 12px;font-size:14px;outline:0}
.typingbar{padding:4px 16px;font-size:11px;color:var(--em5)}
.body{flex:1;overflow-y:auto;background:var(--bg)}
.tabs{display:flex;border-top:1px solid var(--line);background:var(--card);flex-shrink:0;padding-bottom:env(safe-area-inset-bottom)}
.tabs button{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 0;font-size:10.5px;color:var(--mut2);position:relative}
.tabs button span{font-size:19px;line-height:1.1}.tabs button.on{color:var(--em);font-weight:600}
.tabs button b{position:absolute;top:3px;left:calc(50% + 6px);background:var(--em5);color:#fff;font-size:10px;border-radius:9px;padding:0 5px;min-width:16px}
/* liste */
.row{display:flex;align-items:center;gap:12px;padding:12px 16px;cursor:pointer;position:relative;border-bottom:1px solid var(--line2)}
.row:hover{background:var(--hover)}.row.on{background:var(--em50)}html.nvdark .row.on{background:rgba(16,185,129,.1)}
.row .rm{flex:1;min-width:0}.row .rt{display:flex;align-items:center;gap:8px}
.row .rt b{flex:1;font-weight:600;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.row .rt span{font-size:10.5px;color:var(--mut2)}
.row .rb{display:flex;align-items:center;gap:4px;font-size:12px;color:var(--mut)}
.row .rb .pv{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1}
.ub{background:var(--em5);color:#fff;font-size:10px;font-weight:700;padding:1px 6px;border-radius:9999px;min-width:18px;text-align:center}
.row .more{position:absolute;right:4px;top:50%;transform:translateY(-50%);color:var(--mut2);padding:4px 8px;font-size:15px;opacity:0}.row:hover .more{opacity:1}
@media(hover:none){.row .more{opacity:1}}
.row .rb .flags{display:flex;gap:2px;font-size:11px;margin-right:16px}
.menu{position:absolute;z-index:40;background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:var(--sh);padding:4px 0;font-size:13px;min-width:180px}
.menu button{display:block;width:100%;text-align:left;padding:8px 16px}.menu button:hover{background:var(--hover)}
.arch{display:flex;align-items:center;gap:12px;padding:10px 16px;cursor:pointer;font-size:13px;color:var(--mut);border-bottom:1px solid var(--line2)}.arch:hover{background:var(--hover)}.arch .ub{background:var(--soft);color:var(--mut)}
.empt{text-align:center;color:var(--mut2);font-size:13px;margin-top:40px;padding:0 20px}
.tk{font-size:11px;color:var(--mut2);letter-spacing:-2px;margin-right:2px}.tk.read{color:var(--amber)}
/* fenêtre de discussion */
.chat{flex:1;display:flex;flex-direction:column;min-width:0;min-height:0;background:var(--chatbg)}
.chat .hd .who{min-width:0;cursor:pointer}.chat .hd .who b{display:block;font-weight:600;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chat .hd .who small{display:block;font-size:11px;color:var(--em5);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.msgs{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:8px;background-color:var(--chatbg);background-image:radial-gradient(circle at 20% 20%,rgba(139,92,246,.07),transparent 40%),radial-gradient(circle at 80% 60%,rgba(236,72,153,.07),transparent 40%)}
html.nvdark .msgs{background-image:radial-gradient(circle at 20% 20%,rgba(139,92,246,.06),transparent 40%),radial-gradient(circle at 80% 60%,rgba(236,72,153,.06),transparent 40%)}
.day{align-self:center;font-size:11px;color:var(--mut);background:var(--card);border:1px solid var(--line);border-radius:10px;padding:2px 10px;margin:6px 0}
.mw{display:flex}.mw.me{justify-content:flex-end}
.mb{max-width:75%;position:relative}
.mb .au{font-size:11px;color:var(--mut);margin:0 0 2px 4px}
.mb .rq{border-left:4px solid var(--em4);background:rgba(226,232,240,.6);border-radius:8px;padding:4px 8px;margin-bottom:4px;font-size:12px;color:#475569;cursor:pointer}
html.nvdark .mb .rq{background:rgba(255,255,255,.1);color:#cbd5e1}
.bb{display:inline-block;max-width:100%;padding:8px 14px;border-radius:18px;font-size:14px;word-wrap:break-word;overflow-wrap:anywhere;white-space:pre-wrap}
.me .bb{background:var(--em);color:#fff;border-bottom-right-radius:6px}
.mw:not(.me) .bb{background:var(--other);color:var(--othertxt);border:1px solid var(--line);border-bottom-left-radius:6px}
html.nvdark .mw:not(.me) .bb{border:0}
.bb .tm{float:right;margin:6px 0 0 12px;font-size:10px;opacity:.7;white-space:nowrap}
.me .bb .tk{color:rgba(255,255,255,.75)}.me .bb .tk.read{color:#fcd34d}
.bb img.ph{display:block;border-radius:12px;max-height:256px;max-width:100%;cursor:zoom-in}
.bb video{display:block;border-radius:12px;max-height:280px;max-width:100%}
.bb a{color:inherit}
.bb .del{font-style:italic;font-size:12px;opacity:.7}
.bb .fl{display:flex;align-items:center;gap:8px;text-decoration:none}
.acts{position:absolute;top:4px;display:none;gap:6px;font-size:12px;white-space:nowrap}
.me .acts{left:0;transform:translateX(-100%);padding-right:8px}.mw:not(.me) .acts{right:0;transform:translateX(100%);padding-left:8px}
.mb:hover .acts{display:flex}.acts button{color:var(--mut)}.acts button:hover{color:var(--em5)}.acts button.dl:hover{color:var(--rose)}
@media(hover:none){.acts{display:none!important}}
.voice{display:flex;align-items:center;gap:8px;min-width:190px}
.voice .pb{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px;flex-shrink:0;background:#d1fae5;color:var(--em)}
.me .voice .pb{background:rgba(255,255,255,.2);color:#fff}
.voice .wv{display:flex;align-items:flex-end;gap:2px;flex:1;height:24px}.voice .wv i{width:3px;border-radius:2px;background:#d8d5e8}.me .voice .wv i{background:rgba(255,255,255,.45)}
.voice .wv i.a{background:var(--em)}.me .voice .wv i.a{background:#fff}
.voice small{font-size:11px;flex-shrink:0}
.rply{display:flex;align-items:center;gap:8px;padding:8px 16px;background:var(--em50);border-top:1px solid #d1fae5}
html.nvdark .rply{background:rgba(2,44,34,.4);border-top-color:#064e3b}
.rply div{flex:1;min-width:0;font-size:12px}.rply b{color:var(--em);display:block}.rply span{display:block;color:var(--mut);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.comp{position:relative;border-top:1px solid var(--line);padding:12px;background:var(--card);display:flex;align-items:center;gap:6px;padding-bottom:calc(12px + env(safe-area-inset-bottom))}
.comp .ib{font-size:20px}
.comp textarea{flex:1;border:1px solid var(--inl);background:var(--in);border-radius:12px;padding:9px 14px;font-size:14px;resize:none;max-height:120px;min-height:40px;outline:0;line-height:1.4}
.comp textarea:focus{box-shadow:0 0 0 2px rgba(52,211,153,.6);border-color:transparent}
.send{background:var(--em);color:#fff;border-radius:9999px;width:40px;height:40px;display:flex;align-items:center;justify-content:center;font-size:17px;flex-shrink:0}.send:hover{background:var(--em2)}
.emo{position:absolute;bottom:calc(100% + 6px);left:12px;background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:var(--sh);padding:8px;display:grid;grid-template-columns:repeat(7,1fr);gap:2px;z-index:5}
.emo button{font-size:20px;padding:4px;border-radius:6px}.emo button:hover{background:var(--hover)}
.rec{border-top:1px solid var(--line);padding:12px;background:#fff1f2;display:flex;align-items:center;gap:12px;padding-bottom:calc(12px + env(safe-area-inset-bottom))}
html.nvdark .rec{background:rgba(76,5,25,.4)}
.rec .dt{width:10px;height:10px;border-radius:50%;background:var(--rose);animation:pls 1s infinite}
.rec b{font-size:14px;color:#e11d48;font-weight:500}.rec .sp{flex:1}
@keyframes pls{50%{opacity:.3}}
/* superpositions */
.ov{position:fixed;inset:0;z-index:50;background:rgba(0,0,0,.5);display:flex;align-items:center;justify-content:center;padding:16px}
.dlg{background:var(--card);border-radius:16px;width:100%;max-width:448px;max-height:84vh;overflow-y:auto;padding:16px;box-shadow:var(--sh)}
.dlg h3{margin:0;font-size:16px;font-weight:700}.dlg .dh{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.dlg .x{color:var(--mut2);font-size:16px}
.pick{display:flex;align-items:center;gap:12px;padding:8px;border-radius:12px;cursor:pointer;width:100%;text-align:left}.pick:hover{background:var(--hover)}
.pick b{display:block;font-size:14px;font-weight:500}.pick small{font-size:11px;color:var(--mut2)}
.chips{display:flex;flex-wrap:wrap;gap:4px;margin:8px 0}.chip{font-size:12px;padding:4px 9px;border-radius:9999px;background:var(--soft);color:var(--mut)}.chip.on{background:var(--em);color:#fff}
.toast{position:fixed;left:50%;bottom:84px;transform:translateX(-50%);background:#0f172a;color:#fff;padding:9px 18px;border-radius:12px;font-size:13px;z-index:90;box-shadow:var(--sh);max-width:90vw;text-align:center}
html.nvdark .toast{background:#f1f5f9;color:#0f172a}
.zoom{position:fixed;inset:0;z-index:70;background:rgba(0,0,0,.9);display:flex;align-items:center;justify-content:center}.zoom img{max-width:96vw;max-height:92vh;border-radius:8px}
/* statuts */
.pad{padding:16px;display:flex;flex-direction:column;gap:20px}
.card{background:var(--card);border:1px solid var(--line);border-radius:16px}
.mystat{display:flex;align-items:center;gap:12px;padding:12px;width:100%;text-align:left}.mystat:hover{background:var(--hover)}
.plusb{position:absolute;right:-2px;bottom:-2px;width:20px;height:20px;border-radius:50%;background:var(--em);color:#fff;font-size:13px;display:flex;align-items:center;justify-content:center;border:2px solid var(--card)}
.sect{font-size:11px;text-transform:uppercase;color:var(--mut2);font-weight:600;padding:0 4px;margin-bottom:6px;letter-spacing:.03em}
.strow{display:flex;align-items:center;gap:12px;padding:8px;border-radius:16px;width:100%;text-align:left}.strow:hover{background:var(--hover)}
.ring{width:48px;height:48px;border-radius:50%;padding:2px;background:linear-gradient(45deg,#fbbf24,#f43f5e,#059669);flex-shrink:0}.ring.seen{background:#cbd5e1}
.ring .av{width:100%;height:100%;border:2px solid var(--bg)}
.stv{position:fixed;inset:0;z-index:60;background:rgba(0,0,0,.85);display:flex;align-items:center;justify-content:center;padding:16px}
.stc{position:relative;width:100%;max-width:384px;height:85%;border-radius:24px;overflow:hidden;display:flex;flex-direction:column;justify-content:space-between;padding:20px;color:#fff}
.stc .bars{display:flex;gap:4px;margin-bottom:12px}.stc .bars div{height:4px;flex:1;background:rgba(255,255,255,.3);border-radius:4px;overflow:hidden}.stc .bars i{display:block;height:100%;background:#fff;width:0}
.stc .top{display:flex;align-items:center;gap:8px;position:relative;z-index:2}.stc .top b{font-size:14px}.stc .top small{font-size:11px;opacity:.6}
.stc .txt{font-size:24px;font-weight:700;text-align:center;padding:0 16px;text-shadow:0 2px 8px rgba(0,0,0,.4);white-space:pre-wrap;position:relative;z-index:2}
.stc .bgimg{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;background:#000}
.stc .bot{display:flex;gap:8px;align-items:center;position:relative;z-index:2}.stc .bot input{flex:1;background:rgba(255,255,255,.15);color:#fff;border:0;border-radius:9999px;padding:9px 16px;outline:0}.stc .bot input::placeholder{color:rgba(255,255,255,.5)}
.stc .bot button{font-size:13px;opacity:.85;color:#fff}
.colors{display:flex;gap:8px;margin:10px 0}.colors button{width:30px;height:30px;border-radius:50%;border:3px solid transparent}.colors button.on{border-color:var(--txt)}
/* live */
.golive{width:100%;background:linear-gradient(90deg,#f43f5e,#059669);color:#fff;border-radius:16px;padding:16px;display:flex;align-items:center;gap:12px;text-align:left}
.golive .ic{width:44px;height:44px;border-radius:50%;background:rgba(255,255,255,.2);display:flex;align-items:center;justify-content:center;font-size:20px}
.golive b{display:block;font-size:14px}.golive small{font-size:12px;opacity:.8}
.livetag{font-size:10px;font-weight:700;background:#fff;color:#e11d48;padding:4px 8px;border-radius:9999px;animation:pls 1.5s infinite}
.lvrow{display:flex;align-items:center;gap:12px;padding:12px;width:100%;text-align:left}.lvrow:hover{background:var(--hover)}
.lvbadge{position:absolute;bottom:-4px;right:-4px;font-size:9px;font-weight:700;background:#e11d48;color:#fff;padding:2px 6px;border-radius:9999px}
.lv{position:fixed;inset:0;z-index:60;background:#000;display:flex;flex-direction:column}
.lv .stage{flex:1;position:relative;overflow:hidden}
.lv video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;background:#000}
.lv .lvtop{position:absolute;top:0;left:0;right:0;display:flex;align-items:center;gap:10px;padding:12px;background:linear-gradient(rgba(0,0,0,.6),transparent);z-index:3;color:#fff}
.lv .lvtop b{font-size:14px;display:block}.lv .lvtop small{font-size:11px;opacity:.7}
.lv .pill{font-size:12px;background:rgba(0,0,0,.4);border-radius:9999px;padding:4px 8px;flex-shrink:0}
.lv .ontag{font-size:10px;font-weight:700;background:#e11d48;padding:4px 8px;border-radius:9999px;animation:pls 1.5s infinite;flex-shrink:0}
.lv .center{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;color:rgba(255,255,255,.7);pointer-events:none;z-index:1}
.lv .lchat{position:absolute;bottom:12px;right:8px;width:240px;max-height:45%;overflow-y:auto;display:flex;flex-direction:column;align-items:flex-end;gap:6px;z-index:3}
.lv .lchat div{background:rgba(0,0,0,.5);border-radius:14px;padding:4px 12px;font-size:12px;color:#fff;max-width:100%}.lv .lchat b{color:#6ee7b7}
.lv .heart{position:absolute;bottom:16px;pointer-events:none;z-index:4;animation:fly 2.2s ease-out forwards}
@keyframes fly{0%{transform:translateY(0) scale(.6);opacity:1}100%{transform:translateY(-320px) scale(1.3);opacity:0}}
.lv .gpop{position:absolute;top:30%;left:0;right:0;display:flex;flex-direction:column;align-items:center;pointer-events:none;z-index:4}.lv .gpop i{font-size:64px;font-style:normal;animation:bnc 1s infinite}.lv .gpop span{margin-top:8px;background:rgba(0,0,0,.6);border-radius:9999px;padding:6px 16px;color:#fff;font-weight:600;font-size:14px}
@keyframes bnc{50%{transform:translateY(-12px)}}
.lv .bar{background:#000;padding:12px;display:flex;flex-direction:column;gap:8px;padding-bottom:calc(12px + env(safe-area-inset-bottom))}
.lv .bar .r{display:flex;align-items:center;gap:8px}
.lv .cb{width:44px;height:44px;border-radius:50%;background:rgba(255,255,255,.1);font-size:20px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.lv .cb.g{background:linear-gradient(135deg,#fbbf24,#f43f5e)}
.lv .bar input{flex:1;background:rgba(255,255,255,.1);color:#fff;border:0;border-radius:9999px;padding:10px 16px;outline:0;min-width:0}.lv .bar input::placeholder{color:rgba(255,255,255,.4)}
.lv .stop{background:#e11d48;color:#fff;border-radius:9999px;padding:10px 16px;font-size:12px;font-weight:700;flex-shrink:0}
.lv .gifts{background:#0f172a;border:1px solid rgba(255,255,255,.1);border-radius:16px;padding:12px;color:#fff}
.lv .gifts .gg{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:8px}.lv .gifts .gg button{background:rgba(255,255,255,.05);border-radius:12px;padding:8px;color:#fff;font-size:11px}.lv .gifts .gg button i{display:block;font-size:24px;font-style:normal}
/* appels */
.callrow{display:flex;align-items:center;gap:12px;padding:12px 16px;border-bottom:1px solid var(--line2)}
.callrow .rm{flex:1;min-width:0}.callrow b{display:block;font-size:14px;font-weight:600}.callrow small{font-size:12px}
.callrow .c-out{color:var(--mut2)}.callrow .c-in{color:var(--em5)}.callrow .c-missed{color:var(--rose)}
.callrow button{font-size:18px;padding:8px;border-radius:50%;color:var(--em5)}.callrow button:hover{background:var(--em50)}
.call{position:fixed;inset:0;z-index:65;display:flex;flex-direction:column;align-items:center;justify-content:space-between;padding:24px;background:linear-gradient(135deg,#0f172a,#022c22 50%,#0f172a);color:#fff}
.call video.rv{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity .4s}.call.remote video.rv{opacity:1}
.call:not(.vid) video.rv{width:1px;height:1px}
.call .ct{text-align:center;padding-top:40px;position:relative;z-index:2;text-shadow:0 2px 8px rgba(0,0,0,.5)}
.call .ct small{font-size:12px;letter-spacing:.2em;text-transform:uppercase;color:rgba(255,255,255,.6)}.call .ct h2{font-size:20px;margin:4px 0}.call .ct p{color:var(--em4);font-size:14px;margin:4px 0 0}
.call .cm{display:flex;flex-direction:column;align-items:center;gap:16px;position:relative;z-index:2}.call.remote .cm{visibility:hidden}
.call .cm .av{box-shadow:0 25px 50px -12px rgba(0,0,0,.6)}.call.ringing .cm .av{animation:pls 1.4s infinite}
.call .pip{position:absolute;right:24px;bottom:128px;width:160px;height:96px;border-radius:16px;background:#1e293b;border:1px solid rgba(255,255,255,.1);overflow:hidden;z-index:3;display:flex;align-items:center;justify-content:center}
.call .pip video{width:100%;height:100%;object-fit:cover;transform:scaleX(-1)}.call .pip span{position:absolute;font-size:12px;color:rgba(255,255,255,.5)}
.call .cb{display:flex;gap:16px;padding-bottom:32px;position:relative;z-index:3;align-items:center}
.call .cb button{width:48px;height:48px;border-radius:50%;background:rgba(255,255,255,.15);font-size:18px;display:flex;align-items:center;justify-content:center}
.call .cb button.off{background:var(--rose)}.call .cb .end{width:56px;height:56px;background:var(--rose6);font-size:24px}.call .cb .ok{width:56px;height:56px;background:var(--em5);font-size:24px}
/* réglages */
.set .prof{display:flex;align-items:center;gap:16px;padding:16px}.set .prof b{display:block;font-size:16px}
.set .form{padding:16px;display:flex;flex-direction:column;gap:8px}.set .form label{font-size:12px;font-weight:600;color:var(--mut)}
.set .list{font-size:14px}.set .list > *{display:flex;justify-content:space-between;align-items:center;padding:12px;width:100%;text-align:left;border-bottom:1px solid var(--line2)}.set .list > *:last-child{border-bottom:0}
.set .list .amber{color:#d97706}.set .list .rose{color:var(--rose)}
.foot{text-align:center;font-size:11px;color:var(--mut2)}
.sw{position:relative;width:40px;height:22px;border-radius:11px;background:#cbd5e1;flex-shrink:0;transition:background .2s}.sw::after{content:"";position:absolute;top:2px;left:2px;width:18px;height:18px;border-radius:50%;background:#fff;transition:left .2s}.sw.on{background:var(--em)}.sw.on::after{left:20px}
.scanv{position:relative;width:100%;aspect-ratio:1;max-height:60vh;background:#000;border-radius:16px;overflow:hidden}.scanv video{width:100%;height:100%;object-fit:cover}
.scanv .fr{position:absolute;inset:16%;border:3px solid var(--em5);border-radius:16px;box-shadow:0 0 0 999px rgba(0,0,0,.4)}

/* ================= Couleurs WhatsApp (vert et blanc) + icône N ================= */
:root{--em:#1DAA61;--em2:#168f50;--em5:#25D366;--em4:#25D366;--em50:#e7fce3;--wa-read:#53bdeb;--bg:#ffffff;--card:#ffffff;--line:#e9edef;--line2:#f0f2f5;--txt:#111b21;--mut:#667781;--mut2:#8696a0;--in:#f0f2f5;--inl:#f0f2f5;--soft:#f0f2f5;--hover:#f5f6f6;--chatbg:#efeae2;--other:#ffffff;--othertxt:#111b21;--mine:#d9fdd3;--minetxt:#111b21;--doodle:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPScxMjAnIGhlaWdodD0nMTIwJyB2aWV3Qm94PScwIDAgMTIwIDEyMCc+PGcgZmlsbD0nbm9uZScgc3Ryb2tlPScjZDRjZGMyJyBzdHJva2Utd2lkdGg9JzEuNCcgc3Ryb2tlLWxpbmVjYXA9J3JvdW5kJyBzdHJva2UtbGluZWpvaW49J3JvdW5kJz48cGF0aCBkPSdNMTQgMThjNC02IDEyLTYgMTYgMHMtNCAxMi04IDE0Yy00LTItMTItOC04LTE0eicvPjxjaXJjbGUgY3g9JzcwJyBjeT0nMjInIHI9JzcnLz48cGF0aCBkPSdNOTYgMTJsNiAxMGgtMTJ6Jy8+PHBhdGggZD0nTTIwIDcwaDE4djEySDIwek0yNCA3MHYtNGgxMHY0Jy8+PHBhdGggZD0nTTY2IDY0YzYgMCAxMCA0IDEwIDlzLTQgOS0xMCA5LTEwLTQtMTAtOSA0LTkgMTAtOXpNNjIgNzJoOCcvPjxwYXRoIGQ9J005OCA2MGw0IDggOCAxLTYgNiAyIDgtOC00LTggNCAyLTgtNi02IDgtMXonLz48cGF0aCBkPSdNMTIgMTA0YzYtNiAxNC02IDIwIDAnLz48cGF0aCBkPSdNNjAgMTAwaDIwbC00IDEwSDY0eicvPjxjaXJjbGUgY3g9JzEwNCcgY3k9JzEwNCcgcj0nNScvPjxwYXRoIGQ9J000NCA0MGw2IDZNNTAgNDBsLTYgNicvPjwvZz48L3N2Zz4=")}
html.nvdark{--em:#21c063;--em2:#1aa155;--em5:#21c063;--em4:#21c063;--em50:rgba(33,192,99,.12);--bg:#0b141a;--card:#111b21;--line:#222d34;--line2:#1b252c;--txt:#e9edef;--mut:#8696a0;--mut2:#667781;--in:#202c33;--inl:#202c33;--soft:#202c33;--hover:#202c33;--chatbg:#0b141a;--other:#202c33;--othertxt:#e9edef;--mine:#005c4b;--minetxt:#e9edef;--doodle:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRoPScxMjAnIGhlaWdodD0nMTIwJyB2aWV3Qm94PScwIDAgMTIwIDEyMCc+PGcgZmlsbD0nbm9uZScgc3Ryb2tlPScjMWMyNzJlJyBzdHJva2Utd2lkdGg9JzEuNCcgc3Ryb2tlLWxpbmVjYXA9J3JvdW5kJyBzdHJva2UtbGluZWpvaW49J3JvdW5kJz48cGF0aCBkPSdNMTQgMThjNC02IDEyLTYgMTYgMHMtNCAxMi04IDE0Yy00LTItMTItOC04LTE0eicvPjxjaXJjbGUgY3g9JzcwJyBjeT0nMjInIHI9JzcnLz48cGF0aCBkPSdNOTYgMTJsNiAxMGgtMTJ6Jy8+PHBhdGggZD0nTTIwIDcwaDE4djEySDIwek0yNCA3MHYtNGgxMHY0Jy8+PHBhdGggZD0nTTY2IDY0YzYgMCAxMCA0IDEwIDlzLTQgOS0xMCA5LTEwLTQtMTAtOSA0LTkgMTAtOXpNNjIgNzJoOCcvPjxwYXRoIGQ9J005OCA2MGw0IDggOCAxLTYgNiAyIDgtOC00LTggNCAyLTgtNi02IDgtMXonLz48cGF0aCBkPSdNMTIgMTA0YzYtNiAxNC02IDIwIDAnLz48cGF0aCBkPSdNNjAgMTAwaDIwbC00IDEwSDY0eicvPjxjaXJjbGUgY3g9JzEwNCcgY3k9JzEwNCcgcj0nNScvPjxwYXRoIGQ9J000NCA0MGw2IDZNNTAgNDBsLTYgNicvPjwvZz48L3N2Zz4=")}
.hd .brand{color:var(--em);font-size:22px;letter-spacing:-.01em}.hd .brand img{width:30px;height:30px}
.nvi{display:block;object-fit:contain}
.aicon{background:none!important;width:64px;height:64px}.aicon img{width:100%;height:100%}
#auth{background:#f0f2f5}html.nvdark #auth{background:#0b141a}
#auth .acard,#auth .aqr{box-shadow:0 1px 3px rgba(11,20,26,.08),0 6px 24px rgba(11,20,26,.06)}
#auth::before{content:"";position:fixed;left:0;right:0;top:0;height:220px;background:#1DAA61;z-index:-1}
#auth{position:relative;z-index:0}
.btn{background:var(--em);border-radius:24px}.btn:hover{background:var(--em2)}.btn.ghost{border-radius:24px}
.acard .btn{border-radius:24px}.inp:focus{border-color:var(--em);box-shadow:0 0 0 2px rgba(29,170,97,.25)}
.atest b{color:#1DAA61}.arow .lk,.lk{color:var(--em)}
.aqr li::before{border-color:#1DAA61;color:#1DAA61}.aqrs{color:#1DAA61}.qrbox .qlogo{background:#fff;padding:2px}.qrbox .qlogo img{width:100%;height:100%}.qrbox .qre span{background:#1DAA61}
.plus{background:var(--em);border-radius:16px;width:44px;height:44px;box-shadow:0 2px 6px rgba(0,0,0,.15)}
.srch input{border-radius:24px;padding:10px 16px}
.tabs button.on{color:var(--txt)}.tabs button.on span{background:#d8fdd2;border-radius:16px;padding:2px 18px}html.nvdark .tabs button.on span{background:#103529}
.tabs button span{padding:2px 18px}.tabs button b{background:var(--em5)}
.ub{background:var(--em5)}.row.on{background:var(--hover)}html.nvdark .row.on{background:#2a3942}
.row .rt span.u{color:var(--em5);font-weight:600}
.tk.read{color:var(--wa-read)}.me .bb .tk{color:#8696a0}.me .bb .tk.read{color:var(--wa-read)}html.nvdark .me .bb .tk{color:rgba(233,237,239,.6)}
.msgs{background-color:var(--chatbg);background-image:var(--doodle);background-size:240px 240px}
html.nvdark .msgs{background-image:var(--doodle)}
.me .bb{background:var(--mine);color:var(--minetxt);border-bottom-right-radius:4px;box-shadow:0 1px .5px rgba(11,20,26,.13)}
.mw:not(.me) .bb{background:var(--other);color:var(--othertxt);border:0;border-bottom-left-radius:4px;box-shadow:0 1px .5px rgba(11,20,26,.13)}
.bb{border-radius:10px;padding:6px 9px 8px}
.day{background:var(--card);border:0;box-shadow:0 1px .5px rgba(11,20,26,.13);border-radius:8px;text-transform:uppercase;font-size:11px}
.voice .pb{background:transparent;color:var(--mut);font-size:16px}.me .voice .pb{background:transparent;color:var(--mut)}html.nvdark .voice .pb{color:#aebac1}
.voice .wv i{background:#c1c8cc}.me .voice .wv i{background:#b2c9ad}.voice .wv i.a,.me .voice .wv i.a{background:var(--em5)}
.mb .rq{border-left-color:var(--em5);background:rgba(11,20,26,.05);color:var(--mut)}html.nvdark .mb .rq{background:rgba(0,0,0,.2)}
.comp{background:var(--chatbg);border-top:0;padding:6px 8px calc(8px + env(safe-area-inset-bottom))}
.comp textarea{background:var(--card);border:0;border-radius:24px;box-shadow:0 1px .5px rgba(11,20,26,.13);padding:10px 16px}
.send{background:var(--em);width:46px;height:46px}
.rply{background:var(--card);border-top:0;border-left:4px solid var(--em5)}
.chat .hd .who small{color:var(--mut)}
.call{background:linear-gradient(180deg,#0b141a,#103529 55%,#0b141a)}.call .ct p{color:#25D366}
.golive{background:linear-gradient(90deg,#1DAA61,#128c7e)}
.ring{background:linear-gradient(45deg,#25D366,#1DAA61)}
.sw.on{background:var(--em)}
.chip.on{background:#d8fdd2;color:#0a6a3b}html.nvdark .chip.on{background:#103529;color:#d8fdd2}
.chipbar{display:flex;gap:8px;padding:8px 16px;background:var(--card);overflow-x:auto;scrollbar-width:none}.chipbar .chip{flex:none;font-size:13px;padding:6px 14px;border-radius:20px}
/* message enrichi : sondage, événement, contact, position */
.poll{min-width:230px}.poll .q{font-weight:600;margin-bottom:6px}.poll button{display:block;width:100%;text-align:left;padding:6px 0}.poll .bar{height:5px;border-radius:3px;background:rgba(0,0,0,.08);margin-top:4px;overflow:hidden}.poll .bar i{display:block;height:100%;background:var(--em5)}
.poll .o{display:flex;align-items:center;gap:8px}.poll .o .ck{width:18px;height:18px;border-radius:50%;border:2px solid var(--mut2);flex:none;display:flex;align-items:center;justify-content:center;font-size:11px;color:#fff}.poll .o .ck.on{background:var(--em5);border-color:var(--em5)}
.poll .o .n{margin-left:auto;font-size:12px;color:var(--mut)}
.evt .t{font-weight:600}.evt .rs{display:flex;gap:6px;margin-top:8px}.evt .rs button{flex:1;padding:5px;border-radius:8px;background:rgba(0,0,0,.06);font-size:12px}.evt .rs button.on{background:var(--em5);color:#fff}
.ccard{display:flex;align-items:center;gap:10px;min-width:210px}.ccard b{display:block}.ccard .lk{font-size:12px}
.mapl{display:block;width:240px;height:130px;border-radius:8px;background:linear-gradient(135deg,#cfe9d6,#a8d5ba);position:relative;text-decoration:none;color:#111b21;overflow:hidden}.mapl i{position:absolute;left:50%;top:42%;transform:translate(-50%,-50%);font-size:32px;font-style:normal}.mapl span{position:absolute;left:8px;bottom:6px;font-size:12px;background:rgba(255,255,255,.85);padding:2px 6px;border-radius:6px}
/* page infos du contact */
.info{position:absolute;inset:0;z-index:30;background:var(--line2);overflow-y:auto;display:flex;flex-direction:column}
html.nvdark .info{background:#0b141a}
.info .ih{background:var(--card);text-align:center;padding:16px 16px 20px}.info .ih h2{margin:12px 0 2px;font-size:22px;font-weight:500}.info .ih p{margin:0;color:var(--mut)}
.info .acts3{display:flex;justify-content:center;gap:12px;margin-top:16px}.info .acts3 button{flex:0 0 96px;border:1px solid var(--line);border-radius:12px;padding:10px 0;display:flex;flex-direction:column;align-items:center;gap:4px;color:var(--em);font-size:12px}.info .acts3 button span{font-size:20px}
.info .sec{background:var(--card);margin-top:10px;padding:4px 0}.info .sec h4{margin:10px 16px 6px;font-size:14px;font-weight:500;color:var(--mut);display:flex;justify-content:space-between}
.info .it{display:flex;align-items:center;gap:16px;padding:12px 16px;width:100%;text-align:left;font-size:15px}.info .it:hover{background:var(--hover)}.info .it span.i{width:24px;text-align:center;font-size:18px;color:var(--mut)}.info .it small{display:block;color:var(--mut);font-size:13px}.info .it.red{color:#ea0038}.info .it.red span.i{color:#ea0038}
.info .grid{display:grid;grid-template-columns:repeat(4,1fr);gap:4px;padding:0 16px 12px}.info .grid a,.info .grid div{aspect-ratio:1;border-radius:8px;overflow:hidden;background:var(--soft);display:flex;align-items:center;justify-content:center;font-size:22px;text-decoration:none}.info .grid img{width:100%;height:100%;object-fit:cover}
.hl{background:#fff3a3;color:#111b21;border-radius:3px}
.ch-post{background:var(--card);border-radius:10px;padding:8px 10px;margin:0 auto;max-width:520px;width:100%;box-shadow:0 1px .5px rgba(11,20,26,.13)}.ch-post img{max-width:100%;border-radius:8px;display:block;margin-bottom:6px}.ch-post small{display:block;text-align:right;color:var(--mut);font-size:11px}
html[data-wall=plain] .msgs{background-image:none}
html[data-wall=green] .msgs{background-image:none;background-color:#d1f4cc}html.nvdark[data-wall=green] .msgs{background-color:#0f2a1c}
html[data-wall=dark] .msgs{background-image:none;background-color:#1f2c34}
html[data-fs=sm] .bb{font-size:13px}html[data-fs=lg] .bb{font-size:17px}
.info .chips .chip{font-size:12px}
/* ---------- icônes premium ---------- */
.ico{width:24px;height:24px;display:block}
.tabs button span{display:flex;align-items:center;justify-content:center;height:32px;padding:0 20px;border-radius:16px;transition:background .2s}
.tabs button span .ico{width:24px;height:24px}
.tabs button{color:var(--mut);font-size:12px;font-weight:500;gap:4px;padding:10px 0 8px}
.tabs button.on{color:var(--txt);font-weight:600}.tabs button.on span{background:#d8fdd2;color:#0a5c34}
html.nvdark .tabs button.on span{background:#103529;color:#d8fdd2}
.tabs button b{top:6px;left:calc(50% + 8px)}
.hd .ib{color:var(--mut);padding:8px;border-radius:50%}.hd .ib .ico{width:22px;height:22px}.hd .ib:hover{color:var(--txt)}
.plus .ico{width:22px;height:22px}
.comp .ib{color:var(--mut);padding:6px}.comp .ib .ico{width:24px;height:24px}
.send .ico{width:22px;height:22px;color:#fff}
.callrow button{color:var(--em)}.callrow button .ico{width:22px;height:22px}
.call .cb button{width:56px;height:56px;color:#fff}.call .cb button .ico{width:26px;height:26px}.call .cb .end .ico{width:30px;height:30px}
.call .cb button.off{background:#fff;color:#111b21}
/* ---------- envoi de plusieurs photos (aperçu façon WhatsApp) ---------- */
.mpo{padding:0;background:#0b141a}
.mp{position:fixed;inset:0;display:flex;flex-direction:column;background:#0b141a;color:#e9edef}
.mph{display:flex;align-items:center;gap:10px;padding:10px 12px}.mph .ib{color:#e9edef}.mph span{font-size:14px;color:#aebac1}
.mpv{flex:1;display:flex;align-items:center;justify-content:center;min-height:0;padding:8px}.mpv img,.mpv video{max-width:100%;max-height:100%;object-fit:contain;border-radius:6px}
.mpt{display:flex;gap:6px;overflow-x:auto;padding:8px 12px;scrollbar-width:thin}
.mpi{position:relative;flex:none;width:56px;height:56px;border-radius:8px;overflow:hidden;border:2px solid transparent;cursor:pointer;background:#202c33}
.mpi.on{border-color:#25D366}.mpi img,.mpi video{width:100%;height:100%;object-fit:cover}
.mpd{position:absolute;top:1px;right:1px;width:18px;height:18px;border-radius:50%;background:rgba(0,0,0,.65);color:#fff;font-size:10px;line-height:18px;text-align:center}
.mpplus{display:flex;align-items:center;justify-content:center;color:#aebac1;border:2px dashed #3b4a54}
.mpb{display:flex;gap:8px;align-items:center;padding:8px 12px calc(12px + env(safe-area-inset-bottom))}
.mpb input{flex:1;background:#202c33;color:#e9edef;border:0;border-radius:24px;padding:12px 16px;font-size:15px;outline:0}
.mpb .send{width:52px;height:52px}
/* album dans la discussion */
.bb.alb{display:grid;grid-template-columns:1fr 1fr;gap:3px;padding:3px;width:min(300px,68vw)}
.bb.alb .ai{position:relative;aspect-ratio:1;border-radius:6px;overflow:hidden;cursor:pointer;background:#ccc}
.bb.alb .ai img{width:100%;height:100%;object-fit:cover;display:block}
.bb.alb .ai b{position:absolute;inset:0;background:rgba(0,0,0,.45);color:#fff;font-size:26px;font-weight:500;display:flex;align-items:center;justify-content:center}
.bb.alb .acap{grid-column:1/-1;padding:4px 6px 0}
.bb.alb .tm{grid-column:1/-1;justify-self:end;margin:2px 6px 2px 0}
/* galerie */
.gal{position:fixed;inset:0;display:flex;flex-direction:column;color:#fff}
.galh{display:flex;align-items:center;gap:12px;padding:10px 12px}.galh .ib{color:#fff}
.galv{flex:1;display:flex;align-items:center;justify-content:center;min-height:0;position:relative}.galv img{max-width:92vw;max-height:80vh;border-radius:4px}
.gnav{position:absolute;top:50%;transform:translateY(-50%);width:44px;height:44px;border-radius:50%;background:rgba(255,255,255,.12);color:#fff;font-size:30px;line-height:40px}
#gp{left:12px}#gnx{right:12px}
.galc{text-align:center;padding:10px 16px 20px;font-size:14px}
.info .acts3 button span .ico{width:24px;height:24px}

/* Bannière NovyChat (v1.22) */
#auth::before{display:none}
#auth{align-content:flex-start;padding-top:0}
.abanner{flex:0 0 100%;margin:0 -16px;background:#000;display:flex;justify-content:center;box-shadow:0 8px 30px rgba(0,0,0,.25)}
.abanner img{display:block;width:100%;max-width:1400px;height:auto;aspect-ratio:3/1;object-fit:cover}
@media(min-width:900px){.abanner img{max-height:300px}}
.nvban{width:min(520px,80%);height:auto;border-radius:18px;box-shadow:0 10px 30px rgba(0,0,0,.25)}
/* Thème « bannière » : noir profond + vert néon (mode sombre par défaut) */
html.nvdark{--em:#16d46b;--em2:#0fb85a;--em5:#16d46b;--em4:#16d46b;--em50:rgba(22,212,107,.12);--bg:#000;--card:#07100b;--line:#12261a;--line2:#0b1a11;--txt:#f2fff7;--mut:#8fa898;--mut2:#5f7a69;--in:#0d1c13;--inl:#0d1c13;--soft:#0d1c13;--hover:#0c1d13;--chatbg:#000}
html.nvdark body{background:#000}
html.nvdark #auth{background:radial-gradient(ellipse at 80% 100%,rgba(22,212,107,.22),transparent 55%),radial-gradient(ellipse at 0% 60%,rgba(22,212,107,.14),transparent 50%),#000}
html.nvdark #auth .acard,html.nvdark #auth .aqr{background:#07100b;color:#f2fff7;border:1px solid rgba(22,212,107,.25);box-shadow:0 0 40px rgba(22,212,107,.12)}
html.nvdark .alogo h1{color:#fff}
html.nvdark .btn{box-shadow:0 0 18px rgba(22,212,107,.35)}
html.nvdark .tabs button.on span,html.nvdark [data-tab].on span{box-shadow:0 0 14px rgba(22,212,107,.35)}
html.nvdark #auth input:not([type=checkbox]),html.nvdark #auth select{background:#0d1c13!important;color:#f2fff7!important;border:1px solid #1c3a27!important}
.abanner{width:100vw;margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw);flex-basis:auto}

/* Icônes premium des Réglages + bannière entière (v1.22.1) */
.set .list .sl{display:flex;align-items:center;gap:14px;text-align:left}
.set .list .si{width:36px;height:36px;flex:0 0 36px;border-radius:11px;display:grid;place-items:center;background:var(--em50);color:var(--em)}
.set .list .si .ico{width:20px;height:20px}
html.nvdark .set .list .si{background:rgba(22,212,107,.12);box-shadow:inset 0 0 0 1px rgba(22,212,107,.22)}
.set .list .rose .si{background:rgba(229,72,77,.12);color:#e5484d;box-shadow:none}
.set .list #sout{justify-content:flex-start}
.abanner img{aspect-ratio:auto;object-fit:contain;max-height:none}
@media(min-width:900px){.abanner img{max-height:260px;width:auto;max-width:100%}}

/* v1.24.1 : mobile — pas de zoom au toucher du champ (16 px), écran d'appel toujours plein écran */
@media (max-width:899px){.comp textarea,.inp,input,select,textarea{font-size:16px!important}}
html,body{max-width:100%;overflow-x:hidden}
.call{position:fixed!important;left:0!important;top:0!important;right:0!important;bottom:0!important;width:100vw;height:100vh;height:100dvh;max-width:none;margin:0;opacity:1;transform:none;padding:max(24px,env(safe-area-inset-top)) 16px max(16px,env(safe-area-inset-bottom));box-sizing:border-box;overflow:hidden}
.call .cb{flex-wrap:nowrap;justify-content:center;width:100%;gap:22px}
.call .cb button{flex:0 0 auto}
.call .ct{width:100%;padding-top:24px}
.call .ct h2{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* ---------- cadeaux Live (nv-1.1) ---------- */
.lv .pill.gold{background:linear-gradient(135deg,#b8892c,#f3d27a);color:#1a1205;font-weight:700}
.lv .gifts{max-height:52vh;overflow-y:auto}
.lv .gtabs{display:flex;gap:6px;align-items:center}.lv .gtabs button{color:#fff;opacity:.6;font-size:13px;font-weight:600;padding:6px 10px;border-radius:9999px}.lv .gtabs button.on{opacity:1;background:rgba(255,255,255,.12)}
.lv .gtabs .coin{opacity:1;background:linear-gradient(135deg,#b8892c,#f3d27a);color:#1a1205}
.lv .gifts .gg button{display:flex;flex-direction:column;align-items:center;gap:2px;border:1px solid transparent}
.lv .gifts .gg button b{font-weight:500;font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.lv .gifts .gg button span{font-size:10px;color:#fcd34d}
.lv .gifts .gg button.on{border-color:#f3d27a;background:rgba(243,210,122,.15)}
.lv .gsend{display:flex;align-items:center;gap:6px;margin-top:10px;font-size:12px}.lv .gsend button{color:#fff;background:rgba(255,255,255,.1);border-radius:9999px;padding:6px 10px;font-size:12px}
.lv .gsend button.on{background:#fff;color:#000}.lv .gsend .go{background:linear-gradient(135deg,#f43f5e,#fbbf24);font-weight:700}
.lv .gbanners{position:absolute;left:8px;top:30%;display:flex;flex-direction:column;gap:8px;z-index:5;pointer-events:none}
.lv .gban{display:flex;align-items:center;gap:8px;background:linear-gradient(90deg,rgba(0,0,0,.75),rgba(0,0,0,.2));border-radius:9999px;padding:4px 12px 4px 4px;color:#fff;animation:gin .35s ease-out}
.lv .gban b{display:block;font-size:12px}.lv .gban small{font-size:11px;opacity:.8}.lv .gban i{font-size:30px;font-style:normal}.lv .gban em{font-style:italic;font-weight:800;font-size:22px;color:#fcd34d;text-shadow:0 2px 6px rgba(0,0,0,.6)}
@keyframes gin{from{transform:translateX(-120%);opacity:0}to{transform:none;opacity:1}}
.lv .gbig{position:absolute;inset:0;z-index:6;display:flex;flex-direction:column;align-items:center;justify-content:center;pointer-events:none;background:radial-gradient(circle,rgba(243,210,122,.35),transparent 60%);animation:gfade 4.2s ease-out forwards}
.lv .gbig i{font-size:140px;font-style:normal;animation:gzoom 1.2s cubic-bezier(.2,1.6,.4,1)}
.lv .gbig b{color:#fcd34d;font-size:26px;text-shadow:0 2px 12px rgba(0,0,0,.7)}.lv .gbig span{color:#fff;font-size:14px;margin-top:4px;text-shadow:0 2px 8px rgba(0,0,0,.7)}
@keyframes gzoom{from{transform:scale(.2) rotate(-20deg)}to{transform:none}}
@keyframes gfade{0%,80%{opacity:1}100%{opacity:0}}
.lv .gtop{position:absolute;top:64px;left:8px;z-index:4;background:rgba(0,0,0,.5);border-radius:12px;padding:6px 10px;color:#fff;font-size:11px;min-width:140px}
.lv .gtop div{display:flex;gap:6px;align-items:center}.lv .gtop em{margin-left:auto;font-style:normal;color:#fcd34d}
.wal .wbal{text-align:center;margin:8px 0 14px}.wal .wbal b{font-size:34px;display:block;color:#b8892c}.wal .wbal span{font-size:12px;opacity:.7}
.wal .wpk{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.wal .wpk button{border:1px solid rgba(127,127,127,.3);border-radius:12px;padding:10px 4px;display:flex;flex-direction:column;gap:2px;align-items:center}
.wal .wpk button.on{border-color:#b8892c;background:rgba(243,210,122,.15)}.wal .wpk span{font-size:12px;opacity:.7}
.wal .wled{margin-top:14px;max-height:180px;overflow-y:auto;font-size:12px}.wal .wled div{display:flex;justify-content:space-between;gap:8px;padding:6px 0;border-bottom:1px solid rgba(127,127,127,.15)}
.wal .wled .neg{color:#e11d48}.wal .wled .pos{color:#16a34a}
/* ---------- statuts plein écran façon TikTok (nv-1.1) ---------- */
.stv.tk{padding:0;background:#000;touch-action:none;user-select:none;-webkit-user-select:none}
.stc.tk{max-width:480px;height:100%;border-radius:0;padding:0;justify-content:flex-end}
@media (min-width:700px){.stc.tk{height:94%;border-radius:20px}}
.stc.tk.sup{animation:stup .3s ease-out}.stc.tk.sdn{animation:stdn .3s ease-out}
@keyframes stup{from{transform:translateY(40%);opacity:.3}to{transform:none;opacity:1}}
@keyframes stdn{from{transform:translateY(-40%);opacity:.3}to{transform:none;opacity:1}}
.stc.tk .bgimg{object-fit:cover}
.stc.tk .shade{position:absolute;inset:0;background:linear-gradient(rgba(0,0,0,.45),transparent 22%,transparent 62%,rgba(0,0,0,.65));z-index:1;pointer-events:none}
.stc.tk .tophd{position:absolute;top:0;left:0;right:0;padding:calc(10px + env(safe-area-inset-top)) 12px 0;z-index:4}
.stc.tk .bars{gap:3px;margin-bottom:10px}.stc.tk .bars div{height:3px}
.stc.tk .top .ic{color:#fff;font-size:18px;width:34px;height:34px;opacity:.9}
.stc.tk .zone{position:absolute;top:70px;bottom:120px;z-index:2}.stc.tk .zl{left:0;width:33%}.stc.tk .zr{right:0;width:67%}
.stc.tk .txt{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:0 40px;z-index:1;pointer-events:none;font-size:26px}
.stc.tk .side{position:absolute;right:10px;bottom:120px;display:flex;flex-direction:column;gap:18px;z-index:4}
.stc.tk .act{display:flex;flex-direction:column;align-items:center;color:#fff;gap:2px}.stc.tk .act span{font-size:30px;filter:drop-shadow(0 2px 4px rgba(0,0,0,.5))}.stc.tk .act small{font-size:11px;text-shadow:0 1px 3px rgba(0,0,0,.7)}
.stc.tk .act.pop span{animation:bnc .5s}
.stc.tk .bot2{position:relative;z-index:4;padding:0 12px calc(14px + env(safe-area-inset-bottom))}
.stc.tk .cap{margin:0 60px 10px 0;font-size:15px;text-shadow:0 1px 4px rgba(0,0,0,.8);white-space:pre-wrap}
.stc.tk .rp{display:flex;gap:8px}.stc.tk .rp input{flex:1;background:rgba(255,255,255,.15);color:#fff;border:1px solid rgba(255,255,255,.25);border-radius:9999px;padding:10px 16px;outline:0;font-size:16px}
.stc.tk .rp input::placeholder{color:rgba(255,255,255,.6)}.stc.tk .rp button{color:#fff;font-size:20px;width:44px}
.stc.tk .swhint{position:absolute;bottom:72px;left:0;right:0;text-align:center;font-size:11px;color:rgba(255,255,255,.55);z-index:3;pointer-events:none}
.stv.held .tophd,.stv.held .side,.stv.held .bot2,.stv.held .swhint{opacity:0;transition:opacity .2s}
.pnudge{position:fixed;left:12px;right:12px;bottom:calc(76px + env(safe-area-inset-bottom));z-index:70;display:flex;align-items:center;gap:10px;background:#0b0b0b;color:#fff;border:1px solid #b8892c;border-radius:16px;padding:10px 12px;box-shadow:0 8px 30px rgba(0,0,0,.4);max-width:520px;margin:0 auto}
.pnudge>span{font-size:24px}.pnudge div{flex:1;min-width:0}.pnudge b{display:block;font-size:13px}.pnudge small{font-size:11px;opacity:.75}
.pnudge .on{background:linear-gradient(135deg,#b8892c,#f3d27a);color:#1a1205;font-weight:700;border-radius:9999px;padding:8px 12px;font-size:12px}.pnudge .no{color:#fff;opacity:.6;padding:4px}
.wov{z-index:90}
.lv .gifts .gg{grid-template-columns:repeat(4,minmax(0,1fr))}
.lv .gifts{max-height:46vh}
.lv .gtop{top:auto;bottom:calc(46% + 8px);left:auto;right:8px}
.lv .gbanners{top:auto;bottom:calc(46% + 8px);max-width:62%}
.lv .lvtop b,.lv .lvtop small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lv .lvtop{gap:6px}
.stc.tk .top b,.stc.tk .top small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.stc.tk .swhint{bottom:auto;top:calc(76px + env(safe-area-inset-top))}
/* ---------- e-mail et Google (nv-1.2) ---------- */
.gbtn{display:flex;justify-content:center;margin-top:12px;min-height:44px}
.amailb{width:100%;margin-top:10px}
.atabs{display:flex;gap:6px;background:rgba(127,127,127,.12);border-radius:9999px;padding:4px;margin-bottom:14px}.atabs button{flex:1;border-radius:9999px;padding:8px;font-size:13px;font-weight:600;opacity:.7}.atabs button.on{background:#fff;color:#111;opacity:1;box-shadow:0 1px 4px rgba(0,0,0,.15)}
.aterms{display:flex;gap:8px;align-items:flex-start;font-size:12px;margin:4px 0 6px}.aterms input{margin-top:2px}
.aok{background:rgba(34,197,94,.12);border:1px solid rgba(34,197,94,.35);border-radius:12px;padding:10px 12px;font-size:13px;margin-bottom:12px;text-align:center}
/* ---------- pièces jointes, émojis, stickers (nv-1.3) ---------- */
.ov.sh{align-items:flex-end;padding:0;background:rgba(0,0,0,.35)}
.sheet{width:100%;max-width:560px;background:var(--card);border-radius:24px 24px 0 0;padding:10px 16px calc(22px + env(safe-area-inset-bottom));box-shadow:0 -10px 40px rgba(0,0,0,.25);animation:shin .22s ease-out}
@keyframes shin{from{transform:translateY(100%)}to{transform:none}}
.sheet .grab{display:block;width:44px;height:5px;border-radius:5px;background:rgba(127,127,127,.35);margin:2px auto 16px}
.attg{display:grid;grid-template-columns:repeat(4,1fr);gap:18px 8px}
.attg button{display:flex;flex-direction:column;align-items:center;gap:8px;color:var(--txt)}
.attg .ai{width:58px;height:58px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;background:linear-gradient(145deg,color-mix(in srgb,var(--c) 78%,#fff),var(--c));box-shadow:0 6px 16px color-mix(in srgb,var(--c) 40%,transparent),inset 0 1px 0 rgba(255,255,255,.35);transition:transform .12s}
.attg button:active .ai{transform:scale(.92)}
.attg .ai svg{width:28px;height:28px}.attg small{font-size:12.5px;font-weight:500}
.emosheet{position:absolute;left:0;right:0;bottom:100%;height:min(340px,48vh);background:var(--card);border-top:1px solid var(--line);border-radius:18px 18px 0 0;box-shadow:0 -8px 30px rgba(0,0,0,.18);display:flex;flex-direction:column;z-index:20;animation:shin .2s ease-out}
.emosheet .eh{display:flex;align-items:center;gap:8px;padding:10px 10px 6px}
.emosheet .es{flex:1;display:flex;align-items:center;gap:6px;background:var(--hover);border-radius:9999px;padding:6px 12px;font-size:13px;min-width:0}
.emosheet .es input{flex:1;border:0;background:none;outline:0;color:var(--txt);font-size:16px;min-width:0}
.emosheet .et{display:flex;background:var(--hover);border-radius:9999px;padding:3px}.emosheet .et button{border-radius:9999px;padding:5px 10px;font-size:12px;font-weight:600;color:var(--txt);opacity:.65;white-space:nowrap}.emosheet .et button.on{background:var(--card);opacity:1;box-shadow:0 1px 3px rgba(0,0,0,.15)}
.emosheet .ex{font-size:16px;color:var(--txt);opacity:.6;padding:4px 6px}
.emosheet .eg{flex:1;overflow-y:auto;display:grid;grid-template-columns:repeat(8,1fr);gap:2px;padding:4px 8px;align-content:start}
.emosheet .eg button{font-size:27px;line-height:1;padding:6px 0;border-radius:10px}.emosheet .eg button:active{background:var(--hover)}
.emosheet .eg.stk{grid-template-columns:repeat(4,1fr);gap:8px}.emosheet .eg.stk button{font-size:52px;padding:10px 0;background:var(--hover);border-radius:16px}
.emosheet .ec{display:flex;justify-content:space-between;padding:6px 8px calc(6px + env(safe-area-inset-bottom));border-top:1px solid var(--line)}
.emosheet .ec button{font-size:20px;padding:4px 6px;border-radius:10px;opacity:.55;filter:grayscale(.6)}.emosheet .ec button.on{opacity:1;filter:none;background:var(--hover)}
.bigemo{display:block;font-size:44px;line-height:1.15;padding:2px 0}.bigemo.n1{font-size:64px}.bigemo.n2{font-size:52px}
.mw .bb:has(.bigemo){background:transparent!important;box-shadow:none!important}
#mps{position:relative}#mps[data-n]:not([data-n=""])::after{content:attr(data-n);position:absolute;top:-6px;right:-6px;min-width:22px;height:22px;border-radius:11px;background:#111;color:#fff;font-size:12px;font-weight:700;display:flex;align-items:center;justify-content:center;border:2px solid #fff;padding:0 4px}
/* ---------- appareil photo intégré (nv-1.3.1) ---------- */
.camov{position:fixed;inset:0;z-index:95;background:#000}
.cam{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:space-between;color:#fff}
.cam video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;background:#000}.cam video.mir{transform:scaleX(-1)}
.cam .ctop{position:relative;z-index:2;display:flex;justify-content:space-between;align-items:center;padding:calc(12px + env(safe-area-inset-top)) 16px 12px;background:linear-gradient(rgba(0,0,0,.5),transparent)}
.cam .ctop button{color:#fff;font-size:22px;width:44px;height:44px;border-radius:50%;background:rgba(0,0,0,.25)}.cam .ctop button.on{background:#fcd34d;color:#000}
.cam .ctime{background:#e11d48;border-radius:9999px;padding:4px 12px;font-size:14px;font-weight:700;font-variant-numeric:tabular-nums}
.cam .cbot{position:relative;z-index:2;padding:12px 24px calc(28px + env(safe-area-inset-bottom));background:linear-gradient(transparent,rgba(0,0,0,.6))}
.cam .chint{text-align:center;font-size:12px;opacity:.85;margin:0 0 14px;text-shadow:0 1px 3px rgba(0,0,0,.6)}
.cam .crow{display:flex;align-items:center;justify-content:space-between}
.cam .cgal,.cam .cflip{width:50px;height:50px;border-radius:50%;background:rgba(255,255,255,.18);color:#fff;display:flex;align-items:center;justify-content:center;font-size:22px;backdrop-filter:blur(6px)}
.cam .cgal svg{width:26px;height:26px}
.cam .cshut{width:78px;height:78px;border-radius:50%;border:5px solid #fff;display:flex;align-items:center;justify-content:center;touch-action:none;transition:transform .15s}
.cam .cshut i{width:62px;height:62px;border-radius:50%;background:#fff;transition:all .2s}
.camov.rec .cshut{transform:scale(1.18);border-color:rgba(255,255,255,.7)}.camov.rec .cshut i{width:30px;height:30px;border-radius:8px;background:#e11d48}
.camov.rec .chint{visibility:hidden}
.camov.flash::after{content:"";position:absolute;inset:0;background:#fff;z-index:5;opacity:.8}
.set .list > a{color:inherit;text-decoration:none}
