/* =========================================================
   TMS v10.2 主题安全边界
   目标：主题仅影响侧边栏 / 顶部导航 / 主按钮 / 选中态。
   业务内容区域永远保持浅色，不随 navy / indigo 进入深色模式。
   ========================================================= */

/* ---------- 固定业务变量：任何主题都不得改动 ---------- */
html{
  --bg-page:#F5F7FA !important;
  --bg-card:#FFFFFF !important;
  --bg-soft:#F8FAFC !important;
  --text-primary:#333333 !important;
  --text-secondary:#666666 !important;
  --text-muted:#7A7A7A !important;
  --text-on-dark:#FFFFFF !important;
  --border-color:#E5E7EB !important;
  --card-shadow:0 2px 8px rgba(0,0,0,.04) !important;

  /* 默认（明亮白）主题值 */
  --bg-sidebar:#FFFFFF;
  --accent-color:#1677FF;

  /* 由两项可变变量派生，避免旧主题文件继续污染业务变量 */
  --accent-soft:color-mix(in srgb,var(--accent-color) 10%,#FFFFFF);
  --accent-hover:color-mix(in srgb,var(--accent-color) 90%,#000000);

  /* 兼容现有旧版变量命名 */
  --tms-bg-page:var(--bg-page) !important;
  --tms-bg-panel:var(--bg-card) !important;
  --tms-bg-panel-soft:var(--bg-soft) !important;
  --tms-bg-sidebar:var(--bg-sidebar) !important;
  --tms-bg-top:var(--bg-sidebar) !important;
  --tms-text-primary:var(--text-primary) !important;
  --tms-text-secondary:var(--text-secondary) !important;
  --tms-text-muted:var(--text-muted) !important;
  --tms-border:var(--border-color) !important;
  --tms-brand:var(--accent-color) !important;
  --tms-brand-strong:var(--accent-hover) !important;
  --tms-on-brand:var(--text-on-dark) !important;
  --tms-shadow:var(--card-shadow) !important;
  --ui-blue:var(--accent-color) !important;
  --ui-blue-2:color-mix(in srgb,var(--accent-color) 78%,#FFFFFF) !important;

  --surface:var(--bg-card) !important;
  --surface-card:var(--bg-card) !important;
  --surface-soft:var(--bg-soft) !important;
  --border:var(--border-color) !important;
  --text:var(--text-primary) !important;
  --text-secondary:var(--text-secondary) !important;
  --muted:var(--text-muted) !important;

  color-scheme:light !important;
}

/* 对所有主题统一锁定旧版兼容变量，优先级高于历史 dark-theme CSS。 */
html[data-tms-theme]{
  --tms-bg-page:var(--bg-page) !important;
  --tms-bg-panel:var(--bg-card) !important;
  --tms-bg-panel-soft:var(--bg-soft) !important;
  --tms-bg-sidebar:var(--bg-sidebar) !important;
  --tms-bg-top:var(--bg-sidebar) !important;
  --tms-text-primary:var(--text-primary) !important;
  --tms-text-secondary:var(--text-secondary) !important;
  --tms-text-muted:var(--text-muted) !important;
  --tms-border:var(--border-color) !important;
  --tms-brand:var(--accent-color) !important;
  --tms-brand-strong:var(--accent-hover) !important;
  --tms-on-brand:var(--text-on-dark) !important;
  --tms-shadow:var(--card-shadow) !important;
  --ui-blue:var(--accent-color) !important;
  --ui-blue-2:color-mix(in srgb,var(--accent-color) 78%,#FFFFFF) !important;
  --surface:var(--bg-card) !important;
  --surface-card:var(--bg-card) !important;
  --surface-soft:var(--bg-soft) !important;
  --border:var(--border-color) !important;
  --text:var(--text-primary) !important;
  --text-secondary:var(--text-secondary) !important;
  --muted:var(--text-muted) !important;
  color-scheme:light !important;
}

/* ---------- 主题可变变量：仅允许修改这两项 ---------- */
html[data-tms-theme="navy"]{
  --bg-sidebar:#315F7D;
  --accent-color:#24679A;
}
html[data-tms-theme="indigo"]{
  --bg-sidebar:#564C87;
  --accent-color:#6758B8;
}

/* ---------- 页面与业务内容：始终浅色 ---------- */
html[data-tms-theme] body,
html[data-tms-theme] .app,
html[data-tms-theme] main{
  background:var(--bg-page) !important;
  color:var(--text-primary) !important;
}
html[data-tms-theme] main > h1,
html[data-tms-theme] #c,
html[data-tms-theme] #c h1,
html[data-tms-theme] #c h2,
html[data-tms-theme] #c h3,
html[data-tms-theme] #c h4,
html[data-tms-theme] #c b,
html[data-tms-theme] #c strong{
  color:var(--text-primary) !important;
}
html[data-tms-theme] #c :is(.muted,.sub,small,.help,.hint,.desc,.description){
  color:var(--text-secondary) !important;
}

/* 业务卡片、图表卡片、表单模块、数据容器固定白底 */
html[data-tms-theme] #c :is(
  .card,.box,.panel,.v2-panel,.v2-kpi,.ops-panel,.ops-card,.ops-kpi,
  .opsx-panel,.opsx-card,.opsx-kpi,.opsx-future,.dispatch-card,.dispatch-col,
  .exec-card,.exception-card,.customer-section,.customer-list-card,.filter-panel,
  .bill-section,.builder-card,.billing-group,.verify-result-card,.fin-kpi,.finance-kpi,
  .shared-trip-box,.co-project-card,.doc-card,.permission-item,.alert-card,.store-picker,
  .store-option,.project-ops-card,.future-date-card,.table-scroll,.table-wrap,.list-filter,
  .toolbar,.cold-map-panel-v990,.cold-side-v990,.cold-bottom-v990,.cold-vehicle-popup-v990
){
  background:var(--bg-card) !important;
  color:var(--text-primary) !important;
  border-color:var(--border-color) !important;
}

/* 数据列表主体白底，表头仅使用很浅灰 */
html[data-tms-theme] #c table{background:var(--bg-card) !important;color:var(--text-primary) !important}
html[data-tms-theme] #c tbody,
html[data-tms-theme] #c tbody tr,
html[data-tms-theme] #c tbody td{background:var(--bg-card) !important;color:var(--text-primary) !important}
html[data-tms-theme] #c thead,
html[data-tms-theme] #c thead tr,
html[data-tms-theme] #c thead th{background:var(--bg-soft) !important;color:var(--text-secondary) !important}

/* ---------- 深色区域：仅侧边栏、顶部导航使用主题底色 ---------- */
html[data-tms-theme="navy"] aside,
html[data-tms-theme="indigo"] aside,
html[data-tms-theme="navy"] .app-global-topbar,
html[data-tms-theme="indigo"] .app-global-topbar{
  background:var(--bg-sidebar) !important;
  color:var(--text-on-dark) !important;
  border-color:color-mix(in srgb,#FFFFFF 18%,transparent) !important;
}
html[data-tms-theme="navy"] aside :is(h1,h2,h3,b,strong,span,i),
html[data-tms-theme="indigo"] aside :is(h1,h2,h3,b,strong,span,i),
html[data-tms-theme="navy"] .app-global-topbar :is(span,i,b,strong),
html[data-tms-theme="indigo"] .app-global-topbar :is(span,i,b,strong){
  color:var(--text-on-dark) !important;
}
html[data-tms-theme="navy"] aside .brand-en,
html[data-tms-theme="indigo"] aside .brand-en,
html[data-tms-theme="navy"] aside .nav-user,
html[data-tms-theme="indigo"] aside .nav-user{
  color:rgba(255,255,255,.76) !important;
}

/* 侧栏菜单：深色底必须白字 */
html[data-tms-theme="navy"] #n .nav-title,
html[data-tms-theme="indigo"] #n .nav-title{
  background:transparent !important;
  color:rgba(255,255,255,.78) !important;
}
html[data-tms-theme="navy"] #n .nav-title:hover,
html[data-tms-theme="indigo"] #n .nav-title:hover,
html[data-tms-theme="navy"] #n .nav-items button:hover,
html[data-tms-theme="indigo"] #n .nav-items button:hover{
  background:rgba(255,255,255,.09) !important;
  color:#FFFFFF !important;
}
html[data-tms-theme="navy"] #n .nav-items button,
html[data-tms-theme="indigo"] #n .nav-items button{
  background:transparent !important;
  color:rgba(255,255,255,.90) !important;
}
html[data-tms-theme="navy"] #n .nav-items button.active,
html[data-tms-theme="indigo"] #n .nav-items button.active{
  background:rgba(255,255,255,.14) !important;
  color:#FFFFFF !important;
  box-shadow:inset 3px 0 0 color-mix(in srgb,var(--accent-color) 42%,#FFFFFF) !important;
}

