:root{
  --bg:#12151b; --panel:#1b1f28; --panel2:#232833; --line:#2f3644;
  --txt:#e8ebf0; --dim:#8891a4; --accent:#4aa3ff;
  --buy:#1f9d55; --buy-d:#177a42; --sell:#d63f3f; --sell-d:#a82f2f;
  --warn:#e0912f; --ok:#38c172;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
body{
  margin:0;background:var(--bg);color:var(--txt);
  font:15px/1.45 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;
  padding-bottom:calc(64px + env(safe-area-inset-bottom));
}
.hidden{display:none !important}

/* ---- topbar ---- */
.topbar{
  position:sticky;top:0;z-index:20;display:flex;align-items:center;
  justify-content:space-between;gap:10px;
  padding:calc(10px + env(safe-area-inset-top)) 14px 10px;
  background:var(--panel);border-bottom:1px solid var(--line);
}
.brand{font-weight:700;letter-spacing:.12em;font-size:13px;color:var(--accent)}
.topbar-right{display:flex;align-items:center;gap:8px}
.kill{
  background:var(--panel2);color:var(--txt);border:1px solid var(--line);
  border-radius:8px;padding:6px 12px;font-size:12px;font-weight:600;cursor:pointer;
}
.kill.on{background:var(--sell);border-color:var(--sell);color:#fff}
.logout{color:var(--dim);text-decoration:none;font-size:18px;padding:4px 6px}
.kill-banner{
  background:var(--sell);color:#fff;text-align:center;
  padding:8px;font-size:13px;font-weight:600;
}

main{padding:14px;max-width:760px;margin:0 auto}

/* ---- tabbar ---- */
.tabbar{
  position:fixed;left:0;right:0;bottom:0;z-index:20;display:flex;
  background:var(--panel);border-top:1px solid var(--line);
  padding-bottom:env(safe-area-inset-bottom);
}
.tabbar a{
  flex:1;text-align:center;padding:9px 0 8px;color:var(--dim);
  text-decoration:none;font-size:11px;
}
.tabbar a span{display:block;font-size:17px;line-height:1.2}
.tabbar a.on{color:var(--accent)}

/* ---- chips simboli ---- */
.chips{display:flex;gap:8px;overflow-x:auto;padding-bottom:4px;margin-bottom:14px;
  scrollbar-width:none}
.chips::-webkit-scrollbar{display:none}
.chip{
  flex:0 0 auto;background:var(--panel);border:1px solid var(--line);
  color:var(--dim);border-radius:20px;padding:8px 15px;font-size:13px;
  font-weight:600;cursor:pointer;white-space:nowrap;
}
.chip.on{background:var(--accent);border-color:var(--accent);color:#04101f}

/* ---- pulsanti trade ---- */
.trade-row{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:16px}
.big{
  border:0;border-radius:14px;color:#fff;font-size:22px;font-weight:800;
  letter-spacing:.05em;padding:26px 0;cursor:pointer;
  transition:transform .08s, background .15s;
}
.big:active{transform:scale(.97)}
.big.buy{background:var(--buy)} .big.buy.confirm{background:var(--buy-d)}
.big.sell{background:var(--sell)} .big.sell.confirm{background:var(--sell-d)}
.big:disabled{opacity:.4}
.big small{display:block;font-size:11px;font-weight:600;opacity:.85;margin-top:4px;
  letter-spacing:0}

/* ---- riquadri ---- */
.section-title{font-size:11px;color:var(--dim);text-transform:uppercase;
  letter-spacing:.1em;margin:18px 0 8px}
.card{
  background:var(--panel);border:1px solid var(--line);border-radius:12px;
  padding:12px;margin-bottom:10px;
}
.card.sel{border-color:var(--accent)}
.card.off{opacity:.55}
.card-head{display:flex;align-items:center;justify-content:space-between;gap:8px}
.acc-name{font-weight:700;display:flex;align-items:center;gap:7px}
.dot{width:8px;height:8px;border-radius:50%;flex:0 0 auto;background:var(--sell)}
.dot.on{background:var(--ok)}
.badge{font-size:10px;font-weight:700;padding:3px 8px;border-radius:20px;
  text-transform:uppercase;letter-spacing:.06em}
.badge.sel{background:var(--accent);color:#04101f}
.badge.excl{background:var(--panel2);color:var(--dim)}
.acc-meta{font-size:12px;color:var(--dim);margin-top:6px;display:flex;
  flex-wrap:wrap;gap:10px}
.acc-meta b{color:var(--txt);font-weight:600}
.pos{color:var(--ok)} .neg{color:var(--sell)}
.reason{font-size:12px;color:var(--warn);margin-top:6px}
.card-actions{display:flex;gap:8px;margin-top:10px}
.mini{
  flex:1;background:var(--panel2);border:1px solid var(--line);color:var(--txt);
  border-radius:8px;padding:8px;font-size:12px;font-weight:600;cursor:pointer;
}
.mini.danger{background:#3a1f22;border-color:#5c2b2f;color:#ff8f8f}
.mini.danger.confirm{background:var(--sell);color:#fff}

/* ---- form ---- */
label{display:block;font-size:12px;color:var(--dim);margin:10px 0 4px}
input,select{
  width:100%;background:var(--panel2);border:1px solid var(--line);
  color:var(--txt);border-radius:8px;padding:10px;font-size:15px;
}
input:focus,select:focus{outline:2px solid var(--accent);outline-offset:0;border-color:transparent}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.btn{
  width:100%;background:var(--accent);border:0;color:#04101f;border-radius:10px;
  padding:13px;font-size:15px;font-weight:700;cursor:pointer;margin-top:14px;
}
.btn.sec{background:var(--panel2);color:var(--txt);border:1px solid var(--line)}
fieldset{border:1px solid var(--line);border-radius:10px;padding:10px 12px 14px;margin:14px 0}
legend{font-size:11px;color:var(--accent);text-transform:uppercase;letter-spacing:.08em;padding:0 6px}

/* ---- storico ---- */
.sig{border-left:3px solid var(--line);padding-left:10px;margin-bottom:12px}
.sig.buy{border-color:var(--buy)} .sig.sell{border-color:var(--sell)}
.sig-head{display:flex;justify-content:space-between;font-size:13px}
.sig-time{color:var(--dim);font-size:12px}
.del{font-size:12px;color:var(--dim);margin-top:4px;padding-left:2px}

/* ---- toast ---- */
.toast{
  position:fixed;left:50%;transform:translateX(-50%) translateY(140%);
  bottom:calc(78px + env(safe-area-inset-bottom));z-index:40;
  background:var(--panel2);border:1px solid var(--line);color:var(--txt);
  padding:11px 18px;border-radius:10px;font-size:13px;max-width:88vw;
  transition:transform .25s;text-align:center;
}
.toast.show{transform:translateX(-50%) translateY(0)}
.toast.ok{border-color:var(--ok)} .toast.err{border-color:var(--sell)}

/* ---- login ---- */
.login-wrap{max-width:340px;margin:14vh auto;padding:0 18px}
.login-wrap h1{font-size:17px;letter-spacing:.12em;color:var(--accent);text-align:center;
  margin-bottom:22px}
.err{background:#3a1f22;border:1px solid #5c2b2f;color:#ff9b9b;border-radius:8px;
  padding:9px;font-size:13px;margin-bottom:10px;text-align:center}
.modal{position:fixed;inset:0;background:rgba(0,0,0,.6);z-index:30;display:flex;
  align-items:flex-start;justify-content:center;overflow-y:auto;padding:20px 12px}
.modal-box{background:var(--panel);border:1px solid var(--line);border-radius:14px;
  padding:16px;width:100%;max-width:560px;margin-bottom:40px}
.modal-box h2{font-size:15px;margin:0 0 4px}
.keybox{background:var(--panel2);border:1px solid var(--line);border-radius:8px;
  padding:10px;font:12px/1.5 monospace;word-break:break-all;margin-top:6px}
