/*
 * M4-B-R2-B — Light theme common foundation (html[data-theme="light"] only).
 * Fixes shared text dilution, panel/border hierarchy, tab/button/input/table,
 * drawer/modal shell, DataStatusPanel, Admin shared shell.
 * NOT a third theme · business colors frozen · dark-default untouched.
 */

/* ── Semantic aliases (consume global tokens; do not redefine brand hex) ── */
html[data-theme="light"] {
  --sf-text-placeholder: #7a8fa3;
  --sf-border-table: var(--color-border-strong);
  --sf-panel-nested: var(--color-bg-panel-2);
  --sf-tab-selected-bg: rgba(37, 99, 235, 0.16);
  --sf-tab-selected-border: rgba(37, 99, 235, 0.5);
  --sf-tab-selected-text: #1d4ed8;
}

/* ── Kill common Light text dilution (opacity / ultra-faint rgba) ── */
html[data-theme="light"] body,
html[data-theme="light"] .desktop-main,
html[data-theme="light"] .v2-wl-page,
html[data-theme="light"] .v2-dash-page,
html[data-theme="light"] .wrap,
html[data-theme="light"] .sf-page {
  color: var(--color-text-body);
}

html[data-theme="light"] h1,
html[data-theme="light"] h2,
html[data-theme="light"] h3,
html[data-theme="light"] .page-title,
html[data-theme="light"] .desktop-page-head h1 {
  color: var(--color-text-primary);
}

html[data-theme="light"] .muted,
html[data-theme="light"] .hint,
html[data-theme="light"] .sub,
html[data-theme="light"] .subtitle,
html[data-theme="light"] .meta,
html[data-theme="light"] .empty,
html[data-theme="light"] .empty-state,
html[data-theme="light"] .placeholder-text {
  color: var(--color-text-muted);
  opacity: 1;
}

/* ── Panel / card hierarchy ── */
html[data-theme="light"] .card,
html[data-theme="light"] .panel,
html[data-theme="light"] .v2-dash-card,
html[data-theme="light"] .v2-wl-card,
html[data-theme="light"] .v2-wl-table-wrap {
  border-color: var(--color-border-card);
}

html[data-theme="light"] table th,
html[data-theme="light"] .v2-wl-table th,
html[data-theme="light"] .v2-dash-wcard-thead th {
  color: var(--color-text-secondary);
  border-bottom-color: var(--sf-border-table);
}

/* M4-B Visual G6：Dashboard「我的关注」子卡 — 覆盖 Dark 硬编码 inset，不改 Dark 基座 */
html[data-theme="light"] .v2-dash-wcard {
  background: var(--color-bg-panel);
  border-color: var(--color-border-card);
}
html[data-theme="light"] .v2-dash-wcard-title {
  color: var(--color-text-primary);
}
html[data-theme="light"] .v2-dash-wcard-empty,
html[data-theme="light"] .v2-dash-wcard-name .cd {
  color: var(--color-text-muted);
}
html[data-theme="light"] .v2-dash-wcard-name .nm {
  color: var(--color-text-primary);
}
html[data-theme="light"] .v2-dash-wcard-row:hover {
  background: var(--color-bg-hover-soft);
}

html[data-theme="light"] table td,
html[data-theme="light"] .v2-wl-table td {
  border-bottom-color: var(--color-border-subtle);
}

html[data-theme="light"] table tbody tr:hover td,
html[data-theme="light"] .v2-wl-table tbody tr:hover td {
  background: var(--color-bg-hover-soft);
}

/* ── Common tab / filter selected (G8) ── */
html[data-theme="light"] .v2-wl-tab,
html[data-theme="light"] .cat-chip,
html[data-theme="light"] .pill-tab,
html[data-theme="light"] [role="tab"]:not(.sf-theme-switcher *) {
  color: var(--color-text-secondary);
}

html[data-theme="light"] .v2-wl-tab.active,
html[data-theme="light"] .cat-chip.active,
html[data-theme="light"] .pill-tab.active,
html[data-theme="light"] [role="tab"][aria-selected="true"] {
  background: var(--sf-tab-selected-bg);
  border-color: var(--sf-tab-selected-border);
  color: var(--sf-tab-selected-text);
  font-weight: 800;
}

/* ── Buttons (shared disabled only — avoid overriding primary CTA white text) ── */
html[data-theme="light"] button:disabled,
html[data-theme="light"] .btn:disabled,
html[data-theme="light"] .v2-wl-btn:disabled,
html[data-theme="light"] .toolbarBtn:disabled {
  opacity: 1;
  color: var(--color-text-disabled);
  background: #e8eef4;
  border-color: var(--color-border-subtle);
}