/* 顶栏控件在深色底上保持白字，弹出的面板仍为白底深字 */
html[data-tms-theme="navy"] :is(.theme-btn,.top-user-trigger),
html[data-tms-theme="indigo"] :is(.theme-btn,.top-user-trigger){
  color:#FFFFFF !important;
  background:rgba(255,255,255,.08) !important;
  border-color:rgba(255,255,255,.18) !important;
}
html[data-tms-theme="navy"] :is(.theme-btn,.top-user-trigger):hover,
html[data-tms-theme="indigo"] :is(.theme-btn,.top-user-trigger):hover{
  background:rgba(255,255,255,.14) !important;
}
html[data-tms-theme="navy"] :is(.theme-panel,.top-user-dropdown),
html[data-tms-theme="indigo"] :is(.theme-panel,.top-user-dropdown){
  background:#FFFFFF !important;
  color:#333333 !important;
  border-color:var(--border-color) !important;
}
html[data-tms-theme="navy"] :is(.theme-panel,.top-user-dropdown) *,
html[data-tms-theme="indigo"] :is(.theme-panel,.top-user-dropdown) *{
  color:inherit;
}

/* ---------- 按钮：强调色随主题变化，白字固定 ---------- */
html[data-tms-theme] :is(button:not(.btn-ghost):not(.smallbtn):not(.copy-btn):not(.tms-search-clear),.tms-primary-action){
  --button-accent:var(--accent-color);
}
html[data-tms-theme] .tms-primary-action,
html[data-tms-theme] #c button.tms-primary-action{
  background:var(--accent-color) !important;
  border-color:var(--accent-color) !important;
  color:#FFFFFF !important;
}
html[data-tms-theme] .tms-primary-action:hover,
html[data-tms-theme] #c button.tms-primary-action:hover{
  background:var(--accent-hover) !important;
  border-color:var(--accent-hover) !important;
}
html[data-tms-theme] :is(.btn-ghost,.smallbtn){
  background:#FFFFFF !important;
  color:var(--text-primary) !important;
  border-color:var(--border-color) !important;
}
html[data-tms-theme] :is(.btn-ghost,.smallbtn):hover{
  background:var(--accent-soft) !important;
  color:var(--accent-color) !important;
  border-color:color-mix(in srgb,var(--accent-color) 35%,var(--border-color)) !important;
}

