*{box-sizing:border-box}body{margin:0;background:#f4f6f8;color:#222;font-family:Arial,Helvetica,sans-serif}.topbar{display:flex;align-items:center;justify-content:space-between;padding:18px 28px;background:#fff;border-bottom:1px solid #e5e7eb;position:sticky;top:0;z-index:5}.eyebrow{font-size:12px;font-weight:700;color:#64748b;letter-spacing:.12em}h1{margin:4px 0 0;font-size:24px}.status-pill{padding:10px 16px;border-radius:999px;background:#f59e0b;color:#111;font-weight:800}.status-pill.live{background:#10b981;color:white}.status-pill.stale{background:#ef4444;color:white}.layout{max-width:1160px;margin:24px auto;padding:0 16px;display:grid;grid-template-columns:1fr 1fr;gap:18px}.panel{background:#fff;border:1px solid #e5e7eb;border-radius:16px;padding:18px;box-shadow:0 8px 24px rgba(15,23,42,.06)}.wide{grid-column:1/-1}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}.field-group{margin-bottom:14px}.field-group label{display:block;font-size:12px;text-transform:uppercase;font-weight:700;color:#64748b;margin-bottom:6px}.readonly{border:1px solid #e5e7eb;background:#f8fafc;border-radius:10px;padding:12px;font-weight:700}.auto-row{margin-top:12px;padding:14px;border:1px solid #e5e7eb;border-radius:12px;display:flex;justify-content:space-between;align-items:center;gap:12px}.auto-row p{margin:4px 0 0;color:#64748b;font-size:13px}.switch input{display:none}.switch span{display:block;width:58px;height:32px;background:#cbd5e1;border-radius:99px;position:relative;cursor:pointer}.switch span:before{content:"";position:absolute;top:4px;left:4px;width:24px;height:24px;background:white;border-radius:50%;transition:.2s}.switch input:checked+span{background:#10b981}.switch input:checked+span:before{left:30px}.manual{width:100%;margin-top:14px;padding:13px;border:0;border-radius:12px;background:#cbd5e1;color:#475569;font-weight:800}.price-line{display:flex;justify-content:space-between;align-items:center}.price-line span{color:#64748b}.price-line strong{font-size:30px}.decision-mode{font-size:30px;font-weight:900;margin:18px 0 8px;color:#0f172a}.decision-mode.sideways{color:#ef4444}.decision-mode.allowed{color:#10b981}.decision-mode.building{color:#f59e0b}.decision-mode.blocked{color:#475569}.reason{color:#475569;background:#f8fafc;border-radius:10px;padding:12px}.decision-strip{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:12px}.decision-strip div{background:#f8fafc;border:1px solid #e5e7eb;border-radius:10px;padding:12px}.decision-strip span{display:block;color:#64748b;font-size:12px}.decision-strip strong{font-size:16px}.metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:16px}.metrics div{background:#f8fafc;border:1px solid #e5e7eb;border-radius:10px;padding:12px}.metrics span{display:block;color:#64748b;font-size:12px}.metrics strong{font-size:16px}.chart-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.chart-head h2{font-size:18px;margin:0}.chart-head span{font-weight:700;color:#64748b}canvas{width:100%;border-radius:12px;background:#fff;border:1px solid #eef2f7}.trades{max-height:260px;overflow:auto}.trade{border-bottom:1px solid #e5e7eb;padding:10px 0;font-size:13px}.trade strong{display:block}@media(max-width:800px){.layout{grid-template-columns:1fr}.metrics{grid-template-columns:1fr 1fr}.topbar{align-items:flex-start;gap:12px;flex-direction:column}.price-line strong{font-size:24px}}

.mini-pill{display:inline-flex;align-items:center;justify-content:center;padding:7px 10px;border-radius:999px;font-size:12px;font-weight:900;letter-spacing:.02em}.mini-pill.ok{background:#10b981;color:#fff}.mini-pill.bad{background:#ef4444;color:#fff}.mini-pill.warn{background:#f59e0b;color:#111}.connection-panel .chart-head span{font-size:13px}.connection-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:10px}.connection-card{background:#f8fafc;border:1px solid #e5e7eb;border-radius:12px;padding:12px;min-height:76px}.connection-card span{display:block;color:#64748b;font-size:12px;text-transform:uppercase;font-weight:800;margin-bottom:8px}.connection-card strong{font-size:18px}.connection-error{display:none;margin-top:12px;padding:12px;border-radius:12px;background:#fff1f2;color:#991b1b;font-weight:700;border:1px solid #fecdd3;word-break:break-word}
@media(max-width:1000px){.connection-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:520px){.connection-grid,.decision-strip{grid-template-columns:1fr}}
.refresh-btn{border:0;border-radius:10px;background:#0f172a;color:#fff;font-weight:800;padding:9px 12px;cursor:pointer}.refresh-btn:disabled{opacity:.55;cursor:not-allowed}.trade-grid .connection-card strong{word-break:break-word}.trade-status-open{background:#2563eb!important;color:#fff!important}.trade-status-won{background:#10b981!important;color:#fff!important}.trade-status-lost{background:#ef4444!important;color:#fff!important}.trade-status-unknown{background:#f59e0b!important;color:#111!important}.trade .status-line{display:flex;flex-wrap:wrap;gap:8px;margin:6px 0}.trade .muted{color:#64748b}.trade .profit-positive{color:#059669;font-weight:900}.trade .profit-negative{color:#dc2626;font-weight:900}.trade .contract-id{font-family:monospace}
.barrier-editor{margin-bottom:0}.barrier-inputs{display:grid;grid-template-columns:1fr 1fr;gap:8px}.barrier-inputs input{width:100%;border:1px solid #e5e7eb;background:#f8fafc;border-radius:10px;padding:12px;font-weight:800;color:#0f172a}.barrier-inputs input:focus{outline:2px solid #93c5fd;border-color:#60a5fa}.save-barriers{margin-top:8px;width:100%;border:0;border-radius:10px;background:#0f172a;color:#fff;font-weight:900;padding:10px 12px;cursor:pointer}.save-barriers:disabled{opacity:.55;cursor:not-allowed}.settings-msg{display:none;margin-top:8px;border-radius:10px;padding:8px;font-size:12px;font-weight:800}.settings-msg.ok{display:block;background:#ecfdf5;color:#065f46;border:1px solid #a7f3d0}.settings-msg.bad{display:block;background:#fff1f2;color:#991b1b;border:1px solid #fecdd3}

.stake-inputs{display:flex;gap:8px;align-items:center}
.stake-inputs input{width:120px;padding:10px 12px;border-radius:12px;border:1px solid rgba(15,118,110,.25);background:#fff;font-weight:800}
.currency-label{padding:10px 12px}

select{width:100%;padding:12px 12px;border:1px solid #cbd5e1;border-radius:12px;background:#fff;font-weight:800;color:#0f172a}.small-note{font-size:12px;color:#64748b;margin-top:6px;line-height:1.35}
.allowance-inputs{display:flex;align-items:center;gap:12px}
.allowance-inputs input[type=range]{width:100%;min-width:140px}
.allowance-inputs strong{min-width:44px;text-align:right}
.stake-progression-strip{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:12px}
.stake-progression-strip div{background:#f8fafc;border:1px solid #e5e7eb;border-radius:12px;padding:10px}
.stake-progression-strip span{display:block;color:#64748b;font-size:11px;text-transform:uppercase;font-weight:800;margin-bottom:5px}
.stake-progression-strip strong{font-size:14px;font-weight:900;color:#0f172a}
@media(max-width:800px){.stake-progression-strip{grid-template-columns:1fr 1fr}}
@media(max-width:520px){.stake-progression-strip{grid-template-columns:1fr}.stake-inputs input{width:100%}}


/* Login / PWA / protected shell */
.top-actions {
  display: flex;
  align-items: center;
  gap: 10px;
}
.logout-link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: 34px;
  padding: 0 14px;
  border-radius: 999px;
  background: #111827;
  color: #fff;
  font-weight: 800;
  text-decoration: none;
  border: 1px solid rgba(255,255,255,.10);
}
.logout-link:hover { background: #0f172a; }

.login-body {
  min-height: 100vh;
  margin: 0;
  display: grid;
  place-items: center;
  padding: 20px;
  color: #e8edf2;
  background:
    radial-gradient(circle at top, rgba(245, 188, 74, .16), transparent 32%),
    linear-gradient(180deg, #0b0f14, #05070a);
  font-family: Arial, sans-serif;
}
.login-shell {
  width: 100%;
  max-width: 440px;
}
.login-logo-wrap {
  display: flex;
  justify-content: center;
  margin-bottom: 18px;
}
.login-logo {
  width: min(70vw, 260px);
  height: min(70vw, 260px);
  object-fit: cover;
  border-radius: 999px;
  box-shadow: 0 18px 52px rgba(0,0,0,.44);
  border: 1px solid rgba(245, 188, 74, .40);
  background: #090b0f;
}
.login-card {
  width: 100%;
  background: linear-gradient(180deg, #111827, #0b1118);
  border: 1px solid rgba(245, 188, 74, .25);
  border-radius: 22px;
  box-shadow: 0 20px 60px rgba(0,0,0,.38);
  padding: 24px;
}
.login-card h1 {
  margin: 0 0 8px;
  font-size: 28px;
  text-align: center;
  color: #fff;
}
.login-card p {
  margin: 0 0 20px;
  color: #9aa7b5;
  text-align: center;
  line-height: 1.5;
}
.login-card label {
  display: block;
  font-size: 13px;
  color: #9aa7b5;
  margin-bottom: 8px;
}
.login-card input,
.login-card button {
  width: 100%;
  border-radius: 14px;
  border: 1px solid #243140;
  background: #060a0f;
  color: #e8edf2;
  padding: 14px 15px;
  font: inherit;
}
.login-card input:focus,
.login-card button:focus {
  outline: none;
  border-color: rgba(245,188,74,.75);
  box-shadow: 0 0 0 3px rgba(245,188,74,.14);
}
.login-card button {
  margin-top: 14px;
  background: linear-gradient(135deg, #d9a441, #f5d27b);
  color: #0b0f14;
  cursor: pointer;
  font-weight: 900;
  border: 0;
}
.login-alert {
  margin: 0 0 14px;
  padding: 12px 14px;
  border-radius: 14px;
  background: rgba(239,68,68,.14);
  border: 1px solid rgba(239,68,68,.3);
  color: #fecaca;
  text-align: center;
}
.install-note {
  margin-top: 14px;
  color: #9aa7b5;
  font-size: 12px;
  line-height: 1.45;
  text-align: center;
}

@media (max-width: 720px) {
  .topbar {
    align-items: flex-start;
    gap: 14px;
  }
  .top-actions {
    width: 100%;
    justify-content: space-between;
  }
}

.inline-toggle{display:flex;align-items:center;gap:10px;border:1px solid #e5e7eb;background:#f8fafc;border-radius:10px;padding:12px;font-weight:900;color:#0f172a}.inline-toggle input{width:18px;height:18px}.refresh-btn.danger{background:#7f1d1d;color:#fff;border-color:#7f1d1d}

/* DSANTOS mobile dashboard hardening - layout only, no trading logic changes */
html {
  width: 100%;
  max-width: 100%;
  overflow-x: hidden;
  -webkit-text-size-adjust: 100%;
}
body {
  width: 100%;
  max-width: 100%;
  overflow-x: hidden;
}
.layout,
.panel,
.grid2,
.connection-grid,
.metrics,
.decision-strip,
.stake-progression-strip,
.chart-panel,
.trades,
.trade,
.connection-card,
.field-group,
.auto-row,
.chart-head,
.topbar,
.top-actions {
  min-width: 0;
}
.panel,
.connection-card,
.readonly,
.reason,
.trade,
.chart-head span,
.connection-card strong,
.metrics strong,
.decision-strip strong {
  overflow-wrap: anywhere;
  word-break: break-word;
}
.layout {
  width: 100%;
}
canvas {
  display: block;
  max-width: 100%;
}
img, svg, video {
  max-width: 100%;
  height: auto;
}
button,
input,
select,
textarea {
  max-width: 100%;
}

@media (max-width: 900px) {
  .layout {
    grid-template-columns: minmax(0, 1fr);
    margin: 14px auto;
    padding: 0 12px;
    gap: 14px;
  }
  .wide {
    grid-column: auto;
  }
  .panel {
    padding: 14px;
    border-radius: 14px;
  }
  .chart-head {
    align-items: flex-start;
    flex-wrap: wrap;
    gap: 8px;
  }
  .chart-head h2 {
    width: 100%;
  }
}

@media (max-width: 680px) {
  .topbar {
    position: sticky;
    padding: 14px 12px;
    flex-direction: column;
    align-items: stretch;
  }
  h1 {
    font-size: clamp(18px, 6vw, 22px);
    line-height: 1.15;
  }
  .top-actions {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    width: 100%;
    gap: 8px;
  }
  .status-pill,
  .logout-link {
    min-width: 0;
    padding: 9px 11px;
    font-size: 12px;
    white-space: normal;
    text-align: center;
  }
  .grid2,
  .connection-grid,
  .metrics,
  .decision-strip,
  .stake-progression-strip,
  .barrier-inputs {
    grid-template-columns: minmax(0, 1fr) !important;
  }
  .auto-row,
  .price-line {
    align-items: stretch;
    flex-direction: column;
  }
  .price-line strong,
  .decision-mode {
    font-size: clamp(22px, 8vw, 28px);
  }
  .stake-inputs {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    width: 100%;
  }
  .stake-inputs input {
    width: 100% !important;
    min-width: 0;
  }
  .currency-label {
    min-width: 0;
    white-space: nowrap;
  }
  .refresh-btn,
  .save-barriers,
  .manual {
    width: 100%;
    white-space: normal;
  }
  .trade .status-line {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
  }
  #priceCanvas {
    height: 240px;
  }
  #macdCanvas {
    height: 220px;
  }
}

@media (max-width: 380px) {
  .layout {
    padding: 0 8px;
  }
  .panel {
    padding: 12px;
  }
  .top-actions {
    grid-template-columns: minmax(0, 1fr);
  }
}

/* Clean accumulator dashboard: operational view first, JSON only in diagnostics */
.clean-dashboard{background:#f3f6fb;color:#0f172a;font-family:Arial,Helvetica,sans-serif}.dash-topbar{position:sticky;top:0;z-index:10;display:flex;justify-content:space-between;align-items:center;gap:16px;padding:18px 28px;background:#fff;border-bottom:1px solid #e5e7eb;box-shadow:0 6px 18px rgba(15,23,42,.04)}.dash-topbar h1{margin:4px 0 3px;font-size:24px;line-height:1.15}.dash-topbar p{margin:0;color:#64748b;font-size:13px}.dash-eyebrow{font-size:12px;font-weight:900;letter-spacing:.12em;text-transform:uppercase;color:#64748b}.dash-top-actions{display:flex;align-items:center;gap:10px}.dash-pill{display:inline-flex;align-items:center;justify-content:center;border-radius:999px;padding:10px 14px;font-size:12px;font-weight:900;letter-spacing:.04em}.dash-pill.ok{background:#10b981;color:#fff}.dash-pill.warn{background:#f59e0b;color:#111827}.dash-pill.bad{background:#ef4444;color:#fff}.dash-wrap{max-width:1240px;margin:22px auto;padding:0 16px}.hero-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:14px}.hero-card,.dash-panel{background:#fff;border:1px solid #e5e7eb;border-radius:18px;box-shadow:0 10px 30px rgba(15,23,42,.06)}.hero-card{padding:16px}.hero-card span,.kv-grid span{display:block;color:#64748b;font-size:12px;text-transform:uppercase;font-weight:900;margin-bottom:7px}.hero-card strong{display:block;font-size:22px;font-weight:900;overflow-wrap:anywhere}.hero-card small{display:block;color:#64748b;margin-top:6px;line-height:1.35;overflow-wrap:anywhere}.dash-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.dash-panel{padding:16px}.dash-panel.wide{grid-column:1/-1}.panel-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px}.panel-head h2{font-size:18px;margin:0}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.form-grid label{font-size:12px;text-transform:uppercase;font-weight:900;color:#64748b}.form-grid input{display:block;width:100%;margin-top:6px;border:1px solid #cbd5e1;background:#fff;border-radius:12px;padding:11px 12px;font-size:15px;font-weight:800;color:#0f172a}.button-row{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.button-row button,.small-btn{border:0;border-radius:12px;background:#0f172a;color:#fff;font-weight:900;padding:11px 13px;cursor:pointer}.button-row button.success{background:#047857}.button-row button.danger{background:#991b1b}.button-row button:hover,.small-btn:hover{filter:brightness(1.05)}.kv-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.kv-grid div{background:#f8fafc;border:1px solid #e5e7eb;border-radius:14px;padding:12px;min-height:78px}.kv-grid strong{font-size:16px;font-weight:900;overflow-wrap:anywhere}.dash-warning{margin-top:12px;border:1px solid #fecdd3;background:#fff1f2;color:#991b1b;border-radius:14px;padding:12px;font-weight:800;overflow-wrap:anywhere}.preflight-summary{background:#f8fafc;border:1px solid #e5e7eb;border-radius:14px;padding:13px;color:#334155;line-height:1.5}.trades-clean{display:grid;gap:8px}.empty-state{background:#f8fafc;border:1px dashed #cbd5e1;border-radius:14px;padding:16px;color:#64748b;font-weight:800}.clean-trade{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;background:#f8fafc;border:1px solid #e5e7eb;border-radius:14px;padding:12px}.clean-trade strong{font-weight:900}.clean-trade span{overflow-wrap:anywhere}.diagnostics-panel details{background:#f8fafc;border:1px solid #e5e7eb;border-radius:14px;padding:12px}.diagnostics-panel summary{cursor:pointer;font-weight:900}.diag-note{color:#64748b;margin:10px 0}.diag-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.diag-grid h3{margin:8px 0}.diagnostics-panel pre{max-height:520px;overflow:auto;background:#0b1220;color:#dbeafe;border-radius:14px;padding:14px;font-size:12px;line-height:1.4;white-space:pre-wrap}.profit-positive{color:#059669;font-weight:900}.profit-negative{color:#dc2626;font-weight:900}
@media(max-width:980px){.hero-grid,.dash-grid{grid-template-columns:1fr}.dash-panel.wide{grid-column:auto}.kv-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.diag-grid{grid-template-columns:1fr}}@media(max-width:640px){.dash-topbar{align-items:stretch;flex-direction:column;padding:14px 12px}.dash-top-actions{justify-content:space-between}.dash-wrap{padding:0 10px;margin:14px auto}.hero-grid,.form-grid,.kv-grid,.clean-trade{grid-template-columns:1fr}.button-row button,.small-btn{width:100%}.hero-card strong{font-size:19px}}


.normal-terminal .hero-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.panel-note { color: #708090; font-size: 0.9rem; margin-top: 0.75rem; }
@media (max-width: 900px) { .normal-terminal .hero-grid { grid-template-columns: 1fr; } }


.calm-terminal select { width: 100%; border: 1px solid #ccd4e0; border-radius: 10px; padding: 10px 11px; background: #fff; font: inherit; }
.calm-terminal .hero-card small, .calm-terminal .kv-grid strong { word-break: break-word; }

.trade-counter-strip{display:flex;gap:12px;flex-wrap:wrap;margin:8px 0 14px;color:var(--muted);font-size:13px}
.trade-counter-strip strong{color:var(--text)}
.compact-buttons{gap:6px}
.small-btn.danger{background:#5b1118;color:#fff;border-color:#7f1d1d}
