﻿:root{
  --bg:#f6f8fc;
  --panel:#ffffff;
  --ink:#1f2733;
  --ink-soft:#5a6573;
  --muted:#9aa3b2;
  --line:#eef1f6;
  --line-strong:#e3e8f0;
  --brand:#3b4ab8;
  --brand-deep:#1f2a6b;
  --brand-soft:#eef1ff;
  --accent:#e8703a;
  --ok:#2e9e6b;
  --danger:#d6453f;
  --radius:16px;
  --radius-sm:10px;
  --shadow:0 1px 2px rgba(16,24,40,.04),0 8px 24px rgba(16,24,40,.06);
  --shadow-sm:0 1px 2px rgba(16,24,40,.05);
}
*{margin:0;padding:0;box-sizing:border-box}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{font-family:-apple-system,"Segoe UI","Microsoft YaHei",sans-serif;background:var(--bg);color:var(--ink);line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}
a{color:var(--brand);text-decoration:none}

/* 顶部（登录页保留） */
.header{background:linear-gradient(135deg,var(--brand-deep),var(--brand));color:#fff;padding:18px 28px;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px}
.header h1{font-size:20px;font-weight:600;display:flex;align-items:center;gap:8px}
.header .nav{display:flex;gap:14px;align-items:center;font-size:14px}
.header .nav a,.header .nav span{color:#dfe3ff}
.header .nav a:hover{color:#fff}
.badge-role{background:rgba(255,255,255,.18);padding:3px 10px;border-radius:12px;font-size:12px}

.wrap{max-width:1280px;margin:0 auto;padding:28px 28px 48px}

.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:26px 28px;margin-bottom:22px}
.card h2{font-size:16px;font-weight:600;color:var(--ink);margin-bottom:18px;letter-spacing:.2px;display:flex;align-items:center;gap:8px}
.card h2::before{content:"";width:4px;height:16px;border-radius:3px;background:var(--brand);display:inline-block}

.toolbar{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-bottom:16px}
label{font-size:14px;color:var(--ink-soft)}

select,input[type=text],input[type=password],input[type=file],textarea{font-family:inherit;font-size:14px;padding:10px 12px;border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:#fff;color:var(--ink);transition:border-color .15s,box-shadow .15s}
select:focus,input:focus,textarea:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px rgba(59,74,184,.12)}
textarea{width:100%;resize:vertical;min-height:96px;line-height:1.7}
input[type=file]{padding:8px 12px;background:#fbfcfe;cursor:pointer}

.btn{padding:9px 18px;border:none;border-radius:var(--radius-sm);cursor:pointer;font-size:14px;font-weight:600;transition:transform .05s,background .15s,box-shadow .15s;box-shadow:var(--shadow-sm)}
.btn:active{transform:translateY(1px)}
.btn-blue{background:var(--brand);color:#fff}.btn-blue:hover{background:var(--brand-deep)}
.btn-green{background:var(--ok);color:#fff}.btn-green:hover{background:#268257}
.btn-red{background:var(--danger);color:#fff}.btn-red:hover{background:#b8342f}
.btn-gray{background:#eef1f6;color:var(--ink-soft);box-shadow:none}.btn-gray:hover{background:#e3e8f0}
.btn-sm{padding:6px 13px;font-size:13px}
.btn:disabled{opacity:.5;cursor:not-allowed}

table{width:100%;border-collapse:collapse;font-size:13px}
thead th{background:#fafbfe;text-align:left;padding:12px 14px;border-bottom:1px solid var(--line-strong);color:var(--muted);font-weight:600;white-space:nowrap;position:sticky;top:61px;z-index:5;text-transform:none}
tbody td{padding:12px 14px;border-bottom:1px solid var(--line);vertical-align:top}
tbody tr:last-child td{border-bottom:none}
tbody tr:hover td{background:#f7f9fe}
.table-wrap{overflow:visible;border:1px solid var(--line);border-radius:var(--radius-sm)}

.tpl-text{min-width:280px;max-width:520px;line-height:1.7;color:var(--ink)}
.latest-cell{min-width:120px;white-space:nowrap;font-size:12px;line-height:1.6}
.latest-cell .imp-time{color:var(--ink)}
.latest-cell .send-time{color:#1565c0;font-weight:600}
.latest-cell .muted{color:#bbb}
.rate-bar{display:inline-block;width:60px;height:6px;background:#eef1f6;border-radius:6px;overflow:hidden;vertical-align:middle;margin-right:8px}
.rate-bar-fill{height:100%;border-radius:6px}
.th-reply-rate{cursor:pointer;user-select:none;white-space:nowrap}
.th-reply-rate:hover{color:var(--brand)}
.th-reply-rate .sort-ind{margin-left:4px;font-size:11px;opacity:.45}
.th-reply-rate.sorted .sort-ind{opacity:1;color:var(--brand)}
.copy-btn{padding:5px 13px;background:var(--brand-soft);color:var(--brand);border:none;border-radius:8px;cursor:pointer;font-size:13px;font-weight:600;transition:background .15s}
.copy-btn:hover{background:#e0e5ff}
.reply-cnt{color:var(--accent);font-weight:600}
.reply-link{color:var(--brand);font-weight:600;cursor:pointer;text-decoration:underline dotted;text-underline-offset:3px}
.reply-link:hover{color:var(--brand-deep)}

.stat-row{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:18px}
.stat-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:12px 16px;box-shadow:var(--shadow-sm);min-width:120px;flex:1}
.stat-card .num{font-size:22px;font-weight:700;color:var(--brand-deep);line-height:1.1}
.stat-card .lbl{font-size:12px;color:var(--muted);margin-top:4px}

.toast{position:fixed;top:22px;right:22px;background:var(--ok);color:#fff;padding:12px 22px;border-radius:var(--radius-sm);font-weight:600;z-index:9999;display:none;box-shadow:0 8px 24px rgba(16,24,40,.18)}
.toast.show{display:block;animation:toastin .2s ease}
.toast.err{background:var(--danger)}
@keyframes toastin{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}

.modal-overlay{position:fixed;inset:0;background:rgba(16,24,40,.5);backdrop-filter:blur(2px);z-index:10000;display:none;align-items:center;justify-content:center;padding:20px}
.modal-overlay.show{display:flex}
.modal-box{background:#fff;border-radius:var(--radius);max-width:860px;width:100%;max-height:85vh;display:flex;flex-direction:column;box-shadow:0 24px 60px rgba(16,24,40,.3)}
.modal-head{padding:18px 24px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:flex-start;gap:12px}
.modal-head h3{font-size:16px;font-weight:600;color:var(--ink)}
.modal-head .sub{font-size:12px;color:var(--muted);margin-top:4px}
.modal-close{background:#f1f3f8;border:none;width:32px;height:32px;border-radius:50%;cursor:pointer;font-size:16px;color:var(--ink-soft);transition:background .15s}
.modal-close:hover{background:#e3e8f0}
.modal-body{padding:20px 24px;overflow:auto}

.login-box{max-width:400px;margin:72px auto}
.login-box .field{margin-bottom:16px}
.login-box label{display:block;margin-bottom:8px}
.login-box input{width:100%}

.muted{color:var(--muted);font-size:13px}
.tag-ok{color:var(--ok);font-weight:600}
.tag-no{color:var(--danger);font-weight:600}
.reco-item{padding:14px 16px;border:1px solid var(--line);border-radius:var(--radius-sm);margin-bottom:10px;background:#fbfcfe}
.reco-item .meta{font-size:12px;color:var(--muted);margin-top:6px}
.section-title{font-size:14px;font-weight:600;color:var(--ink);margin:16px 0 10px}
.hint{background:#f8fafc;border:1px solid var(--line-strong);border-left:3px solid var(--brand);color:var(--ink-soft);padding:12px 16px;border-radius:var(--radius-sm);font-size:13px;margin-bottom:18px;line-height:1.7}
.hint code{background:#eef1f6;padding:1px 6px;border-radius:5px;font-size:12px;color:var(--brand-deep)}

/* ===== 侧边栏布局 ===== */
.layout{display:flex;min-height:100vh}
.sidebar{width:236px;background:linear-gradient(180deg,var(--brand-deep),#2a3795);color:#fff;display:flex;flex-direction:column;position:fixed;top:0;bottom:0;left:0;z-index:50;box-shadow:2px 0 16px rgba(16,24,40,.08)}
.sidebar .brand{padding:20px 18px;font-size:15px;font-weight:600;display:flex;align-items:center;gap:9px;line-height:1.3;border-bottom:1px solid rgba(255,255,255,.1)}
.brand .txt{flex:1}
.sidebar .menu{flex:1;padding:14px 12px;overflow-y:auto;display:flex;flex-direction:column;gap:4px}
.sidebar .menu a{display:flex;align-items:center;gap:12px;padding:11px 14px;color:#c7ccf0;font-size:14px;border-radius:10px;transition:background .15s,color .15s}
.sidebar .menu a .mi-wrap{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;flex-shrink:0}
.sidebar .menu a .mi{width:19px;height:19px;opacity:.85;transition:opacity .15s}
.sidebar .menu a:hover .mi,.sidebar .menu a.active .mi{opacity:1}
.sidebar .menu a:hover{background:rgba(255,255,255,.08);color:#fff}
.sidebar .menu a.active{background:rgba(255,255,255,.14);color:#fff;font-weight:600}
.sidebar .userbox{padding:16px 22px;border-top:1px solid rgba(255,255,255,.1);font-size:13px;color:#c7ccf0}
.sidebar .userbox .role{display:inline-block;background:rgba(255,255,255,.16);padding:3px 10px;border-radius:10px;margin-bottom:8px}
.sidebar .userbox a{color:#ffd27a}
a.brand,a.brand:link,a.brand:visited,a.brand .txt{color:#fff;text-decoration:none}
a.brand:hover .txt{text-decoration:underline}
.sidebar .site-link{display:block;margin:0 12px 14px;padding:10px 14px;text-align:center;font-size:13px;color:#fff;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.16);border-radius:10px;transition:background .15s}
.sidebar .site-link:hover{background:rgba(255,255,255,.2)}
.app-footer{margin-top:auto;padding:22px 16px 16px;text-align:center;color:#98a0b3;font-size:13px}
.app-footer a{color:#5b6bd6;text-decoration:none}
.app-footer a:hover{text-decoration:underline}
.main{margin-left:236px;flex:1;min-width:0;display:flex;flex-direction:column;min-height:100vh}
.main .topbar{background:rgba(255,255,255,.85);backdrop-filter:blur(8px);border-bottom:1px solid var(--line);padding:18px 32px;font-size:18px;font-weight:600;color:var(--ink);position:sticky;top:0;z-index:40}
.main > .wrap{max-width:none;margin:0;width:100%;padding-top:24px;padding-left:32px;padding-right:32px}
/* 顶栏汉堡按钮（默认隐藏，仅移动端显示） */
.nav-toggle{display:none;background:transparent;border:none;font-size:22px;line-height:1;color:var(--ink);cursor:pointer;padding:4px 10px 4px 0;margin-right:4px}
.topbar-title{vertical-align:middle}
.sidebar-backdrop{display:none;position:fixed;inset:0;background:rgba(16,24,40,.45);z-index:45}
.sidebar-backdrop.show{display:block}
/* 侧边栏全尺寸常驻：任何窗口宽度（IDE 预览窗/桌面/手机）都直接显示左侧菜单。
   不再用抽屉隐藏，避免窄窗找不到菜单。手机端内容区横向滚动适配。 */
@media(max-width:900px){
  .main .topbar{padding:14px 18px;font-size:16px;display:flex;align-items:center;gap:6px}
  .main > .wrap{padding-left:16px;padding-right:16px;padding-top:18px}
  .wrap{padding:18px 16px 40px}
  .card{padding:18px 16px;border-radius:14px;margin-bottom:16px}
  .card h2{font-size:15px;margin-bottom:14px}
  .header{padding:14px 18px}
  .header h1{font-size:18px}
  /* 表格横向滚动 + 可点触 */
  .table-wrap{overflow-x:auto;max-height:none;-webkit-overflow-scrolling:touch}
  table{font-size:12.5px}
  thead th,tbody td{padding:9px 10px}
  thead th{position:static}
  .tpl-text{min-width:200px;max-width:none}
  /* 工具栏元素纵向排列、输入框占满 */
  .toolbar{gap:9px}
  .toolbar input[type=text],.toolbar input[type=password],.toolbar select,.toolbar textarea{flex:1 1 100%;min-width:0;width:100%}
  .toolbar .btn{flex:1 1 auto}
  /* 统计卡两列（grid 保证不溢出） */
  .stat-row{gap:10px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}
  .stat-card{min-width:0;padding:14px 16px}
  .stat-card .num{font-size:22px;word-break:break-all}
  /* 弹窗占满 */
  .modal-overlay{padding:0;align-items:flex-end}
  .modal-box{max-width:100%;max-height:92vh;border-radius:16px 16px 0 0}
  .modal-head{padding:16px 18px}
  .modal-body{padding:16px 18px}
  /* 上传区单列 */
  .upload-grid{grid-template-columns:1fr}
  .import-card{padding:18px 16px}
  .import-btns{width:100%}
  .import-btns .btn{flex:1}
  /* 登录卡片 */
  .login-box{margin:32px auto;max-width:100%}
  .toast{top:auto;bottom:16px;left:16px;right:16px;text-align:center}
}
@media(max-width:380px){
  .stat-row{grid-template-columns:1fr}
}
/* ===== 真机（窄屏）侧边栏抽屉模式：避免常驻侧边栏挤压正文 =====
   ≤600px：侧边栏默认滑出屏外，点顶栏 ☰ 汉堡滑入（带遮罩）；正文占满宽度。
   >600px（IDE 预览/平板/桌面）：侧边栏常驻。窄的预览窗也可点汉堡打开。 */
@media(max-width:600px){
  .sidebar{transform:translateX(-100%);transition:transform .28s cubic-bezier(.4,0,.2,1);width:248px;max-width:84vw}
  .sidebar.open{transform:none}
  .main{margin-left:0}
  .nav-toggle{display:block}
}
/* ===== 手机端：模板明细表转卡片 ===== */
@media(max-width:760px){
  #sections .table-wrap{overflow:visible}
  #sections table,#sections tbody,#sections tr,#sections td{display:block;width:auto}
  #sections thead{display:none}
  #sections tr{background:#fff;border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin-bottom:12px;box-shadow:var(--shadow-sm)}
  #sections td{border:none;padding:5px 0;display:flex;justify-content:space-between;align-items:center;gap:12px;font-size:13px}
  #sections td::before{content:attr(data-label);color:var(--muted);font-weight:600;flex:0 0 auto;font-size:12px}
  #sections td.tpl-text{display:block;min-width:0;max-width:none;white-space:normal;word-break:break-word;line-height:1.7;padding:6px 0 10px;border-bottom:1px dashed var(--line);margin-bottom:6px}
  #sections td.tpl-text::before{display:block;margin-bottom:4px}
  #sections td.row-idx{color:var(--muted);font-size:12px;padding-bottom:2px}
  #sections td .rate-bar{flex:1 1 auto;max-width:120px}
  #sections td.carrier-cell{flex-wrap:wrap}
  #sections td.carrier-cell>div{flex:0 0 auto}
  #sections td[data-label='操作']{justify-content:flex-end;padding-top:8px}
  #sections td[data-label='操作'] .copy-btn{flex:1 1 auto}
}
/* ===== 手机端：各签名概览表转卡片 ===== */
@media(max-width:760px){
  .sig-overview{overflow:visible;border:none;border-radius:0}
  .sig-overview table,.sig-overview tbody,.sig-overview tr,.sig-overview td{display:block;width:auto}
  .sig-overview thead{display:none}
  .sig-overview tr{background:#fff;border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin-bottom:12px;box-shadow:var(--shadow-sm)}
  .sig-overview td{border:none;padding:5px 0;display:flex;justify-content:space-between;align-items:center;gap:12px;font-size:13px}
  .sig-overview td::before{content:attr(data-label);color:var(--muted);font-weight:600;flex:0 0 auto;font-size:12px}
  .sig-overview td.sig-name{display:block;border-bottom:1px dashed var(--line);padding:2px 0 8px;margin-bottom:6px;font-size:14px}
  .sig-overview td.sig-name::before{display:none}
  .sig-overview tr:last-child{margin-bottom:0}
}


.cat-badge{display:inline-block;font-size:11px;padding:2px 9px;border-radius:20px;font-weight:600}
.cat-first_party{background:#fdeceb;color:#c0392b}
.cat-neutral{background:#eaf2fd;color:#2563c9}
.cat-unsigned{background:#eef1f6;color:#5a6573}
.perm-grid{display:flex;flex-wrap:wrap;gap:10px;margin:10px 0}
.perm-grid label{display:flex;align-items:center;gap:7px;background:#f7f9fe;border:1px solid var(--line);padding:8px 14px;border-radius:10px;cursor:pointer;transition:border-color .15s}
.perm-grid label:hover{border-color:var(--brand)}
.sig-check-list{max-height:220px;overflow:auto;border:1px solid var(--line);border-radius:var(--radius-sm);padding:10px}
.sig-check-list label{display:block;padding:5px 6px;font-size:13px;cursor:pointer;border-radius:6px}
.sig-check-list label:hover{background:#f7f9fe}
.bind-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.bind-label{font-size:13px;font-weight:600;color:var(--ink);margin-bottom:8px}
.bind-grid textarea{width:100%;min-height:200px;box-sizing:border-box}
@media(max-width:760px){.bind-grid{grid-template-columns:1fr}.bind-grid textarea{min-height:120px}}

/* ===== 数据导入卡片（大气简洁） ===== */
.import-card{padding:30px 32px}
.card-lead{font-size:13.5px;color:var(--ink-soft);line-height:1.75;max-width:760px;margin-bottom:22px}
.upload-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-bottom:22px}
.dropzone{display:flex;flex-direction:column;align-items:center;text-align:center;gap:7px;padding:30px 22px;border:1.5px dashed var(--line-strong);border-radius:14px;background:#fbfcfe;cursor:pointer;transition:border-color .15s,background .15s,box-shadow .15s}
.dropzone:hover{border-color:var(--brand);background:var(--brand-soft);box-shadow:var(--shadow-sm)}
.dz-icon{font-size:30px;line-height:1}
.dz-title{font-size:15px;font-weight:600;color:var(--ink)}
.dz-sub{font-size:12.5px;color:var(--muted)}
.dz-files{margin-top:6px;font-size:13px;font-weight:600;color:var(--brand);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dz-files.has-files{color:var(--ok)}
.import-actions{display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.import-btns{display:flex;gap:12px;flex-wrap:wrap}
.btn-ghost-danger{background:#fff;color:var(--danger);border:1px solid #f2c4c2;box-shadow:none}
.btn-ghost-danger:hover{background:#fdeceb}
@media(max-width:640px){.upload-grid{grid-template-columns:1fr}.import-card{padding:24px 20px}}

/* 可排序表头（各签名概览等） */
.th-sort,.th-dtl{cursor:pointer;user-select:none;white-space:nowrap;transition:color .15s}
.th-sort:hover,.th-dtl:hover{color:var(--brand)}
.th-sort .sort-ind,.th-dtl .sort-ind{margin-left:4px;font-size:11px;opacity:.35}
.th-sort.sorted,.th-dtl.sorted{color:var(--brand)}
.th-sort.sorted .sort-ind,.th-dtl.sorted .sort-ind{opacity:1;color:var(--brand)}

/* 后台分模块 Tab */
.admin-tabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:22px;border-bottom:1px solid var(--line-strong);padding-bottom:0}
.admin-tab{appearance:none;border:none;background:transparent;color:var(--ink-soft);font-size:14px;font-weight:600;font-family:inherit;cursor:pointer;padding:11px 18px;border-radius:var(--radius-sm) var(--radius-sm) 0 0;position:relative;top:1px;transition:color .15s,background .15s}
.admin-tab:hover{color:var(--brand);background:var(--brand-soft)}
.admin-tab.active{color:var(--brand);background:var(--panel)}
.admin-tab.active::after{content:'';position:absolute;left:14px;right:14px;bottom:-1px;height:2px;background:var(--brand);border-radius:2px}
.admin-panel{display:none}
.admin-panel.active{display:block;animation:adminFade .18s ease}
@keyframes adminFade{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
@media(max-width:640px){.admin-tabs{gap:2px}.admin-tab{padding:9px 12px;font-size:13px;flex:1;text-align:center}}

/* 概览日期切换分段标签：今天/昨天/历史 */
.range-bar{display:flex;align-items:center;flex-wrap:wrap;gap:6px 14px;margin:0 0 14px}
.range-bar .seg-tabs{margin:0}
.range-bar #rangeInfo{font-size:12.5px}
.seg-tabs{display:inline-flex;gap:0;margin:0 0 14px;border:1px solid var(--line-strong);border-radius:var(--radius-sm);overflow:hidden;background:var(--panel)}
.seg-tab{appearance:none;border:none;background:transparent;color:var(--ink-soft);font-size:13px;font-weight:600;font-family:inherit;cursor:pointer;padding:8px 18px;border-right:1px solid var(--line-strong);transition:color .15s,background .15s}
.seg-tab:last-child{border-right:none}
.seg-tab:hover{color:var(--brand);background:var(--brand-soft)}
.seg-tab.active{color:#fff;background:var(--brand)}
@media(max-width:640px){.seg-tabs{display:flex;width:100%}.seg-tab{flex:1;padding:9px 0;text-align:center}}

/* 页面级标签导航（模板浏览 / 模板优化 跨页切换） */
.page-tabs{display:flex;gap:5px;margin-bottom:18px;background:var(--brand-soft);border-radius:var(--radius-sm);padding:5px;width:fit-content;max-width:100%}
.page-tab{appearance:none;border:none;background:transparent;color:var(--ink-soft);font-size:14px;font-weight:600;font-family:inherit;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;gap:6px;padding:9px 20px;border-radius:var(--radius-sm);transition:color .15s,background .15s,box-shadow .15s;white-space:nowrap}
.page-tab:hover{color:var(--brand)}
.page-tab.active{color:#fff;background:var(--brand);box-shadow:0 2px 6px rgba(0,0,0,.12)}
@media(max-width:640px){.page-tabs{width:100%}.page-tab{flex:1;justify-content:center;padding:10px 10px;font-size:13px}}

/* 模板分布页：账号分组 */
.at-group-lbl{display:inline-flex;align-items:center;gap:5px;font-size:13px;color:var(--ink-soft);cursor:pointer;white-space:nowrap}
.at-group-lbl input{margin:0}
.at-group-row td{background:var(--brand-soft);font-size:13px;padding-top:9px;padding-bottom:9px}

/* 模板预览分页器 */
.pager{display:flex;align-items:center;justify-content:center;gap:6px;flex-wrap:wrap;margin-top:18px}
.pager.pager-top{margin-top:0;margin-bottom:14px}
.pager-tail{display:inline-flex;align-items:center;gap:6px;flex-wrap:nowrap;white-space:nowrap}
.pager-size{display:inline-flex;align-items:center;gap:6px;margin-left:6px;color:var(--ink-soft);font-size:13px}
.pager-size select{padding:4px 8px}
.pager button{appearance:none;border:1px solid var(--line-strong);background:var(--panel);color:var(--ink);font-size:13px;font-family:inherit;cursor:pointer;padding:6px 12px;border-radius:var(--radius-sm);transition:background .15s,color .15s,border-color .15s}
.pager button:hover:not(:disabled){border-color:var(--brand);color:var(--brand);background:var(--brand-soft)}
.pager button.active{background:var(--brand);color:#fff;border-color:var(--brand)}
.pager button:disabled{opacity:.45;cursor:not-allowed}
.pager .pager-info{color:var(--ink-soft);font-size:13px;margin:0 6px}
.pager .pager-gap{color:var(--ink-soft);padding:0 2px}

/* 卡发专区 Word 式文档展示 */
.card-doc{border:1px solid var(--line-strong);border-radius:var(--radius-sm);padding:16px 18px;margin-bottom:8px;background:#fff;box-shadow:var(--shadow-sm)}
.card-doc-head{display:flex;align-items:center;gap:8px;margin-bottom:10px}
.card-doc-no{display:inline-flex;align-items:center;justify-content:center;min-width:24px;height:24px;padding:0 7px;border-radius:12px;background:var(--brand-soft);color:var(--brand);font-size:13px;font-weight:600}
.card-doc-body{white-space:pre-wrap;word-break:break-word;line-height:1.9;font-size:15px;color:var(--ink);background:#fafbfe;border:1px dashed var(--line-strong);border-radius:8px;padding:14px 16px;font-family:-apple-system,'Segoe UI','Microsoft YaHei',sans-serif}
@media(max-width:640px){.card-doc{padding:12px}.card-doc-body{font-size:14px;padding:12px}}

/* ===== 友情链接 ===== */
.link-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px;margin-top:12px}
.link-item{display:flex;align-items:center;gap:10px;padding:14px 16px;border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:#fff;box-shadow:var(--shadow-sm);text-decoration:none;color:var(--ink);transition:border-color .15s,box-shadow .15s,transform .15s}
.link-item:hover{border-color:var(--brand);box-shadow:0 4px 14px rgba(40,90,200,.12);transform:translateY(-1px)}
.link-ico{font-size:20px;flex:0 0 auto}
.link-body{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}
.link-name{font-weight:600;font-size:15px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.link-url{font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.link-note{font-size:12px;color:var(--brand);margin-top:2px}
.link-go{flex:0 0 auto;color:var(--muted);font-size:16px;font-weight:600}
.link-item:hover .link-go{color:var(--brand)}
@media(max-width:640px){.link-grid{grid-template-columns:1fr}}

/* ===== 使用引导按钮与弹窗 ===== */
.main .topbar{display:flex;align-items:center;gap:10px}
.main .topbar .topbar-title{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.guide-btn{flex:0 0 auto;margin-left:auto;background:var(--brand);color:#fff;border:none;border-radius:999px;padding:7px 16px;font-size:13px;font-weight:600;cursor:pointer;box-shadow:var(--shadow-sm);transition:background .15s,transform .05s}
.guide-btn:hover{background:var(--brand-deep)}
.guide-btn:active{transform:translateY(1px)}
.cs-btn{margin-left:8px;background:#1aad19}
.cs-btn:hover{background:#179b16}
.cs-box{max-width:340px;text-align:center}
.cs-body{display:flex;flex-direction:column;align-items:center;gap:16px;padding-top:6px}
.cs-qr{width:110px;height:110px;display:flex;align-items:center;justify-content:center;border:1px solid #eee;border-radius:12px;background:#fff;overflow:hidden}
.cs-qr img{max-width:100%;max-height:100%;object-fit:contain}
.cs-qr-tip{color:var(--ink-soft);font-size:13px;line-height:1.8;padding:0 16px}
.cs-link{width:100%;display:block;text-align:center;text-decoration:none}
.guide-box{max-width:560px}
.guide-steps{list-style:none;counter-reset:gstep;margin:0;padding:0;display:flex;flex-direction:column;gap:14px}
.guide-steps li{counter-increment:gstep;position:relative;padding:2px 4px 2px 44px;min-height:30px}
.guide-steps li::before{content:counter(gstep);position:absolute;left:0;top:0;width:30px;height:30px;border-radius:50%;background:var(--brand);color:#fff;font-size:14px;font-weight:700;display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow-sm)}
.guide-steps .g-tit{font-size:14px;font-weight:600;color:var(--ink);margin-bottom:3px}
.guide-steps .g-desc{font-size:13px;line-height:1.7;color:var(--ink-soft)}
@media (max-width:640px){.guide-btn{padding:6px 12px;font-size:12px}.main .topbar .topbar-title{font-size:15px}}

/* ===== 复制兜底浮层 ===== */
.copy-fallback{display:none;position:fixed;inset:0;background:rgba(16,24,40,.45);z-index:9998;align-items:center;justify-content:center;padding:20px}
.copy-fallback.show{display:flex}
.copy-fallback .cf-box{background:#fff;border-radius:14px;padding:18px;max-width:480px;width:100%;box-shadow:0 12px 32px rgba(16,24,40,.22)}
.copy-fallback .cf-head{font-weight:600;margin-bottom:10px;color:var(--ink)}
.copy-fallback textarea{width:100%;min-height:140px;border:1px solid var(--line);border-radius:8px;padding:10px;font-size:13px;line-height:1.6;resize:vertical;box-sizing:border-box}
.copy-fallback .cf-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:12px}
/* 语音播放进度条 */
.voice-progress{display:none;align-items:center;gap:10px;margin-top:10px}
.voice-progress.on{display:flex}
.voice-bar{position:relative;flex:1;height:8px;background:var(--line-strong);border-radius:999px;cursor:pointer;min-width:120px}
.voice-bar-fill{position:absolute;left:0;top:0;height:100%;width:0;background:var(--ok);border-radius:999px;transition:width .1s linear}
.voice-bar-dot{position:absolute;top:50%;left:0;width:14px;height:14px;margin-left:-7px;transform:translateY(-50%);background:#fff;border:2px solid var(--ok);border-radius:50%;box-shadow:var(--shadow-sm)}
.voice-time{font-variant-numeric:tabular-nums;color:var(--ink-soft);font-size:12px;white-space:nowrap}

/* 手机端排序条（桌面端隐藏，表头点击排序即可） */
.mobile-sort{display:none}
@media(max-width:760px){
  .mobile-sort{display:flex;align-items:center;gap:10px;margin:4px 0 14px}
  .mobile-sort label{color:var(--ink-soft);font-size:13px;flex:0 0 auto}
  .mobile-sort select{flex:1 1 auto;min-width:0}
  .mobile-sort #mSortDir{flex:0 0 auto;white-space:nowrap}
}

/* 号码识别页：标签页 */
.tabs{display:flex;gap:6px;margin-bottom:14px;border-bottom:1px solid var(--line-strong);flex-wrap:wrap}
.tab{appearance:none;border:none;background:transparent;cursor:pointer;font-size:15px;font-weight:600;color:var(--ink-soft);padding:10px 16px;border-radius:var(--radius-sm) var(--radius-sm) 0 0;margin-bottom:-1px;border-bottom:2px solid transparent;transition:color .15s,border-color .15s,background .15s}
.tab:hover{color:var(--brand)}
.tab.active{color:var(--brand-deep);border-bottom-color:var(--brand);background:var(--brand-soft)}
.tab-panel{display:none}
.tab-panel.active{display:block}


/* ======================================================================
   AI 机器人专区：沉浸式播放器（适配亮色主题）
   ====================================================================== */
.av{display:flex;flex-direction:column;height:100%;min-height:420px}
.av-visual{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:20px;padding:34px 20px 22px;background:linear-gradient(160deg,#eef1ff,#f6f8fc);border:1px solid var(--line);border-radius:var(--radius)}
.av-core{position:relative;width:104px;height:104px;border-radius:50%;background:linear-gradient(135deg,var(--brand),var(--brand-deep));display:flex;align-items:center;justify-content:center;box-shadow:0 12px 30px rgba(59,74,184,.28)}
.av-core::after{content:"";position:absolute;inset:-12px;border-radius:50%;border:2px solid rgba(59,74,184,.20);opacity:0}
.av-visual.speaking .av-core::after{opacity:1;animation:avPulse 1.5s ease-out infinite}
@keyframes avPulse{0%{transform:scale(1);opacity:.55}100%{transform:scale(1.55);opacity:0}}
.av-wave{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;gap:4px;pointer-events:none}
.av-wave span{display:block;width:4px;height:16px;background:rgba(255,255,255,.6);border-radius:3px;opacity:0}
.av-visual.speaking .av-wave span{animation:avBar 1s ease-in-out infinite}
.av-visual.speaking .av-wave span:nth-child(1){animation-delay:0s}
.av-visual.speaking .av-wave span:nth-child(2){animation-delay:.08s}
.av-visual.speaking .av-wave span:nth-child(3){animation-delay:.16s}
.av-visual.speaking .av-wave span:nth-child(4){animation-delay:.24s}
.av-visual.speaking .av-wave span:nth-child(5){animation-delay:.32s}
.av-visual.speaking .av-wave span:nth-child(6){animation-delay:.40s}
.av-visual.speaking .av-wave span:nth-child(7){animation-delay:.32s}
.av-visual.speaking .av-wave span:nth-child(8){animation-delay:.24s}
.av-visual.speaking .av-wave span:nth-child(9){animation-delay:.16s}
.av-visual.speaking .av-wave span:nth-child(10){animation-delay:.08s}
@keyframes avBar{0%,100%{height:10px;opacity:.5}50%{height:42px;opacity:1}}
.av-face{position:relative;z-index:2;line-height:0}
.av-caption{min-height:28px;font-size:17px;line-height:1.7;color:var(--ink);text-align:center;max-width:580px;word-break:break-word;font-weight:500}

.av-chat{flex:1;overflow-y:auto;padding:14px 4px;display:flex;flex-direction:column;gap:14px;min-height:160px}
.av-msg{display:flex;gap:10px;align-items:flex-start;animation:avMsgIn .25s ease}
@keyframes avMsgIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
.av-msg.user{flex-direction:row-reverse}
.av-ava{flex:0 0 32px;width:32px;height:32px;border-radius:50%;background:var(--brand);display:flex;align-items:center;justify-content:center}
.av-msg.user .av-ava{background:var(--ok)}
.av-bubble{max-width:76%;padding:10px 14px;border-radius:14px;font-size:14px;line-height:1.7;background:#f1f3fb;color:var(--ink)}
.av-msg.ai .av-bubble{border-top-left-radius:4px}
.av-msg.user .av-bubble{background:var(--brand-soft);border-top-right-radius:4px}
.av-tag{display:inline-block;margin-right:8px;font-size:11px;color:var(--brand);font-weight:600}
.av-time{display:block;margin-top:4px;font-size:11px;color:var(--muted);text-align:right}

.av-reply{display:flex;gap:10px;flex-wrap:wrap;justify-content:center;padding:14px;border-top:1px solid var(--line)}
.av-chip{appearance:none;border:1.5px solid var(--brand);background:#fff;color:var(--brand);padding:10px 22px;border-radius:999px;cursor:pointer;font-size:14px;font-weight:600;transition:background .15s,color .15s,transform .05s;box-shadow:var(--shadow-sm)}
.av-chip:hover{background:var(--brand);color:#fff}
.av-chip:active{transform:translateY(1px)}
.av-chip.ok{border-color:var(--ok);color:var(--ok)}
.av-chip.ok:hover{background:var(--ok);color:#fff}
.av-chip.no{border-color:var(--danger);color:var(--danger)}
.av-chip.no:hover{background:var(--danger);color:#fff}

/* 沉浸式播放器（右侧抽屉 + 手机通话模型） */
.robot-player{position:fixed;top:0;right:0;width:380px;max-width:100vw;height:100vh;background:radial-gradient(circle at 50% 30%,#2a2d3a,#13151c 70%);z-index:9000;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:20px 16px;transform:translateX(100%);transition:transform .32s cubic-bezier(.4,0,.2,1);box-shadow:-12px 0 40px rgba(0,0,0,.4)}
.robot-player.show{transform:translateX(0)}
.rp-exit{position:absolute;top:12px;right:12px;width:34px;height:34px;border-radius:50%;border:none;background:rgba(255,255,255,.12);color:#fff;font-size:16px;cursor:pointer;transition:background .15s;z-index:9001}
.rp-exit:hover{background:rgba(255,255,255,.25)}
.rp-price{position:absolute;top:12px;right:56px;height:34px;padding:0 14px;border-radius:999px;border:none;background:rgba(255,255,255,.12);color:#ffd27a;font-size:13px;font-weight:600;cursor:pointer;transition:background .15s;z-index:9001;display:inline-flex;align-items:center;gap:4px}
.rp-price:hover{background:rgba(255,255,255,.25)}

/* 手机外壳 */
.phone-stage{display:flex;align-items:center;justify-content:center;width:100%}
.phone{position:relative;width:300px;max-width:100%;height:min(620px,88vh);background:#0b0c10;border:9px solid #1c1f26;border-radius:38px;box-shadow:0 30px 80px rgba(0,0,0,.6),inset 0 0 0 2px #2a2e38;display:flex;flex-direction:column;overflow:hidden}
.phone.ringing{animation:phoneRing .5s ease-in-out infinite}
@keyframes phoneRing{0%,100%{transform:translateY(0) rotate(0)}25%{transform:translateY(-3px) rotate(-.6deg)}75%{transform:translateY(3px) rotate(.6deg)}}
.phone-notch{position:absolute;top:0;left:50%;transform:translateX(-50%);width:120px;height:22px;background:#0b0c10;border-radius:0 0 16px 16px;z-index:5;display:flex;align-items:center;justify-content:center}
.phone-speaker{width:46px;height:5px;background:#2a2e38;border-radius:3px}
.phone-home-bar{position:absolute;bottom:6px;left:50%;transform:translateX(-50%);width:110px;height:4px;background:rgba(255,255,255,.35);border-radius:3px;z-index:5}

/* 手机屏幕 */
.phone-screen{flex:1;display:flex;flex-direction:column;background:linear-gradient(160deg,#1e2333,#2b1f3a 50%,#15121f);color:#fff;overflow:hidden;padding-top:30px}
.phone-statusbar{display:flex;align-items:center;justify-content:space-between;padding:2px 22px 6px;font-size:12px;font-weight:600;color:rgba(255,255,255,.9)}
.phone-statusbar .ps-icons{font-size:11px;letter-spacing:2px}

/* 来电显示区 */
.call-caller{text-align:center;padding:6px 20px 2px}
.call-label{font-size:11px;color:rgba(255,255,255,.55);letter-spacing:1px;text-transform:uppercase}
.call-name{font-size:22px;font-weight:700;margin-top:4px;letter-spacing:.5px}
.call-sub{font-size:13px;color:rgba(255,255,255,.7);margin-top:3px}
.call-status{font-size:13px;color:#7bed9f;margin-top:8px;font-weight:600;min-height:18px}

/* 手机屏幕内的 av 组件适配 */
.phone-screen .av{flex:1;display:flex;flex-direction:column;min-height:0;padding:0 14px}
.phone-screen .av-visual{background:transparent;border:none;padding:8px 10px;gap:12px}
.phone-screen .av-core{width:78px;height:78px;box-shadow:0 10px 28px rgba(99,102,241,.4)}
.phone-screen .av-caption{color:#fff;font-size:15px;max-width:100%;min-height:24px;text-shadow:0 1px 4px rgba(0,0,0,.4)}
.phone-screen .av-chat{flex:1;min-height:0;max-height:150px;overflow-y:auto;padding:4px 2px;mask-image:linear-gradient(to bottom,transparent,#000 12px)}
.phone-screen .av-chat::-webkit-scrollbar{width:3px}
.phone-screen .av-chat::-webkit-scrollbar-thumb{background:rgba(255,255,255,.2);border-radius:2px}
.phone-screen .av-msg.ai .av-bubble{background:rgba(255,255,255,.14);color:#fff;backdrop-filter:blur(4px)}
.phone-screen .av-msg.user .av-bubble{background:rgba(99,102,241,.35);color:#fff}
.phone-screen .av-time{color:rgba(255,255,255,.5)}
.phone-screen .av-tag{color:#a5b4fc}
.phone-screen .av-ava{background:rgba(99,102,241,.6)}
.phone-screen .av-msg.user .av-ava{background:rgba(16,185,129,.6)}
.phone-screen .av-reply{border-top:1px solid rgba(255,255,255,.1);background:rgba(0,0,0,.15);padding:10px;gap:8px;justify-content:center}
.phone-screen .av-chip{background:rgba(255,255,255,.16);color:#fff;border-color:rgba(255,255,255,.3);backdrop-filter:blur(4px);padding:8px 14px;font-size:13px}
.phone-screen .av-chip:hover{background:rgba(99,102,241,.6)}
.phone-screen .av-chip.ok{border-color:#7bed9f;color:#7bed9f}
.phone-screen .av-chip.ok:hover{background:#10b981;color:#fff}
.phone-screen .av-chip.no{border-color:#ff7675;color:#ff7675}
.phone-screen .av-chip.no:hover{background:#e74c3c;color:#fff}

/* 底部操作区：拨号盘 + 挂断 */
.call-actions{padding:6px 14px 26px;display:flex;flex-direction:column;align-items:center;gap:10px}
.call-dial{display:none;grid-template-columns:repeat(3,46px);gap:9px;transition:all .2s}
.call-dial.open{display:grid}
.dial-key{width:46px;height:46px;border-radius:50%;border:none;background:rgba(255,255,255,.12);color:#fff;font-size:19px;font-weight:600;cursor:pointer;transition:background .12s,transform .05s;backdrop-filter:blur(4px)}
.dial-key:hover{background:rgba(255,255,255,.22)}
.dial-key:active{transform:scale(.92)}
.dial-star,.dial-hash{font-size:16px}
.call-end-row{display:flex;align-items:center;justify-content:center;gap:24px}
.call-tool{width:52px;height:52px;border-radius:50%;border:none;background:rgba(255,255,255,.15);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .12s,transform .05s}
.call-tool:hover{background:rgba(255,255,255,.28)}
.call-tool:active{transform:scale(.94)}
.call-hangup{width:64px;height:64px;border-radius:50%;border:none;background:linear-gradient(135deg,#e74c3c,#c0392b);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 8px 22px rgba(231,76,60,.45);transition:transform .1s,box-shadow .15s}
.call-hangup:hover{box-shadow:0 10px 28px rgba(231,76,60,.6)}
.call-hangup:active{transform:scale(.94)}

/* 分支选项提示与按钮 */
.phone-screen .av-reply{flex-direction:column;gap:8px;align-items:stretch;background:rgba(0,0,0,.25)}
.av-reply-hint{font-size:11px;color:rgba(255,255,255,.55);text-align:center;margin-bottom:2px}
.av-reply-btns{display:flex;flex-direction:column;gap:7px;width:100%}
.phone-screen .av-reply .av-chip{width:100%;text-align:left;padding:11px 14px;font-size:13.5px;border-radius:12px;animation:avMsgIn .25s ease}

/* 报价弹窗 */
.price-modal{position:fixed;inset:0;background:rgba(16,24,40,.5);backdrop-filter:blur(2px);z-index:9500;display:none;align-items:center;justify-content:center;padding:20px}
.price-modal.show{display:flex}
.price-box{background:#fff;border-radius:var(--radius);max-width:560px;width:100%;max-height:85vh;overflow-y:auto;box-shadow:0 24px 60px rgba(16,24,40,.3);animation:avMsgIn .25s ease}
.price-head{padding:20px 22px;background:linear-gradient(135deg,var(--brand-deep),var(--brand));color:#fff;border-radius:var(--radius) var(--radius) 0 0}
.price-head h3{font-size:18px;font-weight:600}
.price-head p{opacity:.85;font-size:13px;margin-top:6px}
.price-item{padding:15px 22px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:14px}
.price-item:last-of-type{border-bottom:none}
.price-item .pi-info{flex:1;min-width:0}
.price-item .pi-name{font-weight:600;color:var(--ink)}
.price-item .pi-desc{font-size:12px;color:var(--muted);margin-top:2px}
.price-item .pi-price{font-size:17px;font-weight:700;color:var(--accent);white-space:nowrap}

/* 合作要求区域 */
.coop-req{margin:0 22px 4px;border:1px solid #ffd6a8;border-radius:10px;overflow:hidden;background:#fffaf3}
.coop-req-head{padding:10px 14px;background:linear-gradient(135deg,#ff8c42,#ff6b1a);color:#fff;font-weight:700;font-size:14px}
.coop-req-body{padding:12px 14px;display:flex;flex-direction:column;gap:8px}
.coop-item{font-size:13px;line-height:1.7;color:#5c3a10}
.coop-item b{color:#d2691e}
.ci-tag{display:inline-block;padding:1px 8px;border-radius:8px;font-size:11px;font-weight:600;margin-right:6px;background:#ffe4cc;color:#cc6600}
.ci-tag.ci-warn{background:#ff6b6b;color:#fff}
.coop-sub-head{font-size:13px;font-weight:700;color:#cc6600;margin-top:2px}
.coop-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:6px}
.coop-cell{font-size:12.5px;color:#5c3a10;padding:6px 10px;background:#fff5e6;border-radius:6px;border:1px solid #ffe4cc}

/* 剧本标签 */
.av-script-tag{display:inline-block;margin-left:8px;padding:2px 9px;border-radius:10px;background:var(--brand-soft);color:var(--brand);font-size:11px;font-weight:600}

/* 剧本完整预览弹窗（用户端） */
.script-view-box{background:#fff;border-radius:var(--radius);max-width:620px;width:100%;max-height:88vh;display:flex;flex-direction:column;box-shadow:0 24px 60px rgba(16,24,40,.3);animation:avMsgIn .25s ease;overflow:hidden}
.script-view-head{position:relative;padding:20px 22px;background:linear-gradient(135deg,var(--brand-deep),var(--brand));color:#fff}
.script-view-head h3{font-size:18px;font-weight:600}
.script-view-head p{opacity:.85;font-size:13px;margin-top:6px}
.script-view-head .sv-close{position:absolute;top:14px;right:16px;width:30px;height:30px;border-radius:50%;border:none;background:rgba(255,255,255,.2);color:#fff;font-size:15px;cursor:pointer;transition:background .15s}
.script-view-head .sv-close:hover{background:rgba(255,255,255,.35)}
.script-view-body{flex:1;overflow-y:auto;padding:18px 22px}
.script-view-foot{padding:14px 22px;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:10px}
.sv-plain{white-space:pre-wrap;line-height:1.8;color:var(--ink);font-size:14px;padding:6px 0}
.sv-flow{display:flex;flex-direction:column;gap:12px}
.sv-node{border:1px solid var(--line);border-left:3px solid var(--brand);border-radius:0 8px 8px 0;padding:12px 14px;background:#fafbfe}
.sv-node.sv-start{border-left-color:var(--ok);background:#f0fdf4}
.sv-node-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:6px}
.sv-step{font-size:12px;font-weight:700;color:var(--brand)}
.sv-node.sv-start .sv-step{color:var(--ok)}
.sv-badge{font-size:11px;padding:1px 8px;border-radius:10px;background:var(--brand-soft);color:var(--brand);font-weight:600}
.sv-badge.sv-end{background:#fdecec;color:var(--danger)}
.sv-say{font-size:14px;line-height:1.7;color:var(--ink);white-space:pre-wrap}
.sv-opts{margin-top:10px;display:flex;flex-direction:column;gap:6px}
.sv-opt{font-size:13px;color:var(--ink);padding:6px 10px;border-radius:6px;background:#f1f3fb;border:1px solid var(--line)}
.sv-opt em{font-style:normal;color:var(--muted);font-size:12px;margin-left:4px}
.sv-opt-ok{border-color:#bbf7d0;background:#f0fdf4}
.sv-opt-no{border-color:#fecaca;background:#fef2f2}

/* 节点图预览（管理端） */
.script-preview{background:#fafbfe;border:1px solid var(--line);border-radius:8px;padding:12px;margin-top:8px;font-size:13px}
.script-node{padding:8px 10px;border-left:3px solid var(--brand);background:#fff;border-radius:0 6px 6px 0;margin-bottom:8px}
.script-node .sn-id{font-weight:700;color:var(--brand);font-size:12px}
.script-node .sn-say{color:var(--ink);margin-top:3px;line-height:1.6}
.script-node .sn-opts{margin-top:6px;display:flex;gap:6px;flex-wrap:wrap}
.script-node .sn-opt{padding:2px 9px;border-radius:10px;font-size:11px;background:var(--brand-soft);color:var(--brand)}
.script-node .sn-opt.no{background:#fdecec;color:var(--danger)}
.script-node .sn-end{display:inline-block;margin-top:5px;font-size:11px;color:var(--ok);font-weight:600}

/* ============ 闪信专区 ============ */
.flash-feats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:16px 0}
@media(max-width:720px){.flash-feats{grid-template-columns:repeat(2,1fr)}}
.flash-feat{display:flex;align-items:center;gap:12px;padding:14px;background:linear-gradient(135deg,#fffaf3,#fff5e6);border:1px solid #ffe4cc;border-radius:12px}
.flash-feat .ff-ico{font-size:26px;width:46px;height:46px;display:flex;align-items:center;justify-content:center;background:#fff;border-radius:10px;box-shadow:0 4px 12px rgba(255,140,66,.15);flex-shrink:0}
.flash-feat .ff-t{font-weight:700;color:#cc6600;font-size:14px}
.flash-feat .ff-d{font-size:12px;color:#8a5a2b;margin-top:3px;line-height:1.5}

/* 黄金搭档推荐 */
.flash-partner{margin-top:16px;border:1px solid #c7e8d0;border-radius:12px;overflow:hidden;background:linear-gradient(135deg,#f0fdf4,#ecfdf5)}
.flash-partner .fp-head{padding:10px 16px;background:linear-gradient(135deg,#10b981,#059669);color:#fff;font-weight:700;font-size:14px}
.flash-partner .fp-body{padding:14px 16px;display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.flash-partner .fp-text{flex:1;min-width:240px;font-size:13.5px;line-height:1.7;color:#065f46}

/* 闪信手机弹屏区域（霸屏盖满屏幕） */
.phone-screen .flash-screen{flex:1;display:flex;flex-direction:column;min-height:0;position:relative;overflow:hidden}
.flash-idle{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;color:rgba(255,255,255,.7);gap:6px}
.flash-idle-ico{font-size:46px;opacity:.5;animation:flashPulse 1.6s ease-in-out infinite}
.flash-idle-txt{font-size:15px;font-weight:600}
.flash-idle-sub{font-size:12px;opacity:.7}
@keyframes flashPulse{0%,100%{transform:scale(1);opacity:.5}50%{transform:scale(1.15);opacity:.85}}

/* 霸屏弹窗本体（满屏覆盖手机屏幕） */
.flash-pop{position:absolute;inset:0;display:flex;flex-direction:column;background:linear-gradient(160deg,#0ea5e9,#0369a1 60%,#075985);color:#fff;padding:16px 14px}
.flash-screen.flash-in .flash-pop{animation:flashBurst .42s cubic-bezier(.34,1.56,.64,1)}
.flash-screen.flash-show .flash-pop{animation:flashShake .5s ease-in-out}
.flash-screen.flash-out .flash-pop{animation:flashBurn .6s ease-in forwards}
@keyframes flashBurst{0%{transform:scale(.4) translateY(40%);opacity:0;filter:blur(8px)}60%{transform:scale(1.05);opacity:1;filter:blur(0)}100%{transform:scale(1) translateY(0);opacity:1}}
@keyframes flashShake{0%,100%{transform:translateX(0)}20%{transform:translateX(-3px)}40%{transform:translateX(3px)}60%{transform:translateX(-2px)}80%{transform:translateX(2px)}}
@keyframes flashBurn{0%{opacity:1;transform:scale(1);filter:brightness(1)}40%{opacity:.9;filter:brightness(1.6) hue-rotate(15deg)}100%{opacity:0;transform:scale(1.08);filter:blur(10px) brightness(2)}}

.flash-pop-bar{display:flex;align-items:center;justify-content:space-between;padding:6px 10px;background:rgba(0,0,0,.18);border-radius:8px;margin-bottom:14px}
.flash-pop-bar .fpb-tag{font-size:12px;font-weight:700;background:rgba(255,255,255,.25);padding:2px 9px;border-radius:10px}
.flash-pop-bar .fpb-time{font-size:12px;opacity:.85;font-weight:600}
.flash-pop-sign{font-size:18px;font-weight:700;margin-bottom:12px;text-shadow:0 2px 6px rgba(0,0,0,.3)}
.flash-pop-text{flex:1;font-size:16px;line-height:1.8;letter-spacing:.5px;text-shadow:0 1px 3px rgba(0,0,0,.25)}
.flash-pop-foot{display:flex;align-items:center;gap:7px;margin-top:12px;padding:9px 10px;background:rgba(0,0,0,.2);border-radius:8px;font-size:11.5px;opacity:.9}
.flash-pop-foot .fpf-dot{width:8px;height:8px;border-radius:50%;background:#fbbf24;box-shadow:0 0 8px #fbbf24;animation:flashPulse 1.2s infinite}

/* 阅后即焚销毁态 */
.flash-burnt{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;color:rgba(255,255,255,.85);gap:6px;background:rgba(0,0,0,.25)}
.flash-burnt .fb-ico{font-size:40px;animation:flashPulse 1.2s infinite}
.flash-burnt .fb-txt{font-size:14px;font-weight:600}
.flash-burnt .fb-sub{font-size:11px;opacity:.7}

/* ============ 号码认证专区 ============ */
.cert-feats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:16px 0}
@media(max-width:720px){.cert-feats{grid-template-columns:repeat(2,1fr)}}
.cert-feat{display:flex;align-items:center;gap:12px;padding:14px;background:linear-gradient(135deg,#eef2ff,#e0e7ff);border:1px solid #c7d2fe;border-radius:12px}
.cert-feat .cf-ico{font-size:26px;width:46px;height:46px;display:flex;align-items:center;justify-content:center;background:#fff;border-radius:10px;box-shadow:0 4px 12px rgba(99,102,241,.15);flex-shrink:0}
.cert-feat .cf-t{font-weight:700;color:#3730a3;font-size:14px}
.cert-feat .cf-d{font-size:12px;color:#4338ca;margin-top:3px;line-height:1.5;opacity:.85}

/* 号码认证来电区域 */
.phone-screen .cert-screen{flex:1;display:flex;flex-direction:column;min-height:0;position:relative;overflow:hidden}
.cert-idle{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;color:rgba(255,255,255,.7);gap:6px}
.cert-idle-ico{font-size:46px;opacity:.5;animation:flashPulse 1.6s ease-in-out infinite}
.cert-idle-txt{font-size:15px;font-weight:600}
.cert-idle-sub{font-size:12px;opacity:.7}

/* 来电全屏界面 */
.call-view{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;background:linear-gradient(180deg,#0a2540,#1e3a8a 60%,#1e40af);color:#fff;padding:24px 16px 0}
.cert-screen.call-in .call-view{animation:callIn .5s cubic-bezier(.34,1.56,.64,1)}
.cert-screen.call-show .call-view{animation:callHold 1s ease-in-out}
.cert-screen.call-out .call-view{animation:callOut .5s ease-in forwards}
@keyframes callIn{0%{transform:scale(.5) translateY(30%);opacity:0;filter:blur(6px)}60%{transform:scale(1.04);opacity:1}100%{transform:scale(1);opacity:1}}
@keyframes callHold{0%,100%{filter:brightness(1)}50%{filter:brightness(1.12)}}
@keyframes callOut{0%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(.92);filter:blur(4px)}}

.call-view-badge{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:600;background:rgba(52,211,153,.25);border:1px solid rgba(52,211,153,.5);color:#6ee7b7;padding:4px 12px;border-radius:14px;margin-bottom:18px}
.call-view-badge .cvb-check{display:inline-flex;align-items:center;justify-content:center;width:15px;height:15px;border-radius:50%;background:#10b981;color:#fff;font-size:10px;font-weight:700}
.call-view-logo{width:84px;height:84px;border-radius:24px;background:linear-gradient(135deg,#6366f1,#4f46e5);display:flex;align-items:center;justify-content:center;font-size:38px;font-weight:700;color:#fff;box-shadow:0 12px 30px rgba(99,102,241,.5);margin-bottom:14px;border:3px solid rgba(255,255,255,.25)}
.call-view-name{font-size:19px;font-weight:700;text-align:center;text-shadow:0 2px 6px rgba(0,0,0,.4);max-width:100%;padding:0 8px}
.call-view-num{font-size:14px;opacity:.85;margin-top:5px;letter-spacing:1px}
.call-view-sub{font-size:12px;opacity:.7;margin-top:3px}
.call-view-pulse{position:relative;width:50px;height:50px;margin:18px 0 6px}
.call-view-pulse span{position:absolute;inset:0;border-radius:50%;border:2px solid rgba(255,255,255,.5);animation:callPulse 1.6s ease-out infinite}
.call-view-pulse span:nth-child(2){animation-delay:.5s}
.call-view-pulse span:nth-child(3){animation-delay:1s}
@keyframes callPulse{0%{transform:scale(.3);opacity:1}100%{transform:scale(1.8);opacity:0}}
.call-view-status{font-size:13px;opacity:.8;margin-bottom:auto}
.call-view-actions{display:flex;align-items:center;justify-content:space-around;width:100%;padding:20px 0 18px;background:rgba(0,0,0,.18)}
.cva-btn{display:flex;align-items:center;justify-content:center;width:56px;height:56px;border-radius:50%;background:rgba(255,255,255,.15);font-size:22px}
.cva-btn.cva-hangup{width:64px;height:64px;background:linear-gradient(135deg,#ef4444,#dc2626);box-shadow:0 8px 22px rgba(239,68,68,.5);cursor:pointer;transform:rotate(135deg);transition:transform .1s}
.cva-btn.cva-hangup:hover{transform:rotate(135deg) scale(1.06)}
.cva-btn.cva-hangup:active{transform:rotate(135deg) scale(.94)}
.cva-phone-ico{display:inline-block;transform:rotate(0deg)}

/* 未接来电态 */
.cert-missed{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;color:rgba(255,255,255,.85);gap:6px;background:rgba(0,0,0,.25)}
.cert-missed .cm-ico{font-size:40px;animation:flashPulse 1.2s infinite}
.cert-missed .cm-txt{font-size:13px;font-weight:600;text-align:center;padding:0 10px}
.cert-missed .cm-sub{font-size:11px;opacity:.7}

/* ===== 账号统计页 ===== */
.badge{display:inline-block;font-size:12px;font-weight:600;padding:2px 9px;border-radius:20px;font-variant-numeric:tabular-nums}
.badge-ok{background:#e6f9ee;color:#1a8a4a}
.badge-warn{background:#fff7e6;color:#cc7a00}
.badge-bad{background:#fdeceb;color:#c0392b}
.sig-chip{display:inline-block;font-size:11px;padding:1px 8px;border-radius:10px;background:var(--brand-soft);color:var(--brand);margin:1px 2px;font-weight:600;white-space:nowrap}
.tpl-cell{max-width:420px;white-space:normal;word-break:break-word;line-height:1.6;color:var(--ink-soft);font-size:13px}
.acc-row{cursor:default}
.acc-detail-box{padding:8px 4px 4px}
.acc-detail-box .table-wrap{margin-top:6px}

/* ===== 彩铃专区 ===== */
.rt-feats{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:12px;margin:16px 0}
.rt-feat{display:flex;align-items:center;gap:12px;padding:14px;background:linear-gradient(135deg,#eef2ff,#e0e7ff);border:1px solid #c7d2fe;border-radius:12px}
.rt-feat .rf-ico{font-size:26px;width:46px;height:46px;display:flex;align-items:center;justify-content:center;background:#fff;border-radius:10px;box-shadow:0 4px 12px rgba(99,102,241,.15);flex-shrink:0}
.rt-feat .rf-t{font-weight:700;color:#3730a3;font-size:14px}
.rt-feat .rf-d{font-size:12px;color:#4338ca;margin-top:3px;line-height:1.5;opacity:.85}
.rt-card-tag{display:inline-block;font-size:11px;padding:2px 9px;border-radius:10px;background:#eef2ff;color:#4f46e5;margin-left:8px;font-weight:600}
.rp-price-btn{position:absolute;top:12px;right:54px;width:34px;height:34px;border-radius:50%;border:none;background:rgba(255,255,255,.12);color:#fff;font-size:15px;cursor:pointer;transition:background .15s;z-index:9001}
.rp-price-btn:hover{background:rgba(255,255,255,.25)}

/* 彩铃手机屏幕内舞台 */
.phone-screen .rt-stage{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;padding:16px 16px 6px;overflow:hidden;position:relative}
.rt-avatar{width:76px;height:76px;border-radius:22px;background:linear-gradient(135deg,#6366f1,#4f46e5);display:flex;align-items:center;justify-content:center;font-size:34px;font-weight:700;color:#fff;box-shadow:0 10px 26px rgba(99,102,241,.45);border:3px solid rgba(255,255,255,.22);flex-shrink:0}
.rt-name-row{display:flex;align-items:center;gap:6px;margin-top:14px}
.rt-name{font-size:18px;font-weight:700;color:#fff;letter-spacing:.5px;text-shadow:0 2px 6px rgba(0,0,0,.4);max-width:200px}
.rt-cert-v{display:inline-flex;align-items:center;gap:2px;font-size:11px;font-weight:700;color:#fff;background:linear-gradient(135deg,#3b82f6,#2563eb);padding:2px 7px;border-radius:4px;flex-shrink:0;box-shadow:0 2px 6px rgba(37,99,235,.5)}
.rt-cert-label{font-size:12px;color:#6ee7b7;font-weight:600;margin-top:5px}
.rt-phone{font-size:13px;color:rgba(255,255,255,.8);margin-top:4px;letter-spacing:1px}
.rt-status{font-size:13px;color:#7bed9f;margin-top:8px;font-weight:600;min-height:18px;text-align:center}
.rt-caption{font-size:15px;color:#fff;margin-top:14px;min-height:24px;max-width:260px;text-align:center;line-height:1.7;text-shadow:0 1px 4px rgba(0,0,0,.4);min-height:48px}
.rt-ringtip{display:flex;align-items:center;gap:6px;font-size:12px;color:rgba(255,255,255,.85);background:rgba(99,102,241,.25);border:1px solid rgba(99,102,241,.4);padding:5px 12px;border-radius:16px;margin-top:6px;animation:flashPulse 1.8s ease-in-out infinite}
.rt-ringtip-ico{font-size:13px}

/* 号码认证引导（黄金搭档） */
.rt-cert-guide{display:flex;align-items:center;gap:8px;margin-top:auto;margin-bottom:8px;padding:8px 12px;background:rgba(16,185,129,.18);border:1px solid rgba(16,185,129,.45);border-radius:12px;text-decoration:none;color:#a7f3d0;font-size:11px;line-height:1.45;cursor:pointer;transition:background .15s;max-width:260px}
.rt-cert-guide:hover{background:rgba(16,185,129,.3)}
.rt-cert-guide .rcg-ico{font-size:18px;flex-shrink:0}
.rt-cert-guide .rcg-txt u{color:#6ee7b7}

/* 底部挂断区 */
.rt-actions{padding:14px 0 16px;display:flex;align-items:center;justify-content:center;background:rgba(0,0,0,.12)}
.rt-hangup{width:62px;height:62px;border-radius:50%;border:none;background:linear-gradient(135deg,#ef4444,#dc2626);box-shadow:0 8px 22px rgba(239,68,68,.5);cursor:pointer;display:flex;align-items:center;justify-content:center;transform:rotate(135deg);transition:transform .1s}
.rt-hangup:hover{transform:rotate(135deg) scale(1.06)}
.rt-hangup:active{transform:rotate(135deg) scale(.94)}
.g-admin-tag{display:inline-block;font-size:11px;color:#fff;background:#e65100;padding:1px 6px;border-radius:8px;margin-left:6px;vertical-align:middle;font-weight:600}
