/* ============================================================
   JARVIN — pelle "nuova" (restyling 10/2026). Solo aspetto: nessuna voce,
   nessun flusso cambiato. Si applica con <html class="jvs">.
   Stessa famiglia della PDA: Sora, canvas chiaro, blu, angoli morbidi,
   menu laterale scuro.
   ============================================================ */
html.jvs{
  --bg:#F4F6FB; --panel:#FFFFFF; --line:#E6E9F2; --line2:#EEF1F8;
  --hd:#FFFFFF; --hd-brd:#E6E9F2;
  --accent:#2F6BFF; --accent2:#1F55E0; --accent3:#4F86FF;
  --txt:#10172A; --muto:#6B7591;
  --ok:#12A5A0; --warn:#D99A00; --bad:#E5484D;
  --sh:0 1px 2px rgba(16,23,42,.04),0 10px 28px -14px rgba(16,23,42,.14);
  --sh2:0 2px 4px rgba(16,23,42,.05),0 20px 44px -20px rgba(16,23,42,.24);
  --sans:'Sora',system-ui,-apple-system,sans-serif; --mono:'Sora',system-ui,sans-serif; --disp:'Sora',system-ui,sans-serif;
  --ink:#10172A; --ink2:#1B2440; --side:252px; --top:64px;
}
html.jvs body{background:var(--bg);color:var(--txt);font-family:var(--sans)}
/* testata chiara */
html.jvs .topbar{background:rgba(244,246,251,.86);backdrop-filter:blur(14px);border-bottom:1px solid var(--line);color:var(--txt);padding:0 22px 0 0}
html.jvs .topbar .brand{display:block;text-align:center;line-height:var(--top);width:var(--side);height:100%;background:var(--ink);color:#fff;font-size:17px;font-weight:800;letter-spacing:.3em;text-indent:.3em;margin-right:6px;flex:none}
html.jvs .topbar .brand i{color:#8FB1FF}
html.jvs .pill,html.jvs .clock,html.jvs .crumb{color:var(--muto)}
html.jvs .crumb b{color:var(--txt)}
html.jvs .pill .dot{background:#12A5A0;box-shadow:0 0 0 4px rgba(18,165,160,.15)}
html.jvs .beta{color:var(--muto);border-color:var(--line);background:#fff}
html.jvs .clock{font-weight:700;color:var(--txt);background:#fff;border:1px solid var(--line);border-radius:999px;padding:6px 12px;font-size:12.5px}
html.jvs .mod-slot .ms-item{color:var(--muto);background:#fff;border:1px solid var(--line);border-radius:999px}
html.jvs .mod-slot .ms-item b{color:var(--txt)}
html.jvs .mod-slot .ms-btn,html.jvs .home-btn{background:var(--accent);border:none;color:#fff;border-radius:999px;font-weight:700;padding:8px 16px;box-shadow:0 8px 18px -10px rgba(47,107,255,.7)}
html.jvs .mod-slot .ms-btn:hover,html.jvs .home-btn:hover{background:var(--accent2);border-color:transparent}
html.jvs .topsearch{background:#fff;border:1px solid var(--line);color:var(--txt);border-radius:999px;padding:8px 14px;box-shadow:var(--sh)}
html.jvs .topsearch::placeholder{color:var(--muto)}
html.jvs .topsearch:focus{background:#fff;border-color:var(--accent);box-shadow:0 0 0 4px rgba(47,107,255,.12)}
html.jvs .themebtn,html.jvs .burger{background:#fff;border:1px solid var(--line);color:var(--txt);border-radius:999px}
html.jvs .themebtn:hover{background:var(--line2)}
/* menu laterale scuro */
html.jvs .side{background:var(--ink);border-right:none;padding:12px 12px 24px;color:#DDE3F5}
html.jvs .side::-webkit-scrollbar-thumb{background:rgba(255,255,255,.14)}
html.jvs .sb-section{color:#7E88A6;letter-spacing:.14em;font-size:10px;padding:18px 12px 8px}
html.jvs .sb-item{color:#DDE3F5;border-radius:14px;padding:10px 12px;font-weight:600;font-size:13.5px}
html.jvs .sb-icon{background:rgba(255,255,255,.08);border-radius:8px;width:26px;height:26px;display:grid;place-items:center;font-size:13px}
html.jvs .sb-item .sb-arrow{color:#7E88A6}
html.jvs .sb-item:not(.active):hover,html.jvs .sb-sub-item:not(.active):hover{background:rgba(255,255,255,.07);color:#fff}
html.jvs .sb-item.active{background:var(--accent);color:#fff;box-shadow:0 10px 24px -12px rgba(47,107,255,.8)}
html.jvs .sb-item.active .sb-icon{background:rgba(255,255,255,.2)}
html.jvs .sb-sub-item{color:#B9C0D6;border-radius:10px;padding:7px 12px 7px 46px;font-size:12.5px}
html.jvs .sb-sub-item.active{background:rgba(47,107,255,.22);color:#fff;font-weight:600}
html.jvs .sb-sub-bullet,html.jvs .sb-sub-item i{background:#4B5675}
html.jvs .sb-sub-item.active .sb-sub-bullet,html.jvs .sb-sub-item:hover .sb-sub-bullet{background:#8FB1FF}
html.jvs .sb-logout{color:#FF8E92;border-radius:14px;background:rgba(229,72,77,.12)}
html.jvs .sb-logout:hover{background:rgba(229,72,77,.22)}
html.jvs .sb-logout .sb-icon{background:rgba(229,72,77,.25)}
html.jvs .velo-side{background:rgba(16,23,42,.5)}
/* corpo */
html.jvs .main{padding:26px 30px 40px}
html.jvs .main::-webkit-scrollbar-thumb{background:#CDD3E3}
html.jvs .kpi-row{gap:16px}
html.jvs .card,html.jvs .stage,html.jvs .feed,html.jvs .sec-panel,html.jvs .cli-panel{background:#fff;border:1px solid var(--line);border-radius:22px;box-shadow:var(--sh)}
html.jvs .card{padding:20px 22px;transition:transform .2s,box-shadow .2s}
html.jvs .card:hover{transform:translateY(-3px);box-shadow:var(--sh2)}
html.jvs .card::after{left:18px;right:auto;top:18px;bottom:auto;width:38px;height:4px;border-radius:4px;background:var(--accent3)}
html.jvs .card.k-warn::after{background:var(--warn)}html.jvs .card.k-bad::after{background:var(--bad)}html.jvs .card.k-mute::after{background:#CDD3E3}
html.jvs .k-lbl{font-size:12px;letter-spacing:0;text-transform:none;color:var(--muto);font-weight:600;margin:14px 0 10px}
html.jvs .k-val{font-family:var(--sans);font-size:38px;font-weight:800;letter-spacing:-1.2px;line-height:1;color:var(--txt)}
html.jvs .k-val small{font-family:var(--sans);color:var(--muto)}
html.jvs .k-sub{color:var(--muto)}
html.jvs .bar{background:var(--line2);height:6px;border-radius:999px}
html.jvs .bar i{background:linear-gradient(90deg,var(--accent),#8FB1FF)}
html.jvs .stage{background:radial-gradient(700px 400px at 70% 30%,rgba(47,107,255,.10),transparent 60%),#fff}
html.jvs .ring{border-color:#E6E9F2}html.jvs .r2{border-color:#EEF1F8}
html.jvs .av-glow{background:radial-gradient(circle,rgba(47,107,255,.22) 0%,transparent 66%)}
html.jvs .av-name{font-family:var(--sans);font-weight:800;letter-spacing:.22em;color:var(--txt);font-size:22px}
html.jvs .av-state{letter-spacing:0;text-transform:none;font-size:12.5px;font-weight:600}
html.jvs .av-state .d{background:#12A5A0;box-shadow:0 0 0 4px rgba(18,165,160,.15)}
html.jvs .feed-h{border-bottom:1px solid var(--line);padding:16px 22px}
html.jvs .feed-h b{font-size:15px;font-weight:800;letter-spacing:-.2px}
html.jvs .feed-h span{letter-spacing:0;text-transform:none;font-size:12px;font-weight:600}
html.jvs .ev{padding:13px 22px;border-bottom:1px solid var(--line2)}
html.jvs .btn{border-radius:999px;font-weight:700;background:var(--accent);color:#fff;border:none;padding:10px 18px}
html.jvs .btn:hover{background:var(--accent2)}
html.jvs .btn.ghost{background:#fff;border:1px solid var(--line);color:var(--txt)}
html.jvs .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:#fff}
html.jvs .botbtn{border-radius:999px;font-weight:600;border:1px solid var(--line);background:#fff;color:var(--muto);padding:9px 14px}
html.jvs .botbtn.on{border-color:rgba(18,165,160,.4);color:#0E7F7B;background:rgba(18,165,160,.08)}
html.jvs .botbtn.on .botdot{background:#12A5A0;box-shadow:0 0 0 4px rgba(18,165,160,.15)}
html.jvs .sec-title{font-weight:800;letter-spacing:-.3px}
html.jvs .sec-sub,html.jvs .sec-nota{color:var(--muto)}
html.jvs .sec-tag{border-radius:999px;background:var(--line2);color:var(--muto);font-weight:700}
html.jvs .sec-panel h4{font-weight:800;color:var(--txt)}
html.jvs .amb-bar,html.jvs .ver-bar{background:var(--line2);border-radius:999px}
html.jvs .amb-bar i,html.jvs .ver-bar i{background:linear-gradient(90deg,var(--accent),#8FB1FF);border-radius:999px}
html.jvs .ver-bar.top i{background:linear-gradient(90deg,#12A5A0,#7FE3DF)}
html.jvs .rec-dot.on{background:#12A5A0}
html.jvs #module-frame{background:#fff}
html.jvs .main.has-module{padding:0}
html.jvs .jf-fab{background:var(--ink);box-shadow:var(--sh2)}
html.jvs .jf-panel{border-radius:22px;border:1px solid var(--line);box-shadow:var(--sh2);overflow:hidden}
html.jvs .jf-head{background:var(--ink);color:#fff}
/* tema scuro esistente: resta disponibile dal tasto, con i nostri colori */
html.jvs body.dark{--bg:#0B1020;--panel:#131A2E;--line:rgba(255,255,255,.08);--line2:rgba(255,255,255,.05);--txt:#F4F6FB;--muto:#8A93AD;--hd:#0B1020;--hd-brd:rgba(255,255,255,.08)}
html.jvs body.dark .topbar{background:rgba(11,16,32,.86);border-bottom:1px solid var(--line);color:var(--txt)}
html.jvs body.dark .side{background:#0B1020;border-right:1px solid var(--line)}
html.jvs body.dark .card,html.jvs body.dark .stage,html.jvs body.dark .feed,html.jvs body.dark .sec-panel,html.jvs body.dark .cli-panel{background:var(--panel);border-color:var(--line);box-shadow:none}
html.jvs body.dark .stage{background:radial-gradient(700px 400px at 70% 30%,rgba(47,107,255,.18),transparent 60%),var(--panel)}
html.jvs body.dark .clock,html.jvs body.dark .topsearch,html.jvs body.dark .themebtn,html.jvs body.dark .burger,html.jvs body.dark .beta,html.jvs body.dark .mod-slot .ms-item,html.jvs body.dark .botbtn,html.jvs body.dark .btn.ghost{background:var(--panel);border-color:var(--line);color:var(--txt)}
html.jvs body.dark .k-val,html.jvs body.dark .av-name,html.jvs body.dark .sec-panel h4{color:#fff}
html.jvs body.dark .bar,html.jvs body.dark .amb-bar,html.jvs body.dark .ver-bar{background:rgba(255,255,255,.08)}
@media (max-width:900px){
  html.jvs .topbar{padding:0 14px 0 0}
  html.jvs .topbar .brand{width:auto;padding:0 16px;background:transparent;color:var(--txt);font-size:15px}
  html.jvs .topbar .brand i{color:var(--accent)}
  html.jvs .side{border-radius:0 22px 22px 0}
  html.jvs .main{padding:18px 16px 32px}
}

/* ============================================================
   LOGIN JARVIN — scheda centrale (stessa impostazione di oggi, veste nuova)
   ============================================================ */
html.jvs body.jv-login{display:flex;align-items:center;justify-content:center;padding:24px 16px;min-height:100vh;background:var(--bg);color:var(--txt);font-family:var(--sans);position:relative;overflow-x:hidden}
html.jvs body.jv-login::before{content:'';position:fixed;inset:-20%;z-index:0;pointer-events:none;background:radial-gradient(640px 640px at 22% 18%,rgba(47,107,255,.16),transparent 62%),radial-gradient(560px 560px at 82% 82%,rgba(18,165,160,.16),transparent 62%),radial-gradient(420px 420px at 70% 15%,rgba(109,93,245,.10),transparent 62%)}
html.jvs body.jv-login .jv-side,html.jvs body.jv-login .jv-globe{display:none}
html.jvs body.jv-login .wrap{position:relative;z-index:1;width:100%;max-width:420px}
html.jvs body.jv-login .card{background:#fff;border:none;border-radius:28px;box-shadow:0 30px 70px -30px rgba(16,23,42,.35),0 0 0 1px rgba(16,23,42,.04);overflow:visible;position:relative;margin-top:44px}
html.jvs body.jv-login .card-hd{background:transparent;padding:0;min-height:0;display:flex;flex-direction:column;align-items:center;gap:12px;margin-top:-44px}
html.jvs body.jv-login .logo{width:88px;height:88px;border:4px solid #fff;padding:0;background:#fff;box-shadow:0 14px 30px -12px rgba(16,23,42,.35),0 0 0 6px rgba(47,107,255,.12)}
html.jvs body.jv-login .hd-name{color:var(--txt);font-weight:800;font-size:15px;letter-spacing:.3em;text-indent:.3em}
html.jvs body.jv-login .card-bd{padding:18px 36px 30px}
html.jvs body.jv-login #card-login .card-bd::before{content:'Bentornato';display:block;text-align:center;font-size:28px;font-weight:800;letter-spacing:-.6px;color:var(--txt);margin-bottom:2px}
html.jvs body.jv-login #card-login .card-bd::after{content:'Accedi alla console operativa';display:block;text-align:center;color:var(--muto);font-size:13.5px;margin-bottom:10px}
html.jvs body.jv-login #card-login .card-bd{display:flex;flex-direction:column}
html.jvs body.jv-login #card-login .card-bd::before{order:-2}html.jvs body.jv-login #card-login .card-bd::after{order:-1}
html.jvs body.jv-login .bd-title{text-align:center;font-size:24px;font-weight:800;letter-spacing:-.5px;color:var(--txt);margin-bottom:6px}
html.jvs body.jv-login .help{color:var(--muto);font-size:13.5px;line-height:1.5;text-align:center}
html.jvs body.jv-login .input{width:100%;background:var(--line2);border:1.5px solid var(--line);border-radius:16px;color:var(--txt);font-size:15px;font-family:var(--sans);padding:14px 16px 14px 46px;margin-top:12px;height:auto;box-shadow:none;transition:border-color .15s,box-shadow .15s,background .15s}
html.jvs body.jv-login .input:focus{outline:none;border-color:var(--accent);background:#fff;box-shadow:0 0 0 4px rgba(47,107,255,.12)}
html.jvs body.jv-login .input::placeholder{color:var(--muto)}
html.jvs body.jv-login #username,html.jvs body.jv-login #forgot-user{background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%238A93AD' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><circle cx='12' cy='8' r='4'/><path d='M4 21a8 8 0 0 1 16 0'/></svg>");background-repeat:no-repeat;background-position:16px center;background-size:18px}
html.jvs body.jv-login #password{background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%238A93AD' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><rect x='4' y='11' width='16' height='10' rx='2'/><path d='M8 11V7a4 4 0 0 1 8 0v4'/></svg>");background-repeat:no-repeat;background-position:16px center;background-size:18px}
html.jvs body.jv-login .input.otp{padding-left:16px;text-align:center;letter-spacing:.4em;font-size:24px;font-weight:800}
html.jvs body.jv-login .btn{height:auto;margin-top:16px;padding:15px;border:none;border-radius:16px;background:linear-gradient(135deg,#2F6BFF,#6D5DF5);color:#fff;font-size:15.5px;font-weight:700;box-shadow:0 16px 30px -14px rgba(47,107,255,.75);transition:transform .15s,filter .15s}
html.jvs body.jv-login .btn:hover:not(:disabled){filter:brightness(1.06);transform:translateY(-1px)}
html.jvs body.jv-login .btn.success{background:#12A5A0}
html.jvs body.jv-login .msg{border-radius:14px;border:none;font-weight:600}
html.jvs body.jv-login .msg.err{background:rgba(229,72,77,.1);color:#C6383D}
html.jvs body.jv-login .msg.blk{background:#FFF7E6;color:#8A6100}
html.jvs body.jv-login .msg.ok{background:rgba(18,165,160,.12);color:#0E7F7B}
html.jvs body.jv-login .below{margin-top:18px}
html.jvs body.jv-login .links{font-size:13px}
html.jvs body.jv-login .links a{color:var(--accent);font-weight:600}
html.jvs body.jv-login .sep{color:var(--line)}
html.jvs body.jv-login .ver,html.jvs body.jv-login .ver a{color:var(--muto);font-size:11.5px}
@media (max-width:480px){html.jvs body.jv-login .card{border-radius:24px}html.jvs body.jv-login .card-bd{padding:14px 22px 24px}html.jvs body.jv-login #card-login .card-bd::before{font-size:24px}}
/* sfondo blu notte con aloni */
html.jvs body.jv-login{background:radial-gradient(1100px 700px at 50% 60%,#16204A 0%,#10172A 55%,#0B1020 100%)}
html.jvs body.jv-login::before{background:radial-gradient(640px 640px at 20% 20%,rgba(47,107,255,.45),transparent 62%),radial-gradient(560px 560px at 82% 82%,rgba(18,165,160,.38),transparent 62%),radial-gradient(460px 460px at 70% 12%,rgba(109,93,245,.30),transparent 62%);filter:blur(30px)}
html.jvs body.jv-login .card{box-shadow:0 40px 90px -36px rgba(0,0,0,.75),0 0 0 1px rgba(255,255,255,.06)}
html.jvs body.jv-login .logo{box-shadow:0 14px 30px -12px rgba(0,0,0,.5),0 0 0 6px rgba(47,107,255,.35)}
html.jvs body.jv-login .links a{color:#8FB1FF}
html.jvs body.jv-login .sep{color:rgba(255,255,255,.25)}
html.jvs body.jv-login .ver,html.jvs body.jv-login .ver a{color:#7E88A6}
html.jvs body.jv-login .logo{box-shadow:0 14px 30px -12px rgba(0,0,0,.5);border:4px solid #fff}
html.jvs body.jv-login .hd-name{display:none}
html.jvs body.jv-login .card{margin-top:0}
html.jvs body.jv-login .card-hd{margin-top:0;padding-top:30px}
/* marchio tipografico al posto dell'avatar */
html.jvs body.jv-login .logo{display:none}
html.jvs body.jv-login .card-hd{padding-top:38px;gap:10px}
html.jvs body.jv-login .hd-name{display:block;font-size:36px;font-weight:800;letter-spacing:.34em;text-indent:.34em;line-height:1;background:linear-gradient(135deg,#2F6BFF 0%,#6D5DF5 55%,#12A5A0 100%);-webkit-background-clip:text;background-clip:text;color:transparent;-webkit-text-fill-color:transparent;filter:drop-shadow(0 6px 18px rgba(47,107,255,.25))}
html.jvs body.jv-login .card-hd::after{content:'CONSOLE OPERATIVA';display:block;font-size:10.5px;font-weight:700;letter-spacing:.3em;text-indent:.3em;color:var(--muto)}
html.jvs body.jv-login #card-login .card-bd::before{font-size:22px;letter-spacing:-.3px;margin-top:6px}
html.jvs body.jv-login #card-login .card-bd::after{font-size:13px}
html.jvs body.jv-login #card-login .card-bd::after{content:'Accedi con le tue credenziali'}
/* barra laterale e blocco marchio con la tonalità del login */
html.jvs .side{background:radial-gradient(420px 320px at 20% 10%,rgba(47,107,255,.32),transparent 62%),radial-gradient(360px 300px at 85% 95%,rgba(18,165,160,.28),transparent 62%),radial-gradient(900px 700px at 50% 60%,#16204A 0%,#10172A 55%,#0B1020 100%)}
html.jvs .topbar .brand{background:linear-gradient(90deg,#16204A,#10172A)}

/* ── HOME: saluto, riquadri colorati, palco scuro, registro ── */
html.jvs .jv-hero{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin:2px 0 22px}
html.jvs .jv-hero .d{font-size:13px;font-weight:600;color:var(--muto);margin-bottom:6px}
html.jvs .jv-hero h1{font-size:32px;font-weight:800;letter-spacing:-.8px;line-height:1.05;margin:0}
html.jvs .jv-hero p{margin:8px 0 0;color:var(--muto);font-size:14px}
html.jvs .jv-hero p b{color:var(--txt);font-weight:700}
html.jvs .jv-hero .st{display:inline-flex;align-items:center;gap:8px;background:#fff;border:1px solid var(--line);border-radius:999px;padding:9px 14px;font-size:12.5px;font-weight:700;color:var(--txt);box-shadow:var(--sh);white-space:nowrap}
html.jvs .jv-hero .st i{width:8px;height:8px;border-radius:50%;background:#12A5A0;box-shadow:0 0 0 4px rgba(18,165,160,.15)}
html.jvs .jv-hero .st.bad i{background:#E5484D;box-shadow:0 0 0 4px rgba(229,72,77,.15)}
html.jvs .kpi-row .card{border-color:transparent;background:#EEF3FF}
html.jvs .kpi-row .card.k-warn{background:#FFF7E6}
html.jvs .kpi-row .card.k-bad{background:#FFF0F0}
html.jvs .kpi-row .card.k-mute{background:#F1F3F9}
html.jvs .kpi-row .card::after{display:none}
html.jvs .kpi-row .k-lbl{margin-top:0}
html.jvs .kpi-row .card .k-val{color:#2F6BFF}
html.jvs .kpi-row .card.k-warn .k-val{color:#B57E00}
html.jvs .kpi-row .card.k-bad .k-val{color:#C6383D}
html.jvs .kpi-row .card.k-mute .k-val{color:#4B5675}
html.jvs .kpi-row .bar{background:rgba(16,23,42,.08)}
html.jvs .kpi-row .card.k-warn .bar i{background:linear-gradient(90deg,#D99A00,#F5B400)}
html.jvs .kpi-row .card.k-bad .bar i{background:linear-gradient(90deg,#E5484D,#FF8E92)}
html.jvs .kpi-row .card.k-mute .bar i{background:linear-gradient(90deg,#4B5675,#8A93AD)}
html.jvs .stage{background:radial-gradient(420px 320px at 20% 10%,rgba(47,107,255,.35),transparent 62%),radial-gradient(360px 300px at 85% 95%,rgba(18,165,160,.3),transparent 62%),radial-gradient(900px 700px at 50% 60%,#16204A 0%,#10172A 55%,#0B1020 100%);border:none;color:#fff;border-radius:28px;box-shadow:0 30px 60px -30px rgba(16,23,42,.5)}
html.jvs .ring{border-color:rgba(255,255,255,.08)}html.jvs .r2{border-color:rgba(255,255,255,.05)}
html.jvs .av-glow{background:radial-gradient(circle,rgba(79,134,255,.45) 0%,transparent 66%)}
html.jvs .av-wrap img{filter:drop-shadow(0 16px 36px rgba(0,0,0,.5))}
html.jvs .av-name{color:#fff}
html.jvs .av-state{color:#B9C0D6}
html.jvs .av-state .d{background:#2BBDB8;box-shadow:0 0 0 4px rgba(43,189,184,.2)}
html.jvs .botbtn{background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.14);color:#DDE3F5}
html.jvs .botbtn:hover{border-color:#8FB1FF;color:#fff}
html.jvs .botbtn.on{background:rgba(43,189,184,.18);border-color:rgba(43,189,184,.5);color:#7FE3DF}
html.jvs .botbtn.on .botdot{background:#2BBDB8}
html.jvs .ev{font-size:13.5px}
html.jvs .ev .ora{font-family:var(--sans);font-weight:600;color:var(--muto);background:var(--line2);border-radius:8px;padding:3px 8px;font-size:12px}
html.jvs .ev .tag{font-size:11px;font-weight:700;padding:4px 11px}
html.jvs .ev .ok{background:rgba(18,165,160,.12);color:#0E7F7B}
html.jvs .ev .wr{background:rgba(245,180,0,.18);color:#8A6100}
html.jvs .ev .er{background:rgba(229,72,77,.12);color:#C6383D}
@media (max-width:900px){html.jvs .jv-hero{flex-direction:column;align-items:flex-start;gap:10px}html.jvs .jv-hero h1{font-size:26px}html.jvs .stage{border-radius:22px}}

/* ── cornice su telefono: niente blocco scuro, marchio in riga, hamburger a pillola ── */
@media (max-width:900px){
  html.jvs .topbar{padding:0 12px;gap:10px;background:rgba(244,246,251,.92)}
  html.jvs .topbar .brand{width:auto!important;height:auto!important;line-height:1!important;padding:0!important;background:none!important;color:var(--txt)!important;font-size:16px;letter-spacing:.26em;text-indent:0;margin:0}
  html.jvs .topbar .brand i{color:var(--accent)}
  html.jvs .burger{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:12px;background:#fff;border:1px solid var(--line);color:var(--txt);box-shadow:var(--sh)}
  html.jvs .jv-hero h1{font-size:28px}
  html.jvs .jv-hero p{font-size:13.5px}
  html.jvs .kpi-row{grid-template-columns:1fr 1fr;gap:12px}
  html.jvs .kpi-row .card{padding:16px}
  html.jvs .k-val{font-size:30px}
}

/* ── HOME: dettaglio macchine (accese / da guardare / ferme) ── */
html.jvs .jv-mac{background:#fff;border:1px solid var(--line);border-radius:22px;box-shadow:var(--sh);margin-bottom:26px;overflow:hidden}
html.jvs .jv-mac-h{display:flex;align-items:center;gap:10px;padding:16px 20px;border-bottom:1px solid var(--line);flex-wrap:wrap}
html.jvs .jv-mac-h b{font-size:15px;font-weight:800;letter-spacing:-.2px;margin-right:auto}
html.jvs .jv-mac-h button{border:1px solid var(--line);background:#fff;color:var(--muto);border-radius:999px;padding:7px 13px;font-weight:700;font-size:12.5px;cursor:pointer;font-family:var(--sans);display:inline-flex;align-items:center;gap:7px}
html.jvs .jv-mac-h button i{font-style:normal;background:var(--line2);color:var(--txt);border-radius:999px;padding:1px 7px;font-size:11px}
html.jvs .jv-mac-h button.on{background:var(--ink);border-color:var(--ink);color:#fff}
html.jvs .jv-mac-h button.on i{background:rgba(255,255,255,.18);color:#fff}
html.jvs .jv-mac-h button.on.t-ok{background:#12A5A0;border-color:#12A5A0}
html.jvs .jv-mac-h button.on.t-wa{background:#D99A00;border-color:#D99A00}
html.jvs .jv-mac-h button.on.t-ko{background:#E5484D;border-color:#E5484D}
html.jvs .jv-mac-l{max-height:380px;overflow:auto}
html.jvs .jv-mac-r{display:grid;grid-template-columns:10px minmax(0,1.3fr) minmax(0,1fr) minmax(0,.8fr) auto;gap:14px;align-items:center;padding:11px 20px;border-bottom:1px solid var(--line2);font-size:13.5px}
html.jvs .jv-mac-r:last-child{border-bottom:none}
html.jvs .jv-mac-r:hover{background:#F7F9FF}
html.jvs .jv-mac-r .d{width:10px;height:10px;border-radius:50%;background:#CDD3E3}
html.jvs .jv-mac-r.ok .d{background:#12A5A0;box-shadow:0 0 0 4px rgba(18,165,160,.15)}
html.jvs .jv-mac-r.wa .d{background:#F5B400;box-shadow:0 0 0 4px rgba(245,180,0,.18)}
html.jvs .jv-mac-r.ko .d{background:#E5484D;box-shadow:0 0 0 4px rgba(229,72,77,.15)}
html.jvs .jv-mac-r b{font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
html.jvs .jv-mac-r b small{display:block;font-weight:600;color:var(--muto);font-size:11.5px}
html.jvs .jv-mac-r .a{color:var(--txt);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
html.jvs .jv-mac-r .a small{display:block;color:var(--muto);font-weight:500;font-size:11.5px}
html.jvs .jv-mac-r .t{color:var(--muto);font-size:12.5px;white-space:nowrap}
html.jvs .jv-mac-r .v{font-size:11px;font-weight:700;color:var(--muto);background:var(--line2);border-radius:999px;padding:3px 8px}
html.jvs .jv-mac-e{padding:26px;text-align:center;color:var(--muto);font-size:13.5px}
html.jvs .kpi-row .card{cursor:pointer}
@media (max-width:900px){html.jvs .jv-mac-r{grid-template-columns:10px minmax(0,1fr) auto;gap:10px;padding:10px 14px}html.jvs .jv-mac-r .a,html.jvs .jv-mac-r .v{display:none}}

/* ── HOME: luci in movimento dentro il palco dell'avatar (solo lì) ── */
html.jvs .stage::before,html.jvs .stage::after{content:'';position:absolute;border-radius:50%;filter:blur(60px);pointer-events:none;z-index:0;mix-blend-mode:screen}
html.jvs .stage::before{width:520px;height:520px;left:-120px;top:-180px;background:radial-gradient(circle,rgba(47,107,255,.55),rgba(47,107,255,0) 65%);animation:jvL1 18s ease-in-out infinite alternate}
html.jvs .stage::after{width:460px;height:460px;right:-140px;bottom:-200px;background:radial-gradient(circle,rgba(18,165,160,.5),rgba(18,165,160,0) 65%);animation:jvL2 22s ease-in-out infinite alternate}
html.jvs .stage .jv-luce{position:absolute;inset:0;pointer-events:none;z-index:0;overflow:hidden}
html.jvs .stage .jv-luce i{position:absolute;border-radius:50%;filter:blur(40px);mix-blend-mode:screen}
html.jvs .stage .jv-luce i:nth-child(1){width:260px;height:260px;left:38%;top:-40%;background:radial-gradient(circle,rgba(109,93,245,.5),transparent 65%);animation:jvL3 16s ease-in-out infinite alternate}
html.jvs .stage .jv-luce i:nth-child(2){width:200px;height:200px;left:22%;bottom:-30%;background:radial-gradient(circle,rgba(79,134,255,.45),transparent 65%);animation:jvL1 14s ease-in-out infinite alternate-reverse}
html.jvs .stage .jv-luce i:nth-child(3){width:220px;height:220px;right:18%;top:10%;background:radial-gradient(circle,rgba(43,189,184,.4),transparent 65%);animation:jvL2 20s ease-in-out infinite alternate-reverse}
html.jvs .stage .jv-luce .sweep{position:absolute;inset:-20% -60%;background:linear-gradient(100deg,transparent 40%,rgba(255,255,255,.05) 48%,rgba(255,255,255,.10) 50%,rgba(255,255,255,.05) 52%,transparent 60%);animation:jvSweep 13s ease-in-out infinite;filter:none;border-radius:0}
@keyframes jvL1{0%{transform:translate(0,0) scale(1)}50%{transform:translate(90px,50px) scale(1.12)}100%{transform:translate(-40px,110px) scale(.95)}}
@keyframes jvL2{0%{transform:translate(0,0) scale(1)}50%{transform:translate(-110px,-60px) scale(1.1)}100%{transform:translate(50px,-120px) scale(.92)}}
@keyframes jvL3{0%{transform:translate(0,0)}100%{transform:translate(-160px,70px)}}
@keyframes jvSweep{0%{transform:translateX(-45%)}55%{transform:translateX(45%)}100%{transform:translateX(45%)}}
html.jvs .stage > *:not(.jv-luce){position:relative;z-index:1}
html.jvs .stage .ring{z-index:1}
@media (prefers-reduced-motion:reduce){html.jvs .stage::before,html.jvs .stage::after,html.jvs .stage .jv-luce i,html.jvs .stage .jv-luce .sweep{animation:none}}
/* palco più compatto */
html.jvs .stage{padding:22px 24px 20px}
html.jvs .av-wrap,html.jvs .av-glow{width:150px;height:150px}
html.jvs .av-wrap img{width:138px;height:138px}
html.jvs .r1{width:220px;height:220px}html.jvs .r2{width:290px;height:290px}
html.jvs .av-name{font-size:18px;margin-top:10px}
html.jvs .av-state{margin-top:5px}
html.jvs .botbtn{margin-top:10px;padding:7px 12px;font-size:12.5px}
html.jvs .stage{padding:14px 20px 14px}
html.jvs .av-wrap,html.jvs .av-glow{width:104px;height:104px}
html.jvs .av-wrap img{width:96px;height:96px}
html.jvs .r1{width:150px;height:150px}html.jvs .r2{width:200px;height:200px}
html.jvs .av-name{font-size:15px;margin-top:6px}
html.jvs .av-state{margin-top:3px;font-size:11.5px}
html.jvs .botbtn{margin-top:8px;padding:6px 11px;font-size:12px}
html.jvs .stage{padding:10px 18px 10px;flex-direction:row;justify-content:center;gap:16px;flex-wrap:wrap}
html.jvs .av-wrap,html.jvs .av-glow{width:64px;height:64px}
html.jvs .av-wrap img{width:60px;height:60px}
html.jvs .ring{display:none}
html.jvs .av-name{font-size:14px;margin-top:0}
html.jvs .av-state{margin-top:0}
html.jvs .botbtn{margin-top:0}
html.jvs .stage .jv-luce i{filter:blur(28px)}

/* LOGIN — compatto su cellulare */
@media (max-width:520px){
  html.jvs body.jv-login{padding:12px 10px}
  html.jvs body.jv-login .wrap{max-width:250px}
  html.jvs body.jv-login .card{border-radius:18px}
  html.jvs body.jv-login .card-hd{padding-top:18px;gap:4px}
  html.jvs body.jv-login .hd-name{font-size:16px;letter-spacing:.26em;text-indent:.26em}
  html.jvs body.jv-login .card-hd::after{font-size:7px}
  html.jvs body.jv-login .card-bd{padding:6px 14px 14px}
  html.jvs body.jv-login #card-login .card-bd::before{font-size:13px;margin-top:0}
  html.jvs body.jv-login #card-login .card-bd::after{font-size:10px;margin-bottom:2px}
  html.jvs body.jv-login .input{font-size:12px;padding:8px 10px 8px 32px;margin-top:7px;border-radius:10px;background-position:10px center;background-size:13px}
  html.jvs body.jv-login .btn{margin-top:9px;padding:9px;font-size:12px;border-radius:10px}
  html.jvs body.jv-login .below{margin-top:9px}
  html.jvs body.jv-login .links{font-size:10.5px}
  html.jvs body.jv-login .ver,html.jvs body.jv-login .ver a{font-size:9.5px}
}

/* LOGIN — modale Privacy / documenti legali */
html.jvs body.jv-login #legal-modal{background:rgba(11,16,32,.72)!important;backdrop-filter:blur(6px);padding:16px!important}
html.jvs body.jv-login #legal-modal>div{border:none!important;border-radius:24px!important;max-width:720px!important;margin:28px auto!important;box-shadow:0 40px 90px -36px rgba(0,0,0,.8),0 0 0 1px rgba(255,255,255,.06)!important;font-family:var(--sans)}
html.jvs body.jv-login #legal-modal>div>div:first-child{background:linear-gradient(135deg,#2F6BFF,#6D5DF5)!important;padding:16px 22px!important}
html.jvs body.jv-login #legal-title{font-family:var(--sans);font-size:16px!important;font-weight:800!important;letter-spacing:-.2px}
html.jvs body.jv-login #legal-modal button{border-radius:50%!important;width:32px!important;height:32px!important;background:rgba(255,255,255,.18)!important;transition:background .15s}
html.jvs body.jv-login #legal-modal button:hover{background:rgba(255,255,255,.32)!important}
html.jvs body.jv-login #legal-body{font-family:var(--sans)!important;font-size:14.5px!important;line-height:1.7!important;color:#2A3350!important;padding:22px 28px 28px!important;max-height:72vh!important;overscroll-behavior:contain}
html.jvs body.jv-login #legal-body h1{font-size:20px;font-weight:800;color:var(--txt);letter-spacing:-.3px;margin:22px 0 8px;padding-bottom:8px;border-bottom:1px solid var(--line)}
html.jvs body.jv-login #legal-body h1:first-child{margin-top:0}
html.jvs body.jv-login #legal-body h2{font-size:16px;font-weight:800;color:var(--accent);margin:22px 0 8px}
html.jvs body.jv-login #legal-body h3{font-size:14.5px;font-weight:700;color:var(--txt);margin:16px 0 6px}
html.jvs body.jv-login #legal-body p{margin:10px 0}
html.jvs body.jv-login #legal-body ul,html.jvs body.jv-login #legal-body ol{margin:8px 0 8px 22px}
html.jvs body.jv-login #legal-body li{margin:4px 0}
html.jvs body.jv-login #legal-body strong{color:var(--txt)}
html.jvs body.jv-login #legal-body a{color:var(--accent);font-weight:600;text-decoration:none}
html.jvs body.jv-login #legal-body code{background:var(--line2);border-radius:6px;padding:1px 6px;font-size:90%;color:var(--txt)}
html.jvs body.jv-login #legal-body hr{border:0;border-top:1px solid var(--line);margin:20px 0}
html.jvs body.jv-login #legal-body blockquote{border-left:3px solid var(--accent);background:rgba(47,107,255,.06);padding:10px 14px;margin:12px 0;border-radius:0 12px 12px 0}
html.jvs body.jv-login #legal-body table{border-collapse:separate;border-spacing:0;width:100%;margin:14px 0;border:1px solid var(--line);border-radius:14px;overflow:hidden;font-size:13.5px}
html.jvs body.jv-login #legal-body th{background:var(--line2);color:var(--muto);font-size:11px;letter-spacing:.08em;text-transform:uppercase;text-align:left;padding:10px 12px;border-bottom:1px solid var(--line)}
html.jvs body.jv-login #legal-body td{padding:10px 12px;border-bottom:1px solid var(--line);vertical-align:top}
html.jvs body.jv-login #legal-body tr:last-child td{border-bottom:none}
@media (max-width:520px){
  html.jvs body.jv-login #legal-modal{padding:8px!important}
  html.jvs body.jv-login #legal-modal>div{margin:8px auto!important;border-radius:18px!important}
  html.jvs body.jv-login #legal-body{padding:14px 16px 18px!important;font-size:13px!important;max-height:78vh!important}
  html.jvs body.jv-login #legal-body h1{font-size:16px}html.jvs body.jv-login #legal-body h2{font-size:14px}
  html.jvs body.jv-login #legal-body table{display:block;overflow-x:auto;font-size:12px}
}
