/* ============================================================
   MASTER VORTEX — named watchlists panel (Phase 1.5)
   Sits under the chart rail's add box inside aside.watchlist.
   Rows are click-to-chart; the × edits the list only.
   ============================================================ */

/* Yielding flex column (2026-10-26 CEO live-session fix): the
   panel used to be content-sized and unshrinkable, so when its
   rows rendered it pushed the core watchlist toward 0px. As a
   flex column the panel now yields space first: its chrome stays
   fixed and the rows region flexes + scrolls internally (capped
   at 46vh when the rail has room to spare). The min-height floor
   (chrome ~164px + the rows floor) stops the shrink at a usable
   panel — measured live, a floorless panel collapsed to 11px and
   its children spilled UNDER the runners panel, unreachable. */
.mvwl{margin-top:8px; border-top:1px solid var(--edge, #232a35); padding-top:6px;
  display:flex; flex-direction:column; flex:0 1 auto; min-height:216px;}
.mvwl-head,.mvwl-switch,.mvwl-addrow,.mvwl-io,.mvwl-msg{flex:0 0 auto;}
.mvwl-head{display:flex; align-items:baseline; justify-content:space-between;
  font-size:11px; font-weight:700; letter-spacing:.12em; color:var(--ink, #e8edf4);}
.mvwl-count{font-size:10px; font-weight:600; letter-spacing:.04em; color:var(--dim, #8b96a5);}
.mvwl-switch{display:flex; gap:4px; margin-top:5px;}
.mvwl-select{flex:1 1 auto; min-width:0; background:var(--panel-2, #12161d); color:var(--ink, #e8edf4);
  border:1px solid var(--edge, #232a35); border-radius:6px; padding:3px 5px; font-size:11px;}
.mvwl-btn{background:var(--panel-2, #12161d); color:var(--ink, #e8edf4); border:1px solid var(--edge, #232a35);
  border-radius:6px; padding:3px 6px; font-size:10.5px; font-weight:600; cursor:pointer; white-space:nowrap;}
.mvwl-btn:hover{border-color:var(--green, #26c281); color:var(--green, #26c281);}
.mvwl-rows{margin-top:6px; flex:1 1 auto; min-height:52px; max-height:46vh; overflow-y:auto;}
.mvwl-row{padding:3px 4px; border-radius:6px; cursor:pointer; font-size:11.5px;}
.mvwl-row:hover{background:var(--panel-2, #12161d);}
/* CENTERED EVERYWHERE (CEO alignment order 2026-11-04 ~4:03pm CT): every character in every watchlist cell/box sits CENTERED (middle plane) — symbol, name, last, $chg, %chg — all lists, all bands. Do not re-right-align. */
/* TV ROWS (CEO 2026-11-04 ~2:17am CT): the named-list row is
   the rail's TradingView two-block shape — LEFT: symbol bold
   over the muted company name; RIGHT (right-aligned): LAST over
   "$chg %chg" on one line, sign-colored, exactly ONE change
   group per row; a genuine extended-hours print adds a third
   muted line (buildRowEl only). The VOL / EXT columns, their
   vertical dividers and their "—" placeholders are gone — the
   row ends at the change group, and the two blocks align on the
   flex edges like the dashboard boxes align on their grid. The
   × (non-shared lists) rides as a slim third flex child. */
/* REORGANIZED GRID (CEO 2026-11-04 ~5:06pm CT): same law as
   the rail — flat cells on the shared tracks (plus the end
   track for the remove button), one line per row, values
   centered in their columns, the ext line spanning the
   full width under the row. No wrapper blocks. */
.mvwl-top{display:grid; grid-template-columns:minmax(0,.8fr) minmax(0,.72fr) minmax(0,.8fr) minmax(0,.68fr) 14px; column-gap:6px; align-items:center; width:100%;}
.mvwl-name{font-size:9.5px; text-align:center; color:var(--dim, #8b96a5); white-space:nowrap; overflow:hidden;
  text-overflow:ellipsis; letter-spacing:.01em;}
.mvwl-sym{font-size:10.5px; font-weight:600; letter-spacing:0; text-align:left; color:var(--ink, #e8edf4);
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap;}
.mvwl-px{font-size:11.5px; text-align:center; font-variant-numeric:tabular-nums; color:var(--ink, #e8edf4);}
.mvwl-px.up{color:var(--green, #26c281);}
.mvwl-px.dn{color:#c9d6e8;}
/* FOUR COLUMNS (CEO 2026-11-04 ~5:48pm CT): $ change and %
   change are flat cells of the row grid, same as the rail —
   no shared change cell, no sub-grid. */
.mvwl-usd{font-size:10.5px; text-align:right; font-variant-numeric:tabular-nums;}
.mvwl-pct{font-size:10px; text-align:right; font-variant-numeric:tabular-nums;}
.mvwl-usd.up, .mvwl-pct.up{color:var(--green, #26c281);}
.mvwl-usd.dn, .mvwl-pct.dn{color:var(--red, #f6465d);}
.mvwl-x{grid-column:5; grid-row:1; justify-self:center; align-self:center; background:none; border:none; color:var(--dim, #8b96a5); font-size:12px; line-height:1;
  cursor:pointer; padding:0 1px; border-radius:4px;}
.mvwl-x:hover{color:var(--red, #f6465d); background:rgba(246,70,93,.12);}
.mvwl-empty{font-size:11.5px; color:var(--dim, #8b96a5); padding:6px 4px; line-height:1.45;}
.mvwl-addrow{display:flex; gap:4px; margin-top:8px;}
.mvwl-input{flex:1 1 auto; min-width:0; background:var(--panel-2, #12161d); color:var(--ink, #e8edf4);
  border:1px solid var(--edge, #232a35); border-radius:6px; padding:5px 7px; font-size:12px;
  text-transform:uppercase;}
.mvwl-io{display:flex; gap:4px; margin-top:6px;}
.mvwl-msg{font-size:11px; color:var(--dim, #8b96a5); margin-top:6px; min-height:14px; line-height:1.4;}
.mvwl-msg.err{color:var(--red, #f6465d);}
/* 2026-10-26 CEO live-session directive: the named-lists panel is
   removed from the left rail — the core watchlist gets the space.
   The lists API and the stored lists are untouched; this only takes
   the panel out of the rail layout (no box is generated for it), so
   the flexible .wl-list absorbs the freed height. */
.watchlist .mvwl{display:none !important;}

/* ---- list manager (CEO 2026-11-01): "+" beside the WATCHLIST
   header word opens a small in-rail panel to create a list by
   name, rename the active list, add a symbol, switch lists, or
   delete the active list. Deliberately NOT inside .mvwl, so the
   rail-space rule above does not hide it. ---- */
.wl-head .mvwl-plus{margin-left:7px; width:19px; height:19px; line-height:1; padding:0;
  border-radius:50%; border:1px solid var(--green, #26c281); background:rgba(38,194,129,.14);
  color:var(--green, #26c281); font-size:14px; font-weight:700; cursor:pointer; vertical-align:1px;}
.wl-head .mvwl-plus:hover{background:var(--green, #26c281); color:#06130c;}
.wl-head .mvwl-manage{margin-left:4px; width:19px; height:19px; line-height:1; padding:0;
  border-radius:50%; border:1px solid var(--edge, #232a35); background:var(--panel-2, #12161d);
  color:var(--dim, #8b96a5); font-size:11px; cursor:pointer; vertical-align:1px;}
.wl-head .mvwl-manage:hover{color:var(--green, #26c281); border-color:var(--green, #26c281);}

/* ---- watchlist ⋯ menu (CEO 2026-11-04, TradingView model):
   the ⋯ button sits at the TOP-LEFT of the watchlist header
   (TradingView's spot — the + / ⚙ controls keep the right side).
   The menu itself is fixed-positioned under the button by
   watchlist-menu.js, so it floats over the rail in every layout
   band instead of pushing rows around. Menu text is start-aligned
   on purpose (menus read by scanning a left edge — the centered
   layout law governs the data boxes, not this dropdown). ---- */
.wl-head .mvwl-dots{margin-right:7px; width:19px; height:19px; line-height:1; padding:0;
  border-radius:50%; border:1px solid var(--edge, #232a35); background:var(--panel-2, #12161d);
  color:var(--dim, #8b96a5); font-size:13px; font-weight:700; cursor:pointer; vertical-align:1px;}
.wl-head .mvwl-dots:hover{color:var(--green, #26c281); border-color:var(--green, #26c281);}
.mvwl-menu{position:fixed; z-index:1200; min-width:218px; max-width:280px; max-height:72vh;
  overflow-y:auto; padding:6px; border:1px solid var(--edge, #232a35); border-radius:10px;
  background:var(--panel-2, #12161d); box-shadow:0 14px 34px rgba(0,0,0,.55);
  display:flex; flex-direction:column; gap:2px; text-align:left;}
.mvwl-menu-head{padding:5px 9px 7px; font-size:10px; font-weight:700; letter-spacing:.12em;
  color:var(--dim, #8b96a5); text-transform:uppercase; border-bottom:1px solid var(--edge, #232a35);
  margin-bottom:4px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis;}
.mvwl-menu-item{display:flex; align-items:center; gap:8px; width:100%; padding:8px 9px;
  border:1px solid transparent; border-radius:7px; background:transparent;
  color:var(--ink, #e8edf4); font:inherit; font-size:12.5px; cursor:pointer; text-align:left;}
.mvwl-menu-item:hover{background:rgba(38,194,129,.10); border-color:rgba(38,194,129,.35);}
.mvwl-menu-ic{flex:0 0 16px; text-align:center; color:var(--dim, #8b96a5); font-size:12px;}
.mvwl-menu-lab{flex:1 1 auto; white-space:nowrap; overflow:hidden; text-overflow:ellipsis;}
.mvwl-menu-caret{flex:0 0 auto; color:var(--dim, #8b96a5); font-size:10px;}
.mvwl-menu-sec{display:flex; flex-direction:column; gap:2px; padding:2px 0 4px 10px;}
.mvwl-menu-sec[hidden]{display:none;}
.mvwl-menu-child{padding:6px 9px; font-size:12px;}
.mvwl-menu-check{flex:0 0 14px; text-align:center; color:var(--green, #26c281); font-size:11px;}
.mvwl-menu-tag{flex:0 0 auto; font-size:8.5px; font-weight:700; letter-spacing:.08em;
  color:var(--dim, #8b96a5); border:1px solid var(--edge, #232a35); border-radius:99px; padding:1px 6px;
  text-transform:uppercase;}
.mvwl-menu-count{flex:0 0 auto; color:var(--dim, #8b96a5); font-size:11px;}
/* The manager yields vertical space (CEO fix 2026-11-01): capped
   + internally scrolling, so an open manager can never crush the
   tab rows region to invisibility the way it did at launch. */
.mvwl-pop{margin-top:7px; border:1px solid var(--edge, #232a35); border-radius:8px;
  background:var(--panel-2, #12161d); padding:8px; display:flex; flex-direction:column; gap:6px;
  max-height:48vh; overflow-y:auto;}
.mvwl-pop[hidden]{display:none;}
.mvwl-pop-head{display:flex; align-items:center; justify-content:space-between;
  font-size:11px; font-weight:700; letter-spacing:.12em; color:var(--ink, #e8edf4);}
.mvwl-pop-x{background:none; border:none; color:var(--dim, #8b96a5); font-size:15px; line-height:1;
  cursor:pointer; padding:2px 4px;}
.mvwl-pop-x:hover{color:var(--red, #f6465d);}
.mvwl-pop-lab{font-size:9.5px; font-weight:700; letter-spacing:.1em; color:var(--dim, #8b96a5);
  text-transform:uppercase;}
.mvwl-pop-select,.mvwl-pop-name,.mvwl-pop-sym{background:#0d1117; color:var(--ink, #e8edf4);
  border:1px solid var(--edge, #232a35); border-radius:6px; padding:5px 7px; font-size:12px;
  width:100%; box-sizing:border-box;}
.mvwl-pop-syms{font-size:10.5px; color:var(--dim, #8b96a5); line-height:1.45;
  word-break:break-word; max-height:42px; overflow-y:auto;}
.mvwl-pop-btns{display:flex; flex-direction:column; gap:4px;}
.mvwl-pop-btns .mvwl-btn{flex:1 1 0;}
.mvwl-pop-addrow{display:flex; gap:4px;}
.mvwl-pop-addrow .mvwl-pop-sym{flex:1 1 auto; min-width:0; width:auto; text-transform:uppercase;}
.mvwl-pop-addrow .mvwl-btn{flex:0 0 auto;}
.mvwl-pop-del{color:var(--red, #f6465d); border-color:rgba(246,70,93,.45);}
.mvwl-pop-del:hover{border-color:var(--red, #f6465d); color:#fff; background:rgba(246,70,93,.18);}
.mvwl-pop-del:disabled{opacity:.45; cursor:not-allowed;}
.mvwl-pop-del[data-armed="1"]{background:rgba(246,70,93,.22); color:#fff;}
.mvwl-pop-msg{font-size:11px; color:var(--dim, #8b96a5); min-height:14px; line-height:1.4;}
.mvwl-pop-msg.err{color:var(--red, #f6465d);}

/* ---- list tabs (CEO 2026-11-01): one tab per list along the top
   of the watchlist panel; the active tab is highlighted and the
   rows under the strip are the active list's symbols. The strip
   scrolls horizontally when lists overflow (25 max); the rows
   region fills the panel and scrolls internally — each list is
   its own page (tab-page fix, later 2026-11-01). ---- */
.mvwl-tabs-wrap{margin-top:6px; display:flex; flex-direction:column; flex:1 1 auto; min-height:0;}
.mvwl-tabs{display:flex; flex:0 0 auto; gap:4px; overflow-x:auto; overflow-y:hidden; padding-bottom:4px;
  scrollbar-width:thin;}
.mvwl-tab{flex:0 0 auto; max-width:150px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
  background:var(--panel-2, #12161d); color:var(--dim, #8b96a5); border:1px solid var(--edge, #232a35);
  border-radius:999px; padding:3px 9px; font-size:11px; font-weight:600; cursor:pointer;}
.mvwl-tab:hover{color:var(--ink, #e8edf4); border-color:var(--green, #26c281);}
.mvwl-tab.active{background:rgba(38,194,129,.16); color:var(--green, #26c281);
  border-color:var(--green, #26c281);}
/* The rows region is the panel's MAIN list view (CEO tab-page
   fix 2026-11-01): it flexes to fill the whole panel under the
   tab strip and scrolls internally, so the active list's page is
   the entire watchlist for that list — never a capped preview.
   The 56px floor (an earlier same-day fix) stays so the region
   can never be crushed invisible while the manager is open. */
.mvwl-list-rows{flex:1 1 auto; overflow-y:auto; overflow-x:hidden; min-height:56px; position:relative;}
/* Full-height column dividers (CEO 2026-11-04): see styles.css .wl-list::before. */
/* The old column-divider overlay pseudo-element on this scroll region is
   DELETED (CEO shading fix 2026-11-04 ~5:36pm CT): same interpolated
   gradient as the rail — a blue wash over the first screenful of rows
   and no lines below it. Dividers now ride on the row cells (tail block). */
.mvwl-list-rows .mvwl-empty{padding-left:2px;}
/* Column header for the named-list page — the rail's .wl-cols
   carried over: SYM over the left block, LAST / CHG over the
   right block, so the named page reads exactly like the Default
   page. The sort spans keep their order (sym/last/chg). */
.mvwl-cols{display:grid; grid-template-columns:minmax(0,.8fr) minmax(0,.72fr) minmax(0,.8fr) minmax(0,.68fr) 14px; column-gap:6px; align-items:baseline; padding:2px 7px 1px; border-bottom:1px solid var(--edge, #232a35);
  font-size:9px; letter-spacing:.4px; color:#5f7699; text-transform:uppercase;}
.mvwl-cols span{text-align:center;}
.mvwl-cols span:first-child{text-align:left;}
/* Named view: once the named lists have loaded, the chart rail's
   own column header, table and add box step aside — the panel
   shows ONLY the active list's page (no stacking, no leftover
   rows from the rail/default set under a selected tab). The rail
   DOM stays alive for the chart flows; it is display-only.
   Default-page restore (CEO 2026-11-01): the ONE exception is the
   owner's Default tab (.mv-rail-page) — there the rail IS the
   page (his regular 24-symbol watchlist, exactly as it was before
   the tab-page fix), so the rail stays visible and the named rows
   region + tab-region ADD TICKER box step aside instead; the
   tabs wrap also stops flex-growing so the rail table absorbs
   the panel height the way it always did. */
aside.watchlist.mv-named:not(.mv-rail-page) .wl-cols,
aside.watchlist.mv-named:not(.mv-rail-page) .wl-sortbar,
aside.watchlist.mv-named:not(.mv-rail-page) .wl-list,
aside.watchlist.mv-named:not(.mv-rail-page) .wl-add{display:none !important;}
aside.watchlist.mv-rail-page .mvwl-list-rows,
aside.watchlist.mv-rail-page .mvwl-cols,
aside.watchlist.mv-rail-page .mvwl-sortbar,
aside.watchlist.mv-rail-page .mvwl-tadd{display:none !important;}
aside.watchlist.mv-rail-page .mvwl-tabs-wrap{flex:0 0 auto;}
/* Inline add-ticker row + status line inside the tab region, so
   adding to the visible list never requires the manager panel. */
.mvwl-tadd{display:flex; gap:4px; margin-top:5px;}
.mvwl-tadd-input{flex:1 1 auto; min-width:0; background:#0d1117; color:var(--ink, #e8edf4);
  border:1px solid var(--edge, #232a35); border-radius:6px; padding:4px 7px; font-size:11.5px;
  text-transform:uppercase; box-sizing:border-box;}
.mvwl-tadd-btn{flex:0 0 auto;}
.mvwl-tab-msg{font-size:10.5px; color:var(--dim, #8b96a5); min-height:13px; margin-top:3px; line-height:1.35;}
.mvwl-tab-msg.err{color:var(--red, #f6465d);}
/* Inline tab editor (create/rename) + the Saved flash. */
.mvwl-tab.editing{display:inline-flex; align-items:center; gap:4px; max-width:none;
  background:#0d1117; border-color:var(--green, #26c281); border-radius:999px; padding:2px 3px 2px 9px;}
.mvwl-tab-input{background:transparent; border:none; outline:none; color:var(--ink, #e8edf4);
  font:inherit; font-size:11px; width:104px; padding:0;}
.mvwl-tab-save{background:var(--green, #26c281); color:#06130c; border:none; border-radius:999px;
  font-size:10.5px; font-weight:700; padding:2px 8px; cursor:pointer;}
.mvwl-tab-save:hover{filter:brightness(1.1);}
.mvwl-tab-cancel{background:none; border:none; color:var(--dim, #8b96a5); font-size:13px;
  line-height:1; cursor:pointer; padding:1px 3px;}
.mvwl-tab-cancel:hover{color:var(--red, #f6465d);}
.mvwl-tab.saved{box-shadow:0 0 0 2px rgba(38,194,129,.5);}
/* List rows carry the FULL rail column set (CEO 2026-11-02) —
   the old compact rule that dropped the volume column from this
   region is gone; rows use the rail's padding, separator and
   line-height. Scrollbars in the tab strip + list rows are kept
   thin and dark. */
.mvwl-tabs::-webkit-scrollbar, .mvwl-list-rows::-webkit-scrollbar{height:4px; width:4px;}
.mvwl-tabs::-webkit-scrollbar-thumb, .mvwl-list-rows::-webkit-scrollbar-thumb{
  background:var(--edge, #232a35); border-radius:2px;}
.mvwl-list-rows .mvwl-row{padding:3px 7px; border-bottom:1px solid rgba(85,135,210,.6); line-height:1.25; border-radius:0;}
/* Drag-to-reorder (CEO 2026-11-02): same treatment as the rail —
   floating clone, dimmed source, teal drop-slot line. */
.mvwl-row.mv-drag-src{opacity:.45;}
.mvwl-row.mv-drag-float{position:fixed; z-index:999; pointer-events:none; margin:0;
  box-shadow:0 10px 28px rgba(0,0,0,.55); background:var(--panel-2, #12161d);}
.mvwl-row.mv-drop-before{box-shadow:inset 0 2px 0 #2bd9c7;}
.mvwl-row.mv-drop-after{box-shadow:inset 0 -2px 0 #2bd9c7;}
/* (The row grid itself lives on .mvwl-top above — one template
   for every named-list row, identical tracks to the rail.) */

/* ============================================================
   TABLET BAND — named-list pages (CEO iPad spot 2026-11-02).
   The named-list row (.mvwl-top) mirrors the Default rail's new
   two-line tablet treatment cell-for-cell, plus its remove (x)
   track spanning both lines. Same band as styles.css; desktop
   widths (>1400px) and the phone stack (<=900px) are untouched.
   ============================================================ */
@media (min-width: 901px) and (max-width: 1400px){
  .mvwl-cols{ display:none; }
  .mvwl-tabs{ gap:5px; padding-bottom:5px; }
  .mvwl-tab{ font-size:12px; padding:5px 11px; }
  .wl-head .mvwl-plus, .wl-head .mvwl-manage{ width:24px; height:24px; }
  .mvwl-list-rows .mvwl-row{ padding:5px 8px; }
  /* TV ROWS in the tablet band: same two-block row, band sizes. */
  .mvwl-sym{ font-size:13.5px; }
  .mvwl-name{ font-size:11px; }
  .mvwl-px{ font-size:13.5px; }
  .mvwl-pct{ font-size:11.5px; }
  .mvwl-usd{ font-size:12px; }
    .mvwl-x{ font-size:15px; }
  .mvwl-tadd-input{ font-size:12.5px; padding:7px 8px; }
  .mvwl-tadd .mvwl-btn{ font-size:12px; padding:7px 10px; }
}
/* ============================================================
   STACK BAND — named-list pages at <=900px (CEO follow-on
   2026-11-02). In the stacked layout a named list's page sits
   inside the full-width watchlist panel over the chart; its
   rows (.mvwl-top) kept the capped desktop tracks, so the
   five columns crammed into ~173px at the left of a wide
   panel at 8.5-10.5px. The rows now mirror the Default
   strip's two-line card cell-for-cell (the same treatment
   the tablet band gave them at 901-1400px), plus the remove
   (x) track spanning both lines. Same band logic, narrow
   media query: desktop and the tablet band are untouched.
   ============================================================ */
@media (max-width: 900px){
  .mvwl-cols{ display:none; }
  .mvwl-tabs{ gap:5px; padding-bottom:5px; }
  .mvwl-tab{ font-size:12px; padding:5px 11px; }
  .wl-head .mvwl-plus, .wl-head .mvwl-manage{ width:24px; height:24px; }
  .mvwl-list-rows .mvwl-row{ padding:5px 8px; }
  /* TV ROWS in the stack band: same two-block row, band sizes. */
  .mvwl-sym{ font-size:13.5px; }
  .mvwl-name{ font-size:11px; }
  .mvwl-px{ font-size:13.5px; }
  .mvwl-pct{ font-size:11.5px; }
  .mvwl-usd{ font-size:12px; }
    .mvwl-x{ font-size:15px; }
  .mvwl-tadd-input{ font-size:12.5px; padding:7px 8px; }
  .mvwl-tadd .mvwl-btn{ font-size:12px; padding:7px 10px; }
}

/* ---- watchlist header sorting + RESET (CEO 2026-11-04) --------
   View-only: SYM / LAST / CHG headers sort the painted rows, the
   RESET ORDER bar restores the stored order he created. Applies
   to the rail header (.wl-cols, styles in app.js's initWlSort) and
   the named-list header (.mvwl-cols) alike. The sort bars follow
   the page-mode rules above: the rail bar steps aside in named
   view, the named bar steps aside on the owner's Default (rail)
   page. */
.wl-cols span.mv-sortable, .mvwl-cols span.mv-sortable{cursor:pointer;}
.wl-cols span.mv-sortable:hover, .mvwl-cols span.mv-sortable:hover{color:var(--green, #26c281);}
.wl-cols span.mv-sorted, .mvwl-cols span.mv-sorted{color:var(--green, #26c281);}
.wl-sortbar{display:flex; align-items:center; gap:7px; padding:3px 5px;
  border-bottom:1px solid var(--edge, #232a35);}
.mvwl-sortbar{display:flex; align-items:center; gap:7px; padding:3px 5px;
  border-bottom:1px solid var(--edge, #232a35);}
.wl-reset-btn{background:var(--panel-2, #12161d); color:var(--ink, #e8edf4);
  border:1px solid var(--edge, #232a35); border-radius:6px; padding:3px 6px;
  font-size:10.5px; font-weight:600; cursor:pointer; white-space:nowrap;}
.wl-reset-btn:hover{border-color:var(--green, #26c281); color:var(--green, #26c281);}
.wl-sort-hint, .mvwl-sort-hint{display:none; font-size:9.5px; line-height:1.3;
  color:var(--dim, #8b96a5);}
.wl-sortbar.active .wl-sort-hint, .mvwl-sortbar.active .mvwl-sort-hint{display:inline;}


/* ============================================================
   VISIBILITY FIX — named-list column lines, same root cause
   and same fix as the rail (see styles.css): .mvwl-top ran
   align-items:center, so the cell border-rights were stubs
   around the text instead of full-height column lines. Cells
   now stretch to the full row height and flex-center their
   content; in the two-line iPad cards the row gap folds into
   the second line's top padding so the segments meet.
   Covers Default's named siblings (ETF'S) and the shared
   PE-VORTEX list, which render through this same seam.
   ============================================================ */
/* TV ROWS (CEO 2026-11-04 ~2:17am CT) supersede the visibility
   fix's stretch cells and JOB 4's one-line column grid: .mvwl-top
   is the one-line column grid in EVERY band (see the base rules) — no
   grid areas, no stretched cells, no column lines, no VOL/EXT
   cells. The two media blocks below only restate the band sizes
   so this tail of the file — the last word in the cascade —
   agrees with the design across Default, ETF'S and the shared
   PE-VORTEX list, which render through this same seam. */
.mvwl-top{align-items:center;}
@media (min-width: 901px) and (max-width: 1400px){
  .mvwl-list-rows .mvwl-row{ padding:5px 8px; }
  .mvwl-sym{font-size:13.5px;}
  .mvwl-name{font-size:11px;}
  .mvwl-px{font-size:13.5px;}
  .mvwl-pct{font-size:11.5px;}
  .mvwl-usd{font-size:12px;}
  }
@media (max-width: 900px){
  .mvwl-list-rows .mvwl-row{ padding:5px 8px; }
  .mvwl-sym{font-size:13.5px;}
  .mvwl-name{font-size:11px;}
  .mvwl-px{font-size:13.5px;}
  .mvwl-pct{font-size:11.5px;}
  .mvwl-usd{font-size:12px;}
  }

/* SHADING + COLUMN LINES FIX (CEO 2026-11-04 ~5:36pm CT):
   same root cause and same cure as the rail (styles.css) —
   the interpolated-gradient overlay on the named scroll
   region is deleted above (it painted a blue wash over the
   first screenful of rows and no lines at all below it),
   the header's copy of the gradient is gone, and the
   dividers ride on the row cells: a full-height border-right
   on the SYM and LAST cells of every row, continuous
   through the whole scroll height. */
/* FOUR-COLUMN DIVIDERS (CEO 2026-11-04 ~5:48pm CT): same
   third divider as the rail — the $ cell's border-right is
   the line between the $ column and the % column. */
.mvwl-top{align-items:stretch;}
.mvwl-sym{display:flex; align-items:center; justify-content:flex-start; border-right:1px solid rgba(85,135,210,.6);}
.mvwl-px{display:flex; align-items:center; justify-content:center; border-right:1px solid rgba(85,135,210,.6);}
.mvwl-usd{display:flex; align-items:center; justify-content:flex-end; padding-right:4px; border-right:1px solid rgba(85,135,210,.6);}
.mvwl-pct{display:flex; align-items:center; justify-content:flex-end; padding-right:4px;}
.mvwl-cols{align-items:stretch;}
.mvwl-cols span{display:flex; align-items:center; justify-content:center;}
.mvwl-cols span:first-child{justify-content:flex-start; border-right:1px solid rgba(85,135,210,.6);}
.mvwl-cols span:nth-child(2){border-right:1px solid rgba(85,135,210,.6);}
.mvwl-cols span:nth-child(3){border-right:1px solid rgba(85,135,210,.6);}
.mvwl-cols span:nth-child(3), .mvwl-cols span:nth-child(4){justify-content:flex-end; padding-right:4px;}
