/* ============================================================================
   智引力 · 设计系统（本地样式，无远程引用）
   主题：星图暗夜（用户端） / 云端白（管理后台）
   ========================================================================== */

:root{
  --brand:#6c5ce7;
  --brand-2:#8e7bff;
  --brand-3:#4d6bfe;
  --mint:#38d39f;
  --warn:#ffb020;
  --danger:#ff5c7c;
  --info:#3ab7ff;

  --bg:#0b0e1c;
  --bg-2:#101428;
  --panel:rgba(23,27,48,.86);
  --panel-2:#171b30;
  --line:rgba(255,255,255,.08);
  --line-2:rgba(255,255,255,.14);

  --txt:#e9ebf7;
  --txt-2:#a7adcd;
  --txt-3:#6f76a0;

  --r-s:8px; --r-m:12px; --r-l:16px; --r-xl:22px;
  --shadow:0 18px 46px rgba(0,0,0,.42);
  --shadow-s:0 8px 22px rgba(0,0,0,.28);
  --sidebar-w:238px;
  --topbar-h:62px;
  --ease:cubic-bezier(.4,.14,.3,1);
}

*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{
  background:
    radial-gradient(1100px 620px at 12% -12%, rgba(108,92,231,.30), transparent 62%),
    radial-gradient(900px 520px at 96% 4%, rgba(58,183,255,.14), transparent 60%),
    var(--bg);
  color:var(--txt);
  font:14px/1.62 -apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei","Segoe UI",sans-serif;
  -webkit-font-smoothing:antialiased;
}
a{color:inherit;text-decoration:none}
button,input,select,textarea{font-family:inherit;font-size:inherit;color:inherit}
::-webkit-scrollbar{width:8px;height:8px}
::-webkit-scrollbar-thumb{background:rgba(255,255,255,.14);border-radius:8px}
::-webkit-scrollbar-thumb:hover{background:rgba(255,255,255,.24)}
::-webkit-scrollbar-track{background:transparent}

