/* =====================================================================
   BRAND — change the whole panel's colour here (one place).
   Or set  define('PANEL_BRAND', '#e8642a');  in config/config.php and the
   header will emit these four variables from it automatically.
   ===================================================================== */
:root {
  --brand:        #dab980;   /* logo gold */
  --brand-dark:   #c6a365;   /* hover */
  --brand-subtle: #f8f0e2;   /* active menu / focus tint */
  --brand-border: #e8d2ab;
}

/* =====================================================================
   Swap Manager — finalized theme layer (4 Sep 2026). Loaded after style.css.
   Plus Jakarta Sans · white cards + soft shadow · Fiboniq orange accent ·
   solid badges · gray table header · numbered pagination.
   Structural rules apply to both themes; colours below are for light.
   ===================================================================== */
body[data-ctp-theme="light"] {
  --ctp-tx:#111827; --ctp-tx-2:#374151; --ctp-tx-muted:#5f6b7a; --ctp-tx-dim:#8b93a1;
  --ctp-bdr:#e5e7eb; --ctp-card:#ffffff; --ctp-card-2:#ffffff; --ctp-inp-bg:#ffffff;
  --ctp-hover:#f4f6f9; --ctp-bg-heavy:#eceef1; --ctp-bg:#f8fafd;
  --ctp-sidebar-bg:#ffffff; --ctp-topbar-bg:#ffffff; --ctp-header-bar-bg:#eceef1;
  --ctp-row-bg:#ffffff; --ctp-row-bg-alt:#ffffff; --ctp-empty-bg:#f8fafd; --ctp-tag-border:#e5e7eb;
  --ctp-accent:var(--brand); --ctp-btn-primary:var(--brand); --ctp-btn-primary-hover:var(--brand-dark);
  --ctp-accent-subtle:var(--brand-subtle); --ctp-accent-border:var(--brand-border);
  --ctp-info:#1d4ed8; --ctp-ok:#15803d; --ctp-warn:#b45309; --ctp-warn-2:#b45309; --ctp-err:#b91c1c;
  --ctp-ok-bright:#16a34a; --ctp-warn-bright:#d97706; --ctp-err-bright:#dc2626;
  --ctp-modal-back:rgba(17,24,39,.45); --ctp-modal-head-bg:#ffffff; --ctp-modal-foot-bg:#f8fafd;
}
:root { --rm-radius:1.125rem; --rm-shadow:0 2px 6px rgba(37,83,185,.10); }
body[data-ctp-theme="dark"] { --ctp-accent:var(--brand); --ctp-btn-primary:var(--brand); --ctp-btn-primary-hover:var(--brand-dark); --ctp-accent-subtle:var(--brand-subtle); --rm-shadow:0 2px 6px rgba(0,0,0,.35); }

/* ---------- typography ---------- */
body { font-family:'Plus Jakarta Sans',system-ui,-apple-system,"Segoe UI",sans-serif; font-size:14px; }
h1,.page-title { font-size:16px; font-weight:700; letter-spacing:-.005em; }
.page-head { margin-bottom:18px; } .page-head-row { align-items:center; }
.page-sub,.click-hint { display:none !important; }
.hint,.d-desc { color:var(--ctp-tx-muted); font-size:12.5px; }

