
:root{--bg:#071315;--panel:#0d1f22;--panel2:#10282c;--line:#1c3a3f;--text:#d8f5f1;--muted:#83a6a6;--teal:#00d6b2;--red:#ff526a;--green:#00d69c;--yellow:#f7c948;--input:#061113}*{box-sizing:border-box}body{margin:0;background:radial-gradient(circle at top left,#0e3033,var(--bg) 38%);color:var(--text);font-family:Inter,ui-sans-serif,system-ui,Segoe UI,Arial,sans-serif}a{color:var(--teal);text-decoration:none}.topbar{height:58px;padding:0 20px;border-bottom:1px solid var(--line);background:rgba(7,19,21,.92);display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:20;backdrop-filter:blur(10px)}.topbar nav{display:flex;gap:14px;align-items:center}.badge{display:inline-block;margin-left:10px;padding:3px 8px;border:1px solid var(--line);border-radius:999px;color:var(--muted);font-size:12px}#app{max-width:1280px;margin:0 auto;padding:24px}.card,.ticket{background:linear-gradient(180deg,rgba(16,40,44,.96),rgba(9,24,27,.96));border:1px solid var(--line);border-radius:16px;box-shadow:0 18px 60px rgba(0,0,0,.25)}.card{padding:22px;margin-bottom:18px}.narrow{max-width:480px;margin:48px auto}h1,h2,h3{margin-top:0}p,li{color:var(--muted);line-height:1.55}label{color:var(--muted);font-size:13px;display:block;margin:10px 0 6px}input,select{width:100%;height:40px;background:var(--input);color:var(--text);border:1px solid var(--line);border-radius:10px;padding:8px 11px;outline:none}input:focus,select:focus{border-color:var(--teal);box-shadow:0 0 0 3px rgba(0,214,178,.09)}button{border:0;background:var(--teal);color:#001b18;font-weight:800;border-radius:10px;padding:10px 13px;cursor:pointer}button:hover{filter:brightness(1.07)}button.ghost{background:transparent;border:1px solid var(--line);color:var(--text)}button.danger{background:var(--red);color:#240006}.row{display:flex;gap:10px;align-items:center}.row>*{flex:1}.right{justify-content:flex-end}.right>*{flex:initial}.hidden{display:none!important}.error{color:var(--red)}.success{color:var(--green)}.warning{color:var(--yellow)}.grid{display:grid;grid-template-columns:1fr 360px;gap:18px}.trade-stack{display:grid;gap:14px}.ticket{padding:16px;position:relative;overflow:hidden}.ticket:before{content:"";position:absolute;inset:0 0 auto 0;height:3px;background:linear-gradient(90deg,var(--teal),transparent)}.ticket-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}.tabs,.side-tabs{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:10px 0}.tab,.side-tab{background:#071b1e;border:1px solid var(--line);color:var(--muted)}.tab.active,.side-tab.active{border-color:var(--teal);color:var(--text);background:#0b2f31}.side-tab.long.active{background:rgba(0,214,156,.18);border-color:var(--green)}.side-tab.short.active{background:rgba(255,82,106,.18);border-color:var(--red)}.ticket-metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:10px 0}.metric{border:1px solid var(--line);background:rgba(0,0,0,.13);border-radius:12px;padding:10px}.metric span{color:var(--muted);display:block;font-size:11px}.metric strong{display:block;margin-top:3px;font-size:14px}.checks{display:flex;gap:16px;margin:12px 0}.checks label{display:flex;align-items:center;gap:7px;margin:0}.checks input{width:auto;height:auto}pre{white-space:pre-wrap;overflow:auto;background:#041013;border:1px solid var(--line);color:#b6f2e9;padding:12px;border-radius:12px;max-height:340px}.kv{display:grid;grid-template-columns:180px 1fr;gap:7px;margin:12px 0}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.modal{position:fixed;inset:0;background:rgba(0,0,0,.68);display:grid;place-items:center;z-index:40}.modal-card{width:min(680px,92vw);background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:18px}.table{width:100%;border-collapse:collapse}.table td,.table th{border-bottom:1px solid var(--line);padding:9px;text-align:left}@media(max-width:900px){.grid{grid-template-columns:1fr}#app{padding:14px}}


/* v1.0.1 startup terms confirmation modal */
.terms-modal-card {
  width: min(820px, 94vw);
  max-height: 88vh;
  display: flex;
  flex-direction: column;
}

.terms-scroll {
  white-space: pre-wrap;
  overflow: auto;
  max-height: 56vh;
  background: #041013;
  border: 1px solid var(--line);
  color: #b6f2e9;
  padding: 14px;
  border-radius: 12px;
  line-height: 1.45;
}

.confirm-line {
  display: flex;
  align-items: flex-start;
  gap: 9px;
  margin: 14px 0;
  color: var(--text);
}

.confirm-line input {
  width: auto;
  height: auto;
  margin-top: 3px;
}

#termsStartupAcceptBtn:disabled {
  opacity: 0.45;
  cursor: not-allowed;
}


