:root{
  --bg:#07090d; --bg2:#0b0e14; --panel:rgba(20,24,33,.72); --panel2:rgba(28,33,45,.6);
  --line:rgba(255,255,255,.07); --line2:rgba(255,255,255,.12);
  --tx:#e8ecf3; --tx2:#98a2b3; --tx3:#5f6b7f;
  --ok:#22d3a5; --warn:#f5b53d; --bad:#ff5c72; --info:#4c9aff; --accent:#7c5cff;
  --glow:0 0 0 1px rgba(124,92,255,.25), 0 8px 40px -12px rgba(124,92,255,.45);
  --r:14px;
}
*{box-sizing:border-box;margin:0;padding:0}
body{background:var(--bg);color:var(--tx);font:14px/1.55 -apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",Inter,sans-serif;
  -webkit-font-smoothing:antialiased;overflow-x:hidden}
body::before{content:"";position:fixed;inset:0;pointer-events:none;z-index:0;
  background:radial-gradient(900px 500px at 12% -8%,rgba(124,92,255,.16),transparent 60%),
             radial-gradient(800px 460px at 88% 4%,rgba(34,211,165,.10),transparent 60%),
             radial-gradient(700px 400px at 50% 110%,rgba(76,154,255,.08),transparent 60%)}
#app{position:relative;z-index:1;display:grid;grid-template-columns:232px 1fr;min-height:100vh}

/* ---------- 侧栏 ---------- */
.side{border-right:1px solid var(--line);padding:22px 14px;position:sticky;top:0;height:100vh;
  background:linear-gradient(180deg,rgba(15,18,26,.8),rgba(7,9,13,.8));backdrop-filter:blur(14px)}