/* ---------- shell ---------- */
.sidebar { width:270px; border-right:0; box-shadow:var(--rm-shadow); }
.sidebar.collapsed { width:72px; }
.brand { min-height:70px; padding:0 16px; border-bottom:1px solid var(--ctp-bdr); }
.nav-section-label { padding:14px 18px 4px; font-size:12px; font-weight:600; letter-spacing:.06em; text-transform:uppercase; color:var(--ctp-tx-muted); }
.nav { padding:4px 16px 12px; }
.nav::-webkit-scrollbar { width:3px; } .nav::-webkit-scrollbar-thumb { background:#ddd; border-radius:3px; }
.nav-item { display:flex; align-items:center; gap:8px; padding:2px 8px 2px 0; margin:2px 0; border-radius:9px; font-size:15px; color:var(--ctp-tx-2); line-height:22px; position:relative; border:0; cursor:pointer; }
.nav-item .nav-icon { width:34px; height:34px; min-width:34px; border-radius:8px; display:flex; align-items:center; justify-content:center; color:var(--ctp-tx-2); background:transparent; }
.nav-item:hover { color:var(--ctp-tx); background:transparent; } .nav-item:hover .nav-icon { background:var(--ctp-hover); }
.nav-item.active { color:var(--ctp-accent); font-weight:600; background:var(--ctp-accent-subtle); }
.nav-item.active .nav-icon { background:var(--ctp-accent); color:#fff; }
.nav-item::before { display:none !important; }
.nav-caret { margin-left:auto; font-size:9px; color:var(--ctp-tx-dim); transition:transform .15s; }
.nav-item.expanded .nav-caret { transform:rotate(90deg); }
.nav-children { padding:0; margin:0 0 4px; }
.nav-child { display:flex; align-items:center; gap:12px; padding:5px 8px 5px 14px; margin:0; font-size:13.5px; color:var(--ctp-tx-2); border-radius:8px; border:0; }
.nav-child::before { content:''; width:6px; height:6px; border-radius:50%; background:currentColor; opacity:.55; flex-shrink:0; }
.nav-child:hover { color:var(--ctp-tx); background:var(--ctp-hover); }
.nav-child.active { color:var(--ctp-accent); font-weight:600; background:transparent; }
.nav-child.active::before { opacity:1; }
.sidebar.collapsed .nav-child,.sidebar.collapsed .nav-caret,.sidebar.collapsed .nav-section-label { display:none; }
.sidebar-footer { display:flex; align-items:center; gap:10px; padding:12px 16px; border-top:1px solid var(--ctp-bdr); }
.user-avatar { width:36px; height:36px; border-radius:50%; background:var(--ctp-accent); color:#fff; font-weight:700; font-size:13px; display:inline-flex; align-items:center; justify-content:center; flex-shrink:0; box-shadow:none; }
.user-name { font-size:13px; font-weight:600; } .user-role { font-size:11px; color:var(--ctp-tx-muted); }
.user-power { color:var(--ctp-tx-muted); } .user-power:hover { color:var(--ctp-err-bright); }

.topbar { height:auto; min-height:66px; margin:12px 20px 0; padding:0 14px 0 16px; border:0; border-radius:var(--rm-radius); box-shadow:var(--rm-shadow); gap:10px; background:var(--ctp-card); }
.tb-icon-btn,.tb-lang { width:auto; min-width:36px; height:36px; padding:0 10px; border-radius:9px; border:1px solid var(--ctp-bdr); background:var(--ctp-card); color:var(--ctp-tx-muted); display:inline-flex; align-items:center; justify-content:center; gap:6px; font-size:13px; font-weight:600; }
.tb-icon-btn:hover,.tb-lang:hover { color:var(--ctp-tx); background:var(--ctp-hover); }
.tb-crumb { display:flex; align-items:center; gap:8px; font-size:14.5px; font-weight:700; color:var(--ctp-tx); }
.tb-crumb .sep { color:var(--ctp-tx-muted); font-weight:500; }
.tb-pill { height:34px; padding:0 12px; border-radius:9px; border:1px solid var(--ctp-bdr); background:var(--ctp-card); font-size:12.5px; font-weight:600; display:inline-flex; align-items:center; gap:8px; }
.tb-pill .dot { width:8px; height:8px; border-radius:50%; box-shadow:none !important; animation:none !important; }
.tb-pill.ok { color:var(--ctp-ok); } .tb-pill.ok .dot { background:var(--ctp-ok-bright); }
.tb-pill.paused { color:var(--ctp-warn); } .tb-pill.paused .dot { background:var(--ctp-warn-bright); }
.tb-pill.down { color:var(--ctp-err); } .tb-pill.down .dot { background:var(--ctp-err-bright); }
.tb-broker { font-size:12px; font-weight:600; color:var(--ctp-tx-muted); }
.menu { border-radius:12px; box-shadow:0 8px 32px rgba(0,0,0,.13); border:1px solid var(--ctp-bdr); }
.content { padding:20px 20px 60px; }

/* ---------- cards ---------- */
.card,.plugin-card,.hiw-box { border:0; border-radius:var(--rm-radius); box-shadow:var(--rm-shadow); background:var(--ctp-card); }
.card-head { background:var(--ctp-card); border-bottom:1px solid var(--ctp-bdr); padding:16px 22px; border-left:4px solid var(--ctp-accent); }
.card-title { font-size:13px; font-weight:700; text-transform:uppercase; letter-spacing:.06em; }
.card-sub { font-size:12.5px; color:var(--ctp-tx-muted); text-transform:none; letter-spacing:0; font-weight:500; }
.card-body { padding:20px 22px; }

/* ---------- KPI / stat blocks ---------- */
.kpi,.stat,.stat-card { border:0; border-radius:var(--rm-radius); box-shadow:var(--rm-shadow); padding:20px; }
.kpi::before { display:none !important; }
.kpi-label,.stat-label { font-size:11px; font-weight:700; letter-spacing:.05em; color:var(--ctp-tx-muted); text-transform:uppercase; }
.kpi-value,.stat-value { font-size:26px; font-weight:700; letter-spacing:-.02em; }
.kpi-sub,.stat-sub { font-size:12px; color:var(--ctp-tx-muted); margin-top:8px; }

/* ---------- badges: solid, white text ---------- */
.badge-soft,.badge,.hiw-tag,.badge-soft.info,.badge-soft.ok,.badge-soft.warn,.badge-soft.err,.badge.info,.badge.ok,.badge.warn,.badge.err {
  border:0 !important; color:#fff !important; background:#6b7280; height:22px; padding:0 10px; border-radius:6px; font-size:11.5px; font-weight:600; display:inline-flex; align-items:center; white-space:nowrap; line-height:1;
}
.badge-soft.info,.badge.info,.badge-info { background:#2563eb !important; }
.badge-soft.ok,.badge.ok,.badge-ok { background:#16a34a !important; }
.badge-soft.warn,.badge.warn,.badge-warn { background:#d97706 !important; }
.badge-soft.err,.badge.err,.badge-err,.badge-soft.neg,.badge-neg { background:#dc2626 !important; }
.badge-soft.purple,.badge-soft.violet { background:#6d28d9 !important; }
.plugin-tag { font-size:12.5px; color:var(--ctp-tx-muted); line-height:1.45; margin:2px 0 10px; }
.plugin-card { padding:22px; display:flex; gap:16px; align-items:flex-start; }
.plugin-icon { width:44px; height:44px; border-radius:10px; background:var(--brand-subtle); color:var(--brand); display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.plugin-name { font-size:15px; font-weight:700; }
.plugin-grid { gap:16px; }
.kpi-icon.blue { background:var(--brand-subtle); color:var(--brand); }

/* ---------- buttons ---------- */
.btn { height:36px; border-radius:9px; font-weight:600; font-size:13px; border:1px solid var(--ctp-bdr); background:var(--ctp-card); color:var(--ctp-tx); }
.btn:hover { background:var(--ctp-hover); }
.btn-sm { height:30px; font-size:12px; border-radius:8px; }
.btn-primary { background:var(--ctp-btn-primary); border-color:var(--ctp-btn-primary); color:#fff !important; }
.btn-primary:hover { background:var(--ctp-btn-primary-hover); border-color:var(--ctp-btn-primary-hover); }
.btn-ok { background:#16a34a; border-color:#16a34a; color:#fff; } .btn-err,.btn-danger { background:#dc2626; border-color:#dc2626; color:#fff; } .btn-warn { background:#d97706; border-color:#d97706; color:#fff; }

/* ---------- forms ---------- */
.label { font-size:11px; font-weight:700; color:var(--ctp-tx-muted); letter-spacing:.05em; text-transform:uppercase; }
.input,.select,.textarea,.tk-q,.tk-sel { border-radius:9px; background:var(--ctp-inp-bg); font-weight:500; font-size:13px; padding:9px 12px; border:1px solid var(--ctp-bdr); color:var(--ctp-tx); }
.input:focus,.select:focus,.textarea:focus,.tk-q:focus,.tk-sel:focus { outline:0; border-color:var(--ctp-accent); box-shadow:0 0 0 3px color-mix(in srgb, var(--brand) 14%, transparent); }
.tk-bar,.toolbar { display:flex; flex-wrap:wrap; gap:10px; align-items:center; margin-bottom:14px; }
.check-row input[type=checkbox],.field input[type=checkbox] { accent-color:var(--ctp-accent); }
.chip { border:1px solid var(--ctp-bdr); background:var(--ctp-card); border-radius:20px; font-weight:600; }
.chip.on,.chip.active { background:var(--ctp-accent); border-color:var(--ctp-accent); color:#fff; }

/* ---------- tables ---------- */
.table { font-size:13.5px; }
.table thead th { background:var(--ctp-header-bar-bg); color:var(--ctp-tx-muted); font-size:11px; font-weight:700; letter-spacing:.06em; text-transform:uppercase; padding:11px 16px; border-bottom:1px solid var(--ctp-bdr); position:sticky; top:0; z-index:1; }
.table thead th:first-child,.table thead th:last-child { border-radius:0; }
.table tbody td { padding:12px 16px; border-bottom:1px solid var(--ctp-bdr); color:var(--ctp-tx); }
.table tbody tr:hover td { background:var(--ctp-hover); }
.table td strong { color:var(--ctp-tx); font-weight:700; }
.row-clickable { cursor:pointer; } .row-clickable:hover td strong { color:var(--ctp-accent); text-decoration:underline; }
.mono { font-family:'Plus Jakarta Sans',ui-monospace,Menlo,monospace; font-variant-numeric:tabular-nums; }
.text-dim,.muted { color:var(--ctp-tx-muted); }
/* tablekit sortable header */
th.tk-sort a { color:inherit; text-decoration:none; display:inline-flex; align-items:center; gap:5px; }
th.tk-sort a::after { content:"\2191\2193"; font-size:10px; letter-spacing:-2px; opacity:.45; }
th.tk-sort.asc a::after { content:"\2191"; letter-spacing:0; opacity:1; color:var(--ctp-accent); }
th.tk-sort.desc a::after { content:"\2193"; letter-spacing:0; opacity:1; color:var(--ctp-accent); }
/* tablekit pager */
.tk-pager { display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; padding:12px 16px; border-top:1px solid var(--ctp-bdr); font-size:13px; color:var(--ctp-tx-muted); }
.tk-links { display:flex; gap:4px; }
.tk-links a,.tk-links span { min-width:32px; height:32px; padding:0 8px; border-radius:8px; border:1px solid var(--ctp-bdr); background:var(--ctp-card); color:var(--ctp-tx); font-size:13px; font-weight:600; display:inline-flex; align-items:center; justify-content:center; text-decoration:none; }
.tk-links a:hover { background:var(--ctp-hover); }
.tk-links .on { background:var(--ctp-accent); border-color:var(--ctp-accent); color:#fff; }
.tk-links .dis { opacity:.4; pointer-events:none; } .tk-links .dots { border:0; background:transparent; color:var(--ctp-tx-muted); }

/* ---------- notes ---------- */
.note { border-radius:10px; font-size:13px; padding:10px 14px; border:1px solid var(--ctp-bdr); background:var(--ctp-card); color:var(--ctp-tx-2); }
body[data-ctp-theme="light"] .note.ok { background:#ecfdf3; border-color:#bbf7d0; color:#15803d; }
body[data-ctp-theme="light"] .note.err { background:#fef2f2; border-color:#fecaca; color:#b91c1c; }
body[data-ctp-theme="light"] .note.warn { background:#fffbeb; border-color:#fde68a; color:#b45309; }
body[data-ctp-theme="light"] .note.info { background:#eff6ff; border-color:#bfdbfe; color:#1d4ed8; }

/* ---------- modals / toasts ---------- */
.modal { border-radius:var(--rm-radius); box-shadow:0 8px 32px rgba(0,0,0,.13); border:0; }
.modal-head,.modal-foot { background:var(--ctp-card); }
.toast { border-radius:12px; box-shadow:0 8px 32px rgba(0,0,0,.13); }

/* ---------- login ---------- */
.login-body { background:#f3f5f9; }
.login-bg { position:fixed; inset:0; z-index:0; pointer-events:none; } .login-bg svg { width:100%; height:100%; }
.login-wrap { position:relative; z-index:1; }
.login-card { width:100%; max-width:400px; background:#fff; border:0; border-radius:var(--rm-radius); box-shadow:var(--rm-shadow); padding:32px 32px 26px; }
.login-logo { text-align:center; margin-bottom:22px; padding-bottom:18px; border-bottom:1px solid var(--ctp-bdr); } .login-logo img { max-height:44px; }
.login-h { font-size:16px; font-weight:700; margin:0 0 4px; text-align:center; } .login-s { font-size:13px; color:var(--ctp-tx-muted); margin:0 0 18px; text-align:center; }
.login-card .field { margin-top:14px; } .login-card .input { height:42px; padding-left:40px; }
.login-fld { position:relative; } .login-fld .ico { position:absolute; left:12px; top:12px; color:var(--ctp-accent); pointer-events:none; }
.login-fld .eye { position:absolute; right:6px; top:6px; width:30px; height:30px; border:0; background:none; color:#8b93a1; cursor:pointer; border-radius:7px; display:flex; align-items:center; justify-content:center; } .login-fld .eye:hover { color:var(--ctp-tx); background:var(--ctp-hover); }
.login-rem { display:flex; align-items:center; gap:9px; margin-top:16px; font-size:13px; color:var(--ctp-tx-2); cursor:pointer; user-select:none; }
.login-rem input { width:17px; height:17px; accent-color:var(--ctp-accent); margin:0; cursor:pointer; }
.login-card .btn-primary { height:44px; margin-top:20px; font-size:14px; }
.login-note { text-align:center; font-size:11.5px; color:#8b93a1; margin-top:20px; padding-top:14px; border-top:1px solid var(--ctp-bdr); }
.login-top { position:fixed; top:16px; right:16px; z-index:2; display:flex; gap:8px; }

/* ---------- responsive ---------- */
@media (max-width:1199px) {
  .topbar { margin:8px 10px 0; padding:0 10px; min-height:60px; }
  .content { padding:14px 10px 40px; }
  .tb-broker { display:none; }
  .card-head,.card-body { padding-left:16px; padding-right:16px; }
  .table thead th,.table tbody td { padding-left:12px; padding-right:12px; }
  .card > .table,.card-body > .table { display:block; overflow-x:auto; }
}


/* =====================================================================
   LIGHT-ONLY MODE + LOGO-GOLD BRAND OVERRIDE
   Keep this file loaded after style.css. This intentionally neutralizes
   any remaining data-ctp-theme="dark" state without requiring style.css
   or app.js changes.
   ===================================================================== */
:root,
body,
body[data-ctp-theme="light"],
body[data-ctp-theme="dark"] {
  color-scheme: light !important;
  --ctp-tx:#111827; --ctp-tx-2:#374151; --ctp-tx-muted:#5f6b7a; --ctp-tx-dim:#8b93a1;
  --ctp-bdr:#e5e7eb; --ctp-card:#ffffff; --ctp-card-2:#ffffff; --ctp-inp-bg:#ffffff;
  --ctp-hover:#f7f3ec; --ctp-bg-heavy:#f1eee8; --ctp-bg:#f8fafd;
  --ctp-toggle-off:#e5e7eb;
  --ctp-sidebar-bg:#ffffff; --ctp-topbar-bg:#ffffff; --ctp-header-bar-bg:#f1eee8;
  --ctp-row-bg:#ffffff; --ctp-row-bg-alt:#ffffff; --ctp-empty-bg:#f8fafd; --ctp-tag-border:#e5e7eb;
  --ctp-accent:var(--brand); --ctp-btn-primary:var(--brand); --ctp-btn-primary-hover:var(--brand-dark);
  --ctp-accent-subtle:var(--brand-subtle); --ctp-accent-border:var(--brand-border);
  --ctp-info:#1d4ed8; --ctp-ok:#15803d; --ctp-warn:#b45309; --ctp-warn-2:#b45309; --ctp-err:#b91c1c;
  --ctp-ok-bright:#16a34a; --ctp-warn-bright:#d97706; --ctp-err-bright:#dc2626;
  --ctp-modal-back:rgba(17,24,39,.45); --ctp-modal-head-bg:#ffffff; --ctp-modal-foot-bg:#f8fafd;
  --rm-shadow:0 2px 6px rgba(37,83,185,.10);
}

/* Always use the light-background logo assets, even if old markup/JS
   leaves data-ctp-theme="dark" on <body>. */
body .brand-img-dark,
body .login-logo-dark { display:none !important; }
body .sidebar:not(.collapsed) .brand-img-logo.brand-img-light { display:block !important; }
body .sidebar.collapsed .brand-img-favicon.brand-img-light { display:block !important; }
body .login-logo-img.login-logo-light { display:block !important; }

/* Native controls must also stay in light mode. */
body input[type="date"],
body input[type="datetime-local"],
body input[type="time"] { color-scheme:light !important; }
body ::-webkit-calendar-picker-indicator { filter:none !important; opacity:.7; }

/* Gold works best with dark foreground text. */
.btn-primary,
.nav-item.active .nav-icon,
.segmented .seg.active { color:#111827 !important; }
