:root{
  /* palette originale, tema chiaro di default */
  --bg:#f4f6fb; --bg2:#eceff7; --card:#ffffff; --card2:#f6f8fc;
  --line:#dde2ee; --line2:#c6cddf;
  --tx:#161a25; --tx2:#5a6478; --tx3:#8992a8;
  --acc:#2f6ee0; --acc2:#1f56bb;
  --ok:#12905f; --warn:#b47708; --bad:#cc2f37; --info:#6a53e0;
  --r:10px;
  --font:"Manrope",ui-sans-serif,system-ui,sans-serif;
  --display:"Fraunces","Iowan Old Style",Georgia,serif;
  --stage-ink:#eef1f8;
  --stage-warm:#4f8cff;
  --acc-hi:#6b9bff;
}
@media (prefers-color-scheme: dark){
  :root{
    --bg:#0f1115; --bg2:#151823; --card:#1a1e2b; --card2:#212636;
    --line:#2b3247; --line2:#39415c;
    --tx:#e7eaf3; --tx2:#9aa3bd; --tx3:#6b7490;
    --acc:#4f8cff; --acc2:#2f6ee0;
    --ok:#35c98a; --warn:#f0b429; --bad:#f2545b; --info:#8b7cf6;
    --stage-ink:#0f1115;
    --stage-warm:#4f8cff;
    --acc-hi:#8b7cf6;
  }
}
*{box-sizing:border-box}
/* le regole .modal/.panel impostano display: senza questo l'attributo hidden non avrebbe effetto */
[hidden]{display:none !important}
html,body{margin:0;padding:0}
body{
  background:var(--bg); color:var(--tx);
  font:14px/1.45 var(--font);
  -webkit-font-smoothing:antialiased;
}
h1{font-size:17px;margin:0;letter-spacing:-.01em;font-family:var(--display);font-weight:650}
h2{font-size:14px;margin:0 0 10px;letter-spacing:.02em;text-transform:uppercase;color:var(--tx2);font-weight:650}
h3{font-size:14px;margin:0 0 8px}
p{margin:0 0 10px}
code{background:var(--card2);padding:1px 5px;border-radius:4px;font-size:12px;border:1px solid var(--line)}
.muted{color:var(--tx2)}
.small{font-size:12px}
.spacer{flex:1}

/* ---------- topbar ---------- */
.topbar{
  display:flex;align-items:center;justify-content:space-between;gap:16px;
  padding:12px 20px;background:var(--bg2);border-bottom:1px solid var(--line);
  position:sticky;top:0;z-index:40;
}
.brand{display:flex;align-items:center;gap:12px}
.logo{
  width:34px;height:34px;border-radius:9px;display:grid;place-items:center;
  background:linear-gradient(135deg,var(--acc),var(--acc-hi));color:#fff;font-weight:800;font-size:13px;letter-spacing:.04em;
}
.sub{font-size:12px;color:var(--tx3)}
.topinfo{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.pill{
  background:var(--card);border:1px solid var(--line);border-radius:999px;
  padding:5px 12px;font-size:12px;color:var(--tx2);white-space:nowrap;
}
.pill.warn{border-color:var(--warn);color:var(--warn)}
.pill strong{color:var(--tx)}

/* ---------- tabs ---------- */
.tabs{
  display:flex;gap:2px;padding:0 20px;background:var(--bg2);
  border-bottom:1px solid var(--line);position:sticky;top:59px;z-index:39;overflow-x:auto;
}
.tab{
  background:none;border:0;border-bottom:2px solid transparent;color:var(--tx2);
  padding:11px 14px;font:inherit;font-size:13px;cursor:pointer;white-space:nowrap;
}
.tab:hover{color:var(--tx)}
.tab.active{color:var(--acc);border-bottom-color:var(--acc);font-weight:600}

main{padding:20px;max-width:1500px;margin:0 auto}
.panel{display:none}
.panel.active{display:block}

/* ---------- cards ---------- */
.card{
  background:var(--card);border:1px solid var(--line);border-radius:var(--r);
  padding:16px;margin-bottom:16px;
}
.grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(420px,1fr));gap:16px}
.grid2 > .card{margin-bottom:0}
.grid2{margin-bottom:16px}