.ic{width:18px;height:18px;flex:none;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.ic-s{width:15px;height:15px}
.ic-l{width:22px;height:22px}

/* ---------------- 布局骨架 ---------------- */
.app{display:flex;min-height:100vh}
.side{
  width:var(--sidebar-w);flex:none;position:fixed;inset:0 auto 0 0;z-index:30;
  background:linear-gradient(180deg,rgba(20,24,45,.96),rgba(13,16,32,.98));
  border-right:1px solid var(--line);backdrop-filter:blur(14px);
  display:flex;flex-direction:column;
}
.side.off{transform:translateX(-100%)}
.brand{display:flex;align-items:center;gap:11px;padding:19px 20px 17px;border-bottom:1px solid var(--line)}
.brand-logo{
  width:38px;height:38px;border-radius:11px;flex:none;display:grid;place-items:center;
  background:linear-gradient(135deg,var(--brand),var(--brand-3));
  box-shadow:0 8px 20px rgba(108,92,231,.45);color:#fff;
}
.brand-txt b{display:block;font-size:16.5px;letter-spacing:.8px;line-height:1.2}
.brand-txt span{display:block;font-size:10.5px;color:var(--txt-3);letter-spacing:.4px;margin-top:2px}
.nav{flex:1;overflow-y:auto;padding:14px 12px 24px}
.nav-group{margin-bottom:16px}
.nav-group>p{font-size:10.5px;color:var(--txt-3);letter-spacing:1.4px;padding:6px 10px 8px;text-transform:uppercase}
.nav a{
  display:flex;align-items:center;gap:10px;padding:9px 11px;border-radius:10px;color:var(--txt-2);
  font-size:13.4px;position:relative;transition:.22s var(--ease);margin-bottom:2px;
}
.nav a:hover{background:rgba(255,255,255,.05);color:var(--txt);transform:translateX(2px)}
.nav a.on{
  background:linear-gradient(90deg,rgba(108,92,231,.26),rgba(108,92,231,.05));
  color:#fff;font-weight:600;
}
.nav a.on::before{
  content:"";position:absolute;left:-12px;top:50%;transform:translateY(-50%);
  width:3px;height:20px;border-radius:0 3px 3px 0;background:linear-gradient(180deg,var(--brand-2),var(--brand-3));
  box-shadow:0 0 14px var(--brand);
}
.nav a .dot{margin-left:auto;min-width:19px;height:19px;padding:0 5px;border-radius:9px;background:var(--danger);
  color:#fff;font-size:10.5px;line-height:19px;text-align:center;font-weight:600}
.side-foot{padding:12px;border-top:1px solid var(--line)}
.credit-card{
  border-radius:var(--r-m);padding:12px 13px;border:1px solid var(--line-2);
  background:linear-gradient(135deg,rgba(108,92,231,.24),rgba(58,183,255,.10));
}
.credit-card p{font-size:11px;color:var(--txt-2)}
.credit-card b{display:block;font-size:20px;margin:2px 0 8px;font-weight:700;
  background:linear-gradient(90deg,#fff,#c9c2ff);-webkit-background-clip:text;-webkit-text-fill-color:transparent}
.credit-card a{display:block;text-align:center;font-size:12px;padding:6px;border-radius:8px;
  background:linear-gradient(135deg,var(--brand),var(--brand-3));font-weight:600;color:#fff}

.main{margin-left:var(--sidebar-w);flex:1;min-width:0;display:flex;flex-direction:column}
.topbar{
  height:var(--topbar-h);flex:none;position:sticky;top:0;z-index:20;
  display:flex;align-items:center;gap:14px;padding:0 22px;
  background:rgba(11,14,28,.78);backdrop-filter:blur(16px);border-bottom:1px solid var(--line);
}
.topbar h2{font-size:15.5px;font-weight:600;letter-spacing:.3px}
.topbar h2 small{color:var(--txt-3);font-weight:400;font-size:12px;margin-left:8px}
.tb-search{
  margin-left:auto;display:flex;align-items:center;gap:8px;width:280px;height:36px;padding:0 12px;
  border-radius:10px;background:rgba(255,255,255,.05);border:1px solid var(--line);color:var(--txt-3);
}
.tb-search input{flex:1;background:none;border:0;outline:0}
.tb-search input::placeholder{color:var(--txt-3)}
.iconbtn{width:36px;height:36px;border-radius:10px;display:grid;place-items:center;border:1px solid var(--line);
  background:rgba(255,255,255,.04);cursor:pointer;position:relative;transition:.2s var(--ease);color:var(--txt-2)}
.iconbtn:hover{color:#fff;border-color:var(--line-2);background:rgba(255,255,255,.09)}
.iconbtn i{position:absolute;top:-5px;right:-5px;min-width:16px;height:16px;border-radius:8px;background:var(--danger);
  color:#fff;font-size:10px;line-height:16px;text-align:center;font-style:normal;padding:0 4px}
.avatar{width:36px;height:36px;border-radius:11px;display:grid;place-items:center;font-weight:600;font-size:13px;
  background:linear-gradient(135deg,var(--brand),var(--brand-3));color:#fff;cursor:pointer}
.who{display:flex;align-items:center;gap:9px;cursor:pointer}
.who b{display:block;font-size:13px;line-height:1.25}
.who span{display:block;font-size:11px;color:var(--txt-3)}

.page{padding:22px;flex:1;min-width:0}
.page-head{display:flex;align-items:flex-end;gap:14px;margin-bottom:18px;flex-wrap:wrap}
.page-head h1{font-size:20px;font-weight:650;letter-spacing:.4px}
.page-head p{color:var(--txt-3);font-size:12.5px;margin-top:3px}
.page-head .sp{margin-left:auto;display:flex;gap:9px;align-items:center}

/* ---------------- 通用卡片 ---------------- */
.card{
  background:var(--panel);border:1px solid var(--line);border-radius:var(--r-l);
  backdrop-filter:blur(10px);position:relative;overflow:hidden;
}
.card-h{display:flex;align-items:center;gap:10px;padding:15px 18px;border-bottom:1px solid var(--line)}
.card-h h3{font-size:14.5px;font-weight:600}
.card-h .sp{margin-left:auto;display:flex;gap:8px;align-items:center}
.card-b{padding:18px}
.card-b.tight{padding:0}
.hint{font-size:12px;color:var(--txt-3)}

.grid{display:grid;gap:16px}
.g2{grid-template-columns:repeat(2,minmax(0,1fr))}
.g3{grid-template-columns:repeat(3,minmax(0,1fr))}
.g4{grid-template-columns:repeat(4,minmax(0,1fr))}
.g23{grid-template-columns:minmax(0,2fr) minmax(0,1fr)}
.g32{grid-template-columns:minmax(0,1.35fr) minmax(0,1fr)}

/* 统计卡 */
.stat{
  padding:17px 18px;border-radius:var(--r-l);border:1px solid var(--line);position:relative;overflow:hidden;
  background:linear-gradient(160deg,rgba(28,33,58,.94),rgba(18,22,42,.94));transition:.28s var(--ease);
}
.stat::after{content:"";position:absolute;right:-40px;top:-40px;width:120px;height:120px;border-radius:50%;
  background:radial-gradient(circle,rgba(108,92,231,.30),transparent 70%)}
.stat:hover{transform:translateY(-3px);box-shadow:var(--shadow);border-color:var(--line-2)}
.stat-top{display:flex;align-items:center;gap:11px}
.stat-ic{width:38px;height:38px;border-radius:11px;display:grid;place-items:center;color:#fff;flex:none}
.stat-ic.v1{background:linear-gradient(135deg,#6c5ce7,#4d6bfe)}
.stat-ic.v2{background:linear-gradient(135deg,#ff6b81,#ff9f43)}
.stat-ic.v3{background:linear-gradient(135deg,#0fb9b1,#38d39f)}
.stat-ic.v4{background:linear-gradient(135deg,#3ab7ff,#6c5ce7)}
.stat-top em{margin-left:auto;font-style:normal;font-size:11.5px;padding:3px 8px;border-radius:20px;
  background:rgba(56,211,159,.14);color:var(--mint);display:flex;align-items:center;gap:3px}
.stat-top em.down{background:rgba(255,92,124,.14);color:var(--danger)}
.stat b.num{display:block;font-size:30px;font-weight:700;letter-spacing:.5px;margin:14px 0 4px;
  background:linear-gradient(90deg,#fff,#b9b1ff);-webkit-background-clip:text;-webkit-text-fill-color:transparent}
.stat>span{font-size:12.2px;color:var(--txt-3)}

/* 按钮 */
.btn{
  display:inline-flex;align-items:center;gap:7px;height:36px;padding:0 15px;border-radius:10px;cursor:pointer;
  border:1px solid var(--line-2);background:rgba(255,255,255,.05);color:var(--txt);font-size:13px;font-weight:500;
  transition:.2s var(--ease);white-space:nowrap;
}
.btn:hover{background:rgba(255,255,255,.11);transform:translateY(-1px)}
.btn.primary{background:linear-gradient(135deg,var(--brand),var(--brand-3));border-color:transparent;
  box-shadow:0 8px 20px rgba(108,92,231,.34)}
.btn.primary:hover{box-shadow:0 12px 26px rgba(108,92,231,.46)}
.btn.ghost{background:transparent}
.btn.sm{height:30px;padding:0 11px;font-size:12.3px;border-radius:8px}
.btn.mint{background:linear-gradient(135deg,#0fb9b1,#38d39f);border-color:transparent;color:#04241c}
.btn.danger{background:rgba(255,92,124,.14);border-color:rgba(255,92,124,.3);color:#ff9db3}
.btn[disabled]{opacity:.45;cursor:not-allowed;transform:none}

/* 标签 / 徽标 */
.badge{display:inline-flex;align-items:center;gap:4px;padding:2.5px 9px;border-radius:20px;font-size:11.5px;font-weight:500;
  background:rgba(255,255,255,.08);color:var(--txt-2);border:1px solid transparent}
.badge-primary{background:rgba(108,92,231,.18);color:#b3a7ff;border-color:rgba(108,92,231,.3)}
.badge-success{background:rgba(56,211,159,.15);color:#5fe0b4;border-color:rgba(56,211,159,.28)}
.badge-warning{background:rgba(255,176,32,.15);color:#ffc95c;border-color:rgba(255,176,32,.3)}
.badge-danger{background:rgba(255,92,124,.15);color:#ff92aa;border-color:rgba(255,92,124,.3)}
.badge-info{background:rgba(58,183,255,.15);color:#7cc9ff;border-color:rgba(58,183,255,.3)}
.badge-dark{background:rgba(255,255,255,.10);color:#dfe2f3}
.badge-default{background:rgba(255,255,255,.07);color:var(--txt-2)}
.tag{padding:2px 8px;border-radius:6px;font-size:11.5px;background:rgba(255,255,255,.06);color:var(--txt-2);
  border:1px solid var(--line)}
.chips{display:flex;flex-wrap:wrap;gap:7px}

/* 分段选项卡（避免丑 TAB） */
.seg{display:inline-flex;padding:3px;gap:3px;border-radius:11px;background:rgba(255,255,255,.05);border:1px solid var(--line)}
.seg a{padding:6px 14px;border-radius:8px;font-size:12.8px;color:var(--txt-2);transition:.2s var(--ease)}
.seg a:hover{color:var(--txt)}
.seg a.on{background:linear-gradient(135deg,rgba(108,92,231,.9),rgba(77,107,254,.9));color:#fff;font-weight:600;
  box-shadow:0 6px 16px rgba(108,92,231,.35)}

/* 表单 */
.field{margin-bottom:14px}
.field label{display:block;font-size:12.5px;color:var(--txt-2);margin-bottom:6px}
.field label i{color:var(--danger);font-style:normal;margin-left:3px}
.input,.select,.textarea{
  width:100%;height:38px;padding:0 12px;border-radius:10px;border:1px solid var(--line-2);
  background:rgba(255,255,255,.04);outline:0;transition:.2s var(--ease);
}
.textarea{height:auto;padding:10px 12px;min-height:96px;resize:vertical;line-height:1.7}
.input:focus,.select:focus,.textarea:focus{border-color:var(--brand);box-shadow:0 0 0 3px rgba(108,92,231,.18)}
.select{appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--txt-3) 50%),linear-gradient(135deg,var(--txt-3) 50%,transparent 50%);
  background-position:calc(100% - 16px) 17px,calc(100% - 11px) 17px;background-size:5px 5px;background-repeat:no-repeat}
.switchrow{display:flex;align-items:center;gap:10px;font-size:13px;color:var(--txt-2)}
.switch{width:42px;height:23px;border-radius:20px;background:rgba(255,255,255,.14);position:relative;cursor:pointer;transition:.24s var(--ease);flex:none}
.switch::after{content:"";position:absolute;top:2.5px;left:2.5px;width:18px;height:18px;border-radius:50%;background:#fff;transition:.24s var(--ease)}
.switch.on{background:linear-gradient(135deg,var(--brand),var(--brand-3))}
.switch.on::after{left:21.5px}
.searchbar{display:flex;gap:9px;align-items:center;flex-wrap:wrap}
.searchbar .input{width:230px}

/* 表格 */
.tb{width:100%;border-collapse:separate;border-spacing:0;font-size:13px}
.tb th{
  text-align:left;font-weight:500;color:var(--txt-3);font-size:12px;letter-spacing:.3px;
  padding:11px 16px;border-bottom:1px solid var(--line);background:rgba(255,255,255,.02);white-space:nowrap;
}
.tb td{padding:13px 16px;border-bottom:1px solid rgba(255,255,255,.05);vertical-align:middle}
.tb tbody tr{transition:.18s var(--ease)}
.tb tbody tr:hover{background:rgba(108,92,231,.07)}
.tb tbody tr:last-child td{border-bottom:0}
.tb .t-title{font-weight:550;color:var(--txt)}
.tb .t-sub{font-size:11.5px;color:var(--txt-3);margin-top:2px}
.tb .acts{display:flex;gap:7px;flex-wrap:wrap}
.tb .num{font-variant-numeric:tabular-nums}

/* 列表项 */
.li{display:flex;gap:12px;padding:14px 18px;border-bottom:1px solid rgba(255,255,255,.05);transition:.2s var(--ease)}
.li:last-child{border-bottom:0}
.li:hover{background:rgba(108,92,231,.07)}
.li-rank{width:26px;height:26px;border-radius:8px;display:grid;place-items:center;font-size:12.5px;font-weight:700;flex:none;
  background:rgba(255,255,255,.07);color:var(--txt-2)}
.li-rank.top1{background:linear-gradient(135deg,#ff6b81,#ff9f43);color:#fff}
.li-rank.top2{background:linear-gradient(135deg,#6c5ce7,#4d6bfe);color:#fff}
.li-rank.top3{background:linear-gradient(135deg,#0fb9b1,#38d39f);color:#fff}
.li-main{flex:1;min-width:0}
.li-main h4{font-size:13.6px;font-weight:550;margin-bottom:4px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.li-main p{font-size:12.2px;color:var(--txt-3);display:flex;gap:12px;flex-wrap:wrap}
.li-side{text-align:right;flex:none;display:flex;flex-direction:column;align-items:flex-end;gap:6px}

/* 评分环 */
.ring{width:64px;height:64px;border-radius:50%;display:grid;place-items:center;position:relative;flex:none}
.ring::before{content:"";position:absolute;inset:6px;border-radius:50%;background:var(--panel-2)}
.ring b{position:relative;font-size:16px;font-weight:700}
.ring span{position:relative;font-size:9.5px;color:var(--txt-3);display:block;text-align:center;margin-top:-2px}

/* 进度条 */
.bar{height:6px;border-radius:6px;background:rgba(255,255,255,.09);overflow:hidden}
.bar i{display:block;height:100%;border-radius:6px;background:linear-gradient(90deg,var(--brand),var(--brand-3))}
.bar.mint i{background:linear-gradient(90deg,#0fb9b1,#38d39f)}
.bar.warn i{background:linear-gradient(90deg,#ff9f43,#ffb020)}
.bar.danger i{background:linear-gradient(90deg,#ff5c7c,#ff8fa3)}

/* 迷你柱状图 */
.spark{display:flex;align-items:flex-end;gap:5px;height:64px}
.spark i{flex:1;border-radius:5px 5px 2px 2px;background:linear-gradient(180deg,rgba(108,92,231,.95),rgba(108,92,231,.28));
  min-height:6px;transition:.3s var(--ease);position:relative}
.spark i:hover{background:linear-gradient(180deg,#8e7bff,rgba(142,123,255,.4))}

/* 分镜时间轴 */
.shots{position:relative;padding-left:22px}
.shots::before{content:"";position:absolute;left:7px;top:6px;bottom:6px;width:2px;
  background:linear-gradient(180deg,var(--brand),rgba(108,92,231,.1))}
.shot{position:relative;margin-bottom:14px}
.shot::before{content:"";position:absolute;left:-19px;top:5px;width:11px;height:11px;border-radius:50%;
  background:var(--bg);border:2px solid var(--brand);box-shadow:0 0 0 3px rgba(108,92,231,.16)}
.shot-h{display:flex;align-items:center;gap:9px;margin-bottom:5px;flex-wrap:wrap}
.shot-h b{font-size:13.2px}
.shot-h .t{font-size:11.5px;color:var(--txt-3);font-variant-numeric:tabular-nums}
.shot-b{font-size:12.6px;color:var(--txt-2);background:rgba(255,255,255,.04);border:1px solid var(--line);
  border-radius:10px;padding:9px 12px}
.shot-b em{display:block;font-style:normal;color:var(--txt-3);font-size:11.5px;margin-top:4px}

/* 提示块 */
.note{border-radius:12px;padding:12px 14px;font-size:12.6px;display:flex;gap:10px;align-items:flex-start;
  background:rgba(108,92,231,.10);border:1px solid rgba(108,92,231,.24);color:#c6bfff}
.note.mint{background:rgba(56,211,159,.10);border-color:rgba(56,211,159,.24);color:#8ee9c6}
.note.warn{background:rgba(255,176,32,.10);border-color:rgba(255,176,32,.26);color:#ffd98a}
.note.danger{background:rgba(255,92,124,.10);border-color:rgba(255,92,124,.26);color:#ffb0c2}

/* 空状态 */
.empty{padding:46px 20px;text-align:center;color:var(--txt-3)}
.empty .ic{width:40px;height:40px;margin-bottom:10px;opacity:.5}

/* 弹层（分层） */
.mask{position:fixed;inset:0;background:rgba(6,8,18,.68);backdrop-filter:blur(6px);z-index:60;
  display:none;align-items:center;justify-content:center;padding:24px}
.mask.on{display:flex}
.modal{width:100%;max-width:620px;max-height:88vh;overflow:auto;border-radius:var(--r-xl);
  background:linear-gradient(180deg,#1b1f38,#141830);border:1px solid var(--line-2);box-shadow:var(--shadow);
  animation:pop .26s var(--ease)}
.modal.wide{max-width:860px}
@keyframes pop{from{opacity:0;transform:translateY(14px) scale(.98)}to{opacity:1;transform:none}}
.modal-h{display:flex;align-items:center;gap:10px;padding:17px 20px;border-bottom:1px solid var(--line)}
.modal-h h3{font-size:15.5px;flex:1}
.modal-b{padding:20px}
.modal-f{display:flex;gap:10px;justify-content:flex-end;padding:15px 20px;border-top:1px solid var(--line)}
.drawer{position:fixed;top:0;right:0;bottom:0;width:520px;max-width:92vw;z-index:61;transform:translateX(100%);
  transition:.32s var(--ease);background:linear-gradient(180deg,#1b1f38,#141830);border-left:1px solid var(--line-2);
  display:flex;flex-direction:column}
.drawer.on{transform:none}

/* 关键指标内联 */
.kv{display:flex;gap:20px;flex-wrap:wrap}
.kv div{font-size:12px;color:var(--txt-3)}
.kv div b{display:block;font-size:16px;color:var(--txt);font-weight:650;margin-top:3px;font-variant-numeric:tabular-nums}

/* 时间轴小点 */
.dotline{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.dotline i{width:8px;height:8px;border-radius:50%;background:rgba(255,255,255,.14)}
.dotline i.on{background:linear-gradient(135deg,var(--brand),var(--brand-3));box-shadow:0 0 10px rgba(108,92,231,.7)}

/* 引用块（GEO 结构化内容） */
.code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px;line-height:1.75;
  background:rgba(0,0,0,.34);border:1px solid var(--line);border-radius:12px;padding:13px 15px;color:#c9d1ff;overflow:auto}
.qa{border-left:2px solid rgba(108,92,231,.5);padding:2px 0 2px 13px;margin-bottom:13px}
.qa b{display:block;font-size:13.2px;margin-bottom:3px}
.qa p{font-size:12.8px;color:var(--txt-2)}

.pager{display:flex;gap:6px;justify-content:flex-end;padding:14px 18px}
.pg{min-width:32px;height:32px;line-height:30px;text-align:center;border-radius:9px;border:1px solid var(--line);
  font-size:12.6px;color:var(--txt-2);padding:0 8px}
.pg:hover{border-color:var(--line-2);color:#fff}
.pg.on{background:linear-gradient(135deg,var(--brand),var(--brand-3));color:#fff;border-color:transparent;font-weight:600}

.mt6{margin-top:6px}.mt10{margin-top:10px}.mt14{margin-top:14px}.mt18{margin-top:18px}
.mb0{margin-bottom:0}.mb10{margin-bottom:10px}.mb14{margin-bottom:14px}
.row{display:flex;align-items:center;gap:10px}
.row.wrap{flex-wrap:wrap}
.row.between{justify-content:space-between}
.sp{margin-left:auto}
.muted{color:var(--txt-3)}
.small{font-size:12px}
.b{font-weight:600}
.nowrap{white-space:nowrap}
.center{text-align:center}
.right{text-align:right}

/* ---------------- 管理后台：云端白主题 ---------------- */
body.admin{
  background:linear-gradient(180deg,#f4f6fc,#eef1f9 60%,#f6f8fc);
  color:#1d2333;
}
body.admin .side{background:linear-gradient(180deg,#ffffff,#f8f9ff);border-right:1px solid #e6e9f4}
body.admin .brand{border-bottom:1px solid #eceff8}
body.admin .brand-txt span{color:#8a91a8}
body.admin .nav a{color:#5b6482}
body.admin .nav a:hover{background:#f1f3fc;color:#1d2333}
body.admin .nav a.on{background:linear-gradient(90deg,rgba(108,92,231,.14),rgba(108,92,231,.02));color:#4b3fd0}
body.admin .nav-group>p{color:#9aa1b8}
body.admin .topbar{background:rgba(255,255,255,.86);border-bottom:1px solid #e6e9f4}
body.admin .card{background:#fff;border:1px solid #e8ebf5;box-shadow:0 6px 20px rgba(28,40,80,.05)}
body.admin .stat{background:linear-gradient(160deg,#fff,#f7f8ff);border:1px solid #e8ebf5}
body.admin .stat b.num{background:linear-gradient(90deg,#2a2f45,#6c5ce7);-webkit-background-clip:text;-webkit-text-fill-color:transparent}
body.admin .stat>span{color:#8a91a8}
body.admin .tb th{background:#f8f9fd;color:#8a91a8;border-bottom:1px solid #eaedf6}
body.admin .tb td{border-bottom:1px solid #f0f2f9;color:#2b3149}
body.admin .tb tbody tr:hover{background:#f7f8ff}
body.admin .li:hover{background:#f7f8ff}
body.admin .li{border-bottom:1px solid #f0f2f9}
body.admin .input,body.admin .select,body.admin .textarea{background:#fff;border:1px solid #dfe3f0}
body.admin .btn{background:#fff;border:1px solid #dfe3f0}
body.admin .btn:hover{background:#f5f6fd}
body.admin .btn.primary{color:#fff}
body.admin .iconbtn{background:#fff;border:1px solid #e6e9f4;color:#5b6482}
body.admin .tb-search{background:#f5f6fc;border:1px solid #e6e9f4;color:#8a91a8}
body.admin .badge-default{background:#f0f2f9;color:#5b6482}
body.admin .tag{background:#f4f5fb;color:#5b6482;border-color:#e6e9f4}
body.admin .seg{background:#f2f4fb;border:1px solid #e6e9f4}
body.admin .seg a{color:#5b6482}
body.admin .ring::before{background:#fff}
body.admin .code{background:#f7f8fd;border:1px solid #e8ebf5;color:#3a4270}
body.admin .shot-b{background:#f8f9fe;border:1px solid #eaedf6;color:#4a5273}
body.admin .modal,body.admin .drawer{background:linear-gradient(180deg,#fff,#fafbff);border-color:#e6e9f4}
body.admin .note{color:#4b3fd0}
body.admin .tb .t-title{color:#1d2333}
body.admin .tb .t-sub{color:#9aa1b8}
body.admin .li-main p{color:#9aa1b8}
body.admin .pager .pg{color:#5b6482;border-color:#e6e9f4}
body.admin .pager .pg.on{color:#fff}
body.admin .muted,body.admin .hint{color:#8a91a8}
body.admin .searchbar .input{color:#1d2333}
body.admin::-webkit-scrollbar-thumb{background:#c9cee0}

/* ---------------- 移动端 APP 外壳（H5 预览） ---------------- */
.phone{width:392px;margin:0 auto;background:var(--bg-2);border-radius:34px;border:1px solid var(--line-2);
  box-shadow:var(--shadow);overflow:hidden;position:relative;height:812px;display:flex;flex-direction:column}
.phone-top{height:44px;flex:none;display:flex;align-items:center;justify-content:space-between;padding:0 20px;font-size:12px;color:var(--txt-2)}
.phone-body{flex:1;overflow-y:auto;padding:6px 16px 16px}
.phone-nav{height:62px;flex:none;display:flex;border-top:1px solid var(--line);background:rgba(13,16,32,.96);backdrop-filter:blur(12px)}
.phone-nav a{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;font-size:10.5px;color:var(--txt-3)}
.phone-nav a.on{color:#fff}
.phone-nav a.on .ic{color:var(--brand-2)}
.mcard{background:linear-gradient(160deg,rgba(30,35,62,.95),rgba(19,23,43,.95));border:1px solid var(--line);
  border-radius:var(--r-l);padding:15px;margin-bottom:12px}
.mtitle{font-size:15px;font-weight:650;margin-bottom:10px;display:flex;align-items:center;gap:8px}

.toast{
  position:fixed;left:50%;bottom:38px;transform:translate(-50%,16px);z-index:99;opacity:0;pointer-events:none;
  padding:10px 20px;border-radius:12px;font-size:13px;color:#fff;
  background:linear-gradient(135deg,rgba(108,92,231,.96),rgba(77,107,254,.96));
  box-shadow:0 14px 34px rgba(108,92,231,.4);transition:.28s var(--ease);
}
.toast.on{opacity:1;transform:translate(-50%,0)}
@keyframes zylspin{to{transform:rotate(360deg)}}
.btn[disabled]{opacity:.7;cursor:progress}
.ai-strip{
  display:flex;align-items:center;gap:9px;padding:9px 13px;border-radius:11px;font-size:12.4px;margin-bottom:14px;
  background:linear-gradient(90deg,rgba(56,211,159,.12),rgba(108,92,231,.10));border:1px solid rgba(56,211,159,.26);color:#8ee9c6;
}
.ai-strip.warn{background:linear-gradient(90deg,rgba(255,176,32,.12),rgba(108,92,231,.08));border-color:rgba(255,176,32,.3);color:#ffd98a}
.ai-strip .sp{margin-left:auto;display:flex;align-items:center;gap:8px;color:inherit}
.ai-result{margin-top:16px}
.ai-loading{padding:26px;text-align:center;color:var(--txt-3);font-size:13px}
.ai-loading .ic{width:26px;height:26px;margin-bottom:8px;animation:zylspin .9s linear infinite}

/* ---------------- 登录 / 注册页 ---------------- */
.auth-body{
  min-height:100vh;
  background:
    radial-gradient(1000px 620px at 8% -10%, rgba(108,92,231,.34), transparent 60%),
    radial-gradient(900px 560px at 100% 100%, rgba(58,183,255,.16), transparent 62%),
    var(--bg);
}
.auth-body.admin{
  background:
    radial-gradient(900px 520px at 100% -10%, rgba(108,92,231,.12), transparent 60%),
    linear-gradient(180deg,#f4f6fc,#eef1f9);
}
.auth{display:grid;grid-template-columns:1.05fr .95fr;min-height:100vh}
.auth-left{
  padding:52px 56px;display:flex;flex-direction:column;position:relative;overflow:hidden;
  background:
    radial-gradient(760px 420px at 12% 6%, rgba(108,92,231,.42), transparent 62%),
    radial-gradient(520px 380px at 88% 92%, rgba(58,183,255,.22), transparent 66%),
    linear-gradient(160deg,#171b34,#0d1024);
  border-right:1px solid rgba(255,255,255,.06);
}
.auth-left::after{
  content:"";position:absolute;width:520px;height:520px;right:-190px;top:-160px;border-radius:50%;
  background:radial-gradient(circle,rgba(142,123,255,.28),transparent 68%);
}
.auth-brand{display:flex;align-items:center;gap:13px;position:relative;z-index:1}
.auth-brand .brand-txt b{color:#fff}
.auth-brand .brand-txt span{color:#8b90b5}
.auth-slogan{margin-top:auto;position:relative;z-index:1}
.auth-slogan h1{font-size:31px;line-height:1.42;font-weight:650;letter-spacing:.5px;
  background:linear-gradient(96deg,#ffffff,#c3baff 72%);-webkit-background-clip:text;-webkit-text-fill-color:transparent}
.auth-slogan p{margin-top:14px;color:#9ba1c4;font-size:13.5px;line-height:1.85;max-width:520px}
.auth-feats{margin-top:34px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;position:relative;z-index:1}
.auth-feat{
  display:flex;gap:11px;padding:14px;border-radius:14px;border:1px solid rgba(255,255,255,.09);
  background:linear-gradient(160deg,rgba(255,255,255,.07),rgba(255,255,255,.02));
  backdrop-filter:blur(8px);transition:.26s var(--ease);
}
.auth-feat:hover{transform:translateY(-3px);border-color:rgba(142,123,255,.42);box-shadow:0 14px 30px rgba(0,0,0,.32)}
.auth-feat-ic{
  width:34px;height:34px;border-radius:10px;flex:none;display:grid;place-items:center;color:#fff;
  background:linear-gradient(135deg,var(--brand),var(--brand-3));box-shadow:0 6px 16px rgba(108,92,231,.4);
}
.auth-feat b{display:block;font-size:13.2px;color:#fff;margin-bottom:3px}
.auth-feat span{font-size:11.6px;color:#9ba1c4;line-height:1.6;display:block}
.auth-foot{margin-top:34px;display:flex;gap:8px;align-items:center;font-size:12px;color:#7d84a8;position:relative;z-index:1}
.auth-right{display:flex;align-items:center;justify-content:center;padding:40px 24px}
.auth-card{
  width:100%;max-width:404px;padding:32px 30px 24px;border-radius:22px;
  background:linear-gradient(180deg,rgba(27,31,56,.92),rgba(19,23,44,.95));
  border:1px solid rgba(255,255,255,.10);box-shadow:0 26px 64px rgba(0,0,0,.5);
}
.auth-body.admin .auth-card{background:#fff;border:1px solid #e6e9f4;box-shadow:0 20px 46px rgba(28,40,80,.10)}
.auth-card-h{margin-bottom:22px}
.auth-card-h h2{font-size:21px;font-weight:650;letter-spacing:.4px}
.auth-card-h p{margin-top:7px;font-size:12.6px;color:var(--txt-3)}
.auth-body.admin .auth-card-h p{color:#8a91a8}
.auth-seg{width:100%}
.auth-seg a{flex:1;text-align:center}
.auth-submit{width:100%;height:44px;justify-content:center;border-radius:12px;font-size:14.5px;font-weight:600}
.input-icon{position:relative}
.input-icon .ic{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--txt-3);pointer-events:none}
.input-icon .input{padding-left:37px}
.captcha{width:116px;height:40px;border-radius:10px;flex:none;cursor:pointer;border:1px solid var(--line-2)}
.lnk{font-size:12.5px;color:var(--brand-2)}
.lnk:hover{text-decoration:underline}
.auth-body.admin .lnk{color:#4b3fd0}
.auth-demo{margin-top:4px;padding:13px;border-radius:12px;background:rgba(255,255,255,.04);border:1px dashed var(--line-2)}
.auth-body.admin .auth-demo{background:#f7f8fd;border-color:#e2e6f2}
.auth-demo p{font-size:11.5px;color:var(--txt-3);margin-bottom:9px}
.auth-demo .tag{transition:.2s var(--ease)}
.auth-demo .tag:hover{border-color:var(--brand);color:#fff;background:rgba(108,92,231,.22)}
.auth-body.admin .auth-demo .tag:hover{color:#4b3fd0}
.auth-switch{margin-top:16px;text-align:center}
.auth-copy{margin-top:22px;text-align:center;font-size:11.4px;color:var(--txt-3)}

@media (max-width:980px){
  .auth{grid-template-columns:minmax(0,1fr)}
  .auth-left{display:none}
  .auth-body.admin .auth-left{display:none}
}

/* 响应式 */
@media (max-width:1240px){ .g4{grid-template-columns:repeat(2,minmax(0,1fr))} }
@media (max-width:1080px){
  .side{transform:translateX(-100%);transition:.3s var(--ease)}
  .side.on{transform:none}
  .main{margin-left:0}
  .g23,.g32,.g3{grid-template-columns:minmax(0,1fr)}
  .tb-search{display:none}
}
@media (max-width:720px){
  .page{padding:14px}
  .g2,.g4{grid-template-columns:minmax(0,1fr)}
  .topbar{padding:0 14px;gap:10px}
}
