/* ============================================================
   焦距网络 · 统一模板样式 (template.css)
   设计基调：浅色、克制、单色 + 单一强调色蓝(#185fa5)、留白、无渐变
   适用范围：所有前端页面 + 后台管理端共用这一套
   说明：
     - 设计变量以 --sd-* 为主
     - 保留旧站 --color-* / --text-* / --space-* / --glass 等别名
       以兼容历史页面（加载本文件后旧组件自动转浅色）
   ============================================================ */

:root{
  /* —— 主色板（统一使用） —— */
  --sd-bg:#f5f6f8;
  --sd-panel:#ffffff;
  --sd-panel2:#fafbfc;
  --sd-border:#e6e8eb;
  --sd-border-strong:#d7dade;
  --sd-text:#1a1d21;
  --sd-muted:#6b7280;
  --sd-faint:#9aa1ac;
  --sd-accent:#185fa5;
  --sd-accent-wk:#e8f1fa;
  --sd-ok:#1f9d55;
  --sd-ok-wk:#e7f6ee;
  --sd-warn:#c77700;
  --sd-warn-wk:#fdf3e3;
  --sd-danger:#d8453a;
  --sd-danger-wk:#fdeceb;
  --sd-r:10px;
  --sd-r-sm:8px;
  --sd-sh:0 1px 2px rgba(16,24,40,.04),0 1px 3px rgba(16,24,40,.06);
  --sd-sh-lg:0 8px 30px rgba(16,24,40,.08);

  /* —— 向后兼容别名（旧页面依赖这些名字） —— */
  --color-primary:var(--sd-accent);
  --color-accent:var(--sd-accent);
  --color-ok:var(--sd-ok);
  --color-no:var(--sd-danger);
  --color-warn:var(--sd-warn);
  --text-primary:var(--sd-text);
  --text-secondary:var(--sd-muted);
  --text-tertiary:var(--sd-faint);
  --text-xs:11px; --text-sm:13px; --text-base:14px; --text-lg:17px;
  --text-xl:20px; --text-2xl:26px;
  --space-xs:6px; --space-sm:10px; --space-md:14px; --space-lg:20px;
  --space-xl:28px; --space-2xl:38px;
  --glass:rgba(255,255,255,.82);
}

/* ============================ base ============================ */
*,*::before,*::after{box-sizing:border-box}
html,body{height:100%}
body{
  margin:0;
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"PingFang SC","Microsoft YaHei",sans-serif;
  background:var(--sd-bg);
  color:var(--sd-text);
  font-size:14px;
  line-height:1.55;
  -webkit-font-smoothing:antialiased;
}
button{font-family:inherit}
input,select,textarea{font-family:inherit;font-size:14px;color:var(--sd-text)}
a{color:var(--sd-accent);text-decoration:none}
a:hover{text-decoration:underline}
h1,h2,h3,h4{margin:0;font-weight:650;color:var(--sd-text)}
.muted,.sd-muted{color:var(--sd-faint)}
.hidden,[hidden]{display:none !important}