/* ---------- buttons ---------- */
.btn{
  background:var(--card2);color:var(--tx);border:1px solid var(--line2);
  border-radius:8px;padding:8px 14px;font:inherit;font-size:13px;cursor:pointer;white-space:nowrap;
}
.btn:hover{border-color:var(--acc);color:var(--acc)}
.btn.primary{background:var(--acc);border-color:var(--acc);color:#fff;font-weight:600}
.btn.primary:hover{background:var(--acc2);border-color:var(--acc2);color:#fff}
.btn.ghost{background:transparent}
.btn.danger{border-color:var(--bad);color:var(--bad)}
.btn.danger:hover{background:var(--bad);color:#fff}
.btn.sm{padding:5px 10px;font-size:12px}
.btn:disabled{opacity:.45;cursor:not-allowed}
.btnrow{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:8px}
.linklike{background:none;border:0;color:var(--acc);cursor:pointer;font:inherit;text-decoration:underline;padding:0}

/* ---------- inputs ---------- */
input[type=text],input[type=search],input[type=number],input[type=password],
input[type=time],input[type=datetime-local],select,textarea{
  -webkit-appearance:none;appearance:none;
  background:var(--card2);color:var(--tx);border:1px solid var(--line2);
  border-radius:8px;padding:7px 10px;font:inherit;font-size:13px;
  box-shadow:none;
}
input:focus,select:focus,textarea:focus{outline:2px solid var(--acc);outline-offset:-1px;border-color:var(--acc)}
input:-webkit-autofill,
input:-webkit-autofill:hover,
input:-webkit-autofill:focus{
  -webkit-text-fill-color:var(--tx);
  box-shadow:0 0 0 1000px var(--card2) inset;
  transition:background-color 99999s ease-in-out 0s;
}
textarea{width:100%;resize:vertical;font-family:ui-monospace,Menlo,monospace;font-size:12px}
.field{display:block;margin-bottom:12px;font-size:13px;color:var(--tx2)}
.field > input,.field > select{display:block;margin-top:5px;width:100%;max-width:280px;color:var(--tx)}
.field > textarea{margin-top:5px}
.hint{display:block;margin-top:4px;font-size:11.5px;color:var(--tx3)}
.chk{display:flex;align-items:center;gap:7px;margin-bottom:9px;font-size:13px;color:var(--tx2);cursor:pointer}
.chk input{accent-color:var(--acc);width:15px;height:15px}
.toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:12px}
.toolbar input[type=search]{min-width:220px}
.dows{display:flex;gap:5px;margin-top:6px;flex-wrap:wrap}
.dowbtn{
  border:1px solid var(--line2);background:var(--card2);color:var(--tx2);
  border-radius:7px;padding:6px 9px;font:inherit;font-size:12px;cursor:pointer;min-width:42px;
}
.dowbtn.on{background:var(--acc);border-color:var(--acc);color:#fff;font-weight:600}

/* ---------- dropzone ---------- */
.dropzone{
  border:2px dashed var(--line2);border-radius:var(--r);padding:30px 20px;text-align:center;
  background:var(--card2);transition:.15s;margin-bottom:14px;
}
.dropzone.over{border-color:var(--acc);background:color-mix(in srgb,var(--acc) 10%,var(--card2))}
.dz-icon{font-size:26px;color:var(--tx3);margin-bottom:6px}

/* ---------- tables (compatte: niente scroll orizzontale su desktop) ---------- */
.tablewrap{overflow-x:auto;overflow-y:auto;max-height:62vh;border:1px solid var(--line);border-radius:8px}
table.grid{
  border-collapse:separate;border-spacing:0;width:100%;
  font-size:11.5px;table-layout:auto;
}
table.grid th{
  position:sticky;top:0;z-index:2;background:var(--card2);color:var(--tx2);
  text-align:left;font-weight:600;padding:5px 4px;border-bottom:1px solid var(--line);
  white-space:nowrap;font-size:10.5px;letter-spacing:-.01em;
}
table.grid th.num,table.grid td.num{text-align:right;font-variant-numeric:tabular-nums}
table.grid td{padding:4px 4px;border-bottom:1px solid var(--line);vertical-align:middle}
table.grid tbody tr:hover{background:var(--card2)}
table.grid tfoot td{position:sticky;bottom:0;background:var(--card2);font-weight:700;border-top:1px solid var(--line2);padding:5px 4px}
td.desc{max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#tblOrdine td.desc{max-width:120px}
#tblProdotti td.desc{max-width:180px}
td .qtyin{width:48px;text-align:right;padding:2px 4px;font-size:11.5px;font-variant-numeric:tabular-nums}
td .scortapct-in{width:46px;text-align:right;padding:2px 4px;font-size:11.5px;font-variant-numeric:tabular-nums}
td .mulin{width:40px;text-align:right;padding:2px 3px;font-size:11.5px}
td .pesoin{width:64px;min-width:64px;text-align:right;padding:2px 4px;font-size:11.5px;font-variant-numeric:tabular-nums}
th.ord-sel-th, td.ord-sel-td{width:22px;text-align:center;padding-left:2px;padding-right:2px}
.ord-sel, .ord-sel-all{width:13px;height:13px;margin:0;cursor:pointer;accent-color:var(--acc)}
.ord-act{display:inline-flex;gap:1px;align-items:center;white-space:nowrap}
#tblOrdine .badge,#tblProdotti .badge,#tblGiacenze .badge{
  padding:0 4px;font-size:9.5px;letter-spacing:0;
}
#tblOrdine td.ord-act .btn.sm{padding:1px 5px;font-size:11px;min-width:22px}
.ord-azioni{margin-top:-4px;margin-bottom:10px;padding:8px 10px;background:var(--card2);border-radius:8px;border:1px solid var(--line)}
.ord-azioni .btn.danger:disabled{opacity:.45;cursor:not-allowed}
button.ord-del{min-width:28px;padding:2px 7px;font-weight:700}
.lockable{display:inline-flex;align-items:center;gap:4px;justify-content:flex-end}
.lockable .edit-flag{width:14px;height:14px;margin:0;cursor:pointer;flex:0 0 auto;accent-color:var(--acc)}
.lockable input[type=number]:disabled{opacity:.72;cursor:not-allowed;background:var(--card2)}
th .th-lock{display:inline-flex;align-items:center;gap:5px;justify-content:flex-end;width:100%}
th .th-lock .edit-flag{width:14px;height:14px;margin:0;cursor:pointer;accent-color:var(--acc)}
th .th-lock span{white-space:nowrap}
tr.excluded{opacity:.42}
tr.urgent td{background:color-mix(in srgb,var(--bad) 13%,transparent)}
tr.low td{background:color-mix(in srgb,var(--warn) 11%,transparent)}
tr.qta-bassa td{background:#ffe566}
tr.qta-bassa td .qtyin{background:#fff8c4}
tr.ord-blu td{background:#b7d4ff !important}
tr.ord-blu td .qtyin{background:#e8f0ff}
tr.ord-blu td.desc{font-weight:600}
.b-blu{background:color-mix(in srgb,var(--acc) 18%,transparent);color:var(--acc2);border-color:var(--acc)}
.sortable{cursor:pointer;user-select:none}
.sortable:hover{color:var(--acc)}

/* ---------- badges ---------- */
.badge{
  display:inline-block;padding:1.5px 7px;border-radius:999px;font-size:10.5px;font-weight:700;
  letter-spacing:.03em;border:1px solid transparent;white-space:nowrap;
}
.b-A{background:color-mix(in srgb,var(--ok) 20%,transparent);color:var(--ok);border-color:var(--ok)}
.b-B{background:color-mix(in srgb,var(--acc) 20%,transparent);color:var(--acc);border-color:var(--acc)}
.b-C{background:color-mix(in srgb,var(--tx3) 20%,transparent);color:var(--tx2);border-color:var(--tx3)}
.b-bad{background:color-mix(in srgb,var(--bad) 20%,transparent);color:var(--bad);border-color:var(--bad)}
.b-warn{background:color-mix(in srgb,var(--warn) 22%,transparent);color:var(--warn);border-color:var(--warn)}
.b-ok{background:color-mix(in srgb,var(--ok) 20%,transparent);color:var(--ok);border-color:var(--ok)}
.b-info{background:color-mix(in srgb,var(--info) 20%,transparent);color:var(--info);border-color:var(--info)}
.b-mut{background:var(--card2);color:var(--tx3);border-color:var(--line2)}
.trend-up{color:var(--ok)} .trend-dn{color:var(--bad)}

/* ---------- kpis ---------- */
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px;margin-bottom:16px}
.kpi{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:13px 15px}
.kpi .k-label{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--tx3);margin-bottom:5px}
.kpi .k-val{font-size:22px;font-weight:700;letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.kpi .k-sub{font-size:11.5px;color:var(--tx3);margin-top:3px}

/* ---------- charts ---------- */
.chartwrap{position:relative;width:100%}
canvas{width:100%;display:block}
.legend{display:flex;gap:14px;flex-wrap:wrap;margin-top:8px;font-size:11.5px;color:var(--tx2)}
.legend i{display:inline-block;width:9px;height:9px;border-radius:2px;margin-right:5px}

/* ---------- misc ---------- */
.notice{border-radius:8px;padding:10px 13px;margin-bottom:12px;font-size:13px;border:1px solid}
.notice.info{background:color-mix(in srgb,var(--acc) 10%,transparent);border-color:var(--acc);color:var(--tx)}
.notice.warn{background:color-mix(in srgb,var(--warn) 12%,transparent);border-color:var(--warn);color:var(--tx)}
.notice.bad{background:color-mix(in srgb,var(--bad) 12%,transparent);border-color:var(--bad);color:var(--tx)}
.notice.ok{background:color-mix(in srgb,var(--ok) 12%,transparent);border-color:var(--ok);color:var(--tx)}
.notice b{font-weight:700}
.orderbar{display:flex;gap:14px;align-items:flex-end;flex-wrap:wrap}
.orderbar label{display:flex;flex-direction:column;gap:5px;font-size:12px;color:var(--tx2)}
.covbar{display:flex;flex-wrap:wrap;gap:2px;margin-top:8px}
.covday{width:11px;height:11px;border-radius:2px;background:var(--line)}
.covday.on{background:var(--ok)}
.covday.closed{background:var(--line2)}
.covday.miss{background:var(--bad)}
.abcrow{display:flex;align-items:center;gap:10px;margin-bottom:9px;font-size:12.5px}
.abcbar{flex:1;height:9px;border-radius:5px;background:var(--card2);overflow:hidden}
.abcbar > div{height:100%}

/* ---------- orari per giorno (Impostazioni) ---------- */
.orari-giorni{display:flex;flex-direction:column;gap:6px;margin:10px 0 14px}
.orario-row{
  display:grid;grid-template-columns:88px 1fr 1fr 52px;gap:8px;align-items:end;
  padding:7px 8px;border:1px solid var(--line);border-radius:8px;background:var(--card2);
}
.orario-row.is-off{opacity:.55}
.orario-row.is-closed{background:color-mix(in srgb,var(--bad) 8%,var(--card2))}
.orario-day{font-weight:600;font-size:13px;padding-bottom:6px;color:var(--tx)}
.orario-field{display:flex;flex-direction:column;gap:3px;margin:0;font-size:11px}
.orario-field .orario-in{width:100%;min-width:0}
.orario-tag{font-size:11px;color:var(--tx2);padding-bottom:7px;text-align:right;white-space:nowrap}
@media (max-width:560px){
  .orario-row{grid-template-columns:1fr 1fr;grid-template-rows:auto auto}
  .orario-day{grid-column:1 / -1;padding-bottom:0}
  .orario-tag{grid-column:1 / -1;text-align:left;padding-bottom:0}
}
.toast{
  position:fixed;bottom:22px;left:50%;transform:translateX(-50%);
  background:var(--card);border:1px solid var(--line2);border-radius:9px;
  padding:11px 18px;font-size:13px;z-index:100;box-shadow:0 8px 26px rgba(0,0,0,.4);max-width:80vw;
}
.toast.ok{border-color:var(--ok)} .toast.bad{border-color:var(--bad)}
.modal{position:fixed;inset:0;background:rgba(0,0,0,.6);display:grid;place-items:center;z-index:90;padding:20px}
.modal-box{background:var(--card);border:1px solid var(--line2);border-radius:12px;padding:20px;max-width:620px;width:100%;max-height:85vh;overflow:auto}

/* ---------- marchio ---------- */
.mark{display:block;flex:none}
.mark-lg{width:88px;height:88px}
.mark-xl{width:104px;height:104px}
.mark-sm{width:34px;height:34px}
@keyframes pulsa{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.55;transform:scale(.97)}}
.pulse{animation:pulsa 1.6s ease-in-out infinite}

/* ---------- atmosfera schermate di ingresso ---------- */
.stage-atmosphere{
  position:fixed;inset:0;z-index:0;pointer-events:none;overflow:hidden;
  background:var(--stage-ink);
}
body:has(#appView:not([hidden])) .stage-atmosphere{display:none}
.stage-wash{
  position:absolute;inset:-20%;
  background:
    radial-gradient(ellipse 70% 55% at 50% 18%, color-mix(in srgb,var(--stage-warm) 20%, transparent), transparent 62%),
    radial-gradient(ellipse 50% 40% at 82% 78%, color-mix(in srgb,#8b7cf6 12%, transparent), transparent 70%),
    radial-gradient(ellipse 45% 35% at 12% 70%, color-mix(in srgb,#2f6ee0 10%, transparent), transparent 68%),
    linear-gradient(180deg, #f5f7fc 0%, #e8ecf6 55%, #eef1f8 100%);
  animation:stageDrift 18s ease-in-out infinite alternate;
}
@media (prefers-color-scheme: dark){
  .stage-wash{
    background:
      radial-gradient(ellipse 70% 55% at 50% 18%, color-mix(in srgb,var(--stage-warm) 22%, transparent), transparent 62%),
      radial-gradient(ellipse 50% 40% at 82% 78%, color-mix(in srgb,#8b7cf6 16%, transparent), transparent 70%),
      radial-gradient(ellipse 45% 35% at 12% 70%, color-mix(in srgb,#1a2744 35%, transparent), transparent 68%),
      linear-gradient(180deg, #12151c 0%, #0b0d12 55%, #151823 100%);
  }
}
.stage-grain{
  position:absolute;inset:0;opacity:.1;mix-blend-mode:multiply;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0.35 0 0 0 0 0.4 0 0 0 0 0.55 0 0 0 .35 0'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>");
}
@media (prefers-color-scheme: dark){
  .stage-grain{opacity:.16;mix-blend-mode:soft-light}
}
.stage-shelf{
  position:absolute;left:0;right:0;bottom:0;height:38%;
  background:
    linear-gradient(180deg, transparent 0%, rgba(47,110,224,.04) 40%, rgba(47,110,224,.08) 100%),
    repeating-linear-gradient(90deg,
      transparent 0 38px,
      rgba(79,140,255,.05) 38px 39px,
      transparent 39px 76px);
  border-top:1px solid rgba(79,140,255,.12);
  mask-image:linear-gradient(180deg, transparent, #000 35%);
}
@media (prefers-color-scheme: dark){
  .stage-shelf{
    background:
      linear-gradient(180deg, transparent 0%, rgba(0,0,0,.35) 40%, rgba(0,0,0,.55) 100%),
      repeating-linear-gradient(90deg,
        transparent 0 38px,
        rgba(79,140,255,.04) 38px 39px,
        transparent 39px 76px);
    border-top:1px solid rgba(79,140,255,.12);
  }
}
@keyframes stageDrift{
  from{transform:translate3d(0,0,0) scale(1)}
  to{transform:translate3d(0,-1.5%,0) scale(1.03)}
}

/* ---------- schermate a tutta pagina ---------- */
.center-view{
  position:relative;z-index:1;
  min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:12px;padding:28px 20px;
}
.center-view h2,.stage-heading{
  text-transform:none;font-size:22px;color:var(--tx);
  font-family:var(--display);font-weight:650;letter-spacing:-.02em;margin-top:8px;
}
.stage-caption{margin-top:18px;letter-spacing:.02em}

/* ---------- login ---------- */
.login-panel{
  width:100%;max-width:420px;
  padding:36px 34px 28px;text-align:center;
  background:var(--card);
  border:1px solid var(--line);
  border-radius:18px;
  box-shadow:0 18px 40px rgba(30,36,48,.12);
  animation:loginIn .7s cubic-bezier(.22,1,.36,1) both;
}
@media (prefers-color-scheme: dark){
  .login-panel{
    background:color-mix(in srgb, var(--card) 88%, transparent);
    border-color:color-mix(in srgb, var(--stage-warm) 22%, var(--line));
    box-shadow:0 24px 60px rgba(0,0,0,.45);
    backdrop-filter:blur(10px);
  }
}
@keyframes loginIn{
  from{opacity:0;transform:translateY(18px)}
  to{opacity:1;transform:translateY(0)}
}
.logo-btn{
  background:none;border:0;padding:0;cursor:default;display:inline-block;border-radius:26px;
  animation:markIn .9s cubic-bezier(.22,1,.36,1) both;
  /* evita lo zoom al doppio tocco su telefono (gesto dei 10 clic) */
  touch-action:manipulation;
  -webkit-user-select:none;user-select:none;
  -webkit-touch-callout:none;
}
.logo-btn .mark{pointer-events:none}
@keyframes markIn{
  from{opacity:0;transform:scale(.88)}
  to{opacity:1;transform:scale(1)}
}
/* niente mano, hover o feedback: il logo non deve sembrare cliccabile */
.login-title{
  font-family:var(--display);font-weight:700;
  font-size:clamp(28px, 5vw, 34px);line-height:1.15;
  margin:18px 0 8px;letter-spacing:-.03em;
  color:var(--tx);
}
.login-sub{
  font-size:13.5px;color:var(--tx2);margin:0 auto 26px;
  max-width:28ch;line-height:1.45;
}
.login-panel .field{text-align:left;color:var(--tx2);font-size:12.5px;letter-spacing:.02em}
.login-panel .field > input,
.login-panel .pw > input{
  -webkit-appearance:none;appearance:none;
  display:block;width:100%;max-width:none;
  height:44px;margin:0;padding:11px 12px;font:inherit;font-size:14px;line-height:1.2;
  background:var(--card2);color:var(--tx);
  border:1px solid var(--line2);border-radius:8px;
  box-shadow:none;outline:none;
  transition:border-color .15s ease, background .15s ease;
}
.login-panel .pw > input{padding-right:42px}
.login-panel .field > input::placeholder,
.login-panel .pw > input::placeholder{color:var(--tx3);opacity:1}
.login-panel .field > input:focus,
.login-panel .pw > input:focus{
  border-color:var(--acc);
  background:var(--card);
  outline:2px solid color-mix(in srgb,var(--acc) 35%,transparent);
  outline-offset:-1px;
}
.login-panel .field > input:-webkit-autofill,
.login-panel .field > input:-webkit-autofill:hover,
.login-panel .field > input:-webkit-autofill:focus,
.login-panel .pw > input:-webkit-autofill,
.login-panel .pw > input:-webkit-autofill:hover,
.login-panel .pw > input:-webkit-autofill:focus{
  -webkit-text-fill-color:var(--tx);
  caret-color:var(--tx);
  border:1px solid var(--line2);
  border-radius:8px;
  box-shadow:0 0 0 1000px var(--card2) inset;
  transition:background-color 99999s ease-in-out 0s;
}
.login-panel .chk{margin:2px 0 18px;justify-content:flex-start;color:var(--tx2)}
.login-panel .notice{text-align:left}
.btn.block{width:100%;justify-content:center;padding:12px 14px;font-size:14px;letter-spacing:.01em}
.login-panel .btn.primary{
  margin-top:2px;
  background:var(--acc);
  border-color:var(--acc);
  transition:transform .15s ease, filter .15s ease;
}
.login-panel .btn.primary:hover{
  filter:none;
  background:var(--acc2);
  border-color:var(--acc2);color:#fff;
}
.login-panel .btn.primary:active{transform:translateY(1px)}
.login-foot{margin:22px 0 0;color:var(--tx3)}

/* campo password con il pulsante per leggerla */
.pw{position:relative;display:block;margin-top:5px}
.pw-occhio{
  position:absolute;right:4px;top:50%;transform:translateY(-50%);
  background:none;border:0;color:var(--tx3);cursor:pointer;padding:6px;border-radius:6px;
  display:grid;place-items:center;
}
.pw-occhio:hover{color:var(--tx)}
.pw-occhio.on{color:var(--acc)}

/* riquadro riservato al supervisor */
.super-box{
  margin-top:20px;padding:16px;border-radius:10px;text-align:left;
  border:1px dashed var(--info);background:color-mix(in srgb,var(--info) 8%,transparent);
  animation:loginIn .4s ease both;
}
.super-head{
  font-size:11px;text-transform:uppercase;letter-spacing:.07em;
  color:var(--info);font-weight:700;margin-bottom:10px;
}
.super-box .field > input{max-width:none}

/* ---------- avviso di sospensione nell'app ---------- */
.banner-sospesa{
  display:flex;align-items:center;gap:12px;flex-wrap:wrap;
  padding:9px 20px;font-size:13px;
  background:color-mix(in srgb,var(--bad) 18%,var(--bg2));
  border-bottom:1px solid var(--bad);
}

/* ---------- selettore del locale ---------- */
.locale-sel{
  max-width:250px;border-radius:999px;padding:5px 12px;font-size:12px;
  background:var(--card);border:1px solid var(--line2);
}

/* ---------- elenco locali nelle schede utente ---------- */
.lista-locali{
  margin-top:6px;max-height:190px;overflow:auto;padding:8px 10px;
  border:1px solid var(--line2);border-radius:8px;background:var(--card2);
}
.lista-locali .chk{margin-bottom:5px}

@media (max-width:640px){
  .topbar{flex-direction:column;align-items:stretch}
  .topinfo{justify-content:flex-start}
  .tabs{top:auto;position:static}
  main{padding:14px}
  .grid2{grid-template-columns:1fr}
  .login-panel{padding:28px 22px 22px}
}
@media (prefers-reduced-motion: reduce){
  .pulse,.stage-wash,.login-panel,.logo-btn,.super-box{animation:none !important}
}
