@import url("portal.css");
/* =====================================================================
   YZF Terminal · 主题层 —— 依据《UI设计规范.md》实现
   柔和青蓝 · 低饱和 · 质感优先 · 分层柔和阴影 · 性能红线合规
   ===================================================================== */
:root{
  /* ---- 色板(规范令牌) ---- */
  --c-primary:#5ab4c4;
  --c-primary-deep:#3d95a8;
  --c-secondary:#7aa5d8;
  --c-gradient:linear-gradient(135deg,#7cc4d6,#8fb6e4);
  --c-gradient-soft:linear-gradient(135deg,#a3d6e4,#b8cdf0);
  --c-bg:linear-gradient(180deg,#f7fbfc 0%,#f5f8fd 100%);
  --c-text:#1f2937;
  --c-text-muted:#6b7280;
  --c-border:#e3f0f3;
  --c-card-border:#e8f1f4;
  --c-card:rgba(255,255,255,.9);
  --c-ok:#7db89b; --c-warn:#d9a86c; --c-err:#d98080; --c-link:#7aa5d8;
  --c-ok-bg:#e6f7ec; --c-warn-bg:#fdf1e6; --c-err-bg:#fbeaea; --c-link-bg:#e9f0fb;
  /* ---- 间距 / 圆角 ---- */
  --s-1:4px;--s-2:8px;--s-3:12px;--s-4:16px;--s-5:24px;--s-6:32px;
  --r-sm:8px;--r-md:12px;--r-lg:16px;--r-full:999px;--c-radius:14px;
  /* ---- 阴影层级 ---- */
  --sh-1:0 1px 3px rgba(15,23,42,.06);
  --sh-2:0 4px 14px rgba(15,23,42,.08);
  --sh-3:0 10px 30px rgba(15,23,42,.12);
  --sh-4:0 24px 60px rgba(15,23,42,.18);
  --sh-card:inset 0 1px 0 rgba(255,255,255,.9),0 1px 2px rgba(15,23,42,.04),0 6px 20px rgba(15,23,42,.05);
  --sh-card-hover:inset 0 1px 0 rgba(255,255,255,1),0 4px 10px rgba(15,23,42,.05),0 16px 36px rgba(90,180,196,.16);
  --sh-well:inset 0 1px 2px rgba(15,23,42,.045),inset 0 0 0 1px rgba(227,240,243,.85);
  /* ---- 动效 ---- */
  --t-fast:160ms;--t-med:240ms;--t-slow:320ms;
  --ease:cubic-bezier(.25,.1,.25,1);
  --ease-out:cubic-bezier(.16,1,.3,1);
  --ease-press:cubic-bezier(.4,0,.2,1);
  /* ---- 字体 ---- */
  --font-body:'MiSans',Inter,ui-sans-serif,system-ui,-apple-system,'Segoe UI','PingFang SC','HarmonyOS Sans SC','Microsoft YaHei',sans-serif;
  --font-display:'ZCOOL XiaoWei','MiSans','PingFang SC','Microsoft YaHei',sans-serif;
  --font-mono:Consolas,'Cascadia Code','JetBrains Mono','Courier New',monospace;
}
/* ============ 基底 ============ */
html,body{background:#f7fbfc!important}
body{background:var(--c-bg)!important;color:var(--c-text)!important;font-family:var(--font-body)!important;-webkit-font-smoothing:antialiased;padding:24px!important}
body *{font-variant-numeric:tabular-nums}
/* 点阵底纹(规范: 26px 点阵, 主色 8% 透明) — 静态, 无动画 */
body:before{content:"";position:fixed;inset:0;pointer-events:none;z-index:0;
  background-image:radial-gradient(rgba(90,180,196,.08) 1px,transparent 1.4px);
  background-size:26px 26px}
#app,.page,#portal{position:relative;z-index:1}
#app{max-width:1280px;margin:0 auto}
/* 标题字体(规范: 标题用 display 字体) */
h1,h2,h3,h4,.tb-title,.panel-head h2,.login-title,.user-card-title,.user-brand-name,.p-hero h1,.admin-stat b{font-family:var(--font-display)!important}
/* 等宽: 数字/代码/日志/表格数据/ID */
b,strong,code,kbd,pre,samp,
.count,.admin-stat b,.stat b,.stats b,.p-stats b,.tb-title,
.badge,.tag,.bal,.hot,.qiang-info b,
.acc-table td,.acc-table th,.card-table td,.card-table th,
.log,.log-box,.log-list,.log-item,input,textarea,select,.mini-input,.mini-select{font-family:var(--font-mono)!important}
/* ============ 卡片 / 面板 (规范: 白卡+浅边框+sh-card+顶部渐变条) ============ */
.card,.panel,.acc-panel,.user-card,.login-card,.admin-card,.p-card,.stat,.stats,.p-stats,
.topbar,.user-topbar,.qiang-info,.switch-field,.acc-table-wrap,.card-table-wrap,.tb-nav{
  background:var(--c-card)!important;
  border:1px solid var(--c-card-border)!important;
  border-radius:var(--c-radius)!important;
  box-shadow:var(--sh-card)!important;
}
.card,.panel,.acc-panel,.admin-card,.p-card,.login-card,.user-card{position:relative;overflow:hidden}
.card::before,.panel::before,.acc-panel::before,.admin-card::before,.p-card::before{
  content:"";position:absolute;top:0;left:0;right:0;height:4px;background:var(--c-gradient);opacity:.85;pointer-events:none}
.card:hover,.panel:hover,.acc-panel:hover,.admin-card:hover,.p-card:hover{box-shadow:var(--sh-card-hover)!important;transition:box-shadow var(--t-med) var(--ease)}
.card.wide{padding:26px 28px 28px}
/* 顶栏: 渐变细线(规范) + 渐变标题字 */
.topbar{padding:14px 22px!important}
.topbar::before{content:"";position:absolute;top:0;left:0;right:0;height:1px;
  background:linear-gradient(90deg,transparent,var(--c-primary) 55%,transparent);opacity:.55;pointer-events:none}
.tb-title{background:linear-gradient(120deg,#1f2937 35%,#3d95a8 75%,#5a7fd8)!important;
  -webkit-background-clip:text!important;background-clip:text!important;
  -webkit-text-fill-color:transparent!important;color:transparent!important;letter-spacing:6px!important}
/* 抽屉 */
.drawer{background:#ffffff!important;border-right:1px solid var(--c-border)!important;box-shadow:var(--sh-3)!important}
.drawer-mask{background:rgba(15,23,42,.28)!important}
.drawer-title{color:var(--c-text)!important}
.drawer-item{color:var(--c-text-muted)!important;border-radius:var(--r-sm)!important;transition:background var(--t-fast) var(--ease),color var(--t-fast) var(--ease)}
.drawer-item:hover{color:var(--c-primary-deep)!important;background:rgba(90,180,196,.08)!important}
.drawer-item.danger{color:var(--c-err)!important}
/* ============ 输入框 (内凹 well) ============ */
.input,.l-input-wrap,input[type=text],input[type=password],input[type=number],input[type=email],textarea,select,.mini-input,.mini-select{
  background:#ffffff!important;color:var(--c-text)!important;border:1px solid #dfe9ee!important;
  box-shadow:var(--sh-well)!important;border-radius:var(--r-md)!important;
  transition:border-color var(--t-fast) var(--ease),box-shadow var(--t-fast) var(--ease)}
input::placeholder,textarea::placeholder{color:#9aa7b5!important}
input:hover,.l-input-wrap:hover{border-color:#c9dbe2!important}
input:focus,textarea:focus,select:focus,.input:focus,.l-input-wrap:focus-within{
  border-color:var(--c-primary)!important;box-shadow:var(--sh-well),0 0 0 3px rgba(90,180,196,.15)!important;outline:none!important}
.l-input{color:var(--c-text)!important}
html body input.l-input,html body #app input.l-input{background:transparent!important;border:none!important;box-shadow:none!important;border-radius:0!important;height:100%!important}
.l-input:-webkit-autofill{-webkit-box-shadow:0 0 0 1000px #ffffff inset!important;-webkit-text-fill-color:var(--c-text)!important;caret-color:var(--c-primary-deep)!important}
label,.l-label,.field label,.panel-head h2{color:var(--c-text)!important}
.l-label{color:var(--c-text-muted)!important}
/* ============ 按钮 (柔和青蓝) ============ */
.btn,.tab,.drawer-close,.l-eye,.menu-btn,.mini-btn{font-family:var(--font-body)!important}
.btn{border-radius:var(--r-md)!important;letter-spacing:2px}
.btn-primary,.l-btn,.user-btn,.p-enter,.p-enter2{
  background:var(--c-gradient)!important;color:#ffffff!important;font-weight:700!important;
  border:none!important;box-shadow:var(--sh-2)!important;
  transition:box-shadow var(--t-med) var(--ease),transform var(--t-fast) var(--ease-press)}
.btn-primary:hover,.l-btn:hover,.user-btn:hover,.p-enter:hover,.p-enter2:hover{
  box-shadow:0 16px 36px rgba(90,180,196,.35)!important;transform:translateY(-1px)}
.btn-primary:active,.l-btn:active,.user-btn:active{transform:translateY(0) scale(.985)}
.btn-primary:disabled,.l-btn:disabled,.user-btn:disabled{opacity:.5!important;cursor:not-allowed!important;transform:none!important}
.btn-soft,.tb-nav button,.tb-account-actions .btn{
  background:#ffffff!important;color:var(--c-text)!important;border:1px solid var(--c-border)!important;box-shadow:var(--sh-1)!important}
.btn-soft:hover,.tb-nav button:hover{color:var(--c-primary-deep)!important;border-color:var(--c-primary)!important;background:#f4fbfc!important}
.tab{color:var(--c-text-muted)!important;background:#ffffff!important;border:1px solid var(--c-border)!important;box-shadow:var(--sh-1)!important}
.tab:hover{color:var(--c-primary-deep)!important}
.tab.active{background:var(--c-gradient)!important;color:#ffffff!important;border-color:transparent!important;box-shadow:0 4px 14px rgba(90,180,196,.35)!important}
.menu-btn{background:#ffffff!important;border:1px solid var(--c-border)!important;box-shadow:var(--sh-1)!important}
.menu-btn span{background:var(--c-text)!important}
.menu-btn.on span{background:var(--c-primary)!important}
/* ============ 语义色 (低饱和) ============ */
.badge.ok,.bal,.user-result{background:var(--c-ok-bg)!important;color:#2e7b5d!important;border:1px solid #cdeeda!important}
.badge.bad,.user-result.error,.msg.error{background:var(--c-err-bg)!important;color:#a35454!important;border:1px solid #f2d4d4!important}
.tag{background:var(--c-link-bg)!important;color:#4a6db3!important;border:1px solid #dbe7f6!important}
.tag.muted{background:#eef2f6!important;color:#7e899f!important;border:1px solid var(--c-border)!important}
.hot{color:var(--c-warn)!important}
.qiang-info{box-shadow:var(--sh-1)!important}
.qiang-info b{color:var(--c-primary-deep)!important}
.qiang-info b.hot{color:var(--c-warn)!important}
.qiang-info .qi i{background:var(--c-gradient)!important;box-shadow:none!important}
.count{background:var(--c-link-bg)!important;color:#4a6db3!important;border:1px solid #dbe7f6!important}
/* ============ 表格 (规范: 浅青表头/极浅分隔线/淡青 hover) ============ */
.acc-table th,.card-table th{color:#4a9cb0!important;background:#f0fbfc!important;border-bottom:1px solid #e3f0f3!important;font-weight:600!important}
.acc-table td,.card-table td{border-bottom:1px solid #eef4f6!important;color:var(--c-text)!important}
.acc-table tr:last-child td,.card-table tr:last-child td{border-bottom:none!important}
.acc-table tr:hover td,.card-table tr:hover td{background:rgba(122,196,214,.07)!important}
.acc-line2,.cell-sub,.dim{color:var(--c-text-muted)!important}
/* ============ 日志区 ============ */
.log,.log-box,.log-list{background:#f4fafb!important;border:1px solid var(--c-border)!important;border-radius:var(--r-md)!important;color:var(--c-text)!important;box-shadow:var(--sh-well)!important}
.log-item .t,.log-time{color:#93a3b1!important}
.log-item .ok{color:#2e7b5d!important}.log-item .err{color:#a35454!important}.log-item .warn{color:#b07a3a!important}
/* ============ 管理端统计卡 (规范: page-hero 思路) ============ */
.admin-stat,.admin-card{background:var(--c-card)!important;border:1px solid var(--c-card-border)!important;box-shadow:var(--sh-card)!important;border-radius:var(--c-radius)!important}
.admin-stat span{color:var(--c-text-muted)!important}
.admin-stat b{color:var(--c-primary-deep)!important}
.admin-stat b:hover{color:var(--c-primary)!important}
/* ============ 登录页 (柔和青蓝 hero) ============ */
.login-page,.user-logged-page{background:var(--c-bg)!important;color:var(--c-text)!important}
.login-page::before{content:none!important}
.login-deco{opacity:.9}
.deco-grid{background-image:linear-gradient(rgba(90,180,196,.07) 1px,transparent 1px),linear-gradient(90deg,rgba(90,180,196,.07) 1px,transparent 1px)!important}
.deco-glow.g1{background:rgba(124,196,214,.20)!important}
.deco-glow.g2{background:rgba(143,182,228,.18)!important}
.deco-glow.g3{background:rgba(122,165,216,.14)!important}
.deco-dot{border-color:rgba(90,180,196,.35)!important}
.login-card{background:rgba(255,255,255,.96)!important;border:1px solid var(--c-card-border)!important;
  backdrop-filter:none!important;-webkit-backdrop-filter:none!important;
  box-shadow:var(--sh-3)!important}
.login-card::before{content:"";position:absolute;top:0;left:0;right:0;height:4px;background:var(--c-gradient);opacity:.85;pointer-events:none}
.login-logo{background:var(--c-gradient)!important;color:#ffffff!important;box-shadow:0 6px 14px rgba(90,180,196,.35)!important}
.login-eyebrow{color:#4a9cb0!important;letter-spacing:2.2px}
.login-title,.user-card-title,.user-brand-name,.login-card h1,.login-card h2{color:var(--c-text)!important}
.login-subtitle,.user-card-desc,.user-auth-sub,.user-hero p{color:var(--c-text-muted)!important}
.user-brand{color:var(--c-text)!important}
.l-page-foot,.user-foot,.user-note,.l-foot,.l-hint{color:#9aa7b5!important}
.l-extra,.l-remember{color:var(--c-text-muted)!important}
.l-extra a,.l-extra{color:var(--c-link)!important}
.l-extra a:hover{color:var(--c-primary-deep)!important}
.l-eye{color:#9aa7b5!important}.l-eye:hover{color:var(--c-primary-deep)!important}
.l-icon{color:#9aa7b5!important}
.l-input-wrap:focus-within .l-icon{color:var(--c-primary-deep)!important}
.l-switch-btn{background:rgba(255,255,255,.6)!important;border:1px dashed #c9dbe2!important;color:var(--c-text-muted)!important;box-shadow:none!important}
.l-switch-btn b{color:var(--c-primary-deep)!important}
.l-switch-btn:hover{border-color:var(--c-primary)!important;color:var(--c-primary-deep)!important}
/* ⚠ 这里必须**只定义未选中态**。
   原来写的是 ".l-checkbox{border:…!important;background:#ffffff!important}" —— 无条件锁死白底,
   而 style.css 里的选中态是 `.l-remember input:checked + .l-checkbox{background:linear-gradient(...)}`
   (无 !important)。**!important 压过特异性**, 所以无论选没选中, 复选框永远是白底灰框 ——
   点得动、v-model 也真的变了, 但**看不出任何变化**, 用户就报成"记住账号/记住用户名点不了"。
   收到 `input:not(:checked) +` 下, 选中态就交回 style.css 的蓝底白色对勾。 */
.l-remember input:not(:checked) + .l-checkbox{border:1px solid #c9dbe2!important;background:#ffffff!important}
/* ============ 控制台组件 ============ */
.plan-item{background:#fbfdfe!important;border:1px solid var(--c-border)!important;box-shadow:var(--sh-1)!important}
.plan-main strong{color:var(--c-text)!important;font-family:var(--font-mono)!important}
.plan-main small{color:var(--c-text-muted)!important}
.plan-edit label{color:var(--c-text-muted)!important}
.mini-btn{background:#ffffff!important;border:1px solid var(--c-border)!important;color:var(--c-text)!important;box-shadow:var(--sh-1)!important}
.mini-btn:hover{color:var(--c-primary-deep)!important;border-color:var(--c-primary)!important;background:#f4fbfc!important}
.registration-setting{background:linear-gradient(135deg,rgba(240,253,250,.96),rgba(239,246,255,.96))!important;border:1px solid var(--c-border)!important;box-shadow:var(--sh-1)!important}
.registration-setting strong{color:var(--c-text)!important}
.rights-subhead h3{color:var(--c-text)!important}
.rm-count{background:var(--c-link-bg)!important;color:#4a6db3!important;border:1px solid #dbe7f6!important}
.rights-partial{color:var(--c-warn)!important}
.coupon-item{background:#ffffff!important;border:1px solid #dfe9f6!important;box-shadow:var(--sh-1)!important}
.coupon-item .cp-face{background:linear-gradient(180deg,rgba(90,180,196,.12),rgba(90,180,196,.04))!important;border-right:1px dashed rgba(90,180,196,.35)!important;color:var(--c-primary-deep)!important}
.coupon-item .cp-name{color:var(--c-text)!important;font-family:var(--font-mono)!important}
.coupon-item .cp-meta,.coupon-item .cp-scene{color:var(--c-text-muted)!important}
.coupon-item .cp-k{color:#a9b2c4!important}
.coupon-item .cp-v{color:var(--c-text)!important;font-family:var(--font-mono)!important}
.coupon-item.dim{background:#fbfdfe!important;opacity:.8}
.rs-badge{background:#eef2f6!important;color:#7e899f!important;border:1px solid var(--c-border)!important}
.rs-badge.live{background:var(--c-ok-bg)!important;color:#2e7b5d!important;border-color:#cdeeda!important}
.rs-badge.left{background:var(--c-link-bg)!important;color:#4a6db3!important;border-color:#dbe7f6!important}
.rs-badge.done{background:#eef2f6!important;color:#7e899f!important}
.op.ckmini{background:#ffffff!important;border:1px solid var(--c-border)!important;color:var(--c-text)!important;box-shadow:var(--sh-1)!important}
.op.ckmini:hover{color:var(--c-primary-deep)!important;border-color:var(--c-primary)!important;background:#f4fbfc!important}
.empty{color:var(--c-text-muted)!important;background:transparent!important;border:none!important}
.user-empty,.admin-hero .user-empty{background:#fbfdfe!important;border:1px dashed var(--c-border)!important;color:var(--c-text-muted)!important;box-shadow:none!important}
/* 滚动条/选区 */
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-thumb{background:#d3e4ea;border-radius:8px;border:2px solid #f7fbfc}
::-webkit-scrollbar-thumb:hover{background:#b8d8e0}
::-webkit-scrollbar-track{background:transparent}
::selection{background:rgba(90,180,196,.25);color:#1f2937}
/* 对齐微调 */
.panel-head{margin-bottom:16px!important}
.acc-panel,.panel{padding:20px!important}
.acc-table th,.acc-table td{padding:10px 14px!important}
.acc-table{min-width:1080px!important}
/* ============ 性能红线(规范): 后台零常驻动画 ============ */
.log-item,.badge,.tag,.bal,.count,.rs-badge,.btn,.tab,.drawer-item,.p-dot,.deco-glow,.deco-dot,.topbar::before,.admin-stat b{animation:none!important;transition:box-shadow var(--t-fast) var(--ease),background var(--t-fast) var(--ease),color var(--t-fast) var(--ease),border-color var(--t-fast) var(--ease)}
/* ============ 统一统计卡/计数徽标(规范低饱和青蓝) ============ */
html #app .admin-stat:before,html #app .admin-stat:nth-child(2):before,html #app .admin-stat:nth-child(3):before,html #app .admin-stat:nth-child(4):before,html #app .admin-stats .admin-stat:before,html #app .admin-stats .admin-stat:nth-child(2):before,html #app .admin-stats .admin-stat:nth-child(3):before,html #app .admin-stats .admin-stat:nth-child(4):before,html body #app .admin-stat:before,body #app .admin-stat:nth-child(2):before,body #app .admin-stat:nth-child(3):before,body #app .admin-stat:nth-child(4):before{background:var(--c-gradient)!important;opacity:.85!important;height:4px!important}
#app .admin-stat b,#app .admin-stats .admin-stat b,
body #app .admin-stat b{color:var(--c-primary-deep)!important;background:none!important;-webkit-background-clip:initial!important;background-clip:initial!important;-webkit-text-fill-color:currentColor!important}
#app .panel-head .count,body #app .panel-head .count{background:var(--c-gradient)!important;box-shadow:0 4px 10px rgba(90,180,196,.25)!important}
#app .panel-head h2::before,body #app .panel-head h2::before{background:linear-gradient(180deg,#7cc4d6,#3d95a8)!important;box-shadow:none!important}
#app .card-table code,body #app .card-table code{background:#f4fbfc!important;color:#3d95a8!important;border:1px solid #e3f0f3!important}





/* ---- nth-child 覆盖兜底(避免旧构建彩色顶条残留) ---- */
html body #app .admin-stat:nth-child(2):before,html body #app .admin-stat:nth-child(3):before,html body #app .admin-stat:nth-child(4):before,
html body #app .admin-stats .admin-stat:nth-child(2):before,html body #app .admin-stats .admin-stat:nth-child(3):before,html body #app .admin-stats .admin-stat:nth-child(4):before{
  background:var(--c-gradient)!important;opacity:.85!important;height:4px!important}

/* ---- 移动端对齐修正(768px 单断点) ---- */
@media(max-width:768px){
  body{padding:16px!important}
  #app{max-width:100%!important}
  .login-page,.user-login-page{padding:0!important;overflow-x:hidden!important}
  .login-card,.user-login-card{max-width:calc(100vw - 32px)!important;width:calc(100vw - 32px)!important;box-sizing:border-box!important}
  .l-input-wrap,.l-btn,.l-extra,.l-hint,.l-foot{max-width:100%!important;width:100%!important;box-sizing:border-box!important}
  .l-switch-btn{flex-wrap:wrap!important;row-gap:8px!important;justify-content:center!important}
  .admin-stats{grid-template-columns:repeat(2,1fr)!important}
  .topbar,.user-topbar{flex-wrap:wrap!important;row-gap:12px!important}
}

/* ---- 登录卡移动兜底: 不依赖媒体断点 ---- */
html body .login-card,html body .user-login-card,html body #app .login-card,html body #app .user-login-card{
  width:min(408px,calc(100vw - 32px))!important;max-width:min(408px,calc(100vw - 32px))!important;box-sizing:border-box!important}
html body .login-form,html body #app .login-form{width:100%!important;max-width:100%!important;box-sizing:border-box!important}
html body .l-input-wrap,html body #app .l-input-wrap,html body .l-btn,html body #app .l-btn,html body .l-extra,html body #app .l-extra{
  width:100%!important;max-width:100%!important;box-sizing:border-box!important}


/* ---- 登录辅助行移动适配 ---- */
@media(max-width:520px){
  html body .l-extra,html body #app .l-extra{flex-direction:column!important;align-items:flex-start!important;gap:8px!important}
}

/* ---- 记住账号/提示行: 桌面两端对齐, 移动纵排 ---- */
html body .l-extra,html body #app .l-extra{display:block!important;text-align:left!important}
@media(max-width:520px){
  html body .l-extra,html body #app .l-extra{flex-direction:column!important;align-items:flex-start!important;gap:8px!important}
  html body .l-hint,html body #app .l-hint{margin-left:0!important;width:auto!important;max-width:100%!important}
}

/* ---- 底部行 / 记住用户名行 ----
   「忘记密码」原来自己独占一行(.l-forgot-row, 右对齐 + 负 margin), 现已并进 .l-bottom-row,
   与「没有账号？立即注册」排在同一行右侧; 旧的 .l-forgot-row 规则已无对应 DOM, **已删除**
   (它们原本还自相矛盾: 同一选择器在 266/270/275 三处分别写 -6px / 6px / 2px 的 margin)。 */
html body .l-forgot,html body #app .l-forgot{display:inline-block!important}
html body .l-extra,html body #app .l-extra{margin-top:4px!important;margin-bottom:18px!important}

/* ---- 常驻动画全面禁用(规范红线) ---- */
*{animation-iteration-count:1!important}

/* ---- 登录卡顶部渐变条透明度统一 ---- */
html body .login-card::before,html body #app .login-card::before{opacity:.7!important}

/* ---- 登录 Logo 柔和化 ---- */
html body .login-logo,html body #app .login-logo{background:var(--c-gradient)!important;box-shadow:0 10px 24px rgba(90,180,196,.25)!important}





/* ---- 后台顶部导航选中态修复: 渐变底+白字 ---- */
html body .tb-nav .btn-soft.active,html body #app .tb-nav .btn-soft.active,
html body .tb-nav button.active,html body #app .tb-nav button.active{
  background:linear-gradient(135deg,#5b8cff,#3a63e0)!important;color:#ffffff!important;border-color:transparent!important;
  box-shadow:0 4px 14px rgba(90,130,224,.35)!important}

/* ---- 日志区改为天空蓝: 背景/边框/文字适配 ---- */
html body .log-panel,html body #app .log-panel{
  background:linear-gradient(180deg,#eaf6ff,#f6fbff)!important;border:1px solid #cfe8ff!important;
  box-shadow:0 10px 30px rgba(72,124,196,.12)!important}
html body .log-tabs,html body #app .log-tabs{
  background:rgba(255,255,255,.78)!important;border:1px solid #d7e9ff!important;box-shadow:0 3px 10px rgba(72,124,196,.08)!important}
html body .log-tab,html body #app .log-tab{color:#517292!important;background:transparent!important}
html body .log-tab:hover:not(.on),html body #app .log-tab:hover:not(.on){color:#2a7bd4!important;background:#e9f5ff!important}
html body .log-tab.on,html body #app .log-tab.on{color:#ffffff!important;background:linear-gradient(135deg,#61b8ff,#3a86e8)!important;box-shadow:0 4px 12px rgba(48,117,214,.28)!important}
html body .log-window,html body #app .log-window{
  background-color:#e8f6ff!important;background-image:linear-gradient(180deg,#e9f7ff,#f7fcff)!important;
  border:1px solid #cbe7ff!important;box-shadow:inset 0 0 30px rgba(106,164,227,.10)!important;
  scrollbar-color:#8ec3f6 #e8f6ff!important}
html body .log-window::-webkit-scrollbar-thumb,html body #app .log-window::-webkit-scrollbar-thumb{background:#8ec3f6!important}
html body .log-window::-webkit-scrollbar-thumb:hover,html body #app .log-window::-webkit-scrollbar-thumb:hover{background:#5fa8ef!important}
html body .log-line:before,html body #app .log-line:before{color:#5d9ce8!important}
html body .log-line:hover,html body #app .log-line:hover{background:#edf7ff!important;border-left-color:#4d9ff2!important}
html body .log-time,html body #app .log-time{color:#5c7fa5!important}
html body .log-msg,html body #app .log-msg{color:#28506f!important}
html body .log-level.info,html body #app .log-level.info{color:#3180cd!important}
html body .log-level.ok,html body #app .log-level.ok{color:#19996b!important;text-shadow:none!important}
html body .log-level.warn,html body #app .log-level.warn{color:#c47b14!important}
html body .log-level.error,html body #app .log-level.error{color:#d84f4f!important;text-shadow:none!important}
html body .log-level.heal,html body #app .log-level.heal{color:#2f92d2!important;text-shadow:none!important}
html body .log-window .empty,html body #app .log-window .empty{color:#60809e!important}
html body .log-panel .panel-head .btn-ghost,html body #app .log-panel .panel-head .btn-ghost{
  color:#3f77b8!important;background:#ffffff!important;border:1px solid #d6e8ff!important}
html body .log-panel .panel-head .btn-ghost:hover:not(:disabled),html body #app .log-panel .panel-head .btn-ghost:hover:not(:disabled){
  color:#2a7bd4!important;background:#ecf7ff!important;border-color:#9ecdf8!important}