/* ---------- Dashboard：彻底隔离旧深色变量 ---------- */
html[data-tms-theme] .opsx-shell.tms-saas-dashboard{
  --ui-panel:#FFFFFF !important;
  --ui-panel-2:#F8FAFC !important;
  --ui-line:#E5E7EB !important;
  --ui-text:#333333 !important;
  --ui-text-2:#666666 !important;
  --ui-muted:#666666 !important;
  --ui-primary:var(--accent-color) !important;
  --ui-shadow:var(--card-shadow) !important;
}
html[data-tms-theme] .opsx-shell.tms-saas-dashboard :is(.opsx-kpi,.opsx-panel,.opsx-future,.opsx-future-summary>div){
  background:#FFFFFF !important;
  color:#333333 !important;
  border-color:#E5E7EB !important;
}
html[data-tms-theme] .opsx-shell.tms-saas-dashboard :is(.opsx-kpi-main span,.opsx-kpi-main small,.opsx-panel-head span,.opsx-future-summary span){
  color:#666666 !important;
}
html[data-tms-theme] .opsx-shell.tms-saas-dashboard :is(.opsx-kpi-main strong,.opsx-panel-head h3,.opsx-future-summary b){
  color:#333333 !important;
}

/* 图表画布 / 空状态不得出现黑块 */
html[data-tms-theme] .opsx-trend .opsx-line-chart,
html[data-tms-theme] .opsx-trend .tms-empty-state{
  background:#F8FAFC !important;
  color:#666666 !important;
  border-radius:8px;
}
html[data-tms-theme] .opsx-trend .tms-empty-state>b{color:#333333 !important}
html[data-tms-theme] .tms-empty-state{background:transparent !important;color:#666666 !important}
html[data-tms-theme] .tms-empty-state>b{color:#333333 !important}
html[data-tms-theme] .tms-empty-illustration .frame{
  fill:#F8FAFC !important;
  stroke:color-mix(in srgb,var(--accent-color) 28%,#E5E7EB) !important;
}
html[data-tms-theme] .tms-empty-illustration .line,
html[data-tms-theme] .tms-empty-illustration .dot{stroke:var(--accent-color);fill:var(--accent-color)}
html[data-tms-theme] .tms-empty-illustration .base{stroke:#CBD5E1 !important}

/* ---------- Dispatch Center 标题：白底 + 主题竖边 ---------- */
html[data-tms-theme] #c>.v2-hero:first-child,
html[data-tms-theme] #c>.dispatch-v100-shell>.dispatch-v100-head{
  background:#FFFFFF !important;
  background-image:none !important;
  color:#333333 !important;
  border:1px solid #E5E7EB !important;
  border-left:4px solid var(--accent-color) !important;
  border-radius:8px !important;
  box-shadow:var(--card-shadow) !important;
}
html[data-tms-theme] #c>.v2-hero:first-child :is(h2,h3),
html[data-tms-theme] #c>.dispatch-v100-shell>.dispatch-v100-head :is(h2,h3){
  color:#333333 !important;
}
html[data-tms-theme] #c>.v2-hero:first-child .sub,
html[data-tms-theme] #c>.dispatch-v100-shell>.dispatch-v100-head p{
  color:#666666 !important;
  opacity:1 !important;
}

/* 调度筛选与三栏全部白底 */
html[data-tms-theme] :is(.dispatch-v100-filter,.filter-panel,.dispatch-col,.dispatch-card){
  background:#FFFFFF !important;
  color:#333333 !important;
  border-color:#E5E7EB !important;
}

/* ---------- 表单、弹窗、搜索下拉：永远白底 ---------- */
html[data-tms-theme] .modal>div,
html[data-tms-theme] .modal #mb,
html[data-tms-theme] .modal :is(.card,.panel,.box),
html[data-tms-theme] :is(input,select,textarea){
  background:#FFFFFF !important;
  color:#333333 !important;
  border-color:#D9DEE7 !important;
  color-scheme:light !important;
}
html[data-tms-theme] :is(input,textarea)::placeholder{color:#8A94A2 !important}
html[data-tms-theme] .modal-actions{background:#FFFFFF !important;border-color:#E5E7EB !important}

html[data-tms-theme] :is(.tms-search-trigger,.tms-search-panel,.tms-search-box){
  background:#FFFFFF !important;
  color:#333333 !important;
  border-color:#D9DEE7 !important;
  color-scheme:light !important;
}
html[data-tms-theme] .tms-search-box input{background:#FFFFFF !important;color:#333333 !important}
html[data-tms-theme] .tms-search-option{color:#333333 !important}
html[data-tms-theme] .tms-search-option:hover,
html[data-tms-theme] .tms-search-option.active{
  background:var(--accent-soft) !important;
  color:#333333 !important;
}
html[data-tms-theme] .tms-search-option.selected{
  background:color-mix(in srgb,var(--accent-color) 14%,#FFFFFF) !important;
  color:var(--accent-color) !important;
}
html[data-tms-theme] .tms-search-empty{background:#FFFFFF !important;color:#666666 !important}
html[data-tms-theme] .tms-search-select.is-open .tms-search-trigger,
html[data-tms-theme] .tms-search-box:focus-within{
  border-color:var(--accent-color) !important;
  box-shadow:0 0 0 3px color-mix(in srgb,var(--accent-color) 14%,transparent) !important;
}

/* disabled 保持可辨识但不进入深色 */
html[data-tms-theme] :is(input,select,textarea,button):disabled,
html[data-tms-theme] .tms-search-select.is-disabled .tms-search-trigger{
  background:#F2F4F7 !important;
  color:#98A2B3 !important;
  border-color:#E4E7EC !important;
}

/* 其他历史业务 Hero 也属于内容区，不允许主题深色化。 */
html[data-tms-theme] #c :is(.bill-hero,.tech-hero,.cold-hero-v990){
  background:#FFFFFF !important;
  background-image:none !important;
  color:#333333 !important;
  border-color:#E5E7EB !important;
}
html[data-tms-theme] #c :is(.bill-hero,.tech-hero,.cold-hero-v990) :is(h1,h2,h3,b,strong){color:#333333 !important}
html[data-tms-theme] #c :is(.bill-hero,.tech-hero,.cold-hero-v990) :is(.sub,p,span){color:#666666 !important}