/* v1.0.2 Hyperliquid-style trade layout */
#app{max-width:none;width:100%;padding:14px;}
.hl-layout{display:grid;grid-template-columns:minmax(0,1fr) 390px;gap:14px;align-items:start;}
.hl-left{min-width:0;display:grid;gap:14px;}
.hl-right{position:sticky;top:72px;display:grid;gap:14px;}
.hl-card{border-radius:8px;background:rgba(6,17,19,.92);}
.section-title{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:10px;}
.section-title h2{margin:0;}
.section-title p{margin:4px 0 0;font-size:12px;}
.positions-scroll{overflow-x:auto;}
.positions-table{width:100%;border-collapse:collapse;font-size:12px;}
.positions-table th,.positions-table td{padding:9px 8px;border-bottom:1px solid var(--line);text-align:left;white-space:nowrap;}
.positions-table th{color:var(--muted);font-size:11px;}
.positions-table td:first-child{max-width:260px;overflow:hidden;text-overflow:ellipsis;}
.positions-table tr.pos-long td{background:rgba(0,214,156,.08);}
.positions-table tr.pos-short td{background:rgba(255,82,106,.08);}
.positions-table tr.pos-long td:first-child{border-left:3px solid var(--green);}
.positions-table tr.pos-short td:first-child{border-left:3px solid var(--red);}
.green{color:var(--green);font-weight:800;}
.red{color:var(--red);font-weight:800;}
.muted-cell{color:var(--muted);text-align:center;}
.chart-card{min-height:430px;}
#chartCanvas{display:block;width:100%;height:350px;border:1px solid var(--line);border-radius:8px;background:#061113;}
.chart-tabs{display:flex;gap:6px;}
.hl-right .ticket{border-radius:8px;padding:14px;}
.hl-right .ticket h2{font-size:16px;}
.hl-right .ticket-metrics{grid-template-columns:1fr;}
.hl-right .row{display:grid;grid-template-columns:1fr 1fr;}
.status-card pre{max-height:180px;}
@media(max-width:1100px){.hl-layout{grid-template-columns:1fr}.hl-right{position:static;}}

/* v1.0.5 chart first, positions below, D/N trading */
.chart-card{min-height:500px;}
#chartCanvas{height:420px;}
.dn-toggle-card{background:rgba(6,17,19,.92);border:1px solid var(--line);border-top:3px solid var(--teal);border-radius:8px;padding:12px 14px;}
.dn-toggle{display:flex;align-items:center;gap:10px;color:var(--text);font-weight:900;margin:0 0 6px 0;}
.dn-toggle input{width:auto;height:auto;transform:scale(1.2);}
.dn-toggle-card small{color:var(--muted);line-height:1.35;}
body.dn-enabled .ticket{box-shadow:0 0 0 1px rgba(0,214,178,.28),0 18px 45px rgba(0,0,0,.22);}
.ticket.active-ticket{outline:2px solid rgba(0,214,178,.38);}
.positions-card{min-height:190px;}

/* v1.0.6 real candle chart */
.chart-tabs .active{border-color:var(--teal);color:var(--teal);box-shadow:0 0 0 1px rgba(0,214,178,.18);}
#chartStatus{color:var(--muted);}


/* v1.0.8 chart market selector + clickable positions */
.chart-title-block {
  min-width: 230px;
}

.chart-market-picker {
  min-width: 320px;
}

.chart-market-picker label {
  margin: 0 0 4px 0;
  font-size: 11px;
  color: var(--muted);
}

.chart-market-picker select {
  height: 34px;
  border-radius: 8px;
}

.positions-table tbody tr {
  cursor: pointer;
}

.positions-table tbody tr:hover td {
  filter: brightness(1.18);
}

.positions-table tbody tr.selected-position td {
  outline: 1px solid rgba(0, 214, 178, 0.42);
  background-color: rgba(0, 214, 178, 0.16) !important;
}

.positions-table tbody tr.selected-position td:first-child::after {
  content: "  ◄ chart";
  color: var(--teal);
  font-size: 10px;
  font-weight: 900;
}


/* v1.0.9 cockpit basics */
.safety-card,
.quick-actions-card {
  background: rgba(6,17,19,.92);
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 12px 14px;
}

.real-toggle {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 0 0 6px 0;
  font-weight: 900;
  color: var(--green);
}

.real-toggle input {
  width: auto;
  height: auto;
  transform: scale(1.2);
}

body.real-trading .real-toggle {
  color: var(--red);
}

body.real-trading .safety-card {
  border-color: var(--red);
  box-shadow: 0 0 0 1px rgba(255,82,106,.25);
}

.safety-card small {
  color: var(--muted);
}

.quick-actions-card {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px;
}

.summary-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(120px, 1fr));
  gap: 8px;
  margin: 8px 0;
}

.mini-stat {
  border: 1px solid var(--line);
  background: rgba(0,0,0,.16);
  border-radius: 8px;
  padding: 8px 10px;
}

.mini-stat span {
  display: block;
  font-size: 11px;
  color: var(--muted);
}

.mini-stat strong {
  display: block;
  margin-top: 3px;
  font-size: 13px;
}

.mini-stat.wide {
  grid-column: 1 / -1;
}

.auto-refresh-line {
  display: flex;
  align-items: center;
  gap: 7px;
  margin: 8px 0;
  color: var(--muted);
  font-size: 12px;
}

