/* ===== Netzonic virtual assistant ===== */
#totop{bottom:calc(98px + env(safe-area-inset-bottom,0px))!important}
#nzl{position:fixed;right:22px;bottom:calc(22px + env(safe-area-inset-bottom,0px));width:64px;height:64px;border-radius:50%;border:0;cursor:pointer;z-index:60;background:linear-gradient(135deg,#3a78e3,#7a50d8);box-shadow:0 14px 34px rgba(58,120,227,.5);display:grid;place-items:center;transition:transform .3s}
#nzl:hover{transform:scale(1.07)}
#nzl svg{width:30px;height:30px;stroke:#fff;fill:none;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round;transition:.3s}
#nzl .x{position:absolute;opacity:0;transform:rotate(-90deg)}
#nzl.on .c{opacity:0;transform:rotate(90deg)}#nzl.on .x{opacity:1;transform:none}
#nzl::before{content:"";position:absolute;inset:0;border-radius:50%;border:2px solid #5ee1ff;animation:nzp 2.4s ease-out infinite}
#nzl.on::before{display:none}
@keyframes nzp{from{transform:scale(1);opacity:.8}to{transform:scale(1.7);opacity:0}}
#nzl i{position:absolute;top:-4px;right:-4px;background:#7a50d8;color:#fff;font:800 10px Manrope,sans-serif;font-style:normal;padding:3px 6px;border-radius:10px;letter-spacing:.5px}
#nzt{position:fixed;right:22px;bottom:calc(98px + env(safe-area-inset-bottom,0px));max-width:250px;background:var(--card);color:var(--title);border:1px solid var(--bd);border-radius:16px 16px 4px 16px;padding:12px 38px 12px 16px;font:600 14px/1.45 Manrope,sans-serif;box-shadow:0 16px 36px rgba(43,52,128,.2);z-index:60;opacity:0;visibility:hidden;transform:translateY(10px);transition:.4s;cursor:pointer}
#nzt.show{opacity:1;visibility:visible;transform:none}
#nzt b{position:absolute;top:6px;right:8px;width:24px;height:24px;display:grid;place-items:center;border-radius:50%;font-size:16px;color:var(--body)}
#nzp{padding:0;position:fixed;right:22px;bottom:calc(98px + env(safe-area-inset-bottom,0px));width:min(396px,calc(100vw - 28px));height:min(620px,calc(100vh - 124px));background:var(--card);border:1px solid var(--bd);border-radius:22px;box-shadow:0 30px 70px rgba(43,52,128,.32);z-index:61;display:flex;flex-direction:column;overflow:hidden;opacity:0;visibility:hidden;transform:translateY(20px) scale(.96);transform-origin:bottom right;transition:opacity .3s,transform .3s,visibility .3s}
#nzp.open{opacity:1;visibility:visible;transform:none}
.nzh{display:flex;align-items:center;gap:12px;padding:16px 18px;background:linear-gradient(135deg,#2fb0f8,#3a78e3 55%,#7a50d8);color:#fff;position:relative;overflow:hidden}
.nzh::after{content:"";position:absolute;width:150px;height:150px;border-radius:50%;border:2px solid rgba(255,255,255,.14);right:-40px;top:-70px}
.nza{flex:none;width:44px;height:44px;border-radius:50%;background:linear-gradient(135deg,#5ee1ff,#7a50d8);display:grid;place-items:center;font:800 20px Manrope,sans-serif;position:relative}
.nza::after{content:"";position:absolute;right:0;bottom:1px;width:11px;height:11px;border-radius:50%;background:#35e0a1;border:2px solid #2b3480}
.nzh b{display:block;font:800 16px Manrope,sans-serif}.nzh small{font-size:12px;opacity:.85}
.nzh button{margin-left:6px;position:relative;z-index:1;width:34px;height:34px;border-radius:50%;border:0;background:rgba(255,255,255,.14);color:#fff;font-size:20px;cursor:pointer;line-height:1}
.nzh button:hover{background:rgba(255,255,255,.28)}
#nzm{flex:1;overflow-y:auto;padding:18px 16px 8px;background:var(--light);display:flex;flex-direction:column;gap:10px;scroll-behavior:smooth;overscroll-behavior:contain}
.nzb{max-width:86%;padding:11px 15px;border-radius:18px;font:400 14.5px/1.55 "Noto Sans",sans-serif;word-wrap:break-word;animation:nzin .35s ease both}
@keyframes nzin{from{opacity:0;transform:translateY(8px)}}
.nzb.b{align-self:flex-start;background:var(--card);color:var(--body);border:1px solid var(--bd);border-bottom-left-radius:5px}
.nzb.b b{color:var(--title)}.nzb.b a{color:var(--pri);font-weight:600;text-decoration:none}.nzb.b a:hover{text-decoration:underline}
.nzb.u{align-self:flex-end;background:linear-gradient(135deg,#3a78e3,#5b96f0);color:#fff;border-bottom-right-radius:5px}
.nzb ul{margin:6px 0 0;padding-left:18px}
.nzc{display:flex;flex-wrap:wrap;gap:7px;margin:2px 0 4px;animation:nzin .4s ease both}
.nzc button{border:1px solid var(--pri);background:var(--card);color:var(--pri);font:700 12.5px Manrope,sans-serif;padding:8px 13px;border-radius:30px;cursor:pointer;transition:.2s}
.nzc button:hover{background:var(--pri);color:#fff}
.nzd{align-self:flex-start;display:flex;gap:5px;padding:14px 16px;background:var(--card);border:1px solid var(--bd);border-radius:18px;border-bottom-left-radius:5px}
.nzd i{width:7px;height:7px;border-radius:50%;background:var(--pri);opacity:.4;animation:nzd 1.1s infinite}
.nzd i:nth-child(2){animation-delay:.18s}.nzd i:nth-child(3){animation-delay:.36s}
@keyframes nzd{40%{transform:translateY(-5px);opacity:1}}
#nzf{display:flex;gap:8px;padding:12px 14px;border-top:1px solid var(--bd);background:var(--card)}
#nzf input{flex:1;min-width:0;padding:12px 16px;border-radius:30px;font-size:14.5px;background:var(--light)}
#nzf button{flex:none;width:46px;height:46px;border-radius:50%;border:0;background:var(--pri);cursor:pointer;display:grid;place-items:center;transition:.2s}
#nzf button:hover{background:var(--navy)}#nzf button svg{width:20px;height:20px;stroke:#fff;fill:none;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.nzn{font:500 11px/1.4 "Noto Sans",sans-serif;text-align:center;padding:0 14px 10px;background:var(--card);color:var(--body);opacity:.85}
@media(max-width:520px){#nzp{right:10px;left:10px;width:auto;bottom:calc(90px + env(safe-area-inset-bottom,0px));height:min(78vh,640px)}#nzl{right:16px}#nzt{right:16px}#totop{right:16px!important}}
@media(prefers-reduced-motion:reduce){#nzl::before,.nzd i{animation:none}.nzb,.nzc{animation:none}}

#nzl{background:#fff;padding:0;border:3px solid #fff}
#nzl img.c{width:100%;height:100%;border-radius:50%;display:block;transition:.3s}
#nzl.on{background:linear-gradient(135deg,#3a78e3,#7a50d8)}
.nza{background:none;overflow:visible}.nza img{width:44px;height:44px;border-radius:50%;display:block;background:#fff}

#nzs{margin-left:auto!important}
#nzs svg{width:18px;height:18px;stroke:#fff;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
#nzs .mx{opacity:0}#nzs.off .mx{opacity:1}#nzs.off .w1,#nzs.off .w2{opacity:0}
#nzl:not(.on) img.c{animation:nzbob 3.2s ease-in-out infinite}
#nzl:not(.on){animation:nzwig 9s ease-in-out infinite}
@keyframes nzbob{50%{transform:translateY(-3px) scale(1.04)}}
@keyframes nzwig{0%,88%,100%{transform:none}90%{transform:rotate(-10deg) scale(1.08)}92%{transform:rotate(9deg) scale(1.08)}94%{transform:rotate(-6deg)}96%{transform:rotate(4deg)}}
.nza{position:relative}.nza::before{content:"";position:absolute;inset:-4px;border-radius:50%;border:2px solid #5ee1ff;opacity:0}
.nza.talk::before,.nza.say::before{animation:nzt 1s ease-out infinite}.nza.say img,.nza.talk img{animation:nzbob .6s ease-in-out infinite}
@keyframes nzt{from{transform:scale(.9);opacity:.9}to{transform:scale(1.35);opacity:0}}
@media(prefers-reduced-motion:reduce){#nzl:not(.on),#nzl:not(.on) img.c,.nza.talk img,.nza.talk::before,.nza.say::before{animation:none}}
