    :root { color-scheme: light dark;
            --pos: #1a8d3e;   /* positive / inflow amounts */
            --neg: #d11; }    /* negative / outflow amounts, reconcile badge */
    body { font-family: -apple-system, system-ui, sans-serif; margin: 0; font-size: 14px;
           background: var(--tg-theme-bg-color, #fff); color: var(--tg-theme-text-color, #111);
           /* respect the notch / home indicator on phones */
           padding: max(8px, env(safe-area-inset-top)) max(8px, env(safe-area-inset-right))
                    calc(16px + env(safe-area-inset-bottom)) max(8px, env(safe-area-inset-left)); }
    /* iOS auto-zooms a focused input whose font is < 16px — kill that jump on FORM
       inputs AND on every editable table cell (rate board, shift recount, wallet/referral
       edits). Width stays in ch so fields stay character-bounded; the table scrolls
       horizontally anyway, so the only effect is a slightly larger, more tappable cell. */
    .frow input, .frow select, .frow textarea, #f-q, #docs-q, #wc-ref,
    td input, td select, td textarea { font-size: 16px; }
    #hdr { display:flex; justify-content:space-between; align-items:center; gap:8px;
           margin-bottom:6px; }
    /* §audit rank-11: the tenant chip ellipsizes on narrow phones so it never squeezes/clips the
       action buttons; the tools cluster is fixed-size and never shrinks. */
    #tenant { font-weight:600; min-width:0; flex:1 1 auto; overflow:hidden; }
    /* §ui: cabinet switcher reads as a tappable workspace chip (Slack/Notion-style). */
    .tn-switch { display:inline-flex; align-items:center; gap:5px; padding:3px 9px; border-radius:9px;
        background:var(--tg-theme-secondary-bg-color,#eee); max-width:100%;
        white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
    .tn-caret { opacity:.55; font-size:11px; }
    #hdr-tools { display:inline-flex; align-items:center; gap:6px; flex:0 0 auto; }
    .hdr-btn { font:inherit; border:none; background:none; cursor:pointer; font-size:15px; padding:2px; }
    /* §audit rank-4: global search is a LABELED pill, not a bare 15px emoji lost in the header. */
    #search-btn.hdr-search { display:inline-flex; align-items:center; gap:4px; font-size:13px; font-weight:600;
        background:var(--tg-theme-secondary-bg-color,#eee); border-radius:9px; padding:5px 11px; min-height:30px; }
    #status { color:var(--tg-theme-hint-color,#888); font-size:12px; flex:0 0 auto; }
    .wrap { overflow:auto; -webkit-overflow-scrolling:touch; }
    table { border-collapse: collapse; width: max-content; min-width:100%; }
    /* §visual-refresh (owner 2026-07-04): drop the per-cell grid («Excel» look) — only a faint row
       divider + roomier padding + tabular figures, so tables read as a modern list. */
    th, td { border: none; border-bottom: 1px solid var(--tg-theme-hint-color,#ececec);
        padding: 8px 11px; white-space: nowrap; text-align: right;
        font-variant-numeric: tabular-nums; }
    th { position: sticky; top: 0; background: var(--tg-theme-secondary-bg-color,#f6f6f6);
         font-weight:600; font-size:12px; border-bottom:1px solid var(--tg-theme-hint-color,#e0e0e0); }
    /* §design-frame (owner 2026-07-05): the borderless list went too far — columns blended and the
       table had no perimeter. Give the MAIN data grid a rounded, softly-elevated frame and GENTLE
       vertical dividers between its own columns (theme-neutral rgba so it reads clean in light+dark,
       not a heavy «Excel» grid). Scoped to #grid's own rows via the child combinator so nested editor
       tables (Маржа/Тарифы cells) and single-cell prose rows are untouched. */
    #grid { border-collapse: separate; border-spacing: 0; overflow: hidden;
        border: 1px solid var(--tg-theme-hint-color,#e2e2e2); border-radius: 12px;
        box-shadow: 0 1px 3px rgba(0,0,0,.05); }
    #grid > thead > tr > th:not(:last-child),
    #grid > tbody > tr > td:not(:last-child) { border-right: 1px solid rgba(128,128,128,.13); }
    /* last row's divider is redundant against the frame's bottom edge */
    #grid > tbody > tr:last-child > td { border-bottom: none; }
    td.txt, th.txt { text-align: left; }
    td.ro { color:var(--tg-theme-hint-color,#888); }
    input { width: 9ch; border:none; background:transparent; color:inherit;
            font: inherit; text-align:right; }
    input.cm { width: 16ch; text-align:left; }
    /* Rate-board cells must LOOK editable (the default table input is borderless). */
    input.rbi { border:1px solid var(--tg-theme-hint-color,#9aa); background: var(--tg-theme-bg-color,#fff);
            border-radius:6px; padding:4px 5px; text-align:right; }
    input.rbi:focus { outline:none; border-color: var(--tg-theme-link-color,#3390ec); }
    /* Overview header: headline live figures, each tappable. */
    .ovh { display:flex; flex-wrap:wrap; gap:6px; margin-bottom:8px; }
    /* Form inputs: bigger touch height on mobile. */
    .frow > input, .frow > select { min-height:38px; }
    .tab { min-height:38px; }
    .tab .ti { font-size:15px; line-height:1; }
    .ovt { flex:1 1 auto; min-width:88px; border:none; border-radius:10px; padding:8px 5px; cursor:pointer; font:inherit;
           background: var(--tg-theme-secondary-bg-color,#f1f1f1); color: var(--tg-theme-text-color,#000); text-align:center; }
    .ovl { font-size:11px; opacity:.7; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
    .ovv { font-size:16px; font-weight:700; margin-top:2px; white-space:nowrap;
           overflow:hidden; text-overflow:ellipsis; max-width:100%; }
    /* §audit rank-5: the «Итого ≈USDT» net-worth hero — full-width, gradient, the one big number on top. */
    .ovt-hero { flex:1 1 100%; background:linear-gradient(135deg,#3390ec,#1f6fd0); color:#fff; padding:11px 12px; text-align:left; }
    .ovt-hero .ovl { opacity:.85; font-size:12px; }
    .ovt-hero .ovv { font-size:26px; }
    /* Form fields (new-deal form, modals) type left-to-right; table inputs stay right. */
    .frow input { text-align:left; }
    input:focus, select:focus { outline: 1px solid var(--tg-theme-link-color,#3390ec); border-radius:3px; }
    select { border:none; background:transparent; color:inherit; font:inherit; max-width: 14ch; }
    .ok { background: #2ecc7133; } .err { background: #e74c3c44; }
    td.acts { white-space: nowrap; text-align: center; }
    button.act { font: inherit; padding: 2px 7px; margin: 0 1px; border: none; border-radius: 6px;
        cursor: pointer; background: var(--tg-theme-secondary-bg-color,#e6e6e6); color: inherit; }
    body.lite button.act { min-height: 38px; padding: 8px 10px; }
    body.lite .dc-sel { width: 22px; height: 22px; }
    button.act:disabled { opacity: .5; }
    /* Tabs wrap on narrow screens; NOT sticky (it conflicted with the tables' own
       sticky column headers). */
    #tabs { display:flex; flex-wrap:wrap; gap:6px; margin-bottom:8px; }
    .tab { font:inherit; padding:6px 14px; border:none; border-radius:8px; cursor:pointer;
        background: var(--tg-theme-secondary-bg-color,#eee); color:inherit;
        display:inline-flex; align-items:center; gap:5px; }
    .tab.active { background: var(--tg-theme-button-color,#3390ec); color: var(--tg-theme-button-text-color,#fff); font-weight:600; }
    /* Phone (lite): #tabs becomes a fixed native-style BOTTOM nav bar (max 5 slots,
       Telegram-style) — Дашборд centred and raised; overflow goes to «⋯ Ещё». */
    body.lite #tabs { display:flex; position:fixed; left:0; right:0; bottom:0; z-index:40;
        gap:0; margin:0; flex-wrap:nowrap; overflow:visible;
        background:var(--tg-theme-bg-color,#fff);
        border-top:1px solid var(--tg-theme-hint-color,#e2e2e2);
        padding:5px max(4px,env(safe-area-inset-left))
                calc(5px + env(safe-area-inset-bottom)) max(4px,env(safe-area-inset-right)); }
    body.lite #tabs .tab { flex:1 1 0; min-width:54px; min-height:auto;
        flex-direction:column; gap:2px; padding:5px 2px; border-radius:10px;
        background:none; color:var(--tg-theme-hint-color,#888);
        font-size:10px; line-height:1.1; font-weight:500; white-space:nowrap; }
    body.lite #tabs .tab .ti { font-size:21px; }
    body.lite #tabs .tab .tl { max-width:62px; overflow:hidden; text-overflow:ellipsis; }
    body.lite #tabs .tab.active { background:none; font-weight:600;
        color:var(--tg-theme-link-color,#3390ec); }
    /* keep only the 4 primary slots + «Ещё» in the bar; the rest live in the sheet */
    body.lite #tab-b2b, body.lite #tab-settings, body.lite #tab-platform,
    body.lite #tab-docs { display:none !important; }
    body.lite #tab-more { display:inline-flex !important; }
    /* Pro declutter: the secondary tabs (B2B network, platform, help) move into the «⋯ Ещё»
       overflow too, so the Pro tab row isn't a wall. Кабинет stays a primary tab (used often).
       🏪 Маркетплейс is a primary tab now (owner wants it visible, not buried in «⋯ Ещё»). */
    body.pro #tab-platform,
    body.pro #tab-docs { display:none !important; }
    body.pro #tab-more { display:inline-flex !important; }
    /* order so Дашборд sits in the middle */
    body.lite #tab-deals { order:1; } body.lite #tab-ledger { order:2; }
    body.lite #tab-dash { order:3; } body.lite #tab-refs { order:4; }
    body.lite #tab-more { order:5; }
    /* centred Дашборд — a gentle accent circle (not a big FAB) */
    body.lite #tab-dash .ti { background:var(--tg-theme-button-color,#3390ec);
        color:var(--tg-theme-button-text-color,#fff); width:34px; height:34px;
        border-radius:50%; display:flex; align-items:center; justify-content:center;
        margin-top:-6px; box-shadow:0 2px 6px rgba(51,144,236,.35); font-size:18px; }
    body.lite #tab-dash.active .ti { box-shadow:0 2px 9px rgba(51,144,236,.55); }
    /* «⋯ Ещё» bottom sheet */
    #more-sheet { position:fixed; left:0; right:0;
        bottom:calc(60px + env(safe-area-inset-bottom)); z-index:60;
        background:var(--tg-theme-bg-color,#fff); border-radius:16px 16px 0 0;
        box-shadow:0 -4px 20px rgba(0,0,0,.18); padding:8px 10px 12px; }
    /* Pro has no bottom bar — sit the sheet at the bottom edge */
    body.pro #more-sheet { bottom: env(safe-area-inset-bottom); }
    #more-sheet .ms-item { display:flex; align-items:center; gap:12px; width:100%;
        font:inherit; font-size:15px; border:none; background:none; color:inherit;
        padding:13px 10px; border-radius:10px; cursor:pointer; text-align:left; }
    #more-sheet .ms-item:active { background:var(--tg-theme-secondary-bg-color,#f1f1f1); }
    #more-sheet .ms-ico { font-size:20px; width:26px; text-align:center; }
    /* keep page content clear of the fixed bottom bar */
    body.lite { padding-bottom:calc(62px + env(safe-area-inset-bottom)); }
    .doc-sec { border:1px solid var(--tg-theme-hint-color,#e0e0e0); border-radius:8px; margin-bottom:6px; overflow:hidden; }
    .doc-h { display:block; width:100%; text-align:left; font:inherit; font-weight:600; padding:9px 11px; border:none; cursor:pointer;
      background: var(--tg-theme-secondary-bg-color,#f1f1f1); color: var(--tg-theme-text-color,#000); }
    .doc-b { padding:4px 12px 10px; font-size:14px; line-height:1.45; }
    .doc-b code { background: var(--tg-theme-secondary-bg-color,#eee); padding:1px 4px; border-radius:4px; }
    /* freeze the first column (№ / name) while scrolling horizontally */
    #grid td:first-child, #grid th:first-child { position: sticky; left: 0; z-index: 1;
        background: var(--tg-theme-bg-color,#fff); }
    #grid th:first-child { z-index: 3; background: var(--tg-theme-secondary-bg-color,#f2f2f2); }
    /* Deals registry (▥): dense table mode with quick filters, frozen first 3 columns and zebra rows. */
    #deals-cards.registry-mode { width:100%; display:block; }
    body.pro #deals-cards.registry-mode { display:block; }  /* override Pro card-grid layout */
    .reg-top { margin-bottom:8px; }
    .reg-top-row { margin-bottom:4px; }
    .reg-qf, .reg-hist { display:flex; gap:6px; flex-wrap:wrap; margin-bottom:4px; }
    .reg-meta { margin-top:2px; }
    .reg-qf .rk, .reg-hq { min-height:34px; padding:6px 10px; font-size:13px; }
    #grid.deals-registry > tbody > tr:nth-child(even) > td { background: rgba(127,127,127,.06); }
    #grid.deals-registry > tbody > tr:nth-child(even) > td.reg-freeze { background: rgba(127,127,127,.1); }
    #grid.deals-registry mark { background:#ffd54f99; color:inherit; border-radius:3px; padding:0 2px; }
    /* disable generic first-column freeze; registry freezes 3 explicit columns below */
    #grid.deals-registry td:first-child, #grid.deals-registry th:first-child { left:auto; }
    #grid.deals-registry .reg-freeze {
        position:sticky; z-index:2; background:var(--tg-theme-bg-color,#fff);
        overflow:hidden; text-overflow:ellipsis; box-sizing:border-box;
    }
    #grid.deals-registry > thead > tr > th.reg-freeze {
        z-index:4; background:var(--tg-theme-secondary-bg-color,#f2f2f2);
    }
    #grid.deals-registry .reg-freeze-1 { left:0; min-width:56px; max-width:72px; width:56px; }
    #grid.deals-registry .reg-freeze-2 { left:56px; min-width:142px; max-width:158px; width:142px; }
    #grid.deals-registry .reg-freeze-3 { left:198px; min-width:92px; max-width:108px; width:92px; }
    .reg-colpick-wrap { max-height:52vh; overflow:auto; margin-top:6px;
        border:1px solid var(--tg-theme-hint-color,#ddd); border-radius:8px; padding:2px 10px; }
    .reg-colpick { margin-bottom:2px; }
    .reg-colpick input { width:auto; }
    .reg-colpick .reg-ecol-wrap { flex:0 0 auto; }
    .reg-colpick.reg-colpick-linked .reg-ecol-wrap { display:none; }
    .reg-layout-row { display:flex; gap:4px; margin:4px 0; flex-wrap:wrap; }
    .reg-stack { display:flex; flex-direction:column; gap:8px; margin-top:8px; }
    .reg-stack-card {
        border:1px solid var(--tg-theme-hint-color,#e0e0e0); border-radius:10px;
        padding:10px 12px; cursor:pointer; background:var(--tg-theme-bg-color,#fff);
    }
    .reg-stack-card:active { background:var(--tg-theme-secondary-bg-color,#f3f3f3); }
    .reg-stack-head { font-weight:600; font-size:14px; margin-bottom:4px; line-height:1.35; }
    .reg-stack-sub { font-size:13px; opacity:.85; margin-bottom:4px; line-height:1.35; word-break:break-word; }
    .reg-stack-tags { display:flex; flex-wrap:wrap; gap:4px 8px; font-size:12px; }
    .reg-stack-tag { background:var(--tg-theme-secondary-bg-color,#f2f2f2); border-radius:6px; padding:2px 6px; }
    .reg-top { margin-bottom:6px; }
    #reg-top-host { margin-bottom:4px; }
    .reg-bar { display:flex; gap:6px; align-items:center; flex-wrap:wrap; }
    .reg-preset-sel { flex:1; min-width:110px; max-width:200px; min-height:36px; }
    .reg-seg { display:flex; gap:0; border-radius:9px; overflow:hidden; }
    .reg-seg .rk { border-radius:0; min-height:36px; padding:6px 10px; font-size:13px; }
    .reg-bar-actions { display:flex; gap:4px; flex-wrap:wrap; margin-left:auto; }
    .reg-bar-actions .rk { min-height:36px; padding:6px 10px; font-size:14px; }
    /* chips stay on ONE line and scroll sideways — no 3-row stack on a phone */
    .reg-chips { display:flex; gap:4px; flex-wrap:nowrap; overflow-x:auto;
        -webkit-overflow-scrolling:touch; margin-top:6px; align-items:center;
        padding-bottom:2px; scrollbar-width:none; }
    .reg-chips::-webkit-scrollbar { display:none; }
    .reg-chip { flex:0 0 auto; min-height:32px; padding:5px 9px; font-size:12px; border-radius:16px; white-space:nowrap; }
    .reg-chip.active { background:var(--tg-theme-button-color,#3390ec); color:var(--tg-theme-button-text-color,#fff); }
    .reg-clear-f { flex:0 0 auto; font-size:12px; opacity:.75; min-height:32px; padding:5px 8px; white-space:nowrap; }
    .reg-hist { display:flex; gap:4px; flex-wrap:wrap; margin-top:6px; }
    /* filters modal: aligned 3-column grid (name | on | pin) */
    .reg-fpick { display:grid; grid-template-columns:1fr 44px 56px; align-items:center;
        gap:6px; min-height:40px; border-bottom:1px solid var(--tg-theme-hint-color,#eee); }
    .reg-fpick:last-child { border-bottom:none; }
    .reg-fpick-head { min-height:28px; font-size:12px; opacity:.7; border-bottom:none;
        margin-top:6px; padding:0 12px; }
    .reg-fpick-head .reg-fpick-cb { text-align:center; }
    .reg-fpick-name { line-height:1.3; }
    .reg-fpick-kind { display:block; font-size:11px; color:var(--tg-theme-hint-color,#999); }
    .reg-fpick-cb { display:flex; justify-content:center; }
    .reg-fpick-cb input { width:20px; height:20px; margin:0; }
    .reg-fpick-wrap { padding:2px 12px; }
    body.registry-fullscreen #hdr,
    body.registry-fullscreen #tabs,
    body.registry-fullscreen #dash,
    body.registry-fullscreen #filters,
    body.registry-fullscreen #deal-bar,
    body.registry-fullscreen #new-wrap,
    body.registry-fullscreen #lite-back,
    body.registry-fullscreen #bulk-bar { display:none !important; }
    body.registry-fullscreen #grid-wrap { margin:0; max-width:none; }
    body.registry-fullscreen #deals-cards.registry-mode { padding:8px 10px 16px; }
    body.registry-fullscreen #reg-top-host { position:sticky; top:0; z-index:5;
        background:var(--tg-theme-bg-color,#fff); padding:8px 10px 6px;
        border-bottom:1px solid var(--tg-theme-hint-color,#e8e8e8); }
    .reg-stack-grid {
        display:grid; grid-template-columns:minmax(110px, 38%) 1fr; gap:3px 10px;
        font-size:13px; line-height:1.4;
    }
    .reg-sk { color:var(--tg-theme-hint-color,#777); }
    .reg-sv { word-break:break-word; overflow-wrap:anywhere; }
    body.registry-stack-mode #grid-wrap .wrap,
    body.registry-stack-mode #grid-wrap { overflow-x:visible; }
    .pager-row.pager-bottom { margin-top:10px; }
    /* references */
    #refs-bar { margin-bottom:8px; }
    #ref-kinds { display:flex; gap:6px; flex-wrap:wrap; margin-bottom:6px; }
    #refs-bar .ref-add-row { gap:0; border:1px solid var(--tg-theme-hint-color,#d7dbe2);
        border-radius:10px; overflow:hidden; background:var(--tg-theme-bg-color,#fff); }
    #refs-bar .ref-add-row > input { border:none; background:transparent; padding:0 10px; min-height:38px; }
    #refs-bar .ref-add-row > button { border-radius:0; margin:0; min-width:110px; }
    /* Action chips (refs / ledger / platform / dashboard): comfortable mobile tap target. */
    .rk { font:inherit; padding:9px 13px; min-height:38px; line-height:1.15; border:none;
        border-radius:9px; cursor:pointer; background: var(--tg-theme-secondary-bg-color,#eee);
        color:inherit; }
    .rk:disabled { opacity:.5; }
    .rk.active { background: var(--tg-theme-button-color,#3390ec); color: var(--tg-theme-button-text-color,#fff); }
    /* §ui design-system: action chips — a neutral pill + a severity-coloured LEFT edge instead of
       10 clashing fills. alert = problem, warn = needs you / money owed, info = work / opportunity. */
    .rk.chip-alert { border-left:3px solid var(--neg,#d11); }
    .rk.chip-warn  { border-left:3px solid #e6a23c; }
    .rk.chip-info  { border-left:3px solid var(--tg-theme-button-color,#3390ec); }
    .rk.chip-alert b, .rk.chip-warn b, .rk.chip-info b { font-variant-numeric:tabular-nums; }
    /* Ledger sheet picker: 3 groups on top, the active group's sheets below (wrap, no h-scroll). */
    #led-sheets { display:block; overflow:visible; }
    .led-grps { display:flex; gap:6px; margin-bottom:6px; flex-wrap:wrap; }
    /* §ui: второй ряд — ПОДЧИНЁННЫЕ листы группы: отступ + линия слева и чуть мельче,
       чтобы два ряда чипов не читались как один сплошной. */
    .led-shs { display:flex; gap:6px; flex-wrap:wrap; margin-left:4px; padding-left:8px;
        border-left:2px solid var(--tg-theme-hint-color,#dfe3e8); }
    .led-shs .rk { font-size:13px; min-height:34px; padding:7px 11px; }
    .rk.grp { font-weight:600; }
    /* Drill-down rows: tap an asset/position row to see its movements. */
    tr.drill { cursor:pointer; }
    tr.drill:active td { background: var(--tg-theme-secondary-bg-color,#eee); }
    tr.drill td:first-child { color: var(--tg-theme-link-color,#3390ec); }
    #ref-add { flex:1; min-width:0; }
    button.del { font:inherit; padding:2px 8px; border:none; border-radius:6px; cursor:pointer;
        background:#e74c3c33; }
    button.del:disabled { opacity:.4; cursor:default; }
    .badge { font-size:11px; padding:1px 6px; border-radius:8px; background:#8884; }
    /* dashboard */
    #dash { margin-bottom:8px; }
    .cards { display:flex; gap:6px; overflow-x:auto; padding-bottom:2px; }
    .kc { flex:0 0 auto; min-width:84px; padding:6px 10px; border-radius:10px;
          background: var(--tg-theme-secondary-bg-color,#f2f2f2); }
    .kl { font-size:11px; color:var(--tg-theme-hint-color,#888); }
    .kv { font-size:16px; font-weight:700; }
    .fin { font-size:12px; color:var(--tg-theme-hint-color,#777); margin-top:4px; white-space:nowrap;
           overflow-x:auto; }
    /* deals as compact cards (no horizontal scroll on a phone) */
    #deals-cards { width:100%; }
    .dcard { border:1px solid var(--tg-theme-hint-color,#e0e0e0); border-radius:10px; padding:9px 11px;
             margin-bottom:7px; cursor:pointer; background: var(--tg-theme-bg-color,#fff); }
    .dcard:active { background: var(--tg-theme-secondary-bg-color,#f1f1f1); }
    .dc-top { display:flex; align-items:center; gap:8px; }
    .dc-num { font-weight:700; }
    .dc-badge { font-size:12px; padding:1px 8px; border-radius:8px; background: var(--tg-theme-secondary-bg-color,#eee); }
    .dc-net { margin-left:auto; font-weight:700; font-size:13px; white-space:nowrap; }
    .dc-sub { font-size:14px; margin-top:4px; white-space:normal; }
    .dc-acts { margin-top:7px; display:flex; gap:4px; flex-wrap:wrap; }
    /* §bulk: Pro multi-select — per-card checkbox + sticky action bar */
    .dc-sel { width:18px; height:18px; margin:0 2px 0 0; flex:0 0 auto; cursor:pointer; }
    #deals-bulk { position:sticky; top:0; z-index:30; display:flex; align-items:center;
        gap:6px; flex-wrap:wrap; margin-bottom:8px; padding:8px 10px; border-radius:10px;
        background:var(--tg-theme-secondary-bg-color,#eef2f7);
        box-shadow:0 2px 10px rgba(0,0,0,.12); }
    /* contact cards (mobile-friendly references list) */
    .rcard { border:1px solid var(--tg-theme-hint-color,#e0e0e0); border-radius:10px; padding:10px 11px;
             margin-bottom:7px; background: var(--tg-theme-bg-color,#fff); }
    #refs-list { margin-top:8px; }
    /* filters */
    #filters { display:flex; flex-wrap:wrap; gap:6px; margin-bottom:8px; }
    #filters > input { flex:1 1 100%; }  /* search gets its own full-width row on phones */
    #filters select, #filters input { font:inherit; padding:5px 8px; border-radius:8px;
        border:1px solid #8883; background:var(--tg-theme-bg-color,#fff); color:inherit; }
    #f-q { flex:1; min-width:0; }
    /* new-deal form */
    #new-btn { font:inherit; padding:5px 10px; border-radius:8px; border:none; font-weight:600;
        background: var(--tg-theme-button-color,#3390ec); color: var(--tg-theme-button-text-color,#fff); }
    #form { display:none; margin-bottom:8px; padding:10px; border-radius:10px;
        background: var(--tg-theme-secondary-bg-color,#f2f2f2); }
    .frow { display:flex; align-items:center; gap:8px; margin-bottom:6px; }
    .frow > label { flex:0 0 36%; font-size:12px; color:var(--tg-theme-hint-color,#777); }
    .frow > input, .frow > select { flex:1; min-width:0; font:inherit; padding:5px 8px;
        border-radius:8px; border:1px solid #8883; background:var(--tg-theme-bg-color,#fff); color:inherit; }
    .frow.req > label { color: inherit; font-weight:600; }
    .fbtns { display:flex; gap:8px; margin-top:8px; }
    .fbtns button { flex:1; font:inherit; padding:8px; border-radius:8px; border:none; font-weight:600; }
    #nf-submit { background: var(--tg-theme-button-color,#3390ec); color: var(--tg-theme-button-text-color,#fff); }
    #nf-cancel { background:#8883; color:inherit; }
    /* §opt deal form: inline validation (required field left empty) + sticky submit row */
    .nf-missing { border-color:#d11 !important; box-shadow:0 0 0 1px #d11 inset; }
    .nf-actions-sticky { position:sticky; bottom:0; z-index:5; padding-top:8px; margin-top:8px;
        background:var(--tg-theme-secondary-bg-color,#f2f2f2); }
    /* §opt queue: «Открытые заявки» split into pending / ready-to-dispatch sections */
    .req-section-h { font-weight:600; font-size:13px; color:var(--tg-theme-hint-color,#888);
        margin:12px 2px 6px; }
    .req-section-h:first-child { margin-top:2px; }
    /* §19: dashboard info panel — compact tables, 2-col grid in Pro */
    .dash-sec { border:1px solid var(--tg-theme-hint-color,#e0e0e0); border-radius:10px;
        padding:8px 10px; margin-top:8px; background:var(--tg-theme-bg-color,#fff); }
    /* §visual-refresh v2 (owner 2026-07-04): lift the card set — a soft shadow + a fainter border +
       a slightly rounder corner reads as depth, not a flat bordered box. One rule for all cards. */
    .dcard, .rcard, .dash-sec, .doc-sec {
        border-color: var(--tg-theme-hint-color,#ededed); border-radius:12px;
        box-shadow: 0 1px 3px rgba(0,0,0,.05), 0 1px 2px rgba(0,0,0,.03); }
    /* §visual-refresh v2: sheet-picker hierarchy — the group row stays solid; the 2nd-row sub-sheets
       become quiet OUTLINE chips so two chip rows don't read as one grey wall. Active still pops blue. */
    .led-shs .rk:not(.active) { background:transparent;
        box-shadow: inset 0 0 0 1px var(--tg-theme-hint-color,#e2e2e2);
        color: var(--tg-theme-hint-color,#777); }
    /* collapsible section header (dashboard / settings / deal card) */
    .collap-h { display:flex; align-items:center; gap:6px; cursor:pointer;
        font-weight:600; user-select:none; }
    .collap-h .caret { transition:transform .15s; font-size:11px; opacity:.6; }
    .collap.closed .caret { transform:rotate(-90deg); }
    .collap.closed .collap-body { display:none; }
    /* §личный кабинет: each section a distinct card so dense settings don't blend.
       §ui: «Платформа» получает тот же карточный язык — раньше это был голый список ▸-строк. */
    #settings-bar .collap, #platform-bar .collap { border:1px solid var(--tg-theme-hint-color,#e4e4e4);
        border-radius:12px; margin-bottom:8px; padding:11px 13px;
        background:var(--tg-theme-bg-color,#fff); }
    #settings-bar .collap-h, #platform-bar .collap-h { font-size:15px; }
    #settings-bar .collap.closed, #platform-bar .collap.closed { padding-bottom:11px; }
    /* §ui: в конфиге платформы подписи полей выравниваются в колонку (карточное исключение
       с label:auto давало рваную сетку из десятка инпутов). */
    body.pro #platform-bar .rcard .frow > label { flex:0 0 220px; min-width:0; }
    body.pro #platform-bar .rcard .frow > input { flex:0 1 380px; }
    /* липкая кнопка сохранения длинного конфига — не скролить обратно вниз/вверх */
    .pf-sticky-save { position:sticky; bottom:0; z-index:5; padding:8px 0 2px;
        background:var(--tg-theme-bg-color,#fff); }
    /* §ui: владелец платформы держит «Платформа» первоклассным табом на десктопе */
    body.pro.pf-owner #tab-platform { display:inline-flex !important; }
    /* §ui: подпись поля с расшифровкой — пунктир, тап показывает пояснение */
    .fh-l { text-decoration:underline dotted; text-underline-offset:2px; cursor:help; }
    /* header Lite/Pro switch */
    #ui-switch { font:inherit; border:none; background:none; cursor:pointer;
        font-size:16px; padding:2px 4px; }
    table.mini { width:100%; border-collapse:collapse; }
    table.mini th, table.mini td { border:none; border-bottom:1px solid #8882;
        padding:4px 6px; font-size:13px; white-space:normal; }
    table.mini th { position:static; background:transparent; font-size:11px;
        color:var(--tg-theme-hint-color,#888); text-align:right; }
    table.mini th.txt { text-align:left; }
    table.mini tr:last-child td { border-bottom:none; }
    .dash-grid { display:block; }
    body.pro .dash-grid { display:grid; grid-template-columns:repeat(auto-fill, minmax(360px,1fr));
        gap:8px; align-items:start; }
    body.pro .dash-grid .dash-sec { margin-top:0; }
    /* §19 N+2 (Binance-style): LITE home — a few BIG tiles, headline balance,
       nothing else. body.lite hides the full tab bar; «🏠» returns home. */
    #lite-home { padding-top:6px; }
    .lh-balance { text-align:center; margin:14px 0 4px; }
    .lh-bal-label { font-size:12px; color:var(--tg-theme-hint-color,#888); }
    .lh-bal-value { font-size:34px; font-weight:800; letter-spacing:.5px; }
    .lh-sub { text-align:center; font-size:13px; color:var(--tg-theme-hint-color,#888);
        margin-bottom:14px; }
    .lh-tiles { display:grid; grid-template-columns:1fr 1fr; gap:10px; }
    .lh-tile { border:none; border-radius:16px; padding:18px 10px; font:inherit;
        font-size:15px; font-weight:600; cursor:pointer; min-height:88px;
        background:var(--tg-theme-secondary-bg-color,#f1f1f1); color:inherit;
        display:flex; flex-direction:column; align-items:center; justify-content:center;
        gap:6px; }
    .lh-tile .ico { font-size:26px; }
    .lh-tile.primary { background:var(--tg-theme-button-color,#3390ec);
        color:var(--tg-theme-button-text-color,#fff); }
    .lh-badge { font-size:12px; font-weight:400; opacity:.75; }
    /* lite home: «Сегодня» strip inside the gradient card */
    .lh-today { display:flex; gap:12px; align-items:baseline; margin-top:11px;
        font-size:13px; color:rgba(255,255,255,.92); }
    .lh-today:empty { display:none; }
    .lh-td-l { opacity:.8; } .lh-td-v { font-weight:700; }
    /* attention chips — tappable, each jumps to its queue */
    .lh-attn { display:flex; flex-wrap:wrap; gap:6px; justify-content:center; margin:0 2px 14px; }
    .lh-chip { font:inherit; font-size:13px; font-weight:500; border:none; cursor:pointer;
        padding:7px 12px; border-radius:999px; color:inherit;
        background:var(--tg-theme-secondary-bg-color,#f1f1f1); }
    .lh-chip b { font-weight:700; }
    .lh-chip:active { opacity:.65; }
    .lh-clear { display:block; text-align:center; font-size:13px;
        color:var(--tg-theme-hint-color,#888); }
    /* primary action full-width; «Режим Про» demoted to a subtle link */
    #lite-home > .lh-tile.primary { width:100%; box-sizing:border-box; margin-top:4px; }
    /* secondary full-width tiles on the home (Маркетплейс): shorter, row-style */
    #lite-home > .lh-tile:not(.primary) { width:100%; box-sizing:border-box; margin-top:8px;
        min-height:54px; flex-direction:row; gap:10px; font-size:15px; }
    #lite-home > .lh-tile:not(.primary) .ico { font-size:21px; }
    /* §ui: «Режим Про» / «Тема» выглядели серым текстом, а не кнопками — теперь это
       строки-настройки (пилюля + шеврон), явно нажимаемые. */
    .lh-prolink { display:flex; align-items:center; justify-content:center; gap:6px;
        width:100%; box-sizing:border-box; text-align:center;
        margin-top:10px; padding:11px; font:inherit; font-size:14px; border:none;
        border-radius:12px; background:var(--tg-theme-secondary-bg-color,#f1f1f1);
        cursor:pointer; color:inherit; }
    .lh-prolink::after { content:"›"; opacity:.45; font-size:16px; }
    .lh-prolink:active { opacity:.6; }
    /* lite home: balance as a BLOCK per currency, forms (Кеш/Б/н/Чек) inside; nil hidden */
    .lh-bal-h { font-size:12px; color:var(--tg-theme-hint-color,#888); margin:2px 4px 4px; }
    .lh-bal-blk { margin:0 2px 8px; border-radius:12px; overflow:hidden;
        border:1px solid var(--tg-theme-hint-color,#e4e4e4); }
    .lh-bal-cur { font-weight:700; font-size:13px; padding:7px 13px;
        background:var(--tg-theme-secondary-bg-color,#f4f4f4);
        letter-spacing:.3px; }
    .lh-bal-row { display:flex; justify-content:space-between; align-items:center;
        padding:8px 13px; font-size:14px; border-top:1px solid #8881; }
    .lh-bal-row .c { color:var(--tg-theme-hint-color,#888); }
    .lh-bal-row b { font-variant-numeric:tabular-nums; }
    #lite-back { display:none; font:inherit; border:none; border-radius:9px;
        padding:8px 14px; min-height:38px; cursor:pointer; margin-bottom:8px;
        background:var(--tg-theme-secondary-bg-color,#eee); color:inherit; }
    body.lite #lite-back.show { display:inline-block; }
    /* §19 N+2: Pro mode (tablet/desktop ≥900px or forced in Settings) — multi-column
       card grids and roomier modals; Lite (phone) keeps the single column. */
    body.pro #deals-cards, body.pro #refs-list, body.pro #led-cards {
        display:grid; grid-template-columns:repeat(auto-fill, minmax(340px, 1fr));
        gap:8px; align-items:start; }
    body.pro .dcard, body.pro .rcard { margin-bottom:0; }
    body.pro .more-row, body.pro .hint-pad, body.pro .led-span { grid-column:1 / -1; }
    /* KPI tiles: roomier floor on desktop so labels like «Открытых сделок» / «Долг
       поставщикам» wrap onto a tidy second row instead of ellipsis-truncating. */
    /* §ui-audit (owner 2026-07-04): the overview tiles didn't grow (flex-grow 0), so on a wide pane
       they left a trailing gap. Let them fill the row evenly — no wasted band beside/under them. */
    body.pro .ovt { min-width:120px; flex:1 1 150px; }
    body.pro .ovl { white-space:normal; }
    body.pro .modal { max-width:720px; min-width:520px; }
    body.pro #tabs .tab { padding:6px 18px; }
    /* §ui: on desktop, action buttons were each stretched to fill the row (the 600px-wide
       «Взаимный баланс / Оценить / Отключить» bars). Cap them and left-align — pill-sized, not
       bars. Phone (lite) keeps full-width tap targets. */
    body.pro .fbtns { justify-content:flex-start; flex-wrap:wrap; }
    body.pro .fbtns button { flex:0 1 auto; min-width:130px; max-width:260px; }
    /* §ui: on desktop, form fields (new-deal form, modals) stretched a single number/select to
       ~1200px. Cap to a sane field width with a fixed-width label — a tidy form, not giant boxes.
       Phone (lite) keeps the full-width 36%/flex:1 layout. Textareas stay wider for free text. */
    body.pro .frow > label { flex:0 0 200px; }
    body.pro .frow > input, body.pro .frow > select { flex:0 1 380px; max-width:380px; }
    body.pro .frow > textarea { flex:0 1 560px; max-width:560px; }
    /* §card-form: inside compact cards (ref/client/deal cards) the fixed 200px label is too
       greedy — it squeezed selects like «— без реферала —» to a truncated sliver. Let the label
       hug its text and the field take the rest of the card width. */
    body.pro .rcard .frow > label, body.pro .dcard .frow > label { flex:0 0 auto; min-width:74px; }
    body.pro .rcard .frow > select, body.pro .rcard .frow > input,
    body.pro .dcard .frow > select, body.pro .dcard .frow > input { flex:1 1 auto; }
    /* §price-narrow: keep the few-column rate/margin/tariff tables compact on desktop instead
       of spreading them across the full pane with big empty gaps. */
    body.pro #grid.price-narrow { max-width:820px; width:100%; }
    /* §fee-tiers: prose cells inside the Тарифы sub-tab (description paragraph + per-pair
       warning line) must wrap instead of overflowing — they are long sentences, not data cells. */
    .ft-prose { white-space:normal; overflow-wrap:anywhere; }
    /* §ui: centre + cap the app on wide screens — no more 2000px-stretched tables/buttons/rows. */
    @media (min-width:900px) {
      html { background: var(--tg-theme-bg-color,#fff); }
      body { max-width:1120px; margin-inline:auto; }
    }
    /* shared modal overlay (deal/ref/adjust/expense/counterparty cards, prompts) */
    /* repeated utility classes (were copy-pasted inline styles in the JS renderers) */
    .tight { margin:-2px 0 6px; }
    /* §lead/tight (full-pass 2026-06-16 TR1): multi-sentence intro/help prose must wrap,
       not clip — .fin alone is nowrap+scroll (right for one-line meta, wrong for paragraphs).
       .tight marks a description (reduced margin) → it's prose, so it wraps too. Keeps plain
       .fin one-liners on nowrap+scroll. */
    .fin.lead, .fin.tight { white-space:normal; overflow:visible; overflow-wrap:anywhere; }
    .sec-h { font-weight:600; margin:12px 0 4px; }
    .card-h { font-weight:600; margin-bottom:4px; }
    /* §density: opt-in compact mode — ONLY tighter spacing, layout/flex/grid untouched. Every
       rule is scoped to body.dense so the default «comfort» look is never affected. */
    body.dense .rcard, body.dense .dcard { padding:6px 9px; }
    body.dense .frow { margin-bottom:3px; }
    body.dense .card-h { margin-bottom:2px; }
    body.dense .fin { margin-top:2px; }
    body.dense .dc-acts, body.dense .fbtns { gap:5px; }
    body.dense .b2b-pend { margin:2px 0; }
    body.dense .sec-h { margin:8px 0 3px; }
    .hint-pad { color:var(--tg-theme-hint-color,#888); padding:10px; }
    .err-pad { color:var(--neg,#c00); padding:10px; }
    .more-row { text-align:center; margin:8px 0; }
    .empty-cell { text-align:center; padding:14px; opacity:.7; }
    .mono-cp { font-family:monospace; cursor:pointer; text-decoration:underline dotted;
        word-break:break-all; }
    .meta { font-size:12px; color:var(--tg-theme-hint-color,#888); margin:2px 0 6px; }
    .meta-muted { color:var(--tg-theme-hint-color,#767676); opacity:.98; }
    .micro { font-size:11px; color:var(--tg-theme-hint-color,#999); margin:2px 0; }
    .overlay { position:fixed; inset:0; background:rgba(0,0,0,.45); display:flex;
        align-items:flex-start; justify-content:center; z-index:50; overflow:auto; padding:12px; }
    .modal { background:var(--tg-theme-bg-color,#fff); color:var(--tg-theme-text-color,#000);
        padding:14px; border-radius:10px; min-width:280px; max-width:96%; margin-bottom:24px;
        box-sizing:border-box; }
    .modal-head { display:flex; justify-content:space-between; align-items:center; gap:8px;
        margin-bottom:8px; }
    .mh-acts { display:flex; gap:6px; align-items:center; }
    .btn-primary { background: var(--tg-theme-button-color,#3390ec) !important;
        color: var(--tg-theme-button-text-color,#fff) !important; }
    /* bottom toast — action feedback near the thumb; #status keeps only counters */
    #toast { position:fixed; left:50%; transform:translateX(-50%); max-width:92%;
        bottom:calc(74px + env(safe-area-inset-bottom)); z-index:99; padding:10px 16px;
        border-radius:10px; font-weight:600; text-align:center; box-sizing:border-box;
        box-shadow:0 4px 16px rgba(0,0,0,.25); opacity:0; pointer-events:none;
        transition:opacity .2s; }
    #toast.show { opacity:1; }
    #toast.t-ok { background:#1a8d3e; color:#fff; }
    #toast.t-err { background:#d11; color:#fff; }
    /* skeleton loaders — a shimmering placeholder instead of a «загрузка…» text */
    .skel { position:relative; overflow:hidden; border-radius:8px;
        background:var(--tg-theme-secondary-bg-color,#ececec); }
    .skel::after { content:""; position:absolute; inset:0; transform:translateX(-100%);
        background:linear-gradient(90deg, transparent, rgba(255,255,255,.45), transparent);
        animation:shimmer 1.25s infinite; }
    @keyframes shimmer { 100% { transform:translateX(100%); } }
    .skel-row { height:13px; margin:8px 0; }
    .skel-card { height:62px; margin-bottom:7px; border-radius:10px; }
    /* gradient balance card (lite home) — the «expensive» Wallet/Blum look */
    .lh-bal-card { margin:10px 2px 12px; padding:18px 16px 16px; border-radius:18px;
        color:#fff; background:linear-gradient(135deg,#2d7ff9 0%,#3390ec 45%,#6a5cff 100%);
        box-shadow:0 8px 22px -8px rgba(51,144,236,.55); }
    .lh-bal-card .lh-bal-label { color:rgba(255,255,255,.82); }
    .lh-bal-card .lh-bal-value { color:#fff; }
    /* §lite-tiles: one blue плашка per currency (USDT spans full width, with on-chain) */
    .lh-cur-tiles { display:flex; flex-wrap:wrap; gap:8px; margin:10px 2px 10px; }
    .lh-cur-tile { flex:1 1 calc(50% - 8px); min-width:120px; padding:13px 15px; border-radius:15px;
        color:#fff; background:linear-gradient(135deg,#2d7ff9 0%,#3390ec 45%,#6a5cff 100%);
        box-shadow:0 6px 16px -8px rgba(51,144,236,.5); }
    .lh-cur-tile.usdt { flex-basis:100%; padding:16px 16px 14px; border-radius:18px;
        box-shadow:0 8px 22px -8px rgba(51,144,236,.55); }
    .lh-cur-l { font-size:12px; color:rgba(255,255,255,.82); }
    .lh-cur-v { font-weight:800; letter-spacing:.3px; font-variant-numeric:tabular-nums;
        font-size:22px; margin-top:2px; }
    .lh-cur-tile.usdt .lh-cur-v { font-size:34px; }
    .lh-cur-sub { font-size:11px; color:rgba(255,255,255,.82); margin-top:3px; }
    /* swipe-between-tabs: a brief slide when the active view changes via gesture */
    @keyframes viewIn { from { opacity:.4; transform:translateX(var(--vx,0)); } to { opacity:1; transform:none; } }
    .view-anim { animation:viewIn .18s ease-out; }
    /* §23 B2B supplier cards */
    .b2b-badge { font-size:11px; padding:1px 7px; border-radius:8px;
        background:var(--tg-theme-secondary-bg-color,#eef); color:var(--tg-theme-hint-color,#667); }
    .b2b-from { font-size:12px; color:var(--tg-theme-hint-color,#888); }
    .b2b-stale { color:var(--neg,#d11); font-weight:600; }
    .b2b-code { font-family:monospace; font-size:15px; letter-spacing:1px; user-select:all;
        background:var(--tg-theme-secondary-bg-color,#f1f1f1); padding:2px 8px; border-radius:6px; }
    .b2b-pend { display:flex; align-items:center; gap:6px; flex-wrap:wrap; margin:4px 0;
        font-size:13px; }
    .b2b-svc td { font-size:12.5px; }
    /* §billing: subscription module picker */
    .bill-mod { padding:9px 0; border-bottom:1px solid #8881; }
    .bill-mod:last-of-type { border-bottom:none; }
    .bill-h { display:flex; align-items:flex-start; gap:8px; }
    .bill-sw input { width:20px; height:20px; }
    .bill-total { margin-top:10px; padding-top:8px; border-top:1px solid var(--tg-theme-hint-color,#ccc);
        font-size:15px; text-align:right; }
    /* §dark-contrast (2026-07-10): light theme — gentle neutral borders. Dark overrides below. */
    #form {
        border: 1px solid rgba(127,127,127,.32);
        box-shadow: 0 2px 10px rgba(0,0,0,.14);
    }
    .nf-actions-sticky {
        border-top: 1px solid rgba(127,127,127,.22);
        margin-left: -10px; margin-right: -10px; padding-left: 10px; padding-right: 10px;
    }
    .frow > label { color: var(--tg-theme-text-color, #111); opacity: .78; }
    .frow > input, .frow > select, .frow > textarea {
        border-color: rgba(127,127,127,.40);
        box-shadow: inset 0 1px 2px rgba(0,0,0,.08);
    }
    #filters select, #filters input { border-color: rgba(127,127,127,.38); }
    .rk:not(.active) { box-shadow: inset 0 0 0 1px rgba(127,127,127,.24); }
    .led-shs .rk:not(.active) { box-shadow: inset 0 0 0 1px var(--tg-theme-hint-color,#e2e2e2); }
    .modal {
        border: 1px solid rgba(127,127,127,.30);
        box-shadow: 0 12px 40px rgba(0,0,0,.30);
    }
    .dcard, .rcard, .dash-sec, #settings-bar .collap, #platform-bar .collap {
        border-color: rgba(127,127,127,.28);
    }
    .fin.tight.lead, .meta, .micro { opacity: .90; }
    /* Dark theme: rgba grey borders vanish on navy — use light edges + lifted field wells. */
    html[data-theme="dark"] #form,
    html[data-theme="dark"] .nf-actions-sticky {
        background: var(--tg-theme-secondary-bg-color, #2b3949);
    }
    html[data-theme="dark"] #form {
        border: 1px solid rgba(255,255,255,.14);
        box-shadow: 0 4px 18px rgba(0,0,0,.38);
    }
    html[data-theme="dark"] .nf-actions-sticky {
        border-top-color: rgba(255,255,255,.12);
    }
    html[data-theme="dark"] .frow > label { opacity: .92; }
    html[data-theme="dark"] .frow > input,
    html[data-theme="dark"] .frow > select,
    html[data-theme="dark"] .frow > textarea {
        background: rgba(0,0,0,.22);
        border: 1px solid rgba(255,255,255,.22);
        box-shadow: inset 0 1px 0 rgba(255,255,255,.05);
    }
    html[data-theme="dark"] .frow > input:focus,
    html[data-theme="dark"] .frow > select:focus,
    html[data-theme="dark"] .frow > textarea:focus {
        border-color: var(--tg-theme-link-color, #62a0db);
        box-shadow: 0 0 0 2px rgba(98,160,219,.28);
        outline: none;
    }
    html[data-theme="dark"] #filters select,
    html[data-theme="dark"] #filters input {
        background: rgba(0,0,0,.18);
        border-color: rgba(255,255,255,.20);
    }
    html[data-theme="dark"] .rk:not(.active) {
        background: rgba(255,255,255,.07);
        box-shadow: inset 0 0 0 1px rgba(255,255,255,.18);
    }
    html[data-theme="dark"] .rk.active { box-shadow: none; }
    html[data-theme="dark"] #nf-cancel {
        background: rgba(255,255,255,.10);
        border: 1px solid rgba(255,255,255,.14);
    }
    html[data-theme="dark"] .fin,
    html[data-theme="dark"] .fin.tight.lead { color: var(--tg-theme-hint-color, #8fa3b5); opacity: 1; }
    html[data-theme="dark"] .modal {
        border-color: rgba(255,255,255,.12);
        box-shadow: 0 16px 48px rgba(0,0,0,.55);
    }
    html[data-theme="dark"] .dcard,
    html[data-theme="dark"] .rcard,
    html[data-theme="dark"] .dash-sec,
    html[data-theme="dark"] #settings-bar .collap,
    html[data-theme="dark"] #platform-bar .collap {
        border-color: rgba(255,255,255,.12);
    }
