/* 名片云 · 管理后台样式 */
:root{
  --deep:#1C2B4A; --deep2:#243759; --green:#2E4370;
  --gold:#C9A86A; --gold-l:#D8C294; --gold-bg:#F5F0E4; --gold-ink:#7E6430;
  --mint:#EEF1F5; --paper:#F6F7FA; --card:#fff;
  --ink:#1A2233; --ink2:#39455E; --muted:#8A94A6;
  --line:#E4E8EF; --r:12px; --danger:#C0504D; --ok:#2E7D52;
}
*{margin:0;padding:0;box-sizing:border-box}
body{font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;
  background:var(--paper);color:var(--ink);font-size:14px;line-height:1.7}
button{font-family:inherit;cursor:pointer}
input,textarea{font-family:inherit;font-size:14px}
.hidden{display:none!important}
.muted{color:var(--muted)}

/* ---- 登录 ---- */
.authwrap{min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:24px;
  background:radial-gradient(circle at 15% 10%,rgba(201,168,106,.14),transparent 26rem),
  linear-gradient(145deg,#1C2B4A 0%,#243759 55%,#121E36 100%)}
.authcard{width:100%;max-width:400px;background:#fff;border-radius:18px;padding:32px 30px;
  box-shadow:0 18px 50px rgba(10,18,36,.35)}
.brand{display:flex;align-items:center;gap:12px;margin-bottom:20px}
.brandlogo{width:46px;height:46px;border-radius:12px;background:linear-gradient(145deg,#1C2B4A,#243759);
  color:#D8C294;display:flex;align-items:center;justify-content:center;font-size:22px;font-weight:600;flex:0 0 auto}
.brandlogo.sm{width:36px;height:36px;font-size:17px;border-radius:10px}
.brand h1{font-size:20px;color:var(--ink)}
.brand p{font-size:12px;color:var(--muted)}
.brand b{display:block;font-size:16px}
.brand span{display:block;font-size:11px;color:var(--muted)}
.authcard h2{font-size:17px;margin-bottom:4px}
.authcard .tip{font-size:12.5px;color:var(--muted);margin-bottom:18px}
.authcard .tip.center{text-align:center;margin:14px 0 0}
.authtabs{display:flex;background:var(--mint);border-radius:10px;padding:4px;margin-bottom:16px}
.authtabs button{flex:1;border:none;background:transparent;padding:9px 6px;border-radius:8px;font-size:13.5px;font-weight:600;color:var(--muted)}
.authtabs button.on{background:#fff;color:var(--deep);box-shadow:0 2px 6px rgba(10,18,36,.08)}
.optmark{font-weight:400;font-size:11px;color:var(--muted)}

/* ---- 表单 ---- */
.field{margin-bottom:14px}
.field label{display:block;font-size:12.5px;font-weight:600;color:var(--ink2);margin-bottom:6px}
.field input,.field textarea,.field select{width:100%;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--ink)}
.field input:focus,.field textarea:focus,.field select:focus{outline:1.5px solid var(--gold-l)}
.field select{appearance:none;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%238A94A6' stroke-width='1.8' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 12px center;padding-right:32px;cursor:pointer}
.field textarea{resize:vertical}
.frow{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.row{display:flex;gap:8px}
.row input{flex:1}
.ferr{font-size:12px;color:var(--danger);margin-top:4px;min-height:0}
.lerr{font-size:13px;color:var(--danger);margin-top:12px;min-height:20px}

/* ---- 按钮 ---- */
.btn{border:none;border-radius:10px;padding:10px 18px;font-size:14px;font-weight:600}
.btn.primary{background:var(--deep);color:#fff}
.btn.primary:hover{background:var(--deep2)}
.btn.gold{background:var(--gold);color:#fff}
.btn.ghost{background:#fff;color:var(--ink2);border:1px solid var(--line)}
.btn.ghost:hover{background:#F4F6FA}
.btn.ghost.danger{color:var(--danger)}
.btn.danger{background:var(--danger);color:#fff}
.btn.block{width:100%;padding:12px}
.btn.sm{padding:6px 12px;font-size:12.5px}
.btn:disabled{opacity:.55;cursor:not-allowed}

/* ---- 布局 ---- */
#view-app{display:flex;min-height:100dvh}
.sidebar{width:220px;flex:0 0 220px;background:#fff;border-right:1px solid var(--line);
  padding:20px 14px;display:flex;flex-direction:column;position:sticky;top:0;height:100dvh}
.sidebar .brand{margin-bottom:24px}
.sidebar nav{display:flex;flex-direction:column;gap:4px;flex:1}
.sidebar nav a{padding:10px 12px;border-radius:10px;color:var(--ink2);font-weight:600;font-size:14px;cursor:pointer}
.sidebar nav a:hover{background:var(--mint)}
.sidebar nav a.on{background:var(--deep);color:#fff}
.sidebtns{display:flex;gap:6px;flex-direction:column;align-items:stretch}
.sidebtns .btn{width:100%}
.sidefoot{border-top:1px solid var(--line);padding-top:12px;display:flex;flex-direction:column;gap:8px;font-size:12px}
.main{flex:1;padding:26px 30px;max-width:1100px}
.panel .phead{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}
.panel .phead h2{font-size:19px}
.panel h3{font-size:14.5px;margin:22px 0 8px;color:var(--ink)}

/* ---- 总览 ---- */
.statgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:10px}
.statgrid .st{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:16px}
.statgrid .st .n{font-size:24px;font-weight:700;color:var(--deep)}
.statgrid .st .l{font-size:12px;color:var(--muted);margin-top:2px}

/* ---- 名片列表 ---- */
.cardlist{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:14px}
.empcard{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:16px;display:flex;flex-direction:column;gap:10px}
.empcard .top{display:flex;gap:12px;align-items:center}
.empcard .av{width:52px;height:52px;border-radius:50%;object-fit:cover;border:2px solid var(--gold-l);background:var(--mint)}
.empcard .info{flex:1;min-width:0}
.empcard .info b{font-size:15.5px}
.empcard .info .t{font-size:12.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.empcard .meta{display:flex;gap:6px;flex-wrap:wrap}
.tag{display:inline-block;padding:2px 9px;border-radius:20px;font-size:11px;font-weight:600}
.tag.ok{background:#E7F3EC;color:var(--ok)}
.tag.off{background:var(--mint);color:var(--muted)}
.tag.gold{background:var(--gold-bg);color:var(--gold-ink);border:1px solid var(--gold-l)}
.empcard .nums{font-size:12px;color:var(--muted)}
.empcard .acts{display:flex;gap:8px;border-top:1px solid var(--line);padding-top:10px;flex-wrap:wrap}

/* ---- 留言 ---- */
.leadlist{display:flex;flex-direction:column;gap:10px}
.leaditem{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:14px 16px}
.leaditem .lh{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.leaditem .lh b{font-size:14px}
.leaditem .lh .who{font-size:12.5px;color:var(--gold-ink)}
.leaditem .lh time{margin-left:auto;font-size:11.5px;color:var(--muted)}
.leaditem .lmsg{margin-top:6px;font-size:13.5px;color:var(--ink2)}
.leaditem .lact{margin-top:8px;text-align:right}
.empty{padding:40px;text-align:center;color:var(--muted);font-size:13.5px}

/* ---- 编辑器 ---- */
.editor-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:start}
.chips{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
.chips .chip{border:1px solid var(--gold-l);background:var(--gold-bg);color:var(--gold-ink);border-radius:20px;
  padding:3px 11px;font-size:12px;font-weight:500}
.chips .chip:hover{background:var(--gold-l);color:#fff}
.searchrow{margin-bottom:14px}
.searchrow input{width:100%;max-width:360px;padding:9px 14px;border:1px solid var(--line);border-radius:10px;background:#fff}
.searchrow input:focus{outline:1.5px solid var(--gold-l)}
.formcard{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:18px 20px;margin-bottom:14px}
.formcard h3{font-size:14.5px;margin:18px 0 10px;color:var(--deep)}
.formcard h3:first-child{margin-top:0}
.imgrow{display:flex;align-items:center;gap:10px}
.imgpreview{width:64px;height:64px;border-radius:10px;object-fit:cover;border:1px solid var(--line)}
.imgpreview.round{border-radius:50%}
.checkrow{display:flex;align-items:center;gap:8px;margin:16px 0 0;font-size:13.5px;color:var(--ink2)}
.btnrow2{display:flex;gap:10px;margin-top:14px}
.statrow,.postrow{border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin-bottom:10px;background:#FBFCFE}
.statrow .row{margin-bottom:6px}
.statrow .row:last-child{margin-bottom:0}
.postrow .field{margin-bottom:8px}
.postrow .pimgs{display:flex;gap:8px;flex-wrap:wrap;margin:8px 0}
.postrow .pimgs .pi{position:relative;width:56px;height:56px}
.postrow .pimgs .pi img{width:100%;height:100%;object-fit:cover;border-radius:8px;border:1px solid var(--line)}
.postrow .pimgs .pi button{position:absolute;top:-6px;right:-6px;width:18px;height:18px;border-radius:50%;
  border:none;background:var(--danger);color:#fff;font-size:11px;line-height:1}
.galleryedit{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:10px}
.galleryedit .gi{position:relative;width:64px;height:64px}
.galleryedit .gi img{width:100%;height:100%;object-fit:cover;border-radius:8px;border:1px solid var(--line)}
.galleryedit .gi input{width:100%;margin-top:3px;font-size:10.5px;padding:2px 4px;border:1px solid var(--line);border-radius:5px}
.galleryedit .gi button{position:absolute;top:-6px;right:-6px;width:18px;height:18px;border-radius:50%;
  border:none;background:var(--danger);color:#fff;font-size:11px;line-height:1}
.themepick{display:flex;gap:10px}
.themepick button{flex:1;padding:10px;border:1.5px solid var(--line);border-radius:10px;background:#fff;
  font-size:12.5px;font-weight:600;color:var(--ink2);display:flex;flex-direction:column;align-items:center;gap:6px}
.themepick button i{width:100%;height:26px;border-radius:6px;display:block}
.themepick button.on{border-color:var(--deep);color:var(--deep);background:var(--mint)}

/* ---- 注册路径选择 ---- */
.choicerow{display:flex;gap:12px;margin-top:6px}
.choicecard{flex:1;padding:18px 14px;border:1.5px solid var(--line);border-radius:14px;background:#fff;
  display:flex;flex-direction:column;align-items:flex-start;gap:6px;text-align:left;font-family:inherit}
.choicecard b{font-size:15.5px;color:var(--ink)}
.choicecard span{font-size:12px;color:var(--muted)}
.choicecard:hover{border-color:var(--deep);background:var(--mint)}
.choicecard.gold{border-color:var(--gold-l);background:var(--gold-bg)}
.choicecard.gold b{color:var(--gold-ink)}
.choicecard:disabled{opacity:.6;cursor:wait}

/* ---- 模板选择器 ---- */
.tplfilters{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:10px}
.tplfilters button{border:1px solid var(--line);background:#fff;border-radius:20px;padding:4px 13px;
  font-size:12.5px;font-weight:600;color:var(--ink2)}
.tplfilters button.on{background:var(--deep);border-color:var(--deep);color:#fff}
.tplgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.tplgrid .tpl{border:1.5px solid var(--line);border-radius:10px;background:#fff;padding:8px 6px;
  display:flex;flex-direction:column;align-items:center;gap:5px;font-family:inherit}
.tplgrid .tpl .sw{width:100%;height:34px;border-radius:6px;display:flex;align-items:center;justify-content:center;
  color:#fff;font-size:18px;font-weight:600}
.tplgrid .tpl b{font-size:12.5px;color:var(--ink)}
.tplgrid .tpl i{font-style:normal;font-size:10.5px;color:var(--muted)}
.tplgrid .tpl.on{border-color:var(--deep);background:var(--mint)}
.tplgrid .tpl.add .sw{background:var(--mint);color:var(--deep)}
.tplmask{position:fixed;inset:0;background:rgba(15,23,42,.45);z-index:150;display:flex;align-items:center;justify-content:center;padding:20px}
.tplmodal{width:100%;max-width:380px;background:#fff;border-radius:16px;padding:22px 20px}
.tplmodal h3{font-size:16px;margin-bottom:14px}
.tplprev{margin:6px 0 2px}
.tplprev .pv{display:flex;flex-direction:column;align-items:flex-start;gap:8px;border-radius:12px;padding:16px;height:86px}
.tplprev .pvline{width:44px;height:4px;border-radius:2px;display:block}
.tplprev .pvchip{border:1px solid;border-radius:14px;padding:2px 10px;font-size:11.5px}

/* ---- V2：成员 / 批量 / 排行 ---- */
.pbtns{display:flex;gap:8px;align-items:center}
.joinrow{display:flex;gap:8px;margin-top:14px}
.joinrow input{flex:1;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--ink);letter-spacing:1px}
.joinrow input:focus{outline:1.5px solid var(--gold-l)}
.teamlist{display:flex;flex-direction:column;gap:8px}
.teamrow{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:#fff}
.teamrow .tavatar{width:34px;height:34px;border-radius:50%;background:linear-gradient(135deg,#1C2B4A,#C9A86A);color:#fff;font-size:12px;display:flex;align-items:center;justify-content:center;flex:none}
.teamrow .tinfo{flex:1;min-width:0}
.teamrow .tinfo b{display:block;font-size:13.5px}
.teamrow .tinfo span{font-size:12px;color:var(--muted)}
.teamrow .btn{flex:none}
.ovrank{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:14px 0 20px}
.ranklist{display:flex;flex-direction:column;gap:10px}
.rankrow{display:flex;align-items:center;gap:8px;font-size:13px}
.rankrow .ri{width:20px;height:20px;border-radius:6px;background:#F1EFE8;color:#7E6430;font-size:11.5px;font-weight:600;display:flex;align-items:center;justify-content:center;flex:none}
.rankrow b{width:64px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:none}
.rankrow .rbar{flex:1;height:8px;border-radius:4px;background:#F1EFE8;overflow:hidden}
.rankrow .rbar i{display:block;height:100%;border-radius:4px;background:linear-gradient(90deg,#C9A86A,#E0CB96)}
.rankrow .rn{width:44px;text-align:right;color:var(--ink2);font-variant-numeric:tabular-nums;flex:none}
#bulk-text{width:100%;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--ink);font:inherit;line-height:1.7;resize:vertical}
#bulk-text:focus{outline:1.5px solid var(--gold-l)}

@media (max-width:760px){
  .ovrank{grid-template-columns:1fr}
  .rankrow b{width:52px}
}

/* ---- 杂项 ---- */
.toast{position:fixed;top:20px;left:50%;transform:translateX(-50%);z-index:200;background:var(--deep);color:#fff;
  padding:10px 20px;border-radius:10px;font-size:13.5px;box-shadow:0 8px 24px rgba(10,18,36,.3)}
@media (max-width:900px){
  #view-app{flex-direction:column}
  .sidebar{width:100%;flex:none;height:auto;position:static;flex-direction:row;align-items:center;overflow-x:auto}
  .sidebar nav{flex-direction:row}
  .sidebar nav a{white-space:nowrap}
  .sidefoot{border-top:none;margin-left:auto;flex-direction:row;align-items:center}
  .main{padding:18px 14px}
  .editor-grid,.frow{grid-template-columns:1fr}
  .statgrid{grid-template-columns:1fr 1fr}
}

/* ===== 名片二维码物料（V3.1） ===== */
.qrbox{display:flex;flex-direction:column;align-items:center;gap:10px;margin:10px 0}
.qrbox #qr-render{padding:10px;border:1px solid var(--line,#E4E8EF);border-radius:12px;background:#fff}
.qrbox #qr-render img,.qrbox #qr-render canvas{width:220px;height:220px;display:block}
.qrbox #qr-link{width:100%;max-width:360px;font-size:12px;color:#69707D;background:#F6F8FB;text-align:center}

/* ===== 洞察深化（V3.2）：高意向访客 / 趋势 / 健康度 ===== */
.hotrow{display:flex;align-items:center;gap:10px;font-size:13px}
.hotrow .lv{flex:none;font-size:11px;font-weight:600;padding:3px 8px;border-radius:6px}
.hotrow .lv.hot{background:#FDECEC;color:#D64545}
.hotrow .lv.warm{background:#FFF4E0;color:#B97A1E}
.hotrow .hotmain{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.hotrow .hotmain b{font-size:13px}
.hotrow .hotmain span{font-size:11.5px;color:#8A93A3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hotrow .hscore{flex:none;font-weight:600;color:#B97A1E;font-variant-numeric:tabular-nums}
.hotrow time{flex:none;font-size:11px;color:#A6ADBB}
.trend{padding:4px 2px 0}
.tgrid{display:flex;align-items:flex-end;gap:10px;height:92px}
.tcol{display:flex;align-items:flex-end;gap:2px;flex:1;justify-content:center;position:relative}
.tcol i{width:9px;border-radius:3px 3px 0 0;display:block}
.tcol span{position:absolute;bottom:-22px;left:50%;transform:translateX(-50%);font-size:10.5px;color:#8A93A3;white-space:nowrap}
.tv{background:#243759}.ta{background:#C9A86A}.tm{background:#D64545}
.tlegend{display:flex;gap:16px;margin-top:28px;font-size:11.5px;color:#69707D}
.tlegend i{width:8px;height:8px;border-radius:2px;display:inline-block;margin-right:4px}
.hbar{flex:1;height:6px;border-radius:3px;background:#F1EFE8;margin:0 10px;overflow:hidden;min-width:40px}
.hbar i{display:block;height:100%;border-radius:3px;background:linear-gradient(90deg,#C9A86A,#E0CB96)}
.hpct{flex:none;font-weight:600;font-size:12.5px;font-variant-numeric:tabular-nums}

/* ===== AI 文案助手 + 编辑器布局优化（V3.3.1） ===== */
.btn.ai{color:#8A6D1F;border-color:var(--gold-l);background:#FBF6E9;font-weight:600}
.btn.ai:hover{background:var(--gold-l);color:#fff}
.aihead{display:flex;align-items:center;justify-content:space-between;gap:10px;
  border-top:1px dashed var(--line);padding-top:14px;margin:18px 0 10px}
.aihead h3{margin:0}
.formcard h3 ~ h3{border-top:1px dashed var(--line);padding-top:14px}
.aiprev{min-height:44px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;
  background:#FBFCFE;font-size:13.5px;line-height:1.75;white-space:pre-wrap;color:var(--ink);word-break:break-all}
.aistatus{margin-top:4px;font-size:12px;color:#8A93A3}
/* 照片墙瓦片：修掉说明文字压在图上的问题 */
.galleryedit .gi{width:88px;height:auto;display:flex;flex-direction:column}
.galleryedit .gi img{width:88px;height:88px}
.galleryedit .gi input{margin-top:4px}

/* ===== 访客轨迹 + 邮件签名（V3.4） ===== */
.hotrow[data-vk]{cursor:pointer}
.hotrow[data-vk]:hover{background:#FBF8F0;border-radius:8px}
.srcchip{font-style:normal;font-size:10.5px;color:#B08A2E;background:#FBF6E9;border:1px solid #E8DCBB;
  border-radius:8px;padding:1px 7px;margin-left:6px;white-space:nowrap}
.vsum{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:10px}
.vtl{max-height:320px;overflow:auto;border:1px solid var(--line);border-radius:10px;padding:4px 14px;background:#FBFCFE}
.vtrow{display:flex;gap:10px;padding:9px 0;border-bottom:1px dashed var(--line)}
.vtrow:last-child{border-bottom:none}
.vtrow time{flex:none;width:92px;font-size:11.5px;color:#A6ADBB;padding-top:1px}
.vtbody{min-width:0}
.vtbody b{font-size:13px;display:block}
.vtbody span{font-size:11.5px;color:#8A93A3}
.sigbox{border:1px solid var(--line);border-radius:10px;padding:14px;background:#fff;margin-bottom:10px;overflow:auto}
#sig-code{width:100%;box-sizing:border-box;font-size:11.5px;color:#5B6472;background:#FBFCFE}