.brand{display:flex;align-items:center;gap:10px;padding:0 8px 20px}
.logo{width:30px;height:30px;border-radius:9px;background:linear-gradient(135deg,var(--accent),#3ddc97);
  display:grid;place-items:center;font-weight:800;color:#0b0e14;font-size:15px;box-shadow:var(--glow)}
.brand b{font-size:15px;letter-spacing:.3px}
.brand small{display:block;color:var(--tx3);font-size:10.5px;letter-spacing:1.4px;text-transform:uppercase}
.nav{display:flex;flex-direction:column;gap:2px;margin-top:6px}
.nav a{display:flex;align-items:center;gap:10px;padding:9px 11px;border-radius:10px;color:var(--tx2);
  text-decoration:none;font-size:13.5px;transition:.15s;cursor:pointer;border:1px solid transparent}
.nav a:hover{background:var(--panel2);color:var(--tx)}
.nav a.on{background:linear-gradient(90deg,rgba(124,92,255,.18),rgba(124,92,255,.04));
  color:#fff;border-color:rgba(124,92,255,.3)}
.nav a .ic{width:16px;text-align:center;opacity:.9}
.nav .grp{font-size:10.5px;color:var(--tx3);letter-spacing:1.3px;text-transform:uppercase;padding:16px 11px 6px}
.side-foot{position:absolute;bottom:16px;left:14px;right:14px;font-size:11px;color:var(--tx3)}
.dot{width:7px;height:7px;border-radius:50%;display:inline-block;margin-right:6px}
.dot.ok{background:var(--ok);box-shadow:0 0 8px var(--ok)}
.dot.bad{background:var(--bad);box-shadow:0 0 8px var(--bad)}
.dot.warn{background:var(--warn);box-shadow:0 0 8px var(--warn)}

/* ---------- 主区 ---------- */
.main{padding:24px 28px 60px;max-width:1500px}
.top{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:22px;flex-wrap:wrap}
h1{font-size:21px;font-weight:650;letter-spacing:-.2px}
.sub{color:var(--tx3);font-size:12.5px;margin-top:3px}
.actions{display:flex;gap:8px;align-items:center}
.btn{background:var(--panel2);border:1px solid var(--line2);color:var(--tx);padding:7px 13px;border-radius:9px;
  font-size:12.5px;cursor:pointer;transition:.15s;display:inline-flex;align-items:center;gap:6px}
.btn:hover{border-color:rgba(124,92,255,.5);background:rgba(124,92,255,.12)}
.btn.pri{background:linear-gradient(135deg,var(--accent),#5b45d6);border-color:transparent;font-weight:600}
input.search{background:var(--panel2);border:1px solid var(--line2);color:var(--tx);padding:7px 12px;
  border-radius:9px;font-size:13px;width:250px;outline:none}
input.search:focus{border-color:rgba(124,92,255,.55);box-shadow:0 0 0 3px rgba(124,92,255,.12)}

.grid{display:grid;gap:14px}
.g4{grid-template-columns:repeat(4,1fr)}.g3{grid-template-columns:repeat(3,1fr)}.g2{grid-template-columns:repeat(2,1fr)}
@media(max-width:1180px){.g4{grid-template-columns:repeat(2,1fr)}.g3,.g2{grid-template-columns:1fr}}

.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:16px 18px;
  backdrop-filter:blur(12px);position:relative;overflow:hidden}
.card.hl::after{content:"";position:absolute;inset:0;border-radius:var(--r);pointer-events:none;
  background:linear-gradient(135deg,rgba(124,92,255,.10),transparent 55%)}
.card h3{font-size:12px;color:var(--tx3);font-weight:600;letter-spacing:.6px;text-transform:uppercase;margin-bottom:12px}
.kpi{font-size:30px;font-weight:680;letter-spacing:-1px;line-height:1.1}
.kpi small{font-size:12px;color:var(--tx3);font-weight:400;margin-left:6px;letter-spacing:0}
.trend{font-size:11.5px;margin-top:6px;color:var(--tx3)}
.c-ok{color:var(--ok)}.c-warn{color:var(--warn)}.c-bad{color:var(--bad)}.c-info{color:var(--info)}.c-dim{color:var(--tx3)}

table{width:100%;border-collapse:collapse;font-size:13px}
th{text-align:left;color:var(--tx3);font-weight:600;font-size:11px;letter-spacing:.7px;text-transform:uppercase;
  padding:9px 10px;border-bottom:1px solid var(--line);position:sticky;top:0;background:rgba(11,14,20,.92);backdrop-filter:blur(8px)}
td{padding:10px;border-bottom:1px solid rgba(255,255,255,.04);vertical-align:middle}
tr:hover td{background:rgba(255,255,255,.022)}
tr.clk{cursor:pointer}
.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}
.tag{display:inline-flex;align-items:center;gap:5px;padding:2.5px 8px;border-radius:20px;font-size:11px;
  border:1px solid var(--line2);background:var(--panel2);color:var(--tx2);white-space:nowrap}
.tag.ok{color:var(--ok);border-color:rgba(34,211,165,.35);background:rgba(34,211,165,.10)}
.tag.warn{color:var(--warn);border-color:rgba(245,181,61,.35);background:rgba(245,181,61,.10)}
.tag.bad{color:var(--bad);border-color:rgba(255,92,114,.35);background:rgba(255,92,114,.10)}
.tag.info{color:var(--info);border-color:rgba(76,154,255,.3);background:rgba(76,154,255,.10)}
.tag.acc{color:#c4b5ff;border-color:rgba(124,92,255,.35);background:rgba(124,92,255,.12)}

.bar{height:6px;border-radius:6px;background:rgba(255,255,255,.07);overflow:hidden}
.bar>i{display:block;height:100%;border-radius:6px;background:linear-gradient(90deg,var(--accent),#3ddc97)}
.spark{display:block}

/* 抽屉 */
.drawer{position:fixed;inset:0;z-index:50;display:none}
.drawer.open{display:block}
.drawer .mask{position:absolute;inset:0;background:rgba(3,5,9,.6);backdrop-filter:blur(3px)}
.drawer .pane{position:absolute;right:0;top:0;bottom:0;width:620px;max-width:94vw;overflow:auto;
  background:linear-gradient(180deg,#0e1219,#0a0d13);border-left:1px solid var(--line2);padding:22px 24px;
  animation:slide .22s cubic-bezier(.2,.8,.2,1)}
@keyframes slide{from{transform:translateX(30px);opacity:.4}to{transform:none;opacity:1}}
.drawer h2{font-size:17px;margin-bottom:4px}
.kv{display:grid;grid-template-columns:130px 1fr;gap:8px 14px;font-size:13px;margin:14px 0}
.kv .k{color:var(--tx3)}
pre.code{background:#080b10;border:1px solid var(--line);border-radius:10px;padding:12px;overflow:auto;
  font-size:11.5px;line-height:1.5;max-height:340px;color:#c8d3e6}
.close{position:absolute;right:18px;top:16px;cursor:pointer;color:var(--tx3);font-size:20px;line-height:1}
.close:hover{color:var(--tx)}

.empty{color:var(--tx3);text-align:center;padding:40px;font-size:13px}
.section-t{font-size:13px;color:var(--tx2);font-weight:600;margin:24px 0 10px;display:flex;align-items:center;gap:8px}
.section-t::after{content:"";flex:1;height:1px;background:var(--line)}
.toast{position:fixed;right:20px;bottom:20px;background:var(--panel);border:1px solid var(--line2);
  padding:11px 16px;border-radius:11px;font-size:13px;z-index:99;backdrop-filter:blur(10px);box-shadow:0 10px 40px -10px #000}
.scroll{max-height:420px;overflow:auto}
.scroll::-webkit-scrollbar,.drawer .pane::-webkit-scrollbar,pre.code::-webkit-scrollbar{width:8px;height:8px}
.scroll::-webkit-scrollbar-thumb,.drawer .pane::-webkit-scrollbar-thumb,pre.code::-webkit-scrollbar-thumb{background:rgba(255,255,255,.12);border-radius:8px}
.node-card{display:flex;flex-direction:column;gap:9px}
.node-card .nm{display:flex;align-items:center;justify-content:space-between}
.node-card .nm b{font-size:14.5px}
.mini{font-size:11.5px;color:var(--tx3)}
.ring{--p:0;width:52px;height:52px;border-radius:50%;display:grid;place-items:center;font-size:12px;font-weight:700;
  background:conic-gradient(var(--ok) calc(var(--p)*1%),rgba(255,255,255,.08) 0)}
.ring i{width:42px;height:42px;border-radius:50%;background:#0c1017;display:grid;place-items:center;font-style:normal}

/* ---------- 图表 ---------- */
.chart{position:relative;margin-top:4px}
.chart .hit{cursor:crosshair}
.chart .tip{position:absolute;pointer-events:none;background:rgba(14,18,26,.96);border:1px solid var(--line2);
  border-radius:9px;padding:6px 10px;font-size:11.5px;white-space:nowrap;box-shadow:0 8px 28px -8px #000;z-index:5}
.chart .tip b{color:var(--tx);margin-right:6px}

/* ---------- 命令面板 ---------- */
.pal{position:fixed;inset:0;z-index:80;display:none;background:rgba(3,5,9,.55);backdrop-filter:blur(4px)}
.pal.open{display:block}
.pal-in{max-width:560px;margin:12vh auto 0;background:linear-gradient(180deg,#11151d,#0c1017);
  border:1px solid var(--line2);border-radius:16px;overflow:hidden;box-shadow:0 30px 80px -20px #000;
  animation:pop .16s cubic-bezier(.2,.8,.2,1)}
@keyframes pop{from{transform:translateY(-8px) scale(.985);opacity:.5}to{transform:none;opacity:1}}
.pal-in input{width:100%;background:transparent;border:0;border-bottom:1px solid var(--line);
  padding:16px 18px;color:var(--tx);font-size:14.5px;outline:none}
.pal-list{max-height:330px;overflow:auto;padding:6px}
.pal-it{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 12px;
  border-radius:9px;cursor:pointer;font-size:13.5px}
.pal-it.on,.pal-it:hover{background:rgba(124,92,255,.16)}
.kbd{border:1px solid var(--line2);border-bottom-width:2px;border-radius:5px;padding:1px 5px;
  font-size:10.5px;color:var(--tx3);font-family:ui-monospace,monospace}

/* ---------- 表单 ---------- */
.field{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}
.field>label{font-size:12px;color:var(--tx2);font-weight:600}
.field .hint{font-size:11.5px;color:var(--tx3);line-height:1.5}
input[type=text],input[type=password],input[type=number],input[type=email],select,textarea{
  background:var(--panel2);border:1px solid var(--line2);color:var(--tx);padding:9px 12px;
  border-radius:9px;font-size:13.5px;outline:none;font-family:inherit;width:100%}
textarea{min-height:120px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;resize:vertical}
input:focus,select:focus,textarea:focus{border-color:rgba(124,92,255,.55);box-shadow:0 0 0 3px rgba(124,92,255,.12)}
select{appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--tx3) 50%),
  linear-gradient(135deg,var(--tx3) 50%,transparent 50%);
  background-position:calc(100% - 17px) 50%,calc(100% - 12px) 50%;background-size:5px 5px,5px 5px;
  background-repeat:no-repeat;padding-right:32px}
.row{display:grid;gap:12px}.row.c2{grid-template-columns:1fr 1fr}.row.c3{grid-template-columns:repeat(3,1fr)}
@media(max-width:760px){.row.c2,.row.c3{grid-template-columns:1fr}}
.btn.danger{border-color:rgba(255,92,114,.4);color:var(--bad)}
.btn.danger:hover{background:rgba(255,92,114,.12);border-color:var(--bad)}
.btn.sm{padding:5px 10px;font-size:12px;border-radius:8px}
.btn:disabled{opacity:.45;cursor:not-allowed}
.sw{position:relative;width:40px;height:22px;border-radius:12px;background:rgba(255,255,255,.12);
  cursor:pointer;transition:.18s;flex:none;border:1px solid var(--line2)}
.sw::after{content:"";position:absolute;left:2px;top:2px;width:16px;height:16px;border-radius:50%;
  background:var(--tx2);transition:.18s}
.sw.on{background:linear-gradient(135deg,var(--accent),#5b45d6);border-color:transparent}
.sw.on::after{left:20px;background:#fff}
.swrow{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 0;
  border-bottom:1px solid rgba(255,255,255,.05)}
.swrow:last-child{border-bottom:0}
.swrow .t{font-size:13.5px}.swrow .d{font-size:11.5px;color:var(--tx3);margin-top:2px;max-width:560px}

/* ---------- 标签页 ---------- */
.tabs{display:flex;gap:2px;border-bottom:1px solid var(--line);margin-bottom:18px;overflow-x:auto}
.tabs a{padding:9px 14px;font-size:13.5px;color:var(--tx2);cursor:pointer;border-bottom:2px solid transparent;
  white-space:nowrap}
.tabs a:hover{color:var(--tx)}
.tabs a.on{color:#fff;border-bottom-color:var(--accent)}

/* ---------- 弹窗 ---------- */
.modal{position:fixed;inset:0;z-index:70;display:none;background:rgba(3,5,9,.62);backdrop-filter:blur(4px)}
.modal.open{display:grid;place-items:center}
.modal .box{background:linear-gradient(180deg,#11151d,#0c1017);border:1px solid var(--line2);
  border-radius:16px;width:min(620px,94vw);max-height:88vh;overflow:auto;padding:22px 24px;
  box-shadow:0 30px 90px -20px #000}
.modal h3{font-size:16px;margin-bottom:4px;color:var(--tx);text-transform:none;letter-spacing:0}
.modal .sub{margin-bottom:16px}
.modal .foot{display:flex;gap:8px;justify-content:flex-end;margin-top:18px}

/* ---------- 登录 ---------- */
.login{display:grid;place-items:center;min-height:100vh}
.login .box{width:min(400px,92vw);background:var(--panel);border:1px solid var(--line);
  border-radius:16px;padding:30px;backdrop-filter:blur(12px)}
.login .lg{display:flex;align-items:center;gap:11px;margin-bottom:22px}
.err{color:var(--bad);font-size:12.5px;margin-top:8px;min-height:18px}

/* ---------- 其他 ---------- */
.pill{display:inline-flex;gap:6px;align-items:center;background:var(--panel2);border:1px solid var(--line2);
  border-radius:9px;padding:5px 10px;font-size:12.5px;cursor:pointer}
.pill.on{border-color:rgba(124,92,255,.5);background:rgba(124,92,255,.14);color:#fff}
.banner{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px 16px;
  border-radius:12px;border:1px solid rgba(245,181,61,.3);background:rgba(245,181,61,.09);
  margin-bottom:16px;font-size:13px}
.codeblk{background:#080b10;border:1px solid var(--line);border-radius:9px;padding:9px 12px;
  font-family:ui-monospace,monospace;font-size:12px;color:#c8d3e6;word-break:break-all}
.seg{display:inline-flex;border:1px solid var(--line2);border-radius:9px;overflow:hidden}
.seg button{background:transparent;border:0;color:var(--tx2);padding:6px 13px;font-size:12.5px;cursor:pointer}
.seg button.on{background:rgba(124,92,255,.2);color:#fff}

/* 发布中的小转圈 */
.spin{width:9px;height:9px;border:2px solid rgba(255,255,255,.25);border-top-color:currentColor;
  border-radius:50%;display:inline-block;animation:sp .7s linear infinite;margin-right:5px;vertical-align:-1px}
@keyframes sp{to{transform:rotate(360deg)}}
select[multiple]{padding:6px;min-height:120px}
select[multiple] option{padding:3px 6px;border-radius:4px}

/* ---------- 域名清单（按主域折叠） ---------- */
.dl-head{display:flex;align-items:center;gap:10px;margin-bottom:10px;flex-wrap:wrap}
.dl-head .dl-q{max-width:230px;font-size:12.5px;padding:5px 10px}
.dl-body{display:flex;flex-direction:column;gap:2px}
.dl-row{display:grid;grid-template-columns:minmax(150px,210px) 1fr;gap:12px;align-items:baseline;
  padding:5px 8px;border-radius:8px}
.dl-row:hover{background:var(--panel2)}
.dl-row.more{display:none}
.dl.open .dl-row.more{display:grid}
.dl-base{font-size:12.5px;color:var(--tx);display:flex;align-items:center;gap:7px}
.dl-base .tag{padding:0 5px;font-size:10.5px;color:var(--tx3)}
.dl-pres{display:flex;flex-wrap:wrap;gap:4px;align-items:baseline}
.dl-cp{color:var(--tx3);margin-right:2px}
.dl-pres .tag{padding:1px 7px;font-size:11.5px}
.dl-pres .tag.clk{cursor:pointer}
.dl-pres .tag.clk:hover{border-color:rgba(124,92,255,.55);color:#fff}
.dl-toggle{display:inline-block;margin-top:9px;font-size:12px;color:var(--acc);cursor:pointer}
.lnk{color:var(--acc);cursor:pointer;margin-left:6px;font-size:12.5px}
.dl.flat .dl-body{flex-direction:row;flex-wrap:wrap;gap:5px}
.dl.flat .dl-row{display:inline-flex;padding:2px 9px}
.dl.flat .dl-row:hover{background:var(--panel2)}

/* ---- AI 助手 ---- */
.chat{display:flex;flex-direction:column;gap:10px;max-height:60vh;overflow:auto;padding:4px 2px}
.msg{max-width:88%;padding:10px 12px;border-radius:10px;white-space:pre-wrap;line-height:1.5;font-size:13.5px}
.msg.me{align-self:flex-end;background:var(--acc,#2b6cb0);color:#fff}
.msg.ai{align-self:flex-start;background:var(--bg2,#f3f5f8);border:1px solid var(--ln,#e3e7ee)}
.msg .mini{opacity:.7}
.chatbar{display:flex;gap:8px;margin-top:10px}
.chatbar input{flex:1}
.quick{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
.prop{border:1px solid var(--ln,#e3e7ee);border-radius:10px;padding:10px 12px;margin-bottom:8px}
.prop .st{font-size:11px;padding:2.5px 8px;border-radius:20px;border:1px solid var(--line2);background:var(--panel2);color:var(--tx2);white-space:nowrap}
.prop .st.pending_approval{color:var(--warn);border-color:rgba(245,181,61,.35);background:rgba(245,181,61,.10)}
.prop .st.succeeded,.prop .st.approved{color:var(--ok);border-color:rgba(34,211,165,.35);background:rgba(34,211,165,.10)}
.prop .st.applying,.prop .st.verifying{color:var(--info);border-color:rgba(76,154,255,.3);background:rgba(76,154,255,.10)}
.prop .st.rolled_back,.prop .st.failed,.prop .st.rejected{color:var(--bad);border-color:rgba(255,92,114,.35);background:rgba(255,92,114,.10)}
.prop:hover{border-color:rgba(124,92,255,.5)}
.tasks{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;margin-top:8px}
.task{background:var(--panel2);border:1px solid var(--line2);border-radius:12px;padding:14px;text-align:left;color:var(--tx);cursor:pointer;transition:.15s}
.task:hover{border-color:rgba(124,92,255,.5)}.task.on{border-color:rgba(124,92,255,.7);background:rgba(124,92,255,.12)}
.task .ic{font-size:20px;margin-bottom:6px}.task b{display:block;font-size:14px}.task small{display:block;color:var(--tx3);font-size:11.5px;margin-top:4px;line-height:1.45}
.taskform{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:12px;padding:12px 14px;border:1px dashed var(--line2);border-radius:12px}
.steps{display:flex;gap:10px;flex-wrap:wrap;margin-top:12px}
.step{flex:1;min-width:160px;display:flex;gap:10px;align-items:flex-start;font-size:12.5px;color:var(--tx2)}
.step i{flex:none;width:22px;height:22px;border-radius:50%;background:rgba(124,92,255,.18);color:#c4b5ff;font-style:normal;font-size:12px;display:flex;align-items:center;justify-content:center;font-weight:700}


/* ---- 全局 AI 抽屉 ---- */
.aidock{position:fixed;top:0;right:0;bottom:0;width:420px;max-width:100vw;z-index:60;display:none;
  transform:translateX(12px);opacity:0;transition:.18s}
.aidock.open{display:block;transform:none;opacity:1}
.aidock .pane{height:100%;display:flex;flex-direction:column;padding:16px 16px 12px;
  background:linear-gradient(180deg,rgba(15,18,26,.96),rgba(7,9,13,.96));border-left:1px solid var(--line2);
  backdrop-filter:blur(18px);box-shadow:-24px 0 60px -30px rgba(0,0,0,.8)}
.aidock .hd{display:flex;align-items:center;gap:10px;padding-bottom:10px;border-bottom:1px solid var(--line);margin-bottom:10px}
.aidock .hd .sp{flex:1}
.aidock .hd .lnk{font-size:12px;color:var(--tx2);cursor:pointer}
.aidock .hd .lnk:hover{color:var(--tx)}
.aidock .hd .x{cursor:pointer;color:var(--tx2);padding:2px 6px}
.aidock .chat{flex:1;max-height:none;min-height:0}
.aidock .msg.ai{background:var(--panel2);border-color:var(--line2);color:var(--tx)}
.aidock .msg.me{background:linear-gradient(135deg,var(--accent),#5b45d6)}
.aidock .quick{margin-top:10px}
.aidock .btn.sm{padding:5px 9px;font-size:12px}
.aidock .chatbar input{background:var(--panel2);border:1px solid var(--line2);color:var(--tx);padding:9px 12px;border-radius:9px;outline:none}
.aidock .chatbar input:focus{border-color:rgba(124,92,255,.55)}
.aidock .foot{margin-top:8px;color:var(--tx3);font-size:11px}
body.dock-open .main{padding-right:440px}
@media(max-width:1100px){body.dock-open .main{padding-right:28px}.aidock{width:100vw}}

/* ---- 安全：等级开关 / 模板卡 / 摘要 ---- */
.lvls{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:8px}
.lvl{background:var(--panel2);border:1px solid var(--line2);border-radius:12px;padding:12px 14px;text-align:left;color:var(--tx);cursor:pointer;transition:.15s}
.lvl b{display:block;font-size:14px}.lvl small{display:block;color:var(--tx3);font-size:11.5px;margin-top:4px;line-height:1.45}
.lvl:hover{border-color:rgba(124,92,255,.5)}
.lvl.on{border-color:var(--accent);background:linear-gradient(90deg,rgba(124,92,255,.18),rgba(124,92,255,.05));box-shadow:var(--glow)}
.lvl.danger.on{border-color:var(--bad);background:rgba(255,92,114,.12);box-shadow:none}
.secsum{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:8px}
.tpls{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:8px}
.tpl{background:var(--panel2);border:1px solid var(--line2);border-radius:12px;padding:12px 14px;cursor:pointer;transition:.15s}
.tpl:hover{border-color:rgba(124,92,255,.5);background:rgba(124,92,255,.10)}
.tpl .t{font-weight:600;font-size:13.5px}.tpl .d{color:var(--tx3);font-size:11.5px;margin-top:4px;line-height:1.45}
.c-warn{color:var(--warn)}
@media(max-width:1180px){.lvls,.tpls{grid-template-columns:repeat(2,1fr)}.secsum{grid-template-columns:1fr}}

.tpl.on{border-color:var(--accent);background:linear-gradient(90deg,rgba(124,92,255,.18),rgba(124,92,255,.05))}

/* ---- 条件选择器 ---- */
.cond{border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin-bottom:8px;background:rgba(255,255,255,.02)}
.picker{border:1px solid var(--line2);border-radius:10px;padding:10px;background:var(--panel2)}
.pk-bar{display:flex;gap:10px;align-items:center;margin-bottom:8px}.pk-bar input{flex:1;background:var(--panel);border:1px solid var(--line2);color:var(--tx);padding:6px 10px;border-radius:8px;outline:none}
.pk-groups{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}.pk-groups .btn.sm{padding:3px 9px;font-size:11.5px}
.pk-list{max-height:260px;overflow:auto;border-top:1px solid var(--line);padding-top:6px}
.pk-region{margin-bottom:6px}.pk-rh{display:flex;gap:10px;align-items:center;font-size:12px;color:var(--tx2);padding:4px 0}
.pk-item{display:inline-flex;align-items:center;gap:6px;padding:3px 8px;margin:2px;border-radius:8px;font-size:12.5px;cursor:pointer;border:1px solid transparent}
.pk-item:hover{background:rgba(124,92,255,.10);border-color:rgba(124,92,255,.3)}
.pk-item input{accent-color:var(--accent)}
.pk-inline{display:flex;flex-wrap:wrap;gap:4px}
.pk-extra,.pk-lines{width:100%;margin-top:8px;background:var(--panel);border:1px solid var(--line2);color:var(--tx);padding:7px 10px;border-radius:8px;font:inherit;outline:none}
.lnk{color:var(--tx2);cursor:pointer;font-size:12px}.lnk:hover{color:var(--tx)}
