/* =========================================================
   TMS v9.0 UI / UX 精装修层
   原则：只做表现与交互增强，不改变业务 action / 数据 / 权限。
   ========================================================= */

:root{
  --ux-radius-sm:8px;
  --ux-radius:12px;
  --ux-radius-lg:16px;
  --ux-gap:16px;
  --ux-font:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",Roboto,"Helvetica Neue",Arial,sans-serif;
  --ux-success:#16a34a;
  --ux-warning:#d97706;
  --ux-danger:#dc2626;
  --ux-info:#2563eb;
}

html,body,button,input,select,textarea{
  font-family:var(--ux-font)!important;
}

body{
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}

/* 顶部工作区 */
.app-global-topbar{
  position:sticky;
  top:0;
  z-index:40;
  backdrop-filter:blur(14px);
  border-bottom:1px solid color-mix(in srgb,var(--tms-border) 78%,transparent);
}

main>#t{
  font-size:24px!important;
  font-weight:600!important;
  letter-spacing:-.01em;
  margin:18px 22px 4px!important;
  color:var(--tms-text-primary)!important;
}

/* 内容区域 */
#c{
  padding:16px 22px 28px!important;
}

#c .card,
#c .panel,
#c .opsx-panel,
#c .opsx-card,
#c .opsx-box{
  border-radius:var(--ux-radius)!important;
  border-color:color-mix(in srgb,var(--tms-border) 82%,transparent)!important;
  box-shadow:var(--tms-shadow)!important;
}

#c .card{
  transition:box-shadow .18s ease,transform .18s ease,border-color .18s ease;
}
#c .card:hover{
  border-color:color-mix(in srgb,var(--tms-brand) 22%,var(--tms-border))!important;
}

/* 表格 */
#c table{
  border-collapse:separate!important;
  border-spacing:0!important;
  width:100%;
  background:var(--tms-bg-panel);
  border:1px solid var(--tms-border);
  border-radius:12px;
  overflow:hidden;
}
#c table th{
  font-weight:600!important;
  color:var(--tms-text-secondary)!important;
  background:var(--tms-bg-panel-soft)!important;
  border-bottom:1px solid var(--tms-border)!important;
  white-space:nowrap;
}
#c table td{
  border-bottom:1px solid color-mix(in srgb,var(--tms-border) 75%,transparent)!important;
}
#c table tr:last-child td{border-bottom:0!important}
#c table tbody tr{
  transition:background .15s ease;
}
#c table tbody tr:hover td{
  background:color-mix(in srgb,var(--tms-brand) 4%,var(--tms-bg-panel))!important;
}

/* 表单 */
#c input,#c select,#c textarea,
.modal input,.modal select,.modal textarea{
  border-radius:9px!important;
  border:1px solid var(--tms-border)!important;
  background:var(--tms-bg-panel)!important;
  color:var(--tms-text-primary)!important;
  transition:border-color .16s ease,box-shadow .16s ease,background .16s ease;
}
#c input:focus,#c select:focus,#c textarea:focus,
.modal input:focus,.modal select:focus,.modal textarea:focus{
  outline:none!important;
  border-color:var(--tms-brand)!important;
  box-shadow:0 0 0 3px color-mix(in srgb,var(--tms-brand) 14%,transparent)!important;
}

/* 业务按钮：排除导航、主题按钮 */
#c button:not(.nav-title),
.modal button,
.app-global-topbar button:not(.theme-btn){
  border-radius:9px;
  transition:transform .14s ease,box-shadow .14s ease,filter .14s ease,opacity .14s ease;
}
#c button:not(.nav-title):hover,
.modal button:hover{
  transform:translateY(-1px);
}
#c button:not(.nav-title):active,
.modal button:active{
  transform:translateY(0);
}
button:disabled{
  opacity:.55!important;
  cursor:not-allowed!important;
  transform:none!important;
}

