/* ============================================================================
   1bds.biz — Teal-neon dark theme
   ONE design across the whole app. Always dark. Overrides Bootstrap 5.3 dark
   mode with a custom neon palette. Accent #17c3b2 (neon teal) — the single
   canonical brand colour, deliberately distinct from 1system.cloud so the two
   dashboards/tabs are distinguishable at a glance. NB: the --accent* tokens
   below hold the brand teal (name kept generic).
   ========================================================================== */

:root,
[data-bs-theme="dark"] {
  /* core palette */
  --bg:#03060b;
  --panel:#070d16;
  --panel2:#050a11;
  --grid:#0d1c2b;
  --ink:#d6ecff;
  --dim:#5d7e98;
  --line:#0f2740;
  --accent:#17c3b2;
  --accent-d:#0e9e90;
  --accent-l:#45e6d4;
  --green:#2dffa6;
  --red:#ff476b;
  --amber:#ffb020;
  --purple:#9b7cff;

  /* map our palette onto Bootstrap's theme variables */
  --bs-body-bg:#03060b;
  --bs-body-color:#d6ecff;
  --bs-body-font-family:'JetBrains Mono',ui-monospace,'Cascadia Mono',Consolas,monospace;
  --bs-emphasis-color:#ffffff;
  --bs-secondary-color:rgba(214,236,255,.65);
  --bs-tertiary-color:rgba(214,236,255,.45);
  --bs-border-color:#0f2740;
  --bs-border-color-translucent:rgba(23,195,178,.18);

  --bs-primary:#17c3b2;
  --bs-primary-rgb:23,195,178;
  --bs-link-color:#45e6d4;
  --bs-link-color-rgb:69,230,212;
  --bs-link-hover-color:#8ff0e4;
  --bs-link-hover-color-rgb:143,240,228;

  --bs-success:#2dffa6; --bs-success-rgb:45,255,166;
  --bs-danger:#ff476b;  --bs-danger-rgb:255,71,107;
  --bs-warning:#ffb020; --bs-warning-rgb:255,176,32;
  --bs-info:#5fe6ff;    --bs-info-rgb:95,230,255;

  --bs-dark-rgb:7,13,22;
  --bs-light-rgb:214,236,255;

  --bs-card-bg:#070d16;
  --bs-card-border-color:#0f2740;

  --bs-tertiary-bg:#070d16;
  --bs-secondary-bg:#0a1320;
  --bs-heading-color:#d6ecff;
}

/* ===================== base ===================== */
html, body {
  background:var(--bg);
  color:var(--ink);
}
body {
  font-family:'JetBrains Mono',ui-monospace,'Cascadia Mono',Consolas,monospace;
  font-variant-numeric:tabular-nums;
  letter-spacing:.015em;
  font-size:0.9rem;
  min-height:100vh;
  position:relative;
}

/* subtle scanline + radial blue vignette, mirroring the qquant dashboard */
body::before{
  content:"";position:fixed;inset:0;pointer-events:none;z-index:1;
  background:repeating-linear-gradient(0deg,rgba(0,0,0,0) 0 2px,rgba(0,0,0,.14) 2px 3px);
  mix-blend-mode:multiply;opacity:.45;
}
body::after{
  content:"";position:fixed;inset:0;pointer-events:none;z-index:0;
  background:radial-gradient(120% 80% at 50% -10%,rgba(23,195,178,.10),transparent 60%);
}
/* keep real content above the overlays */
body > *{position:relative;z-index:2}

h1,h2,h3,h4,h5,h6{color:var(--ink);letter-spacing:.02em}

