
/* ================= tokens（与前台原型同源） ================= */
:root{
  --bg:#ffffff;--bg-soft:#f7f8fa;--surface:#ffffff;--surface-2:#fbfbfc;
  --line:#ebedf1;--line-2:#e0e3e9;
  --ink-1:#14161a;--ink-2:#3f4652;--ink-3:#6b7280;--ink-4:#98a0ad;
  --brand:#ffd91a;--brand-bright:#ffe53b;--brand-deep:#b09800;--brand-soft:#fff8d6;--on-brand:#1c2330;
  --accent:#2563eb;--accent-soft:#eef4ff;
  --success:#16a34a;--success-soft:#eaf7ee;
  --danger:#dc2626;--danger-soft:#fdeeee;
  --violet:#7c3aed;--violet-soft:#f1ecff;
  --sh-1:0 1px 2px rgba(20,22,26,.04);
  --sh-2:0 10px 30px rgba(28,35,48,.10),inset 0 0 0 1px rgba(28,35,48,.04);
  --ph-a:linear-gradient(135deg,#e8edf5,#cfd9e8);
  --side-w:238px;
}
[data-theme="dark"]{
  --bg:#0f1216;--bg-soft:#15191f;--surface:#171c23;--surface-2:#1b212a;
  --line:#262c35;--line-2:#303845;
  --ink-1:#f2f4f7;--ink-2:#c2c8d2;--ink-3:#8b93a1;--ink-4:#626b78;
  --brand-deep:#ffe053;--brand-soft:rgba(255,217,26,.14);
  --accent:#6b9bff;--accent-soft:rgba(107,155,255,.14);
  --success:#34d07b;--success-soft:rgba(52,208,123,.13);
  --danger:#ff6b6b;--danger-soft:rgba(255,107,107,.13);
  --violet:#a78bfa;--violet-soft:rgba(167,139,250,.14);
  --sh-1:0 1px 2px rgba(0,0,0,.3);
  --sh-2:0 10px 30px rgba(0,0,0,.45),inset 0 0 0 1px rgba(255,255,255,.05);
  --ph-a:linear-gradient(135deg,#243040,#1a2330);
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  background:var(--bg-soft);color:var(--ink-2);
  font-family:"Microsoft YaHei","PingFang SC","Hiragino Sans GB","Segoe UI",system-ui,sans-serif;
  font-size:14px;line-height:1.7;letter-spacing:.01em;-webkit-font-smoothing:antialiased;
  transition:background .2s,color .2s;
}
img{max-width:100%}
a{color:inherit;text-decoration:none}
button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}
input,select,textarea{font-family:inherit}
.mono{font-family:Consolas,"SF Mono",Menlo,monospace;font-variant-numeric:tabular-nums}

/* ================= 原型外壳（屏切换条） ================= */
.appbar{position:sticky;top:0;z-index:90;background:var(--surface);border-bottom:1px solid var(--line);padding:9px 16px;display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.appbar .lg{display:flex;align-items:center;gap:8px;font-weight:700;color:var(--ink-1);font-size:13px;white-space:nowrap}
.appbar .lg i{width:22px;height:22px;border-radius:7px;background:linear-gradient(160deg,#ffe53b,#f2c800);display:grid;place-items:center;color:#1c2330;font-style:normal;font-size:12px;font-weight:700}
.snav{display:flex;gap:3px;overflow-x:auto;flex:1;min-width:0;scrollbar-width:none}
.snav::-webkit-scrollbar{display:none}
.snav button{font-size:11.5px;padding:5px 9px;border-radius:999px;color:var(--ink-3);white-space:nowrap;border:1px solid transparent}
.snav button:hover{background:var(--bg-soft);color:var(--ink-1)}
.snav button.on{background:var(--on-brand);color:var(--brand-bright);font-weight:700}
.appbar .tools{display:flex;gap:7px;align-items:center}
.tbtn{font-size:12px;padding:5px 11px;border-radius:999px;border:1px solid var(--line-2);color:var(--ink-2);white-space:nowrap;display:inline-flex;align-items:center;gap:5px}
.tbtn:hover{border-color:var(--ink-4)}
.hint{font-size:11.5px;color:var(--ink-4);white-space:nowrap}

/* ================= 舞台 / 应用框 ================= */
.stage{padding:16px 16px 42px;max-width:1640px;margin:0 auto}
.browser{background:var(--bg);border:1px solid var(--line);border-radius:14px;overflow:hidden;box-shadow:var(--sh-2)}
.bbar{display:flex;align-items:center;gap:8px;padding:8px 13px;background:var(--bg-soft);border-bottom:1px solid var(--line)}
.bbar .dots{display:flex;gap:5px}
.bbar .dots i{width:8px;height:8px;border-radius:50%;background:var(--line-2)}
.bbar .url{flex:1;max-width:520px;background:var(--surface);border:1px solid var(--line);border-radius:999px;padding:3px 12px;font-size:11.5px;color:var(--ink-3);font-family:Consolas,monospace;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.bbar .vtag{margin-left:auto;font-size:11px;color:var(--ink-4);white-space:nowrap}

/* ================= 后台应用骨架：侧栏 + 顶栏 + 滚动内容区 ================= */
.adm-shell{display:grid;grid-template-columns:var(--side-w) minmax(0,1fr);height:calc(100vh - 168px);min-height:600px;position:relative}
.adm-shell.pre-auth{grid-template-columns:minmax(0,1fr)}
.adm-shell.pre-auth .adm-side,.adm-shell.pre-auth .adm-top{display:none}
.adm-side{background:var(--surface);border-right:1px solid var(--line);display:flex;flex-direction:column;overflow-y:auto;overflow-x:hidden}
.side-brand{display:flex;align-items:center;gap:9px;padding:13px 14px;border-bottom:1px solid var(--line);flex:none}
.side-brand i{width:27px;height:27px;border-radius:8px;background:linear-gradient(160deg,#ffe53b,#f2c800);display:grid;place-items:center;color:#1c2330;font-style:normal;font-size:14px;font-weight:700;flex:none}
.side-brand b{display:block;font-size:13px;color:var(--ink-1);line-height:1.3}
.side-brand small{display:block;font-size:9.5px;letter-spacing:.14em;color:var(--ink-4);font-weight:700;line-height:1.4}
#sideNav{padding:8px 8px 14px;flex:1}
.sgrp{font-size:10px;font-weight:700;letter-spacing:.14em;color:var(--ink-4);padding:12px 8px 5px;text-transform:uppercase}
.sitem{display:flex;align-items:center;gap:9px;width:100%;padding:7px 9px;border-radius:8px;font-size:12.5px;color:var(--ink-2);text-align:left;position:relative;margin-bottom:1px}
.sitem svg{width:15px;height:15px;flex:none;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;opacity:.75}
.sitem:hover{background:var(--bg-soft);color:var(--ink-1)}
.sitem.on{background:var(--brand-soft);color:var(--ink-1);font-weight:700}
.sitem.on::before{content:"";position:absolute;left:-8px;top:6px;bottom:6px;width:3px;border-radius:0 3px 3px 0;background:var(--brand)}
.sitem.on svg{opacity:1;stroke:var(--brand-deep)}
.snum{margin-left:auto;font-size:10.5px;font-weight:700;font-family:Consolas,monospace;color:var(--ink-4);background:var(--bg-soft);border-radius:999px;padding:0 7px;line-height:17px}
.snum.hi{background:var(--danger-soft);color:#b91c1c}
[data-theme="dark"] .snum.hi{color:#ff6b6b}
.sdot{margin-left:auto;width:6px;height:6px;border-radius:50%;background:var(--success)}
.sdot.warn{background:#f59e0b}
.side-foot{flex:none;border-top:1px solid var(--line);padding:10px 12px;font-size:11.5px;color:var(--ink-4)}
.side-foot .who2{display:flex;align-items:center;gap:8px}
.side-foot .who2 b{font-size:12px;color:var(--ink-1);display:block;line-height:1.3}
.side-foot .who2 small{font-size:10.5px;color:var(--ink-4)}
.side-foot a{display:block;margin-top:8px;font-size:11.5px;color:var(--accent)}

.adm-main{display:flex;flex-direction:column;min-width:0;min-height:0;background:var(--bg)}
.adm-top{flex:none;display:flex;align-items:center;gap:12px;padding:9px 18px;border-bottom:1px solid var(--line);background:var(--surface);min-height:50px}
.crumb{display:flex;align-items:center;gap:7px;font-size:12px;color:var(--ink-3);min-width:0}
.crumb i{font-style:normal;color:var(--ink-4)}
.crumb b{color:var(--ink-1);font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tsearch{margin-left:auto;display:flex;align-items:center;gap:7px;background:var(--bg-soft);border:1px solid var(--line);border-radius:8px;padding:4px 10px;width:250px;flex:none}
.tsearch:focus-within{border-color:var(--brand-deep);background:var(--surface)}
.tsearch svg{width:13px;height:13px;flex:none;fill:none;stroke:var(--ink-4);stroke-width:1.9;stroke-linecap:round}
.tsearch input{border:none;background:none;outline:none;font-size:12px;color:var(--ink-1);width:100%}
.tsearch kbd{font-family:Consolas,monospace;font-size:10px;color:var(--ink-4);border:1px solid var(--line-2);border-radius:4px;padding:0 4px;line-height:15px}
.tactions{display:flex;align-items:center;gap:8px;flex:none}
.iconbtn{width:30px;height:30px;border-radius:8px;border:1px solid var(--line);display:grid;place-items:center;color:var(--ink-2);background:var(--surface);position:relative}
.iconbtn:hover{border-color:var(--ink-4)}
.iconbtn svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.nbadge{position:absolute;top:-5px;right:-5px;min-width:15px;height:15px;border-radius:999px;background:var(--danger);color:#fff;font-size:9.5px;font-weight:700;font-style:normal;display:grid;place-items:center;padding:0 3px;line-height:1}
.who{display:flex;align-items:center;gap:7px;padding-left:8px;border-left:1px solid var(--line);margin-left:2px}
.who b{display:block;font-size:12px;color:var(--ink-1);line-height:1.25}
.who small{display:block;font-size:10px;color:var(--ink-4);line-height:1.3}
.avatar{width:28px;height:28px;border-radius:50%;background:linear-gradient(150deg,#ffd91a,#e0a800);display:grid;place-items:center;color:#1c2330;font-weight:700;font-size:11.5px;box-shadow:inset 0 0 0 1px rgba(28,35,48,.1);flex:none}

.adm-body{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;padding:16px 18px 28px;scroll-behavior:smooth}
.screen{display:none}
.screen.on{display:block;animation:fade .2s ease}
@keyframes fade{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}
/* 登录屏：隐藏侧栏与顶栏，内容铺满 */
.adm-body.bare{padding:0;overflow:hidden;display:flex;flex-direction:column}
.adm-body.bare > .screen.on{display:flex;flex:1;min-height:0}
.adm-body.bare .login{flex:1;min-height:0;width:100%;overflow-y:auto}

/* ================= 页头 ================= */
.adm-hd{display:flex;align-items:flex-start;gap:14px;flex-wrap:wrap;margin-bottom:14px}
.adm-hd .tt{min-width:0}
.adm-hd h1{margin:0;font-size:19px;color:var(--ink-1);font-weight:700;letter-spacing:-.01em;display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.adm-hd p{margin:4px 0 0;font-size:12.5px;color:var(--ink-3);max-width:76ch}
.adm-hd .acts{margin-left:auto;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.backlink{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;color:var(--ink-3);margin-bottom:6px}
.backlink:hover{color:var(--ink-1)}

/* ================= 按钮 ================= */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;font-size:12.5px;font-weight:700;padding:6px 14px;border-radius:8px;background:var(--brand);color:#1c2330;line-height:1.6;white-space:nowrap}
.btn:hover{filter:brightness(1.04)}
.btn svg{width:13px;height:13px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.btn.ghost{background:transparent;color:var(--ink-1);box-shadow:inset 0 0 0 1px var(--line-2)}
.btn.ghost:hover{box-shadow:inset 0 0 0 1px var(--ink-4);filter:none}
.btn.dark{background:var(--on-brand);color:var(--brand-bright)}
.btn.danger{background:var(--danger);color:#fff}
.btn.sm{font-size:11.5px;padding:3px 10px;border-radius:7px}
.btn.sm svg{width:12px;height:12px}
.btn[disabled]{opacity:.45;pointer-events:none}
.lnk{font-size:11.5px;color:var(--accent);font-weight:700;white-space:nowrap}
.lnk:hover{text-decoration:underline}
.lnk.mut{color:var(--ink-3);font-weight:400}
.lnk.red{color:var(--danger)}

/* ================= 面板 / 卡片 ================= */
.panel{background:var(--surface);border:1px solid var(--line);border-radius:11px;overflow:hidden}
.phd{display:flex;align-items:center;gap:9px;padding:11px 14px;border-bottom:1px solid var(--line);background:var(--surface-2);flex-wrap:wrap}
.phd h4{margin:0;font-size:13px;color:var(--ink-1);font-weight:700}
.phd .sub{font-size:11.5px;color:var(--ink-4)}
.phd .r{margin-left:auto;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.pbd{padding:13px 14px}
.pbd.p0{padding:0}
.card2{background:var(--surface);border:1px solid var(--line);border-radius:11px;padding:13px 14px}
.card2 h5{margin:0 0 3px;font-size:12.5px;color:var(--ink-1);font-weight:700}
.card2 .muted{font-size:11.5px}

/* ================= KPI ================= */
.kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:11px}
.kpi{background:var(--surface);border:1px solid var(--line);border-radius:11px;padding:12px 14px;position:relative;overflow:hidden}
.kpi .k{font-size:11.5px;color:var(--ink-3);display:flex;align-items:center;gap:5px}
.kpi .v{font-size:24px;font-weight:700;color:var(--ink-1);font-family:Consolas,"SF Mono",Menlo,monospace;letter-spacing:-.02em;line-height:1.3;margin-top:1px}
.kpi .v small{font-size:12px;font-weight:700;color:var(--ink-4);margin-left:2px;letter-spacing:0}
.kpi .d{font-size:11px;display:flex;align-items:center;gap:4px;margin-top:1px;color:var(--ink-4)}
.kpi .d b{font-weight:700}
.kpi .up{color:var(--success)}
.kpi .down{color:var(--danger)}
.kpi .spark{position:absolute;right:9px;bottom:10px;opacity:.55}
.kpi.attn{border-color:#f5c26b;background:linear-gradient(180deg,var(--brand-soft),var(--surface) 62%)}
[data-theme="dark"] .kpi.attn{border-color:#6b5a1c}

/* ================= 选择器 / 筛选 ================= */
.segbar{display:inline-flex;gap:2px;padding:2px;background:var(--bg-soft);border:1px solid var(--line);border-radius:8px;flex-wrap:wrap}
.segbar button{font-size:11.5px;padding:4px 9px;border-radius:6px;color:var(--ink-3);white-space:nowrap;line-height:1.6}
.segbar button:hover{color:var(--ink-1)}
.segbar button.on{background:var(--surface);color:var(--ink-1);font-weight:700;box-shadow:var(--sh-1)}
.segbar button i{font-style:normal;font-family:Consolas,monospace;color:var(--ink-4);margin-left:3px;font-size:10.5px}
.segbar button.on i{color:var(--brand-deep)}
.toolbar{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-bottom:11px}
.toolbar .grow{flex:1;min-width:8px}
.fsel{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;color:var(--ink-2);border:1px solid var(--line-2);border-radius:8px;padding:4px 9px;background:var(--surface);white-space:nowrap}
.fsel:hover{border-color:var(--ink-4)}
.fsel svg{width:11px;height:11px;fill:none;stroke:var(--ink-4);stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.fsel b{color:var(--ink-1);font-weight:700}

/* ================= 表格 ================= */
.tw{overflow-x:auto}
.tbl{width:100%;border-collapse:collapse;font-size:12.5px}
.tbl thead th{text-align:left;font-weight:700;color:var(--ink-4);font-size:10.5px;letter-spacing:.05em;padding:8px 10px;border-bottom:1px solid var(--line);white-space:nowrap;background:var(--surface-2);text-transform:uppercase}
.tbl tbody td{padding:9px 10px;border-bottom:1px solid var(--line);color:var(--ink-2);vertical-align:middle;white-space:nowrap}
.tbl tbody td.wrap,#logTable tbody td{white-space:normal}
.tbl tbody td .prow{white-space:normal}
.tbl tbody tr:last-child td{border-bottom:none}
.tbl tbody tr:hover{background:var(--bg-soft)}
.tbl tbody tr.sel{background:var(--brand-soft)}
.tbl tbody tr.dim td{opacity:.62}
.tbl .c{text-align:center}
.tbl .num{font-family:Consolas,monospace;font-variant-numeric:tabular-nums;white-space:nowrap}
.tbl .w34{width:34px}
.tbl .w90{width:90px}
.tbl .nowrap{white-space:nowrap}
.tbl .prow{display:flex;align-items:center;gap:9px;min-width:0}
.tbl .prow .nm{min-width:0}
.tbl .prow .nm b{display:block;color:var(--ink-1);font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:320px}
.tbl .prow .nm small{display:block;font-size:10.5px;color:var(--ink-4);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:320px}
.thmb{width:40px;height:27px;border-radius:5px;flex:none;background:var(--ph-a);display:grid;place-items:center;font-size:8px;color:var(--ink-3);font-weight:700;overflow:hidden;text-align:center;line-height:1.1}
.thmb.night{background:linear-gradient(160deg,#2a3444,#141a24);color:rgba(255,255,255,.55)}
.avs{width:24px;height:24px;border-radius:50%;background:linear-gradient(150deg,#ffd91a,#e0a800);display:grid;place-items:center;color:#1c2330;font-weight:700;font-size:10px;flex:none;box-shadow:inset 0 0 0 1px rgba(28,35,48,.1)}
.avs.g{background:linear-gradient(150deg,#cfe8d5,#8fc9a4)}
.avs.b{background:linear-gradient(150deg,#cfe3f5,#9fc4e8)}
.avs.v{background:linear-gradient(150deg,#e2d6fb,#b79df0)}
.ops{display:flex;gap:9px;align-items:center;white-space:nowrap}
.ck{width:14px;height:14px;accent-color:#b09800;cursor:pointer;vertical-align:-2px;margin:0}
.tfoot{display:flex;align-items:center;gap:9px;padding:9px 14px;border-top:1px solid var(--line);background:var(--surface-2);font-size:11.5px;color:var(--ink-3);flex-wrap:wrap}
.pg{margin-left:auto;display:flex;gap:3px;align-items:center}
.pg button{min-width:24px;height:24px;border-radius:6px;border:1px solid var(--line-2);font-size:11.5px;color:var(--ink-2);font-family:Consolas,monospace;background:var(--surface)}
.pg button.on{background:var(--on-brand);color:var(--brand-bright);border-color:var(--on-brand);font-weight:700}
.pg button:hover:not(.on){border-color:var(--ink-4)}

/* 批量操作条 */
.bulk{display:none;align-items:center;gap:10px;padding:8px 13px;background:var(--brand-soft);border:1px solid var(--brand);border-radius:9px;margin-bottom:10px;font-size:12px;color:var(--ink-1);flex-wrap:wrap}
.bulk.on{display:flex}
.bulk b{font-family:Consolas,monospace}
.bulk .r{margin-left:auto;display:flex;gap:7px;align-items:center}

/* ================= 状态徽标 ================= */
.st{display:inline-flex;align-items:center;gap:4px;font-size:10.5px;font-weight:700;padding:1px 7px;border-radius:999px;line-height:1.75;white-space:nowrap}
.st::before{content:"";width:4px;height:4px;border-radius:50%;background:currentColor;flex:none}
.st.ok{background:var(--success-soft);color:#0d7a3a}
[data-theme="dark"] .st.ok{color:#34d07b}
.st.wait{background:#fef3c7;color:#92400e}
[data-theme="dark"] .st.wait{background:rgba(245,158,11,.15);color:#fbbf24}
.st.bad{background:var(--danger-soft);color:#b91c1c}
[data-theme="dark"] .st.bad{color:#ff6b6b}
.st.idle{background:var(--bg-soft);color:var(--ink-3);box-shadow:inset 0 0 0 1px var(--line-2)}
.st.info{background:var(--accent-soft);color:#1d4ed8}
[data-theme="dark"] .st.info{color:#6b9bff}
.st.pin{background:#1c2330;color:#ffe53b}
.st.vio{background:var(--violet-soft);color:#6d28d9}
[data-theme="dark"] .st.vio{color:#a78bfa}
.tg{display:inline-flex;align-items:center;gap:3px;font-size:10px;font-weight:700;padding:1px 6px;border-radius:4px;line-height:1.7;white-space:nowrap;background:var(--bg-soft);color:var(--ink-3);box-shadow:inset 0 0 0 1px var(--line-2)}
.tg.b{background:var(--accent-soft);color:#1d4ed8;box-shadow:none}
[data-theme="dark"] .tg.b{color:#6b9bff}
.tg.y{background:var(--brand-soft);color:#7a6700;box-shadow:none}
[data-theme="dark"] .tg.y{color:#ffd91a}
.tg.g{background:var(--success-soft);color:#0d7a3a;box-shadow:none}
[data-theme="dark"] .tg.g{color:#34d07b}

/* ================= 进度 / 条形 ================= */
.pbar{height:5px;border-radius:999px;background:var(--bg-soft);overflow:hidden;min-width:52px;box-shadow:inset 0 0 0 1px var(--line)}
.pbar i{display:block;height:100%;background:var(--brand);border-radius:999px}
.pbar i.g{background:var(--success)}
.pbar i.r{background:var(--danger)}
.pbar i.b{background:var(--accent)}
.hbar{display:flex;align-items:center;gap:9px;font-size:11.5px;margin-bottom:7px}
.hbar .lb{width:64px;flex:none;color:var(--ink-2);white-space:nowrap}
.hbar .tr2{flex:1;height:7px;border-radius:999px;background:var(--bg-soft);overflow:hidden;box-shadow:inset 0 0 0 1px var(--line)}
.hbar .tr2 i{display:block;height:100%;background:var(--brand);border-radius:999px}
.hbar .vv{width:38px;text-align:right;font-family:Consolas,monospace;color:var(--ink-2);flex:none}

/* ================= 开关 ================= */
.sw{width:32px;height:18px;border-radius:999px;background:var(--line-2);position:relative;flex:none;transition:background .16s;padding:0}
.sw::after{content:"";position:absolute;left:2px;top:2px;width:14px;height:14px;border-radius:50%;background:#fff;transition:left .16s;box-shadow:0 1px 2px rgba(0,0,0,.22)}
.sw.on{background:#16a34a}
.sw.on::after{left:16px}
.swrow{display:flex;align-items:center;gap:10px;padding:7px 0;border-bottom:1px dashed var(--line)}
.swrow:last-child{border-bottom:none}
.swrow .tx{flex:1;min-width:0}
.swrow .tx b{display:block;font-size:12px;color:var(--ink-1);font-weight:700}
.swrow .tx small{display:block;font-size:10.5px;color:var(--ink-4);line-height:1.5}

/* ================= 表单 ================= */
.fld{display:block;margin-bottom:12px}
.fld:last-child{margin-bottom:0}
.fld > .lb{display:flex;align-items:center;gap:6px;font-size:11.5px;font-weight:700;color:var(--ink-3);margin-bottom:4px}
.fld > .lb em{font-style:normal;color:var(--danger)}
.fld .help{font-size:10.5px;color:var(--ink-4);margin-top:4px;line-height:1.55}
.inp{width:100%;background:var(--surface);border:1px solid var(--line-2);border-radius:8px;padding:6px 10px;font-size:12.5px;color:var(--ink-1);outline:none;line-height:1.6}
.inp:focus{border-color:var(--brand-deep);box-shadow:0 0 0 3px var(--brand-soft)}
.inp::placeholder{color:var(--ink-4)}
textarea.inp{min-height:74px;resize:vertical;line-height:1.75}
select.inp{appearance:none;background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2398a0ad' stroke-width='2.4' stroke-linecap='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 8px center;background-size:12px;padding-right:26px}
.f2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 12px}
.f3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0 12px}
.chk{display:flex;align-items:center;gap:7px;font-size:12px;color:var(--ink-2);padding:3px 0;cursor:pointer}
.inline-tags{display:flex;gap:5px;flex-wrap:wrap}

/* ================= 精选星标 ================= */
.star{width:24px;height:24px;border-radius:6px;display:grid;place-items:center;color:var(--ink-4);border:1px solid transparent}
.star svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linejoin:round}
.star:hover{background:var(--bg-soft);color:var(--ink-2)}
.star.on{color:var(--brand-deep);background:var(--brand-soft);border-color:var(--brand)}
.star.on svg{fill:currentColor}
.slot{display:flex;align-items:center;gap:8px;padding:7px 9px;border:1px dashed var(--line-2);border-radius:8px;font-size:11.5px;color:var(--ink-4);margin-bottom:6px}
.slot.filled{border-style:solid;background:var(--surface-2);color:var(--ink-2)}
.slot b{color:var(--ink-1);font-weight:700;display:block;font-size:11.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:150px}
.slot .rk{width:16px;height:16px;border-radius:4px;background:var(--brand);color:#1c2330;font-size:9.5px;font-weight:700;display:grid;place-items:center;flex:none}

/* ================= 权限矩阵 ================= */
.mx{width:100%;border-collapse:collapse;font-size:12px}
.mx th{font-size:10.5px;color:var(--ink-4);font-weight:700;padding:7px 8px;border-bottom:1px solid var(--line);text-align:center;white-space:nowrap;background:var(--surface-2);letter-spacing:.04em}
.mx th:first-child{text-align:left}
.mx td{padding:6px 8px;border-bottom:1px solid var(--line);color:var(--ink-2)}
.mx td:first-child{color:var(--ink-1);font-weight:700;white-space:nowrap}
.mx td.c{text-align:center}
.mx .cbx{width:15px;height:15px;border-radius:4px;border:1px solid var(--line-2);display:inline-grid;place-items:center;font-size:10px;color:transparent;line-height:1;background:var(--surface)}
.mx .cbx.on{background:var(--success);border-color:var(--success);color:#fff}
.mx .cbx.na{background:repeating-linear-gradient(45deg,var(--line-2) 0 2px,transparent 2px 5px);border:1px dashed var(--ink-4);color:transparent;cursor:not-allowed;opacity:.85}
.mx tr:hover td{background:var(--bg-soft)}

/* ================= Tab 组 ================= */
.tabset{display:flex;gap:2px;overflow-x:auto;scrollbar-width:none;flex:1;min-width:0}
.tabset::-webkit-scrollbar{display:none}
.tabset button{font-size:12.5px;padding:9px 12px;color:var(--ink-3);white-space:nowrap;border-bottom:2px solid transparent;font-weight:700;margin-bottom:-1px}
.tabset button:hover{color:var(--ink-1)}
.tabset button.on{color:var(--ink-1);border-bottom-color:var(--brand)}
.tabset button i{font-style:normal;font-size:10px;color:var(--ink-4);margin-left:4px;font-family:Consolas,monospace}
.tabpane{display:none}
.tabpane.on{display:block;animation:fade .18s ease}
.tablist{display:flex;flex-direction:column;gap:2px}
.tablist button{display:flex;align-items:center;gap:7px;width:100%;text-align:left;font-size:12px;padding:6px 9px;border-radius:7px;color:var(--ink-2)}
.tablist button:hover{background:var(--bg-soft)}
.tablist button.on{background:var(--brand-soft);color:var(--ink-1);font-weight:700}

/* ================= 提示条 / 空态 ================= */
.note{display:flex;gap:9px;padding:9px 12px;border-radius:9px;font-size:11.5px;line-height:1.65;border:1px solid var(--line-2);background:var(--surface-2);color:var(--ink-2)}
.note svg{width:14px;height:14px;flex:none;margin-top:1px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.note.warn{background:#fffbeb;border-color:#fde68a;color:#92400e}
[data-theme="dark"] .note.warn{background:rgba(245,158,11,.1);border-color:#5b4718;color:#fbbf24}
.note.bad{background:var(--danger-soft);border-color:#f5c2c2;color:#b91c1c}
[data-theme="dark"] .note.bad{background:rgba(255,107,107,.1);border-color:#5b2626;color:#ff6b6b}
.note.info{background:var(--accent-soft);border-color:#c7dbff;color:#1d4ed8}
[data-theme="dark"] .note.info{background:rgba(107,155,255,.1);border-color:#26406b;color:#6b9bff}
.note b{font-weight:700}

/* ================= 时间线 ================= */
.tline{position:relative;padding-left:16px}
.tline::before{content:"";position:absolute;left:4px;top:5px;bottom:5px;width:1px;background:var(--line-2)}
.tline .ev{position:relative;padding-bottom:11px;font-size:11.5px;color:var(--ink-3)}
.tline .ev:last-child{padding-bottom:0}
.tline .ev::before{content:"";position:absolute;left:-15px;top:6px;width:7px;height:7px;border-radius:50%;background:var(--surface);box-shadow:inset 0 0 0 2px var(--success)}
.tline .ev.b::before{box-shadow:inset 0 0 0 2px var(--danger)}
.tline .ev.w::before{box-shadow:inset 0 0 0 2px #f59e0b}
.tline .ev b{color:var(--ink-1);font-weight:700}

/* ================= 工具类 ================= */
.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.col{display:flex;flex-direction:column;gap:10px}
.g2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px}
.g3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:11px}
.g4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:11px}
.gL{display:grid;grid-template-columns:minmax(0,1fr) 302px;gap:12px;align-items:start}
.gR{display:grid;grid-template-columns:252px minmax(0,1fr);gap:12px;align-items:start}
.muted{color:var(--ink-3)}
.dim{color:var(--ink-4)}
.sm2{font-size:11.5px}
.xs{font-size:10.5px}
.b{font-weight:700;color:var(--ink-1)}
.hr{height:1px;background:var(--line);margin:11px 0}
.mt8{margin-top:8px}.mt12{margin-top:12px}.mt16{margin-top:16px}
.right{margin-left:auto}
.nowrap{white-space:nowrap}
.tnum{font-family:Consolas,monospace;font-variant-numeric:tabular-nums}

/* ================= 翻译（AI 直译 → 落库） ================= */
.trbar{height:5px;border-radius:3px;background:var(--bg-soft);border:1px solid var(--line);overflow:hidden;margin-top:9px}
.trbar i{display:block;height:100%;width:0;background:var(--brand);transition:width .12s linear}
.trb{background:var(--bg-soft);border:1px solid var(--line);border-radius:8px;padding:8px 10px;margin-bottom:6px}
.trb .k{font-size:9.5px;letter-spacing:.08em;font-weight:700;color:var(--ink-4);text-transform:uppercase}
.trb .v{font-size:11.5px;color:var(--ink-1);line-height:1.55;margin-top:2px}
.trb .v em{font-style:normal;background:var(--brand-soft);border-radius:3px;padding:0 2px}
.trmeta{display:flex;flex-wrap:wrap;gap:4px 10px;font-size:10.5px;color:var(--ink-4);margin-top:7px}
.trmeta b{color:var(--ink-2);font-family:Consolas,monospace}
.dbid{font-family:Consolas,monospace;font-size:10.5px;color:var(--ink-4)}
.termrow{display:flex;align-items:center;gap:7px;padding:5px 0;border-bottom:1px dashed var(--line);font-size:11.5px}
.termrow:last-child{border-bottom:none}
.termrow .src{color:var(--ink-1);font-weight:700;min-width:0;flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.termrow .arw{color:var(--ink-4);flex:none}
.termrow .dst{color:var(--ink-2);min-width:0;flex:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-family:Consolas,monospace;font-size:10.5px}

/* ================= 播客单集文本（ASR 转写 · 翻译 · 时间轴） ================= */
.epwrap{display:grid;grid-template-columns:220px minmax(0,1fr);gap:12px;margin-top:11px}
.epsel{display:flex;flex-direction:column;gap:5px;min-width:0}
.epsel>button{display:grid;gap:2px;text-align:left;padding:8px 9px;border-radius:9px;border:1px solid var(--line);
  background:var(--surface);cursor:pointer;font-family:inherit;transition:.15s;min-width:0}
.epsel>button:hover{border-color:var(--line-2);background:var(--surface-2)}
.epsel>button.on{border-color:var(--brand-deep);background:var(--brand-soft);box-shadow:inset 0 0 0 1px var(--brand-deep)}
.epsel b{font-size:11.5px;color:var(--ink-1);font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.epsel small{font-size:10px;color:var(--ink-4);display:flex;gap:5px;align-items:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.epsel .dm{width:5px;height:5px;border-radius:50%;background:var(--success);flex:none}
.epsel .dm.w{background:#e0a300}
.epsel .dm.b{background:var(--danger)}
.eppane{border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--surface);min-width:0}
.eptop{display:flex;align-items:center;gap:8px;padding:8px 11px;border-bottom:1px solid var(--line);background:var(--bg-soft);flex-wrap:wrap}
.eptop .nm{font-size:12px;font-weight:700;color:var(--ink-1);min-width:0;flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.eplang{display:flex;gap:2px;padding:2px;border-radius:8px;background:var(--surface);border:1px solid var(--line);flex:none}
.eplang button{height:22px;padding:0 9px;border:0;border-radius:6px;background:transparent;color:var(--ink-3);
  font-size:10.5px;font-weight:700;cursor:pointer;font-family:inherit;white-space:nowrap}
.eplang button:hover{color:var(--ink-1)}
.eplang button.on{background:var(--on-brand);color:var(--brand-bright)}
.epmeta{display:flex;flex-wrap:wrap;gap:3px 11px;font-size:10.5px;color:var(--ink-4);padding:7px 11px;border-bottom:1px solid var(--line)}
.epmeta b{color:var(--ink-2);font-family:Consolas,monospace;font-weight:700}
.eptb{max-height:292px;overflow:auto}
.eptb table{width:100%;border-collapse:collapse;font-size:11.5px}
.eptb th{position:sticky;top:0;z-index:2;background:var(--surface-2);border-bottom:1px solid var(--line);padding:6px 9px;
  text-align:left;font-size:9.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-4);font-weight:700;white-space:nowrap}
.eptb td{padding:6px 9px;border-bottom:1px solid var(--line);color:var(--ink-2);vertical-align:top;line-height:1.5}
.eptb tbody tr{cursor:pointer}
.eptb tbody tr:hover td{background:var(--bg-soft)}
.eptb tbody tr.on td{background:var(--brand-soft)}
.eptb .ts{font-family:Consolas,monospace;font-size:10.5px;color:var(--ink-4);white-space:nowrap;width:58px}
.eptb .zh{color:var(--ink-3)}
.eptb .wc{font-family:Consolas,monospace;font-size:10px;color:var(--ink-4);text-align:right;width:44px}
.epfoot{display:flex;align-items:center;gap:6px;padding:7px 11px;border-top:1px solid var(--line);background:var(--bg-soft);flex-wrap:wrap}
.epfoot .hintline{margin-left:auto;font-size:10px;color:var(--ink-4)}
.epempty{padding:20px 14px;text-align:center}
.epempty .ic{width:34px;height:34px;margin:0 auto 7px;border-radius:50%;display:grid;place-items:center;background:var(--bg-soft);border:1px solid var(--line)}
.epempty .ic svg{width:16px;height:16px;fill:none;stroke:var(--ink-4);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.epempty>b{display:block;font-size:12px;color:var(--ink-1)}
.epempty>span{display:block;font-size:10.5px;color:var(--ink-4);margin-top:3px;line-height:1.5}
@media(max-width:980px){.epwrap{grid-template-columns:minmax(0,1fr)}}

/* ================= 登录 ================= */
.login{display:grid;grid-template-columns:minmax(0,1fr) 396px;min-height:100%}
.lg-left{background:#1c2330;color:#fff;padding:32px 34px;display:flex;flex-direction:column;justify-content:center;position:relative;overflow:hidden}
.lg-left::before{content:"";position:absolute;left:-140px;top:-110px;width:420px;height:420px;border-radius:50%;border:1px solid rgba(255,255,255,.06);box-shadow:0 0 0 44px rgba(255,255,255,.022),0 0 0 88px rgba(255,255,255,.014);pointer-events:none}
.lg-left::after{content:"";position:absolute;right:-90px;bottom:-110px;width:340px;height:340px;border-radius:50%;background:radial-gradient(circle,rgba(255,217,26,.18),transparent 68%)}
.lg-left .mk{display:flex;align-items:center;gap:9px;font-weight:700;font-size:15px;position:absolute;left:34px;top:32px}
.lg-left .mk i{width:30px;height:30px;border-radius:9px;background:linear-gradient(160deg,#ffe53b,#f2c800);display:grid;place-items:center;color:#1c2330;font-style:normal;font-size:15px;font-weight:700}
.lg-left .mk small{display:block;font-size:9.5px;letter-spacing:.18em;color:rgba(255,255,255,.5);font-weight:700;line-height:1.2}
.lg-left h2{font-size:25px;line-height:1.4;margin:0 0 11px;letter-spacing:-.01em;position:relative;max-width:20em}
.lg-left h2 b{color:#ffe53b}
.lg-left p{font-size:12.5px;color:rgba(255,255,255,.66);max-width:34em;position:relative;margin:0}
.lg-auth{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;margin-top:18px;position:relative}
.lg-auth .a{background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.1);border-radius:8px;padding:8px 10px;font-size:11px;color:rgba(255,255,255,.82)}
.lg-auth .a b{display:block;color:#ffe53b;font-size:10px;letter-spacing:.1em;margin-bottom:2px}
.lg-right{padding:30px 32px;display:flex;flex-direction:column;justify-content:center;background:var(--bg)}
.lg-right h3{margin:0 0 3px;font-size:18px;color:var(--ink-1)}
.lg-right .sub{font-size:12px;color:var(--ink-3);margin-bottom:20px}
/* 扫码登录：二维码框恒为白底（扫码需要对比度），内部文字色固定，不随主题翻转 */
.lgq{display:flex;flex-direction:column;align-items:center;gap:9px;margin:2px 0 2px}
.lgq-box{position:relative;width:198px;height:198px;border-radius:13px;background:#fff;border:1px solid rgba(20,22,26,.12);padding:9px;box-shadow:0 8px 22px rgba(20,22,26,.09);cursor:pointer;transition:box-shadow .18s,transform .18s}
.lgq-box:hover{box-shadow:0 10px 26px rgba(20,22,26,.14)}
.lgq-box:active{transform:scale(.988)}
.lgq-box svg{width:100%;height:100%;display:block}
.lgq-logo{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:38px;height:38px;border-radius:10px;background:#fff;display:grid;place-items:center;box-shadow:0 0 0 1.5px #fff}
.lgq-logo i{width:30px;height:30px;border-radius:8px;background:linear-gradient(160deg,#ffe53b,#f2c800);display:grid;place-items:center;font-style:normal;font-weight:700;color:#1c2330;font-size:15px}
.lgq-ov{position:absolute;inset:0;border-radius:13px;background:#fff;display:none;flex-direction:column;align-items:center;justify-content:center;gap:2px;text-align:center;padding:0 12px;pointer-events:none}
.lgq-ov .ic{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;margin-bottom:6px}
.lgq-ov .ic svg{width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:2.1;stroke-linecap:round;stroke-linejoin:round}
.lgq-ov b{font-size:13.5px;color:#1c2330;line-height:1.3}
.lgq-ov span{font-size:10.5px;color:#5b6474;line-height:1.4}
[data-state="scanned"] .lgq-box > svg,[data-state="ok"] .lgq-box > svg,[data-state="expired"] .lgq-box > svg{opacity:0}
[data-state="scanned"] .lgq-logo,[data-state="ok"] .lgq-logo,[data-state="expired"] .lgq-logo{opacity:0}
[data-state="scanned"] .lgq-ov,[data-state="ok"] .lgq-ov,[data-state="expired"] .lgq-ov{display:flex}
[data-state="scanned"] .lgq-ov .ic{background:#fef3c7;color:#b45309}
[data-state="ok"] .lgq-ov .ic{background:#dcfce7;color:#15803d}
[data-state="expired"] .lgq-ov .ic{background:#f1f2f4;color:#6b7280}
[data-state="ok"] .lgq-box{border-color:rgba(21,128,61,.35)}
[data-state="scanned"] .lgq-st .pt,[data-state="ok"] .lgq-st .pt{background:#f59e0b}
[data-state="ok"] .lgq-st .pt{background:#16a34a}
[data-state="expired"] .lgq-st .pt{background:#9ca3af}
.lgq-st{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--ink-3)}
.lgq-st .pt{width:6px;height:6px;border-radius:50%;background:#ffd91a;box-shadow:0 0 0 3px rgba(255,217,26,.24);animation:lgpulse 1.6s ease-in-out infinite;flex:none}
.lgq-st b{font-family:Consolas,monospace;color:var(--ink-2)}
@keyframes lgpulse{0%,100%{opacity:1}50%{opacity:.35}}
.lgq-acts{display:flex;align-items:center;gap:10px}
.lgq-steps{margin:15px 0 0;font-size:11px;color:var(--ink-3);line-height:1.7}
.lgq-steps .stp{display:flex;gap:6px;margin-bottom:3px}
.lgq-steps .stp i{flex:none;width:14px;height:14px;margin-top:3px;border-radius:50%;background:var(--bg-soft);border:1px solid var(--line);color:var(--ink-4);font-style:normal;font-size:8.5px;font-weight:700;display:grid;place-items:center}
.lgq-steps b{color:var(--ink-1)}
.lg-err{margin-top:11px}

/* ================= 移动端设备框（响应式预览页） ================= */
.devices{display:flex;gap:18px;align-items:flex-start;flex-wrap:wrap}
.phone{width:334px;flex:none;background:var(--surface);border:1px solid var(--line-2);border-radius:26px;padding:8px;box-shadow:var(--sh-2)}
.phone .scr{background:var(--bg);border-radius:20px;overflow:hidden;height:596px;display:flex;flex-direction:column;position:relative}
.phone .pbar2{flex:none;display:flex;align-items:center;gap:8px;padding:9px 11px;border-bottom:1px solid var(--line);background:var(--surface)}
.phone .pbar2 b{font-size:12px;color:var(--ink-1);white-space:nowrap}
.phone .pbar2 svg{width:15px;height:15px;flex:none}
.phone .pbody2{flex:1;overflow-y:auto;padding:11px}
.phone .ptab{flex:none;display:flex;border-top:1px solid var(--line);background:var(--surface)}
.phone .ptab button{flex:1;padding:7px 0 8px;font-size:9.5px;color:var(--ink-4);display:flex;flex-direction:column;align-items:center;gap:2px}
.phone .ptab button.on{color:var(--ink-1);font-weight:700}
.phone .ptab svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.phone .pk2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}
.phone .pk{background:var(--surface);border:1px solid var(--line);border-radius:9px;padding:8px 9px}
.phone .pk .k{font-size:9.5px;color:var(--ink-3)}
.phone .pk .v{font-size:16px;font-weight:700;color:var(--ink-1);font-family:Consolas,monospace;line-height:1.3}
.phone .pk .d{font-size:9px;color:var(--success)}
.phone .plist{background:var(--surface);border:1px solid var(--line);border-radius:9px;overflow:hidden;margin-top:8px}
.phone .plist .it{display:flex;align-items:center;gap:7px;padding:7px 9px;border-bottom:1px solid var(--line);font-size:10.5px;color:var(--ink-2)}
.phone .plist .it:last-child{border-bottom:none}
.phone .plist .it b{color:var(--ink-1);font-size:10.5px;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:180px}
.phone .plist .it small{font-size:9px;color:var(--ink-4)}
.phone .drawer{position:absolute;inset:0;background:rgba(20,22,26,.42);display:flex}
.phone .drawer .dpan{width:210px;background:var(--surface);padding:10px 8px;overflow-y:auto}
.phone .drawer .ditem{padding:6px 8px;border-radius:7px;font-size:11px;color:var(--ink-2);margin-bottom:1px}
.phone .drawer .ditem.on{background:var(--brand-soft);color:var(--ink-1);font-weight:700}
.phone .drawer .dgrp{font-size:9px;color:var(--ink-4);font-weight:700;letter-spacing:.1em;padding:8px 8px 3px}

/* ================= toast ================= */
.toast{position:fixed;left:50%;bottom:26px;transform:translate(-50%,14px);background:var(--on-brand);color:#fff;font-size:12.5px;padding:9px 18px;border-radius:999px;box-shadow:var(--sh-2);opacity:0;pointer-events:none;transition:.22s;z-index:300;max-width:86vw;text-align:center}
.toast.on{opacity:1;transform:translate(-50%,0)}
.toast b{color:var(--brand-bright)}

/* ================= 响应式 ================= */
@media(max-width:1240px){
  .kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
  .g4{grid-template-columns:repeat(2,minmax(0,1fr))}
  .gL{grid-template-columns:minmax(0,1fr)}
  .gR{grid-template-columns:minmax(0,1fr)}
}
@media(max-width:1080px){
  .adm-shell{grid-template-columns:minmax(0,1fr);height:calc(100vh - 150px)}
  .adm-side{display:none}
  #navToggle{display:grid !important}
  .adm-shell.nav-open .adm-side{display:flex;position:absolute;z-index:40;left:0;top:0;bottom:0;width:var(--side-w);border-right:1px solid var(--line);box-shadow:var(--sh-2)}
  .g3{grid-template-columns:repeat(2,minmax(0,1fr))}
  .login{grid-template-columns:minmax(0,1fr)}
  .lg-left{display:none}
  .tsearch{width:170px}
}
@media(max-width:720px){
  .kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
  .g2,.g3,.f2,.f3{grid-template-columns:minmax(0,1fr)}
  .adm-body{padding:12px 12px 22px}
  .tsearch,.who{display:none}
  .stage{padding:10px 10px 30px}
  .devices{justify-content:center}
}