/* ── Inputs / selects ── */
html[data-theme="light"] input:not([type="checkbox"]):not([type="radio"]),
html[data-theme="light"] select,
html[data-theme="light"] textarea {
  background: var(--color-bg-inset);
  border-color: var(--color-border-control);
  color: var(--color-text-primary);
  color-scheme: light;
}

html[data-theme="light"] input::placeholder,
html[data-theme="light"] textarea::placeholder {
  color: var(--sf-text-placeholder);
  opacity: 1;
}

html[data-theme="light"] input:focus,
html[data-theme="light"] select:focus,
html[data-theme="light"] textarea:focus {
  border-color: var(--color-border-selected);
  outline: 2px solid rgba(37, 99, 235, 0.22);
  outline-offset: 1px;
}

/* ── Drawer host (common) ── */
html[data-theme="light"] #v2DrawerHostRoot .v2dh-panel,
html[data-theme="light"] #v2DrawerHostRoot .v2dh-news-sheet {
  background-color: var(--color-bg-panel);
  background-image: linear-gradient(180deg, var(--color-bg-panel) 0%, var(--color-bg-panel-2) 55%, #eef3f8 100%);
  color: var(--color-text-primary);
  border-left-color: var(--color-border-strong);
  box-shadow: var(--shadow-modal);
}
html[data-theme="light"] #v2DrawerHostRoot .v2dh-head,
html[data-theme="light"] #v2DrawerHostRoot .v2dh-title {
  color: var(--color-text-primary);
  border-bottom-color: var(--color-border-subtle);
}
html[data-theme="light"] #v2DrawerHostRoot .v2dh-sub,
html[data-theme="light"] #v2DrawerHostRoot .v2dh-meta {
  color: var(--color-text-secondary);
  opacity: 1;
}

html[data-theme="light"] #v2DrawerHostRoot .v2dh-mod {
  background: var(--sf-panel-nested);
  border-color: var(--color-border-card);
}

html[data-theme="light"] #v2DrawerHostRoot .v2dh-mod-title,
html[data-theme="light"] #v2DrawerHostRoot .v2dh-badge {
  color: var(--color-interactive-primary);
}

html[data-theme="light"] #v2DrawerHostRoot .v2dh-close,
html[data-theme="light"] #v2DrawerHostRoot .v2dh-news-back {
  background: var(--color-bg-control);
  color: var(--color-text-primary);
  border: 1px solid var(--color-border-control);
}

html[data-theme="light"] #v2DrawerHostRoot .v2dh-row span,
html[data-theme="light"] #v2DrawerHostRoot .v2dh-rank-name,
html[data-theme="light"] #v2DrawerHostRoot .v2dh-news-title-btn {
  color: var(--color-text-body);
}

html[data-theme="light"] #v2DrawerHostRoot .neutral {
  color: var(--color-text-muted);
}

/* ── Modal / picker common ── */
html[data-theme="light"] .modal,
html[data-theme="light"] .dialog,
html[data-theme="light"] [class*="modal-panel"],
html[data-theme="light"] .pickerPanel,
html[data-theme="light"] .sectorPicker,
html[data-theme="light"] .stockPicker {
  background: var(--color-bg-panel);
  color: var(--color-text-primary);
  border-color: var(--color-border-card);
}

/* ── DataStatusPanel (hardcoded dark in JS — Light override) ── */
html[data-theme="light"] #m19-ds-panel-root {
  color: var(--color-text-body);
}
html[data-theme="light"] #m19-ds-panel-btn {
  background: rgba(255, 255, 255, 0.92);
  border-color: var(--color-border-control);
  color: var(--color-text-primary);
  box-shadow: var(--shadow-floating);
}
html[data-theme="light"] #m19-ds-panel-btn:hover {
  background: #fff;
  border-color: var(--color-border-selected);
}
html[data-theme="light"] #m19-ds-panel-body {
  background: rgba(255, 255, 255, 0.97);
  border-color: var(--color-border-card);
  color: var(--color-text-body);
  box-shadow: var(--shadow-modal);
}
html[data-theme="light"] #m19-ds-panel-body .m19-dsp-title {
  color: var(--color-interactive-primary);
}
html[data-theme="light"] #m19-ds-panel-body .m19-dsp-sub,
html[data-theme="light"] #m19-ds-panel-body .m19-dsp-row {
  color: var(--color-text-secondary);
}
html[data-theme="light"] #m19-ds-panel-body .m19-dsp-group {
  color: var(--color-brand-secondary);
  border-bottom-color: var(--color-border-subtle);
}
html[data-theme="light"] #m19-ds-panel-body .m19-dsp-card {
  background: var(--color-bg-panel-2);
  border-color: var(--color-border-subtle);
}
html[data-theme="light"] #m19-ds-panel-body .m19-dsp-mod {
  color: var(--color-text-primary);
}
html[data-theme="light"] #m19-ds-panel-body .m19-dsp-copy {
  background: var(--color-bg-control);
  border-color: var(--color-border-control);
  color: var(--color-text-primary);
}