.auto-refresh-line input {
  width: auto;
  height: auto;
}

.positions-table button.danger {
  padding: 5px 8px;
  font-size: 11px;
}


/* v1.0.10 real trading default */
.safety-card {
  border-color: rgba(255, 82, 106, 0.65);
}

#realTradingLabel {
  letter-spacing: 0.04em;
}


/* v1.0.11 Hyperliquid-inspired visual pass
   Layout and styling only. No trading logic changes. */

:root {
  --bg: #050809;
  --panel: #071012;
  --panel2: #091517;
  --panel3: #0b191b;
  --line: rgba(135, 160, 160, 0.16);
  --line2: rgba(135, 160, 160, 0.10);
  --text: #d7e2e2;
  --muted: #708383;
  --muted2: #4f6262;
  --teal: #22d3b6;
  --green: #1fd89f;
  --red: #ff4d65;
  --yellow: #f4c95d;
  --shadow: none;
  --radius: 4px;
}

* {
  box-sizing: border-box;
}

html,
body {
  background: var(--bg) !important;
}

body {
  color: var(--text);
  font-size: 13px;
  letter-spacing: -0.01em;
}

.app-shell,
.page,
.main,
#app {
  background: var(--bg) !important;
}

.topbar,
.navbar,
header {
  background: rgba(5, 8, 9, 0.96) !important;
  border-bottom: 1px solid var(--line) !important;
  box-shadow: none !important;
}

.brand,
.logo,
h1,
h2,
h3 {
  letter-spacing: -0.035em;
}

h1 {
  font-size: 21px !important;
}

h2 {
  font-size: 15px !important;
  margin: 0 !important;
}

h3 {
  font-size: 13px !important;
}

p {
  color: var(--muted);
}

button,
input,
select,
textarea {
  border-radius: 4px !important;
  box-shadow: none !important;
}

button {
  font-size: 12px !important;
  font-weight: 700 !important;
  letter-spacing: -0.01em;
  min-height: 30px;
  padding: 7px 10px !important;
  border: 1px solid var(--line) !important;
  background: #0a1517 !important;
  color: var(--text) !important;
}

button:hover {
  border-color: rgba(34, 211, 182, 0.55) !important;
  background: #0d1d1f !important;
}

button.primary,
.primary {
  background: rgba(34, 211, 182, 0.14) !important;
  border-color: rgba(34, 211, 182, 0.46) !important;
  color: #bffdf3 !important;
}

button.danger,
.danger {
  background: rgba(255, 77, 101, 0.10) !important;
  border-color: rgba(255, 77, 101, 0.38) !important;
  color: #ffb7c1 !important;
}

button.ghost,
.ghost {
  background: transparent !important;
}

input,
select,
textarea {
  background: #050c0d !important;
  border: 1px solid var(--line) !important;
  color: var(--text) !important;
  min-height: 32px;
  font-size: 12px !important;
}

input:focus,
select:focus,
textarea:focus {
  border-color: rgba(34, 211, 182, 0.58) !important;
  outline: none !important;
}

.card,
.panel,
.ticket,
.safety-card,
.quick-actions-card,
.dn-card,
.chart-card,
.positions-card,
.trade-card,
.account-card,
.auth-card {
  background: var(--panel) !important;
  border: 1px solid var(--line) !important;
  border-radius: 4px !important;
  box-shadow: none !important;
}

.hl-layout,
.trade-layout,
.cockpit-layout {
  display: grid !important;
  grid-template-columns: minmax(680px, 1fr) 360px !important;
  gap: 8px !important;
  padding: 8px !important;
  max-width: none !important;
}

.hl-left,
.left-panel {
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 8px !important;
}

.hl-right,
.right-panel {
  display: flex;
  flex-direction: column;
  gap: 8px !important;
  min-width: 0;
}

.chart-card {
  min-height: 585px !important;
  padding: 0 !important;
  overflow: hidden;
}

.chart-header,
.chart-top,
.chart-card > .section-head,
.chart-card > .card-head {
  padding: 10px 12px !important;
  border-bottom: 1px solid var(--line) !important;
  background: #060d0e !important;
}

.chart-market-strip {
  display: grid;
  grid-template-columns: minmax(260px, 1fr) 390px;
  gap: 12px;
  align-items: center;
  width: 100%;
}

.market-eyebrow {
  font-size: 10px;
  color: var(--muted2);
  text-transform: uppercase;
  letter-spacing: 0.08em;
  margin-bottom: 3px;
}

#chartMarketTitle {
  font-size: 16px !important;
  color: var(--text);
  margin-bottom: 3px !important;
}

#chartStatus {
  font-size: 11px;
  color: var(--muted);
  margin: 0;
}

.chart-market-picker {
  display: grid;
  grid-template-columns: 52px 1fr;
  align-items: center;
  gap: 8px;
  min-width: 0 !important;
}

.chart-market-picker label {
  margin: 0 !important;
  font-size: 11px !important;
  color: var(--muted);
}

#chartMarketSelect {
  width: 100%;
  height: 32px;
}

.chart-tabs {
  gap: 4px !important;
}