a{color:var(--accent-l);text-decoration:none}
a:hover{color:#8ff0e4}

::selection{background:rgba(23,195,178,.30);color:#fff}

/* scrollbars */
*{scrollbar-color:#13314a var(--bg)}
*::-webkit-scrollbar{width:10px;height:10px}
*::-webkit-scrollbar-track{background:var(--bg)}
*::-webkit-scrollbar-thumb{background:#13314a;border-radius:6px;border:2px solid var(--bg)}
*::-webkit-scrollbar-thumb:hover{background:#1d4a6e}

/* ===================== top navbar ===================== */
.navbar.bg-dark,
.navbar{
  background:linear-gradient(180deg,#06121f,#040a12) !important;
  border-bottom:1px solid var(--line);
  position:relative;
  /* must beat the body>* {z-index:2} siblings so open dropdowns paint above page content */
  z-index:1030;
}
.navbar::after{
  content:"";position:absolute;left:0;right:0;bottom:-1px;height:1px;
  background:linear-gradient(90deg,transparent,var(--accent),transparent);opacity:.6;
}
.navbar-brand{
  font-size:1.05rem;
  font-weight:800;
  letter-spacing:.12em;
  color:var(--accent) !important;
  text-shadow:0 0 10px rgba(23,195,178,.45);
  display:inline-flex;
  align-items:center;
  gap:.55rem;
}
.navbar-brand .brand-logo{
  width:26px;height:26px;border-radius:6px;
  filter:drop-shadow(0 0 6px rgba(23,195,178,.85));
}
.navbar-dark .navbar-nav .nav-link,
.navbar .navbar-nav .nav-link{
  color:var(--dim);
  text-transform:uppercase;
  font-size:.78rem;
  letter-spacing:.12em;
  transition:.15s;
  border-radius:4px;
  padding-left:.7rem;padding-right:.7rem;
}
.navbar-dark .navbar-nav .nav-link:hover,
.navbar .navbar-nav .nav-link:hover{
  color:var(--ink);
  background:rgba(23,195,178,.06);
}
.navbar-dark .navbar-nav .nav-link.active,
.navbar-dark .navbar-nav .show > .nav-link,
.navbar .navbar-nav .nav-link.active{
  color:var(--accent);
  text-shadow:0 0 8px rgba(23,195,178,.4);
}
.navbar-toggler{border-color:var(--line)}
.navbar-toggler:focus{box-shadow:0 0 0 .2rem rgba(23,195,178,.25)}

/* dropdowns */
.dropdown-menu{
  background:linear-gradient(180deg,var(--panel),var(--panel2));
  border:1px solid var(--line);
  box-shadow:0 8px 28px rgba(0,0,0,.6),0 0 0 1px rgba(23,195,178,.08);
  --bs-dropdown-link-color:var(--ink);
  --bs-dropdown-link-hover-color:var(--accent);
  --bs-dropdown-link-hover-bg:rgba(23,195,178,.10);
  --bs-dropdown-link-active-color:#03060b;
  --bs-dropdown-link-active-bg:var(--accent);
}
.dropdown-item{font-size:.82rem;letter-spacing:.04em}
.dropdown-divider{border-color:var(--line)}

/* ===================== panels / cards ===================== */
.card{
  background:linear-gradient(180deg,var(--panel),var(--panel2));
  border:1px solid var(--line);
  border-radius:6px;
  position:relative;
  overflow:hidden;
  box-shadow:0 1px 0 rgba(255,255,255,.02) inset, 0 6px 22px rgba(0,0,0,.35);
}
.card::before{
  content:"";position:absolute;left:0;top:0;width:100%;height:1px;
  background:linear-gradient(90deg,transparent,rgba(23,195,178,.5),transparent);opacity:.55;
}
.card-title{
  color:var(--accent);
  letter-spacing:.06em;
  text-shadow:0 0 6px rgba(23,195,178,.35);
}
.card-text{color:var(--ink)}
.text-muted,.text-body-secondary{color:var(--dim) !important}

/* coloured cards (dashboard tiles) — keep neon, not flat bootstrap fills */
.text-bg-primary{
  background:linear-gradient(180deg,rgba(23,195,178,.14),rgba(23,195,178,.04)) !important;
  color:var(--ink) !important;border:1px solid var(--accent-d);
}
.text-bg-primary .card-title{color:var(--accent)}
.text-bg-warning{
  background:linear-gradient(180deg,rgba(255,176,32,.14),rgba(255,176,32,.04)) !important;
  color:var(--ink) !important;border:1px solid rgba(255,176,32,.4);
}
.text-bg-warning .card-title{color:var(--amber)}
.text-bg-success{
  background:linear-gradient(180deg,rgba(45,255,166,.13),rgba(45,255,166,.04)) !important;
  color:var(--ink) !important;border:1px solid rgba(45,255,166,.35);
}
.text-bg-success .card-title{color:var(--green)}
.text-bg-danger{
  background:linear-gradient(180deg,rgba(255,71,107,.14),rgba(255,71,107,.04)) !important;
  color:var(--ink) !important;border:1px solid rgba(255,71,107,.4);
}
.text-bg-danger .card-title{color:var(--red)}
.text-bg-info{
  background:linear-gradient(180deg,rgba(95,230,255,.13),rgba(95,230,255,.04)) !important;
  color:var(--ink) !important;border:1px solid rgba(95,230,255,.35);
}
.text-bg-info .card-title{color:var(--bs-info)}

/* ===================== buttons ===================== */
.btn{letter-spacing:.06em;font-weight:600}
.btn-primary{
  --bs-btn-color:#03060b;
  --bs-btn-bg:var(--accent);
  --bs-btn-border-color:var(--accent);
  --bs-btn-hover-color:#03060b;
  --bs-btn-hover-bg:var(--accent-l);
  --bs-btn-hover-border-color:var(--accent-l);
  --bs-btn-active-bg:var(--accent-d);
  --bs-btn-active-border-color:var(--accent-d);
  --bs-btn-disabled-color:#03060b;
  --bs-btn-disabled-bg:var(--accent);
  box-shadow:0 0 12px rgba(23,195,178,.35);
}
.btn-secondary{
  --bs-btn-color:var(--ink);
  --bs-btn-bg:#0e2034;
  --bs-btn-border-color:#163047;
  --bs-btn-hover-color:#fff;
  --bs-btn-hover-bg:#163047;
  --bs-btn-hover-border-color:#1d4a6e;
  --bs-btn-active-bg:#0a1626;
}
.btn-outline-primary{
  --bs-btn-color:var(--accent);
  --bs-btn-border-color:var(--accent-d);
  --bs-btn-hover-color:#03060b;
  --bs-btn-hover-bg:var(--accent);
  --bs-btn-hover-border-color:var(--accent);
  --bs-btn-active-bg:var(--accent);
}
.btn-success{--bs-btn-color:#03100a;--bs-btn-bg:var(--green);--bs-btn-border-color:var(--green);--bs-btn-hover-bg:#5dffbd;--bs-btn-hover-border-color:#5dffbd;--bs-btn-hover-color:#03100a}
.btn-danger{--bs-btn-color:#fff;--bs-btn-bg:var(--red);--bs-btn-border-color:var(--red);--bs-btn-hover-bg:#ff6b88;--bs-btn-hover-border-color:#ff6b88}
.btn-warning{--bs-btn-color:#1a1200;--bs-btn-bg:var(--amber);--bs-btn-border-color:var(--amber);--bs-btn-hover-bg:#ffc24d;--bs-btn-hover-border-color:#ffc24d}
.btn:focus,.btn:focus-visible{box-shadow:0 0 0 .2rem rgba(23,195,178,.30)}

/* ===================== forms ===================== */
.form-label{color:var(--dim);font-size:.8rem;letter-spacing:.06em;text-transform:uppercase}
.form-control,.form-select{
  background:#050c15;
  border:1px solid var(--line);
  color:var(--ink);
}
.form-control:focus,.form-select:focus{
  background:#06101c;
  border-color:var(--accent-d);
  color:var(--ink);
  box-shadow:0 0 0 .2rem rgba(23,195,178,.18);
}
.form-control::placeholder{color:#3f5b72}
.form-control:disabled,.form-select:disabled{background:#08111c;color:var(--dim)}
.input-group-text{background:#0a1320;border:1px solid var(--line);color:var(--dim)}
.form-check-input{background-color:#050c15;border-color:var(--line)}
.form-check-input:checked{background-color:var(--accent);border-color:var(--accent)}
.form-check-input:focus{box-shadow:0 0 0 .2rem rgba(23,195,178,.20)}

/* ===================== tables ===================== */
.table{
  --bs-table-bg:transparent;
  --bs-table-color:var(--ink);
  --bs-table-border-color:var(--line);
  --bs-table-striped-bg:rgba(23,195,178,.035);
  --bs-table-striped-color:var(--ink);
  --bs-table-hover-bg:rgba(23,195,178,.08);
  --bs-table-hover-color:#fff;
  color:var(--ink);
}
.table th{
  white-space:nowrap;
  color:var(--accent);
  text-transform:uppercase;
  font-size:.72rem;
  letter-spacing:.1em;
  font-weight:600;
  border-bottom:1px solid var(--line) !important;
}
.table td{vertical-align:middle;border-color:var(--line)}
.table > :not(caption) > * > *{background-color:transparent}
.table-dark{--bs-table-bg:#070d16}

/* ===================== badges / alerts ===================== */
.badge.text-bg-primary,.badge.bg-primary{background:var(--accent) !important;color:#03060b}
.badge.bg-success{background:var(--green) !important;color:#03100a}
.badge.bg-danger{background:var(--red) !important;color:#fff}
.badge.bg-warning{background:var(--amber) !important;color:#1a1200}
.badge.bg-secondary{background:#163047 !important;color:var(--ink)}

.alert{border:1px solid var(--line);background:var(--panel);color:var(--ink)}
.alert-success{border-color:rgba(45,255,166,.4);background:rgba(45,255,166,.08);color:#9affd4}
.alert-danger{border-color:rgba(255,71,107,.45);background:rgba(255,71,107,.09);color:#ff9bb0}
.alert-warning{border-color:rgba(255,176,32,.45);background:rgba(255,176,32,.09);color:#ffd486}
.alert-info{border-color:rgba(95,230,255,.4);background:rgba(95,230,255,.08);color:#bff4ff}

/* ===================== modal ===================== */
.modal-content{
  background:linear-gradient(180deg,var(--panel),var(--panel2));
  border:1px solid var(--line);
  box-shadow:0 18px 60px rgba(0,0,0,.7),0 0 0 1px rgba(23,195,178,.08);
}
.modal-header,.modal-footer{border-color:var(--line)}
.modal-title{color:var(--accent);letter-spacing:.04em}
.btn-close{filter:invert(1) grayscale(1) brightness(1.6)}

/* ===================== DataTables (bootstrap5 skin) ===================== */
.dataTables_wrapper{color:var(--ink)}
.dataTables_wrapper .dataTables_length,
.dataTables_wrapper .dataTables_filter,
.dataTables_wrapper .dataTables_info,
.dataTables_wrapper .dataTables_processing,
.dataTables_wrapper .dataTables_paginate{color:var(--dim) !important}
.dataTables_wrapper .dataTables_filter input,
.dataTables_wrapper .dataTables_length select{
  background:#050c15;border:1px solid var(--line);color:var(--ink)
}
.dataTables_wrapper .dataTables_paginate .paginate_button{color:var(--dim) !important}
.dataTables_wrapper .dataTables_paginate .paginate_button.current,
.dataTables_wrapper .dataTables_paginate .paginate_button.current:hover{
  background:var(--accent) !important;border-color:var(--accent) !important;color:#03060b !important
}
.dataTables_wrapper .dataTables_paginate .paginate_button:hover{
  background:rgba(23,195,178,.12) !important;border-color:var(--accent-d) !important;color:var(--ink) !important
}
table.dataTable tbody tr{background:transparent}
table.dataTable tbody tr:hover{background:rgba(23,195,178,.07)}
div.dataTables_wrapper div.dataTables_processing{top:50%;background:var(--panel);border:1px solid var(--line)}

/* DataTables Buttons */
.dt-button.btn,div.dt-buttons .btn{background:#0e2034;border:1px solid var(--line);color:var(--ink)}
.dt-button.btn:hover{background:rgba(23,195,178,.12);border-color:var(--accent-d)}

/* ===================== misc bootstrap surfaces ===================== */
hr{border-color:var(--line);opacity:.6}
.border{border-color:var(--line) !important}
.bg-light{background:#0a1320 !important;color:var(--ink) !important}
.bg-white{background:var(--panel) !important;color:var(--ink) !important}
.list-group-item{background:var(--panel);border-color:var(--line);color:var(--ink)}
.page-link{background:#0a1320;border-color:var(--line);color:var(--accent-l)}
.page-item.active .page-link{background:var(--accent);border-color:var(--accent);color:#03060b}

/* login card flourish */
.card.shadow{box-shadow:0 18px 50px rgba(0,0,0,.6),0 0 30px rgba(23,195,178,.06) !important}

/* ===================== overview / trading dashboard ===================== */
.section-title{color:var(--accent);letter-spacing:.06em;text-shadow:0 0 6px rgba(23,195,178,.35)}

/* stat tiles */
.stat-label{
  color:var(--dim);font-size:.7rem;text-transform:uppercase;letter-spacing:.12em;
  display:flex;align-items:center;gap:.4rem;
}
.stat-value{font-size:1.45rem;font-weight:800;color:var(--ink);line-height:1.2}
.hero-value{font-size:3rem;font-weight:800;color:var(--ink);line-height:1.15;text-shadow:0 0 18px rgba(23,195,178,.25)}
.stat-delta{font-size:.8rem}
.delta-up{color:var(--green)}
.delta-down{color:var(--red)}

/* placeholder chip — marks every invented number */
.chip-placeholder{
  display:inline-block;border:1px dashed var(--dim);color:var(--dim);
  font-size:.62rem;text-transform:uppercase;letter-spacing:.12em;
  padding:.1rem .45rem;border-radius:3px;white-space:nowrap;
}

/* account cards */
.acct-name{font-weight:800;letter-spacing:.04em;color:var(--ink)}
.acct-badge{
  display:inline-flex;align-items:center;gap:.35rem;
  font-size:.66rem;font-weight:800;letter-spacing:.12em;
  padding:.2rem .5rem;border-radius:3px;white-space:nowrap;
}
.acct-live {color:var(--green); border:1px solid rgba(45,255,166,.45); background:rgba(45,255,166,.08)}
.acct-paper{color:var(--bs-info);border:1px solid rgba(95,230,255,.45); background:rgba(95,230,255,.08)}
.acct-prop {color:var(--amber); border:1px solid rgba(255,176,32,.45); background:rgba(255,176,32,.08)}

/* sparkline */
.spark{width:100%;height:32px;display:block;overflow:visible}

/* meters — fill carries severity, track is a lighter step of the same hue */
.meter{height:6px;border-radius:3px;overflow:hidden}
.meter>span{display:block;height:100%;border-radius:3px}
.meter-accent{background:rgba(23,195,178,.15)} .meter-accent>span{background:var(--accent)}
.meter-amber {background:rgba(255,176,32,.15)}  .meter-amber>span{background:var(--amber)}
.meter-red   {background:rgba(255,71,107,.15)}  .meter-red>span{background:var(--red)}
.meter-row{display:flex;justify-content:space-between;font-size:.7rem;color:var(--dim);letter-spacing:.03em;margin-bottom:.15rem}

/* plan / checklist lists */
.plan-list{list-style:none;padding:0;margin:0;font-size:.8rem}
.plan-list li{padding:.3rem 0;border-bottom:1px dashed var(--line)}
.plan-list li:last-child{border-bottom:0}
.checklist li i{color:var(--dim);margin-right:.35rem}
.checklist code{color:var(--accent-l);background:rgba(23,195,178,.08);padding:.05rem .3rem;border-radius:3px}

/* Trading Plan (?action=plan) — rendered markdown from private/plan/ */
.plan-doc{font-size:.9rem;line-height:1.65}
.plan-doc h1{font-size:1.5rem;font-weight:800;letter-spacing:.02em;margin:1.2rem 0 .8rem;color:var(--ink)}
.plan-doc h2{font-size:1.15rem;font-weight:800;margin:1.6rem 0 .6rem;color:var(--accent-l);border-bottom:1px solid var(--line);padding-bottom:.3rem}
.plan-doc h3{font-size:.95rem;font-weight:800;margin:1.2rem 0 .4rem;color:var(--ink)}
.plan-doc code{color:var(--accent-l);background:rgba(23,195,178,.08);padding:.05rem .3rem;border-radius:3px}
.plan-doc blockquote{border-left:3px solid var(--accent);padding:.3rem .8rem;color:var(--dim);background:rgba(23,195,178,.05);border-radius:0 4px 4px 0}
.plan-doc table{font-size:.82rem}
.plan-doc th{white-space:nowrap}
.plan-doc hr{border-color:var(--line);opacity:1}
.plan-doc img{max-width:100%;height:auto;border:1px solid var(--line);border-radius:8px;margin:.5rem 0 1rem}
.plan-doc img+em, .plan-doc p>em:only-child{color:var(--dim);font-size:.75rem}

/* Charts page (b24chart.js) */
.b24-chart { width: 100%; min-height: 620px; overflow-x: auto; }
.b24-chart svg { display: block; font-family: var(--bs-body-font-family); }