/* KPI 卡微交互 */
.opsx-kpi-card,.opsx-stat,.opsx-card{
  transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease!important;
}
.opsx-kpi-card:hover,.opsx-stat:hover{
  transform:translateY(-2px);
  box-shadow:0 10px 28px rgba(15,23,42,.10)!important;
}

/* Sticky 筛选/工具条 */
#c .sticky,
#c [class*="toolbar"],
#c [class*="filter-bar"]{
  backdrop-filter:blur(10px);
}

/* 状态统一语义色（兼容常见 class） */
.badge,.tag,.status-badge,.status-tag{
  border-radius:999px!important;
  font-weight:600!important;
  letter-spacing:.01em;
}
.badge.success,.tag.success,.status-success{color:var(--ux-success)!important}
.badge.warning,.tag.warning,.status-warning{color:var(--ux-warning)!important}
.badge.danger,.tag.danger,.status-danger{color:var(--ux-danger)!important}

/* 通用弹窗 */
.modal{
  background:rgba(15,23,42,.48)!important;
  backdrop-filter:blur(5px);
}
.modal:not(.hidden)>div{
  animation:tmsModalIn .18s ease-out both;
  border-radius:16px!important;
  box-shadow:0 22px 70px rgba(0,0,0,.22)!important;
}
@keyframes tmsModalIn{
  from{opacity:0;transform:translateY(8px) scale(.985)}
  to{opacity:1;transform:none}
}

/* 全局搜索升级 */
.global-search{
  min-width:300px;
  height:38px;
  display:flex!important;
  align-items:center;
  gap:8px;
  padding:0 12px!important;
  border:1px solid var(--tms-border)!important;
  border-radius:10px!important;
  background:var(--tms-bg-panel-soft)!important;
  color:var(--tms-text-muted)!important;
  transition:border-color .16s ease,box-shadow .16s ease,background .16s ease;
}
.global-search:focus-within{
  border-color:var(--tms-brand)!important;
  background:var(--tms-bg-panel)!important;
  box-shadow:0 0 0 3px color-mix(in srgb,var(--tms-brand) 12%,transparent)!important;
}
.tms-global-search-input{
  flex:1;
  min-width:0;
  border:0!important;
  outline:0!important;
  box-shadow:none!important;
  background:transparent!important;
  color:var(--tms-text-primary)!important;
  font-size:13px;
}
.tms-global-search-kbd{
  font-size:10px;
  padding:2px 5px;
  border:1px solid var(--tms-border);
  border-radius:5px;
  color:var(--tms-text-muted);
  background:var(--tms-bg-panel);
}
.tms-search-pop{
  position:fixed;
  z-index:99999;
  width:min(420px,calc(100vw - 28px));
  max-height:420px;
  overflow:auto;
  background:var(--tms-bg-panel);
  border:1px solid var(--tms-border);
  border-radius:12px;
  box-shadow:0 18px 50px rgba(15,23,42,.18);
  padding:7px;
}
.tms-search-result{
  width:100%;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  padding:10px 11px;
  border:0!important;
  border-radius:8px!important;
  background:transparent!important;
  color:var(--tms-text-primary)!important;
  text-align:left;
}
.tms-search-result:hover{
  background:var(--tms-bg-panel-soft)!important;
}
.tms-search-result small{color:var(--tms-text-muted)}