.chart-tabs button {
  min-height: 26px !important;
  padding: 4px 8px !important;
  font-size: 11px !important;
}

.chart-tabs .active,
button.active {
  background: rgba(34, 211, 182, 0.12) !important;
  border-color: rgba(34, 211, 182, 0.48) !important;
  color: #c7fff6 !important;
}

#chartCanvas {
  width: 100% !important;
  height: 520px !important;
  display: block;
  background: #050809 !important;
}

.positions-card {
  padding: 0 !important;
  overflow: hidden;
}

.positions-card h2,
.positions-card .section-head,
.positions-card .card-head {
  padding: 9px 12px !important;
  margin: 0 !important;
  border-bottom: 1px solid var(--line);
  background: #060d0e;
}

.summary-grid {
  grid-template-columns: repeat(4, minmax(0, 1fr)) !important;
  gap: 6px !important;
  margin: 8px !important;
}

.mini-stat {
  border-radius: 3px !important;
  background: #060e10 !important;
  border: 1px solid var(--line2) !important;
  padding: 7px 8px !important;
}

.mini-stat span {
  font-size: 10px !important;
  color: var(--muted2) !important;
  text-transform: uppercase;
  letter-spacing: 0.06em;
}

.mini-stat strong {
  font-size: 12px !important;
  color: var(--text);
}

.positions-scroll {
  margin: 0 !important;
  max-height: 260px !important;
  overflow: auto;
}

.positions-table,
table {
  border-collapse: collapse !important;
  width: 100%;
  font-size: 11px !important;
}

.positions-table th,
.positions-table td,
table th,
table td {
  padding: 6px 8px !important;
  border-bottom: 1px solid var(--line2) !important;
  white-space: nowrap;
}

.positions-table th,
table th {
  color: var(--muted2) !important;
  font-size: 10px !important;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  background: #050b0c !important;
  font-weight: 700 !important;
}

.positions-table td,
table td {
  color: #c7d6d6;
  background: transparent !important;
}

.positions-table tbody tr:hover td {
  background: rgba(255,255,255,0.025) !important;
  filter: none !important;
}

.positions-table tbody tr.selected-position td {
  background: rgba(34, 211, 182, 0.075) !important;
  outline: none !important;
  box-shadow: inset 2px 0 0 rgba(34, 211, 182, 0.75);
}

.positions-table button.danger {
  min-height: 22px !important;
  padding: 3px 7px !important;
  font-size: 10px !important;
}

.auto-refresh-line {
  margin: 6px 10px 8px !important;
  font-size: 11px !important;
}

.safety-card {
  padding: 10px 12px !important;
  background: #080f10 !important;
  border-color: rgba(255, 77, 101, 0.38) !important;
}

.real-toggle {
  font-size: 12px !important;
  color: var(--red) !important;
}

.safety-card small {
  font-size: 11px;
}

.quick-actions-card {
  padding: 8px !important;
  gap: 6px !important;
  background: #060d0e !important;
}

.trade-stack {
  gap: 8px !important;
}

.ticket {
  padding: 10px !important;
  background: #071012 !important;
}

.ticket-header,
.ticket .section-head,
.ticket-head {
  margin-bottom: 8px !important;
  padding-bottom: 7px !important;
  border-bottom: 1px solid var(--line2);
}

.ticket label {
  margin-bottom: 5px !important;
  font-size: 10px !important;
  color: var(--muted2) !important;
  text-transform: uppercase;
  letter-spacing: 0.06em;
}

.ticket input,
.ticket select {
  height: 31px !important;
}

.ticket .row,
.form-row,
.grid-2 {
  gap: 7px !important;
}

.dn-card,
.dn-trading-card {
  padding: 9px 10px !important;
  background: #060d0e !important;
}

.trade-actions,
.actions,
.button-row {
  gap: 6px !important;
}

#tradeLog,
.log,
pre {
  background: #030707 !important;
  border: 1px solid var(--line2) !important;
  border-radius: 3px !important;
  color: #8ba0a0 !important;
  font-size: 11px !important;
  line-height: 1.45;
  max-height: 220px;
  overflow: auto;
}

.green,
.long,
.positive {
  color: var(--green) !important;
}

.red,
.short,
.negative {
  color: var(--red) !important;
}

.badge,
.pill,
.tag {
  border-radius: 3px !important;
  border: 1px solid var(--line) !important;
  background: #071112 !important;
  padding: 2px 6px !important;
  font-size: 10px !important;
}

/* Scrollbars closer to trading terminal style */
*::-webkit-scrollbar {
  width: 8px;
  height: 8px;
}

*::-webkit-scrollbar-track {
  background: #050809;
}

*::-webkit-scrollbar-thumb {
  background: #152527;
  border-radius: 8px;
}

*::-webkit-scrollbar-thumb:hover {
  background: #20383a;
}

@media (max-width: 1120px) {
  .hl-layout,
  .trade-layout,
  .cockpit-layout {
    grid-template-columns: 1fr !important;
  }

  .chart-market-strip {
    grid-template-columns: 1fr;
  }

  .hl-right,
  .right-panel {
    max-width: none;
  }
}


/* v1.0.13 clean loading screen */
html.booting body,
body.app-booting {
  overflow: hidden;
}