/* ── Admin shared shell (body.sf-admin-shell) ── */
html[data-theme="light"] body.sf-admin-shell {
  color: var(--color-text-body);
  background:
    radial-gradient(circle at 12% 0%, rgba(90, 140, 190, 0.1), transparent 28%),
    linear-gradient(180deg, var(--color-bg-page), var(--color-bg-page-mid) 55%, var(--color-bg-page-deep));
}
html[data-theme="light"] body.sf-admin-shell .top {
  background: rgba(245, 248, 252, 0.94);
  border-bottom-color: var(--color-border-default);
  color: var(--color-text-primary);
}
html[data-theme="light"] body.sf-admin-shell .back,
html[data-theme="light"] body.sf-admin-shell a.back {
  background: var(--color-bg-control);
  border-color: var(--color-border-control);
  color: var(--color-text-primary);
}
html[data-theme="light"] body.sf-admin-shell .logout {
  background: rgba(220, 38, 38, 0.08);
  border-color: rgba(220, 38, 38, 0.28);
  color: #b91c1c;
}
html[data-theme="light"] body.sf-admin-shell .card,
html[data-theme="light"] body.sf-admin-shell .perm-box,
html[data-theme="light"] body.sf-admin-shell .search-item,
html[data-theme="light"] body.sf-admin-shell .stat {
  background: var(--color-bg-panel);
  border-color: var(--color-border-card);
  color: var(--color-text-body);
  box-shadow: var(--shadow-panel);
}
html[data-theme="light"] body.sf-admin-shell .card-title,
html[data-theme="light"] body.sf-admin-shell .perm-title,
html[data-theme="light"] body.sf-admin-shell .acl-cat,
html[data-theme="light"] body.sf-admin-shell .stat .v {
  color: var(--color-interactive-primary);
}
html[data-theme="light"] body.sf-admin-shell .stat .k,
html[data-theme="light"] body.sf-admin-shell th,
html[data-theme="light"] body.sf-admin-shell .field label,
html[data-theme="light"] body.sf-admin-shell .quick-vip-hint,
html[data-theme="light"] body.sf-admin-shell .search-item-meta,
html[data-theme="light"] body.sf-admin-shell .acl-hint,
html[data-theme="light"] body.sf-admin-shell .login-meta {
  color: var(--color-text-muted);
}
html[data-theme="light"] body.sf-admin-shell td,
html[data-theme="light"] body.sf-admin-shell .check,
html[data-theme="light"] body.sf-admin-shell .quick-vip-kv,
html[data-theme="light"] body.sf-admin-shell .acl-matrix td.acl-feat {
  color: var(--color-text-body);
}
html[data-theme="light"] body.sf-admin-shell th,
html[data-theme="light"] body.sf-admin-shell td,
html[data-theme="light"] body.sf-admin-shell .acl-matrix th,
html[data-theme="light"] body.sf-admin-shell .acl-matrix td {
  border-bottom-color: var(--color-border-subtle);
}
html[data-theme="light"] body.sf-admin-shell input,
html[data-theme="light"] body.sf-admin-shell select,
html[data-theme="light"] body.sf-admin-shell textarea,
html[data-theme="light"] body.sf-admin-shell .vip-copy-template,
html[data-theme="light"] body.sf-admin-shell .note-input {
  background: var(--color-bg-inset);
  border-color: var(--color-border-control);
  color: var(--color-text-primary);
}
html[data-theme="light"] body.sf-admin-shell button:not(.sf-theme-switcher__btn),
html[data-theme="light"] body.sf-admin-shell .btn:not(.sf-theme-switcher__btn),
html[data-theme="light"] body.sf-admin-shell .small:not(.sf-theme-switcher__btn) {
  background: linear-gradient(135deg, #3b82f6, #2563eb);
  border: 0;
  color: #fff;
}
/* 主题开关不被 Admin 主按钮白字规则吞掉 */
html[data-theme="light"] body.sf-admin-shell .sf-theme-switcher__btn {
  background: transparent;
  border: 0;
  color: var(--color-text-muted);
  box-shadow: none;
}
html[data-theme="light"] body.sf-admin-shell .sf-theme-switcher__btn.is-active,
html[data-theme="light"] body.sf-admin-shell .sf-theme-switcher__btn[aria-pressed="true"] {
  color: var(--color-interactive-primary, #2563eb);
  background: rgba(37, 99, 235, 0.12);
}
html[data-theme="light"] body.sf-admin-shell .btn.secondary,
html[data-theme="light"] body.sf-admin-shell button.secondary {
  background: var(--color-bg-control);
  border: 1px solid var(--color-border-control);
  color: var(--color-text-primary);
}
html[data-theme="light"] body.sf-admin-shell .btn.danger,
html[data-theme="light"] body.sf-admin-shell .danger,
html[data-theme="light"] body.sf-admin-shell button.danger {
  background: rgba(220, 38, 38, 0.1);
  border: 1px solid rgba(220, 38, 38, 0.32);
  color: #b91c1c;
}
html[data-theme="light"] body.sf-admin-shell .notice {
  background: rgba(245, 158, 11, 0.12);
  border-color: rgba(245, 158, 11, 0.28);
  color: #92400e;
}
html[data-theme="light"] body.sf-admin-shell .badge {
  background: rgba(37, 99, 235, 0.12);
  color: #1d4ed8;
}
html[data-theme="light"] body.sf-admin-shell .status-active,
html[data-theme="light"] body.sf-admin-shell .search-status-active {
  color: #047857;
}
html[data-theme="light"] body.sf-admin-shell .status-disabled,
html[data-theme="light"] body.sf-admin-shell .search-status-expired {
  color: #b91c1c;
}
html[data-theme="light"] body.sf-admin-shell .quick-vip-kv b,
html[data-theme="light"] body.sf-admin-shell .login-meta b {
  color: var(--color-text-primary);
}
html[data-theme="light"] body.sf-admin-shell .quick-vip-copy-box {
  background: var(--color-bg-panel-2);
  border-color: var(--color-border-card);
}
/* Inline dark text leftovers inside ADMIN_PAGE project-info etc. */
html[data-theme="light"] body.sf-admin-shell [style*="color:rgba(255,255,255"],
html[data-theme="light"] body.sf-admin-shell [style*="color:#7ddcff"],
html[data-theme="light"] body.sf-admin-shell [style*="color: #7ddcff"] {
  color: var(--color-text-body);
}
html[data-theme="light"] body.sf-admin-shell b[style*="color:#7ddcff"],
html[data-theme="light"] body.sf-admin-shell b[style*="color: #7ddcff"],
html[data-theme="light"] body.sf-admin-shell b[style*="color:#ffcf93"] {
  color: var(--color-interactive-primary);
}

/* ── Common back / chrome buttons (avoid leftover dark pills) ── */
html[data-theme="light"] .back-btn,
html[data-theme="light"] .v2-mobile-back,
html[data-theme="light"] a.back-btn {
  background: var(--color-bg-control);
  border-color: var(--color-border-control);
  color: var(--color-text-primary);
}

/* ── Mood / list hierarchy (shared list rows) ── */
html[data-theme="light"] .m3g-mood .list-row,
html[data-theme="light"] .m3g-mood .rank-row,
html[data-theme="light"] .sector-row,
html[data-theme="light"] .mood-row {
  border-bottom-color: var(--color-border-subtle);
  color: var(--color-text-body);
}

html[data-theme="light"] .m3g-mood .rank-badge,
html[data-theme="light"] .rank-num {
  color: var(--color-text-secondary);
}

/* ── Dashboard empty / secondary ── */
html[data-theme="light"] .v2-dash-empty,
html[data-theme="light"] .v2-dash-card .empty,
html[data-theme="light"] .v2-wl-empty {
  color: var(--color-text-muted);
  opacity: 1;
}

/* ── Kill diluted opacity on secondary chrome in Light ── */
html[data-theme="light"] .desktop-nav a,
html[data-theme="light"] .sf-sidebar a,
html[data-theme="light"] .nav-item {
  opacity: 1;
}

html[data-theme="light"] .desktop-nav a .nav-label,
html[data-theme="light"] .sideName {
  color: var(--color-text-secondary);
  opacity: 1;
}

/* Admin overview stats (class may vary) */
html[data-theme="light"] body.sf-admin-shell .stats,
html[data-theme="light"] body.sf-admin-shell .overview,
html[data-theme="light"] body.sf-admin-shell .grid-stats > div {
  color: var(--color-text-body);
}