/* Toast */
#tmsToastRoot{
  position:fixed;
  right:20px;
  top:74px;
  z-index:100000;
  display:flex;
  flex-direction:column;
  gap:8px;
  pointer-events:none;
}
.tms-toast{
  min-width:260px;
  max-width:420px;
  display:flex;
  align-items:flex-start;
  gap:10px;
  padding:11px 13px;
  background:var(--tms-bg-panel);
  color:var(--tms-text-primary);
  border:1px solid var(--tms-border);
  border-radius:11px;
  box-shadow:0 14px 38px rgba(15,23,42,.18);
  animation:tmsToastIn .18s ease-out both;
}
.tms-toast::before{
  content:"";
  width:8px;height:8px;border-radius:50%;
  margin-top:6px;flex:0 0 auto;background:var(--ux-info);
}
.tms-toast.success::before{background:var(--ux-success)}
.tms-toast.warning::before{background:var(--ux-warning)}
.tms-toast.error::before{background:var(--ux-danger)}
@keyframes tmsToastIn{
  from{opacity:0;transform:translateX(12px)}
  to{opacity:1;transform:none}
}

/* 空状态 */
.tms-empty{
  padding:36px 18px;
  text-align:center;
  color:var(--tms-text-muted);
}
.tms-empty svg{
  width:42px;height:42px;
  opacity:.55;
  margin-bottom:9px;
}

/* 专业线性图标 */
.tms-nav-title-icon{
  width:16px;height:16px;display:inline-flex;align-items:center;justify-content:center;
  margin-right:7px;vertical-align:-3px;color:currentColor;
}
.tms-nav-title-icon svg{width:16px;height:16px;stroke:currentColor}

/* 移动端侧栏 */
.tms-mobile-menu{
  display:none;
  width:38px;height:38px;
  align-items:center;justify-content:center;
  border:1px solid var(--tms-border)!important;
  background:var(--tms-bg-panel)!important;
  color:var(--tms-text-primary)!important;
}
.tms-mobile-backdrop{
  display:none;
  position:fixed;inset:0;
  background:rgba(15,23,42,.5);
  z-index:78;
}
@media(max-width:900px){
  .tms-mobile-menu{display:inline-flex}
  .app aside{
    position:fixed!important;
    left:0;top:0;bottom:0;
    width:min(82vw,290px)!important;
    z-index:80!important;
    transform:translateX(-102%);
    transition:transform .2s ease;
  }
  .app.tms-menu-open aside{transform:translateX(0)}
  .app.tms-menu-open .tms-mobile-backdrop{display:block}
  .app main{margin-left:0!important;width:100%!important}
  .global-search{min-width:0!important;max-width:52vw}
  #c{padding:12px!important}
  main>#t{margin:14px 12px 2px!important;font-size:21px!important}
  #c .grid,#c [class*="grid"]{min-width:0}
  #c table{display:block;overflow-x:auto;white-space:nowrap}
  .modal>div{width:calc(100vw - 24px)!important;max-height:92vh;overflow:auto}
}
@media(max-width:620px){
  .global-clock,.top-user-text{display:none!important}
  .global-search{max-width:46vw}
}

/* 深色主题减少过亮白块 */
html[data-tms-theme="navy"] #c .card,
html[data-tms-theme="graphite"] #c .card,
html[data-tms-theme="indigo"] #c .card{
  background:var(--tms-bg-panel)!important;
  color:var(--tms-text-primary)!important;
}

/* 版本信息 */
.tms-version-chip{
  font-size:10px;
  color:var(--tms-text-muted);
  border:1px solid var(--tms-border);
  border-radius:999px;
  padding:3px 7px;
  background:var(--tms-bg-panel-soft);
}


/* === v9.0.1 长列表固定表头补丁 === */
#taskTableWrap,
#driverTableWrap,
#vehicleTableWrap,
#storeTableWrap,
#projectTableWrap,
#customerTableWrap,
.table-wrap,
.table-scroll{
  overflow:auto !important;
  max-height:70vh;
}
#taskTableWrap table thead th,
#driverTableWrap table thead th,
#vehicleTableWrap table thead th,
#storeTableWrap table thead th,
#projectTableWrap table thead th,
#customerTableWrap table thead th,
.table-wrap table thead th,
.table-scroll table thead th{
  position:sticky !important;
  top:0 !important;
  z-index:3 !important;
  background:var(--tms-bg-panel-soft) !important;
}