#appBootLoader {
  position: fixed;
  inset: 0;
  z-index: 99999;
  display: grid;
  place-items: center;
  background:
    radial-gradient(circle at 50% 30%, rgba(34, 211, 182, 0.08), transparent 34%),
    #050809;
  color: var(--text, #d7e2e2);
  transition: opacity 220ms ease, transform 220ms ease;
}

#appBootLoader.leaving {
  opacity: 0;
  transform: scale(1.01);
  pointer-events: none;
}

.boot-card {
  width: min(420px, calc(100vw - 38px));
  border: 1px solid rgba(135, 160, 160, 0.16);
  background: rgba(7, 16, 18, 0.94);
  border-radius: 6px;
  padding: 24px 24px 22px;
  box-shadow: 0 18px 70px rgba(0, 0, 0, 0.45);
}

.boot-logo {
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.14em;
  color: #22d3b6;
  font-weight: 900;
  margin-bottom: 16px;
}

.boot-title {
  font-size: 22px;
  letter-spacing: -0.04em;
  font-weight: 900;
  color: #e3eeee;
  margin-bottom: 6px;
}

.boot-status {
  min-height: 18px;
  font-size: 13px;
  color: #8aa0a0;
  margin-bottom: 18px;
}

.boot-bar {
  width: 100%;
  height: 3px;
  overflow: hidden;
  background: rgba(135, 160, 160, 0.12);
  border-radius: 99px;
  margin-bottom: 14px;
}

.boot-bar span {
  display: block;
  width: 38%;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, transparent, #22d3b6, transparent);
  animation: bootSlide 1.05s infinite ease-in-out;
}

.boot-hint {
  font-size: 11px;
  line-height: 1.45;
  color: #536767;
}

@keyframes bootSlide {
  0% { transform: translateX(-120%); }
  100% { transform: translateX(285%); }
}

/* Hide the raw app during boot so the user does not see half-loaded cards. */
body.app-booting #app,
body.app-booting main,
body.app-booting .app-shell {
  opacity: 0;
}

body.app-ready #app,
body.app-ready main,
body.app-ready .app-shell {
  opacity: 1;
  transition: opacity 180ms ease;
}


/* v1.0.14 boot/chart/CSP polish */
.boot-hint::after {
  content: " The cockpit opens even if Gate keys or some market data are not ready yet.";
}

.close-position-btn {
  cursor: pointer;
}

#chartMarketSelect option {
  background: #071012;
  color: #d7e2e2;
}


/* v1.0.20 stable: always-real + scroll fix */
html,
body {
  min-height: 100%;
  overflow-y: auto !important;
  overflow-x: hidden !important;
}

#app,
.app-shell,
main,
.page {
  min-height: 100vh;
  overflow: visible !important;
}

.hl-layout,
.trade-layout,
.cockpit-layout {
  height: auto !important;
  min-height: calc(100vh - 64px);
  align-items: start !important;
  overflow: visible !important;
}

.hl-left,
.left-panel {
  min-width: 0;
  overflow: visible !important;
}

.hl-right,
.right-panel {
  max-height: calc(100vh - 82px) !important;
  overflow-y: auto !important;
  overflow-x: hidden !important;
  padding-right: 4px;
  position: sticky;
  top: 72px;
}

.safety-card,
.real-toggle,
#realTradingToggle,
#realTradingLabel {
  display: none !important;
}

body.real-trading .safety-card {
  display: none !important;
}

.chart-card {
  min-height: 500px !important;
}

#chartCanvas {
  height: 450px !important;
}

.positions-card {
  margin-bottom: 40px;
}

@media (max-width: 1120px) {
  .hl-right,
  .right-panel {
    position: static !important;
    max-height: none !important;
    overflow: visible !important;
  }
}


/* v1.0.21 position market/price fixes */
#chartMarketSelect option {
  background: #071012;
  color: #d7e2e2;
}

.positions-table tbody tr {
  cursor: pointer;
}

.positions-table tbody tr.selected-position td {
  background: rgba(34, 211, 182, 0.08) !important;
  box-shadow: inset 2px 0 0 rgba(34, 211, 182, 0.8);
}

.ticket [id$="_mark"] {
  color: #d7e2e2;
}