/* 统一滚动条（浅色） */
*::-webkit-scrollbar{width:10px;height:10px}
*::-webkit-scrollbar-thumb{background:#d3d7dd;border-radius:6px;border:2px solid var(--sd-bg)}
*::-webkit-scrollbar-thumb:hover{background:#c2c7ce}

/* ============================ 顶部导航 .tc-nav ============================ */
.tc-nav{
  display:flex;align-items:center;gap:16px;
  padding:10px 22px;
  background:var(--sd-panel);
  border-bottom:1px solid var(--sd-border);
  position:sticky;top:0;z-index:50;justify-content:space-between;
}
.tc-brand{
  display:flex;align-items:center;gap:9px;
  font-weight:700;font-size:15px;color:var(--sd-text);
  text-decoration:none;flex:none;white-space:nowrap;
}
.tc-brand:hover{text-decoration:none}
.tc-brand .dot{width:11px;height:11px;border-radius:3px;background:var(--sd-accent);display:inline-block}
.tc-links{display:flex;gap:4px;flex-wrap:wrap;align-items:center;justify-content:center;position:absolute;left:50%;transform:translateX(-50%)}
.tc-links a{
  color:var(--sd-muted);text-decoration:none;
  font-size:13.5px;font-weight:600;
  padding:7px 13px;border-radius:8px;transition:.15s;white-space:nowrap;
}
.tc-links a:hover{color:var(--sd-text);background:var(--sd-panel2);text-decoration:none}
.tc-links a.active{color:#fff;background:var(--sd-accent)}
.tc-nav .spacer{flex:1}
.tc-nav .nav-actions{display:flex;align-items:center;gap:8px;flex:none}
/* 账号区按钮适配（layout.js 注入的旧按钮类） */
.tc-nav #nav-auth,.tc-nav #nav-user{display:flex;align-items:center;gap:8px;flex:none}
.tc-nav #nav-auth button,.tc-nav #nav-user button{
  font:inherit;font-weight:600;font-size:12px;padding:5px 13px;border-radius:7px;border:1px solid var(--sd-border);
  background:#fff;color:var(--sd-text);cursor:pointer;transition:.15s;
}
.tc-nav #nav-auth button:hover,.tc-nav #nav-user button:hover{background:var(--sd-panel2)}
.tc-nav #nav-auth button.primary{background:var(--sd-accent);color:#fff;border-color:var(--sd-accent)}
.tc-nav #nav-auth button.primary:hover{background:var(--sd-accent-hover)}
/* 移动端折叠 */
.nav-toggle{display:none;background:none;border:none;cursor:pointer;padding:6px;flex-direction:column;gap:4px;align-items:center;justify-content:center}
.nav-toggle span{display:block;width:20px;height:2px;background:var(--sd-muted);border-radius:2px}

@media(max-width:860px){
  .tc-nav{flex-wrap:wrap;gap:8px;padding:10px 14px}
  .tc-links{
    order:3;width:100%;display:none;flex-direction:column;align-items:stretch;
    background:var(--sd-panel);border-top:1px solid var(--sd-border);margin:0 -14px -10px;padding:8px 14px;
  }
  .tc-links.open{display:flex}
  .tc-links a{padding:10px 12px}
  .nav-toggle{display:inline-flex;margin-left:auto}
}

/* ============================ 页脚 ============================ */
.tc-footer{
  border-top:1px solid var(--sd-border);
  background:var(--sd-panel);
  padding:28px 22px;margin-top:40px;color:var(--sd-muted);font-size:13px;
}
.tc-footer .footer-inner{max-width:1180px;margin:0 auto;display:flex;flex-wrap:wrap;gap:28px;justify-content:space-between}
.tc-footer a{color:var(--sd-muted);text-decoration:none}
.tc-footer a:hover{color:var(--sd-accent)}
.tc-footer .footer-bottom{max-width:1180px;margin:18px auto 0;padding-top:14px;border-top:1px solid var(--sd-border);color:var(--sd-faint);font-size:12px}

/* ============================ 容器 ============================ */
.tc-wrap{max-width:1180px;margin:0 auto;padding:20px}
.wrap{max-width:1280px;margin:0 auto;padding:20px}
main{display:block}

/* ============================ 卡片 ============================ */
.sd-card,.tc-card,.card{
  background:var(--sd-panel);
  border:1px solid var(--sd-border);
  border-radius:var(--sd-r);
  box-shadow:var(--sd-sh);
  overflow:hidden;
}
.sd-card-h{
  padding:11px 14px;background:var(--sd-panel2);
  border-bottom:1px solid var(--sd-border);font-weight:600;font-size:13px;color:var(--sd-muted);
}

/* glass 旧组件 → 浅色统一 */
.glass{
  background:var(--sd-panel);
  border:1px solid var(--sd-border);
  border-radius:var(--sd-r);
  box-shadow:var(--sd-sh);
}

/* ============================ 按钮 ============================ */
.sd-btn,.btn{
  font:inherit;font-weight:600;cursor:pointer;
  padding:8px 14px;border:1px solid var(--sd-border);
  background:var(--sd-panel);color:var(--sd-text);
  border-radius:var(--sd-r-sm);font-size:13px;transition:.12s;
  display:inline-flex;align-items:center;justify-content:center;gap:6px;
  text-decoration:none;line-height:1.2;
}
.sd-btn:hover,.btn:hover{border-color:var(--sd-border-strong);text-decoration:none}
.sd-btn:disabled,.btn:disabled{opacity:.5;cursor:not-allowed}
.sd-btn.pri,.btn-primary{background:var(--sd-accent);border-color:var(--sd-accent);color:#fff}
.sd-btn.pri:hover,.btn-primary:hover{filter:brightness(1.05);border-color:var(--sd-accent)}
.sd-btn.gh,.btn-ghost{background:var(--sd-panel)}
.sd-btn.sm,.btn-sm{padding:6px 11px;font-size:12.5px}
.sd-btn.lg,.btn-lg{padding:11px 22px;font-size:14px}
.sd-btn.block,.btn-block{width:100%}
.sd-btn.dan,.btn-danger{color:var(--sd-danger);border-color:#f0c5c1}
.sd-btn.dan:hover,.btn-danger:hover{background:var(--sd-danger-wk)}
.sd-btn.accent,.btn-accent{background:var(--sd-accent);border-color:var(--sd-accent);color:#fff}

/* ============================ 表单 ============================ */
.sd-tb{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:14px}
.sd-tb .sp{flex:1}
input,select,textarea{
  padding:8px 11px;border:1px solid var(--sd-border);border-radius:var(--sd-r-sm);
  background:var(--sd-panel);outline:none;color:var(--sd-text);
  transition:border-color .12s;
}
input:focus,select:focus,textarea:focus{border-color:var(--sd-accent)}
input::placeholder,textarea::placeholder{color:var(--sd-faint)}
label{font-size:13px;color:var(--sd-muted)}

/* ============================ 表格 ============================ */
.sd table,table.tc-table,table{
  width:100%;border-collapse:collapse;
}
.sd th,.sd td,table.tc-table th,table.tc-table td,th,td{
  text-align:left;padding:11px 14px;border-bottom:1px solid var(--sd-border);vertical-align:middle;
}
.sd th,table.tc-table th,th{
  color:var(--sd-muted);font-weight:600;font-size:12px;background:var(--sd-panel2);
}
.sd tbody tr:last-child td,table.tc-table tbody tr:last-child td,tbody tr:last-child td{border-bottom:0}
.sd tbody tr:hover,table.tc-table tbody tr:hover,tbody tr:hover{background:var(--sd-panel2)}
.sd-empty{padding:48px;text-align:center;color:var(--sd-faint)}

/* ============================ 徽标 ============================ */
.sd-badge,.badge{
  display:inline-block;padding:2px 9px;border-radius:999px;
  background:var(--sd-accent-wk);color:var(--sd-accent);font-size:12px;font-weight:600;
}
.sd-badge.ok,.badge.ok{background:var(--sd-ok-wk);color:var(--sd-ok)}
.sd-badge.warn,.badge.warn{background:var(--sd-warn-wk);color:var(--sd-warn)}
.sd-badge.dan,.badge.dan{background:var(--sd-danger-wk);color:var(--sd-danger)}

/* ============================ 标签 / 子视图切换 ============================ */
.tc-tabs{display:flex;gap:8px;margin-bottom:18px;flex-wrap:wrap}
.tc-tab{
  font:inherit;font-weight:600;cursor:pointer;border:1px solid var(--sd-border);
  background:var(--sd-panel);color:var(--sd-muted);
  border-radius:var(--sd-r-sm);padding:8px 20px;font-size:13px;transition:.15s;
}
.tc-tab:hover{color:var(--sd-text)}
.tc-tab.active{background:var(--sd-accent);border-color:var(--sd-accent);color:#fff}

.sd-subtabs{display:inline-flex;gap:4px;background:#f1f1f4;padding:3px;border-radius:8px;margin-bottom:16px;flex-wrap:wrap}
.sd-subtab{
  font:inherit;font-weight:600;cursor:pointer;border:none;background:transparent;
  color:var(--sd-muted);border-radius:6px;padding:6px 16px;font-size:13px;transition:.15s;
}
.sd-subtab:hover{color:var(--sd-text)}
.sd-subtab.active{background:var(--sd-accent);color:#fff}

/* ============================ 弹窗 ============================ */
.sd-modal{
  position:fixed;inset:0;background:rgba(31,35,41,.45);z-index:100;
  display:flex;align-items:center;justify-content:center;padding:16px;
}
.sd-modal-box{
  background:var(--sd-panel);border:1px solid var(--sd-border);border-radius:14px;
  box-shadow:0 20px 60px rgba(0,0,0,.18);width:min(560px,100%);
  max-height:calc(100vh - 32px);overflow:hidden;display:flex;flex-direction:column;
}
.sd-modal-head{display:flex;align-items:center;justify-content:space-between;padding:16px 18px;border-bottom:1px solid var(--sd-border)}
.sd-modal-head h4{margin:0;font-size:15px}
.sd-modal-body{padding:16px 18px;overflow:auto}
.sd-modal-foot{padding:12px 18px;border-top:1px solid var(--sd-border);display:flex;justify-content:flex-end;gap:8px;background:var(--sd-panel2)}

/* ============================ toast ============================ */
.sd-toast{
  position:fixed;left:50%;bottom:28px;transform:translateX(-50%);
  background:#1f2329;color:#fff;padding:10px 18px;border-radius:10px;
  font-size:13px;box-shadow:0 8px 30px rgba(0,0,0,.18);z-index:80;
  opacity:0;transition:.2s;pointer-events:none;
}
.sd-toast.show{opacity:1}

/* ============================ 区块标题（营销/旧页通用） ============================ */
.section-label{display:inline-block;font-size:12px;font-weight:600;color:var(--sd-accent);letter-spacing:.04em}
.section-title{font-size:22px;font-weight:700;margin:6px 0}
.section-desc{color:var(--sd-muted);font-size:14px;line-height:1.6}
.card-icon{display:inline-flex;align-items:center;justify-content:center;border-radius:12px}
.card-icon.purple{background:var(--sd-accent-wk);color:var(--sd-accent)}

/* ============================ 杂项兼容 ============================ */
.feature-gate{max-width:720px;margin:48px auto;padding:var(--sd-r);}

/* ============================ 后台 admin-v2 统一微调 ============================ */
/* admin 已是浅色，仅把强调色对齐为站点蓝，并让共享组件与模板一致 */
.admin-root,body{--brand:var(--sd-accent);--brand2:var(--sd-accent);--brand-weak:var(--sd-accent-wk)}