/* ===== Hyperliquid-style trade ticket ===== */
:root{
  --hl-bg:#0b1014; --hl-panel:#0e151b; --hl-card:#121b22; --hl-line:#1c2630;
  --hl-text:#eaf0f4; --hl-muted:#7d8a98; --hl-teal:#2ee6c5; --hl-teal-d:#0c2f2b;
  --hl-red:#ed5565; --hl-red-d:#33191f;
}
.ticket.hl{background:var(--hl-panel);border:1px solid var(--hl-line);border-radius:14px;padding:14px;color:var(--hl-text);max-width:420px;}
.ticket.hl *{box-sizing:border-box;}
.hl-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;}
.hl-head .hl-title{font-size:14px;font-weight:600;color:var(--hl-text);}
.ticket.hl .badge{background:var(--hl-card);border:1px solid var(--hl-line);color:var(--hl-muted);font-size:11px;padding:3px 9px;border-radius:999px;}
.hl-pills{display:flex;gap:8px;margin-bottom:12px;}
.hl-pill{flex:1;background:var(--hl-card);border:1px solid var(--hl-line);color:var(--hl-text);border-radius:8px;padding:9px 0;font-size:13px;font-weight:600;cursor:pointer;}
.hl-pill:disabled{cursor:default;opacity:.85;}
#a_levPill,#b_levPill{color:var(--hl-teal);border-color:#234;}
.hl-selectors{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:12px;}
.hl-selectors label{display:flex;flex-direction:column;gap:6px;font-size:11px;color:var(--hl-muted);text-transform:uppercase;letter-spacing:.04em;}
.ticket.hl select,.ticket.hl input[type=number]{width:100%;background:var(--hl-card);border:1px solid var(--hl-line);color:var(--hl-text);border-radius:8px;padding:11px 10px;font-size:14px;outline:none;}
.ticket.hl select:focus,.ticket.hl input[type=number]:focus{border-color:var(--hl-teal);}
.hl-tabs{display:flex;gap:22px;border-bottom:1px solid var(--hl-line);margin-bottom:14px;}
.hl-tab{background:none;border:none;color:var(--hl-muted);padding:4px 0 10px;font-size:14px;font-weight:600;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;}
.hl-tab.active{color:var(--hl-text);border-bottom-color:var(--hl-teal);}
.hl-side{display:flex;background:var(--hl-card);border-radius:10px;padding:4px;gap:4px;margin-bottom:16px;}
.hl-buy,.hl-sell{flex:1;border:none;background:transparent;color:var(--hl-muted);padding:10px 0;border-radius:7px;font-weight:600;font-size:14px;cursor:pointer;}
.hl-buy.active{background:var(--hl-teal);color:#04221c;}
.hl-sell.active{background:var(--hl-red);color:#2a0c12;}
.hl-info{display:flex;justify-content:space-between;align-items:center;font-size:13px;color:var(--hl-muted);padding:5px 0;}
.hl-info strong{color:var(--hl-text);font-weight:600;}
.hl-field{margin:12px 0 6px;}
.hl-field-top{display:flex;justify-content:space-between;font-size:11px;color:var(--hl-muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:6px;}
.hl-unit-label{color:var(--hl-text);}
.hl-size-row{display:flex;gap:8px;}
.hl-size-row input{flex:1;}
.hl-unit{width:108px;flex:0 0 auto;}
.hl-pct{display:flex;align-items:center;gap:12px;margin:10px 0 4px;}
.hl-pct input[type=range]{-webkit-appearance:none;appearance:none;height:4px;border-radius:4px;background:var(--hl-line);flex:1;}
.hl-pct input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:16px;height:16px;border-radius:50%;background:var(--hl-panel);border:2px solid var(--hl-teal);cursor:pointer;}
.hl-pct input[type=range]::-moz-range-thumb{width:16px;height:16px;border-radius:50%;background:var(--hl-panel);border:2px solid var(--hl-teal);cursor:pointer;}
.hl-pct-box{min-width:64px;text-align:center;background:var(--hl-card);border:1px solid var(--hl-line);border-radius:8px;padding:7px 0;font-size:13px;color:var(--hl-text);}
.hl-lev{margin:12px 0;}
.hl-lev label{display:flex;justify-content:space-between;font-size:12px;color:var(--hl-muted);margin-bottom:6px;}
.hl-lev label span{color:var(--hl-teal);font-weight:700;}
.hl-lev input[type=range]{-webkit-appearance:none;appearance:none;width:100%;height:4px;border-radius:4px;background:var(--hl-line);}
.hl-lev input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:16px;height:16px;border-radius:50%;background:var(--hl-teal);border:3px solid #07140f;cursor:pointer;}
.hl-lev input[type=range]::-moz-range-thumb{width:16px;height:16px;border-radius:50%;background:var(--hl-teal);border:3px solid #07140f;cursor:pointer;}
.hl-check{display:flex;align-items:center;gap:9px;font-size:13px;color:var(--hl-muted);margin:8px 0;cursor:pointer;}
.hl-check input{accent-color:var(--hl-teal);width:15px;height:15px;}
.hl-submit{width:100%;border:none;border-radius:9px;padding:13px 0;font-size:15px;font-weight:700;cursor:pointer;margin-top:10px;}
.hl-submit.buy{background:var(--hl-teal);color:#04221c;}
.hl-submit.sell{background:var(--hl-red);color:#2a0c12;}
.hl-msg{font-size:12.5px;margin:10px 0 0;min-height:16px;}
.hl-msg.error{color:var(--hl-red);} .hl-msg.success{color:var(--hl-teal);}

/* ===== v1.0.9 fixes: dropdown clipping, size box width, mid button ===== */
/* The generic .ticket select/input rules elsewhere force height:31px !important
   with 11px vertical padding, which clips text top/bottom. Override with enough
   specificity + !important for our Hyperliquid-style ticket only. */
.ticket.hl select,
.ticket.hl input[type=number] {
  height: 42px !important;
  padding: 0 12px !important;
  font-size: 14px !important;
  line-height: 40px !important;
  box-sizing: border-box !important;
}
.ticket.hl select {
  appearance: auto;
  -webkit-appearance: menulist;
}

/* Size input: give it real room, unit select stays compact */
.hl-size-row { display: flex; gap: 8px; align-items: stretch; }
.hl-size-row .hl-size-input { flex: 1 1 auto; min-width: 0; }
.hl-unit { width: 92px; flex: 0 0 auto; }

/* Mid button next to the limit price field */
.hl-mid-btn {
  flex: 0 0 auto;
  height: 42px;
  padding: 0 14px;
  background: var(--hl-card);
  border: 1px solid var(--hl-line);
  color: var(--hl-teal);
  border-radius: 8px;
  font-size: 13px;
  font-weight: 700;
  cursor: pointer;
}
.hl-mid-btn:hover { border-color: var(--hl-teal); }

/* ===== v1.0.10 fixes: size-box width (id-scoped, guaranteed), buy/sell colors
   (guaranteed over the global !important button reset), disabled TP/SL ===== */

/* Global button reset elsewhere forces background:#0a1517 !important on every
   button. Beat it definitively with equally-important, more specific rules. */
#a_orderBtn.buy, #b_orderBtn.buy,
.hl-buy.active {
  background: var(--hl-teal) !important;
  color: #04221c !important;
  border-color: var(--hl-teal) !important;
}
#a_orderBtn.sell, #b_orderBtn.sell,
.hl-sell.active {
  background: var(--hl-red) !important;
  color: #2a0c12 !important;
  border-color: var(--hl-red) !important;
}
.hl-buy:not(.active), .hl-sell:not(.active) {
  background: var(--hl-card) !important;
  color: var(--hl-text) !important;
}

/* Size input vs unit select: id-scoped so nothing else can win this fight. */
#a_quoteSize, #b_quoteSize, #a_price, #b_price {
  width: auto !important;
  flex: 1 1 auto !important;
  min-width: 0 !important;
}
#a_sizeUnit, #b_sizeUnit {
  width: 100px !important;
  flex: 0 0 100px !important;
}

/* Disabled Take Profit / Stop Loss (not implemented yet — avoid implying protection) */
.hl-check-disabled { opacity: 0.55; cursor: not-allowed; }
.hl-check-disabled input { cursor: not-allowed; }
.hl-soon {
  margin-left: 6px;
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--hl-muted);
  border: 1px solid var(--hl-line);
  border-radius: 999px;
  padding: 1px 6px;
}

/* ===== v1.0.11: Open Orders panel, Funding APY cells ===== */
.funding-apy-cell { font-size: 12.5px; }

/* ===== v1.0.12: chart zoom/pan, position overlay, grouped positions ===== */
.chart-card { position: relative; }
#chartCanvas { cursor: grab; touch-action: none; }
.chart-reset-zoom {
  position: absolute;
  top: 14px;
  right: 14px;
  z-index: 5;
}
.positions-table tr.group-spacer td {
  border: none;
  padding: 6px 0;
  background: transparent;
}

/* ===== v1.0.13: Close position modal ===== */
.close-position-card { width: min(420px, 92vw); }
.close-pos-summary { color: var(--text); font-weight: 600; margin: 4px 0 14px; }
.close-pos-tabs { display: flex; gap: 8px; margin-bottom: 4px; }
.close-pos-tabs button { flex: 1; }
.close-pos-tabs button.active { border-color: var(--teal); color: var(--text); background: #0b2f31; }
.close-pos-pct-row { display: flex; align-items: center; gap: 12px; margin: 16px 0 4px; }
.close-pos-pct-row input[type=range] { flex: 1; -webkit-appearance: none; appearance: none; height: 4px; border-radius: 4px; background: var(--line); }
.close-pos-pct-row input[type=range]::-webkit-slider-thumb { -webkit-appearance: none; appearance: none; width: 16px; height: 16px; border-radius: 50%; background: var(--panel); border: 2px solid var(--teal); cursor: pointer; }
.close-pos-pct-row input[type=range]::-moz-range-thumb { width: 16px; height: 16px; border-radius: 50%; background: var(--panel); border: 2px solid var(--teal); cursor: pointer; }
.close-pos-pct-box { min-width: 56px; text-align: center; background: var(--input); border: 1px solid var(--line); border-radius: 8px; padding: 6px 0; font-size: 13px; color: var(--text); }
.close-pos-pct-box input {
  width: 32px;
  background: transparent;
  border: none;
  color: var(--text);
  font-size: 13px;
  text-align: right;
  padding: 0;
  -moz-appearance: textfield;
}
.close-pos-pct-box input::-webkit-outer-spin-button,
.close-pos-pct-box input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.close-pos-pct-box input:focus { outline: none; }
.close-pos-preview { font-size: 13px; color: var(--muted); margin: 6px 0 4px; }
.close-pos-error { color: var(--red); font-size: 12.5px; min-height: 16px; margin: 4px 0 8px; }

/* ===== v1.0.14: timeframe dropdown, chart date labels, SL/TP feature ===== */
.chart-tabs { display: flex; align-items: flex-end; gap: 10px; }
.chart-interval-label { display: flex; flex-direction: column; gap: 4px; font-size: 11px; color: var(--muted); }
.chart-interval-label select { min-width: 140px; }
.chart-canvas-wrap { position: relative; }
.sltp-btn { font-size: 11.5px; white-space: nowrap; }
.sltp-warning {
  font-size: 12px;
  color: var(--yellow);
  background: rgba(247, 201, 72, 0.08);
  border: 1px solid rgba(247, 201, 72, 0.35);
  border-radius: 8px;
  padding: 10px 12px;
  margin: 12px 0;
  line-height: 1.5;
}

/* ===== v1.0.15: TP (real order) vs SL (browser-watched) distinction ===== */
.sltp-warning-danger {
  color: var(--red) !important;
  background: rgba(255, 82, 106, 0.08) !important;
  border-color: rgba(255, 82, 106, 0.4) !important;
}

/* ===== v1.0.16: account-wide margin clarity ===== */
.hl-info-hint { font-size: 10px; color: var(--hl-muted); cursor: help; border-bottom: 1px dotted var(--hl-muted); }
.hl-info-sub { padding-top: 0; margin-top: -4px; opacity: 0.85; }
.hl-info-sub strong { font-size: 12px; }

/* ===== v1.0.17: sticky margin-ratio risk banner ===== */
.risk-banner {
  position: sticky;
  top: 58px; /* sits directly below the existing 58px-tall sticky topbar */
  z-index: 60;
  display: flex;
  align-items: center;
  gap: 28px;
  padding: 10px 18px;
  background: #0b1416;
  border-bottom: 1px solid var(--line);
  font-size: 13px;
}
.risk-banner-item { display: flex; align-items: baseline; gap: 8px; }
.risk-banner-label { color: var(--muted); font-size: 12px; }
.risk-banner strong { font-size: 16px; font-weight: 800; color: var(--text); }
/* Each figure (IMR, MMR) is colored independently based on its own risk level
   — they can be in different states at the same time, and both are real,
   independently-monitored thresholds, not one primary + one decorative. */
.risk-banner-item.risk-safe strong { color: var(--teal); }
.risk-banner-item.risk-warn strong { color: var(--yellow); }
.risk-banner-item.risk-danger strong { color: var(--red); }
/* Overall banner background reflects whichever figure is currently worse. */
/* Whole-banner background/pulse removed by request — the per-figure text
   coloring above (teal/yellow/red on each number) already carries the same
   information without turning the entire top strip into a flashing red bar. */

/* ===== v1.0.18: order history table ===== */
.positions-table td.muted-cell { color: var(--muted); font-size: 11.5px; max-width: 260px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* ===== v1.0.19: bottom tabs (Positions / Open Orders / Order History) ===== */
.bottom-tabs { display: flex; gap: 6px; }
.bottom-tab {
  background: var(--panel2);
  border: 1px solid var(--line);
  color: var(--muted);
  padding: 8px 16px;
  border-radius: 999px;
  font-size: 13px;
  font-weight: 700;
  cursor: pointer;
}
.bottom-tab.active { background: rgba(0, 214, 178, 0.14); border-color: var(--teal); color: var(--text); }
.bottom-tab-status { color: var(--muted); font-size: 12.5px; margin: 4px 0 10px; }
.bottom-tab-panel.hidden { display: none; }

/* ===== v1.0.20: readable terms text — override the log-box font-size rule ===== */
pre.terms-text {
  font-size: 15px !important;
  line-height: 1.7 !important;
  font-family: Inter, ui-sans-serif, system-ui, "Segoe UI", Arial, sans-serif !important;
  color: var(--text) !important;
  max-height: none !important;
  white-space: pre-wrap;
  background: transparent !important;
  border: none !important;
  padding: 4px 2px !important;
}

/* ===== v1.0.21: non-extractable secret key UI hint ===== */
p.hint { font-size: 12px; color: var(--muted); line-height: 1.5; margin: 4px 0 12px; }

/* ===== currency-mismatch highlight: per-coin balance looks empty but the
   real (account-wide) cross-margin figure is healthy — informational, not an
   error, since this is expected whenever you trade a market settled in a
   currency you've never held directly (e.g. Kraken's plain-USD markets). ===== */
.hl-info.hl-currency-mismatch strong {
  color: var(--yellow) !important;
  cursor: help;
  border-bottom: 1px dotted var(--yellow);
}

/* ===== API key setup guide page ===== */
.api-key-guide { max-width: 720px; }
.api-key-guide .sub { color: var(--muted); font-size: 14px; margin: 4px 0 20px; }
.api-key-guide .warning-box {
  background: rgba(247, 201, 72, 0.08);
  border: 1px solid rgba(247, 201, 72, 0.35);
  border-radius: 10px;
  padding: 14px 16px;
  margin: 18px 0;
  font-size: 14px;
  line-height: 1.6;
  color: var(--text);
}
.api-key-guide .guide-steps {
  padding-left: 22px;
  margin: 20px 0;
}
.api-key-guide .guide-steps li {
  margin-bottom: 16px;
  line-height: 1.6;
  font-size: 14.5px;
}
.api-key-guide .guide-steps li strong { color: var(--text); }
.api-key-guide .hint { font-size: 12.5px; color: var(--muted); margin-top: 8px; }
.api-key-guide a { color: var(--teal); }
