/* E10 MCP 管理平台 · 管理台样式（色板与基础组件见 platform.css） */

/* ---------- 外壳：左侧导航 + 右侧工作区 ---------- */
.app-view{display:grid;grid-template-columns:240px minmax(0,1fr);min-height:100vh;background:linear-gradient(90deg,#f9f9f9 240px,var(--surface) 240px)}
.sidebar{position:sticky;top:0;height:100vh;display:flex;flex-direction:column;background:#f9f9f9;z-index:30}
.side-brand{height:60px;display:flex;align-items:center;padding:0 18px}
.side-nav{flex:1;overflow:auto;padding:6px 10px}
.nav-group{margin-bottom:14px}
.nav-group:not(:has(.nav-btn:not(.hidden))){display:none}
.nav-label{display:block;padding:0 10px 4px;font-size:12px;font-weight:500;color:var(--faint)}
.nav-btn{width:100%;height:36px;border:0;background:transparent;border-radius:var(--radius);text-align:left;padding:0 10px;color:var(--ink-2);font-size:14px;font-weight:400;cursor:pointer;margin-bottom:1px;display:flex;align-items:center;gap:10px;position:relative}
.nav-btn .btn-icon{width:18px;height:18px;flex-basis:18px;color:var(--muted)}
.nav-btn:hover{background:#efefef;color:var(--ink)}
.nav-btn.active{background:#ececec;color:var(--ink);font-weight:500}
.nav-btn.active .btn-icon{color:var(--brand)}
.nav-btn:focus-visible{outline:none;box-shadow:0 0 0 3px var(--brand-ring)}
.side-foot{padding:12px 14px 16px}
.side-status{display:flex;align-items:center;gap:10px;padding:6px}
.side-status b{display:block;font-size:12px;font-weight:600;color:var(--ink)}
.side-status span{display:block;font-size:11px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:160px}

.workspace{min-width:0;display:flex;flex-direction:column}
.topbar{height:60px;position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:0 28px;background:rgba(255,255,255,.92);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}
.crumbs{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--muted);min-width:0;white-space:nowrap}
.crumbs .btn-icon{width:14px;height:14px;color:var(--faint)}
.crumbs b{color:var(--ink);font-weight:600}
.top-actions{display:flex;align-items:center;gap:10px;min-width:0}
.endpoint-chip{display:inline-flex;align-items:center;gap:8px;height:32px;max-width:380px;padding:0 6px 0 12px;border:1px solid var(--line);border-radius:999px;background:var(--surface);color:var(--muted);cursor:pointer;font-size:12px}
.endpoint-chip:hover{background:var(--surface-2)}
.endpoint-chip .btn-icon{width:14px;height:14px;color:var(--brand)}
.endpoint-chip code{overflow:hidden;text-overflow:ellipsis;min-width:0}
.endpoint-chip span{padding:3px 8px;border-radius:999px;color:var(--brand);font-weight:600;font-size:11px}
.user-chip{display:flex;align-items:center;gap:8px;min-width:0}
.avatar{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;flex:0 0 30px;background:var(--brand);color:#fff;font-size:13px;font-weight:600}
.user-pill{font-size:13px;color:var(--ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:200px}
#logoutButton .btn-icon{width:14px;height:14px}

.content{min-width:0;width:100%;max-width:1200px;margin:0 auto;padding:20px 32px 64px}
.page{display:none}
.page.active{display:block;animation:page-in .18s ease-out}
@keyframes page-in{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
.page-head{display:flex;justify-content:space-between;align-items:center;gap:18px;margin-bottom:20px;flex-wrap:wrap}
.page-head>div{min-width:0}
.page-head h1{font-size:24px;line-height:1.3;margin:0;font-weight:600}

/* 页内标签 */
.page-tabs{display:inline-flex;gap:2px;flex-wrap:wrap;padding:3px;border-radius:999px;background:var(--surface-3);margin:0 0 20px}
.page-tab{height:32px;padding:0 16px;border:0;border-radius:999px;background:transparent;color:var(--muted);font-size:13px;font-weight:500;cursor:pointer}
.page-tab:hover{color:var(--ink)}
.page-tab.active{background:var(--surface);color:var(--ink);box-shadow:0 1px 2px rgba(0,0,0,.08)}
.tab-panel{display:none}
.tab-panel.active{display:block}
.tab-head{display:flex;justify-content:space-between;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:16px}
.tab-head>span:empty{flex:1}
.content .field-help,.query-params-head .muted{display:none}

/* ---------- 面板、指标 ---------- */
.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);margin-bottom:20px;overflow:hidden}
.panel.narrow{max-width:760px}
.panel-head{min-height:56px;padding:14px 20px 6px;display:flex;align-items:center;justify-content:space-between;gap:14px}
.panel-head h2{font-size:15px;margin:0;line-height:1.4;font-weight:600}
.panel-body{padding:8px 20px 20px}
.panel-body.flush{padding:0}
.count-pill{display:inline-flex;align-items:center;height:22px;padding:0 8px;border-radius:999px;background:var(--surface-3);color:var(--ink-2);font-size:12px;font-weight:600}
.badge{display:inline-flex;align-items:center;gap:4px;height:22px;padding:0 8px;border-radius:999px;font-size:12px;font-weight:600;background:var(--surface-3);color:var(--ink-2);border:1px solid var(--line)}
.badge.ok{background:var(--ok-soft);color:var(--ok);border-color:var(--ok-line)}
.badge.ask{background:var(--ask-soft);color:var(--ask);border-color:var(--ask-line)}
.metrics{display:flex;gap:12px 40px;flex-wrap:wrap;margin:0 0 20px;padding:0 4px}
.metric{display:flex;align-items:baseline;gap:8px}
.metric>div{min-width:0}
.metric span:not(.metric-icon){display:block;color:var(--muted);font-size:13px}
.metric>div{display:flex;align-items:baseline;gap:8px}
.metric strong{display:block;font-size:20px;line-height:1.3;font-weight:600}
.metric strong b{font-weight:700}
.metric-icon{display:none}

/* ---------- 概览 ---------- */
.connect-card{display:flex;align-items:center;justify-content:space-between;gap:24px;flex-wrap:wrap;padding:20px 24px;margin-bottom:20px;border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface)}
.connect-main{min-width:0}
.connect-label{display:block;font-size:13px;color:var(--muted);margin-bottom:6px}
.connect-url{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.connect-url code{font-size:17px;color:var(--ink);font-weight:500;overflow-wrap:anywhere}
.connect-facts{display:flex;gap:28px;margin:0}
.connect-facts dt{font-size:12px;color:var(--muted);margin-bottom:2px}
.connect-facts dd{margin:0;font-size:14px;color:var(--ink);font-weight:500;white-space:nowrap}
.kpi-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:18px}
.kpi{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);padding:16px 18px;text-align:left;cursor:pointer;display:flex;flex-direction:column;gap:4px;transition:background .15s}
.kpi:hover{background:var(--surface-2)}
.kpi-top{color:var(--muted);font-size:13px}
.kpi strong{font-size:26px;line-height:1.25;font-weight:600;color:var(--ink)}
.kpi strong small{font-size:13px;color:var(--muted);font-weight:500;margin-left:4px}
.kpi-foot.warn{color:var(--warn)}
.domain-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:8px}
.domain{border:0;border-radius:var(--radius);padding:10px 12px;background:var(--surface-2);cursor:pointer;display:flex;align-items:center;gap:10px;transition:background .15s;text-align:left}
.domain:hover{background:var(--surface-3)}
.domain-icon{display:grid;place-items:center;color:var(--brand)}
.domain b{flex:1;min-width:0;font-size:14px;font-weight:500;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.domain-count{font-size:13px;color:var(--muted);white-space:nowrap}
.split{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.3fr);gap:18px}
.split .panel{margin-bottom:0}
.split .panel-head{border-bottom:1px solid var(--line);padding-bottom:14px}
.list{list-style:none;margin:0;padding:0}
.list li{display:flex;align-items:center;gap:12px;padding:12px 20px;border-bottom:1px solid var(--line);font-size:13px;min-width:0}
.list li:last-child{border-bottom:0}
.list .grow{flex:1;min-width:0}
.list .grow b{display:block;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.list .grow>span{display:block;color:var(--muted);font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.list .meta{color:var(--muted);font-size:12px;white-space:nowrap}

/* ---------- 连接中心 ---------- */
.url-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;max-width:760px}
.url-row input{width:100%;font-family:var(--mono);font-size:13px}
.url-row .primary-btn{height:38px}
.policy-strip{display:flex;gap:8px 28px;flex-wrap:wrap;margin:14px 0 0}
.policy-strip span{font-size:12px;color:var(--muted)}
.policy-strip b{color:var(--ink);margin-left:6px;font-weight:600}
.fold{margin:4px 0 20px}
.fold>summary{display:inline-flex;align-items:center;gap:10px;cursor:pointer;list-style:none;padding:8px 14px;border-radius:999px;color:var(--ink-2);font-weight:500;font-size:14px}
.fold>summary::-webkit-details-marker{display:none}
.fold>summary:before{content:"";width:7px;height:7px;border-right:1.6px solid currentColor;border-bottom:1.6px solid currentColor;transform:rotate(-45deg);transition:transform .15s;margin-right:2px}
.fold[open]>summary:before{transform:rotate(45deg)}
.fold>summary:hover{background:var(--surface-3)}
.fold>summary span{color:var(--faint);font-weight:400;font-size:13px}
.fold[open]>summary{margin-bottom:12px}
.inline-form{display:flex;align-items:flex-end;gap:10px;flex-wrap:wrap;margin-bottom:6px}
.inline-form .field{width:min(420px,100%)}
.status-slot:not(:empty){margin-top:12px}
.table-wrap:has(#longLivedBody){margin-top:16px}
.status-slot .notice{margin-bottom:0}
.form-actions{margin-top:18px}
.gap-top{margin-top:14px}

/* ---------- 提示 ---------- */
.notice{display:block;padding:10px 14px;border-radius:var(--radius);font-size:13px;line-height:1.6;margin-bottom:16px;border:1px solid transparent}
.notice.info{background:var(--surface-2);color:var(--ink-2);border-color:var(--line)}
.notice.error{background:var(--danger-soft);color:#b42318;border-color:var(--danger-line)}
.notice.ok{background:var(--ok-soft);color:var(--ok);border-color:var(--ok-line)}
.notice.warning{background:var(--warn-soft);color:var(--warn);border-color:var(--warn-line)}

/* ---------- 表单 ---------- */
.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.panel.narrow .form-grid{max-width:680px}
.field{min-width:0}
.field input,.field select{width:100%}
.field.wide{grid-column:1/-1}
.field-help{display:block;color:var(--muted);font-size:12px;line-height:1.6;margin-top:6px}
.scope-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.scope-grid label{display:flex;flex-direction:column;gap:4px;align-items:flex-start;font-weight:600;margin:0;padding:10px 12px;border:1px solid var(--line);border-radius:var(--radius);cursor:pointer;background:var(--surface);transition:border-color .15s,background .15s}
.scope-grid label:hover{border-color:var(--line-strong);background:var(--surface-2)}
.scope-grid label:has(input:checked){border-color:#a8c7f7;background:var(--brand-softer)}
.scope-grid .scope-row{display:flex;gap:8px;align-items:center}
.scope-grid .scope-caps{font-size:11px;color:var(--muted);font-weight:400;padding-left:24px;line-height:1.55}
.scope-grid .scope-caps.none{color:var(--faint);font-style:italic}
.scope-grid input{width:auto;height:auto}
.sql-check-grid label.sql-profile-item{flex-direction:row;align-items:flex-start;gap:10px}
.sql-check-grid label.sql-profile-item b{font-weight:600}
.code-area{display:block;width:100%;min-height:90px;border:1px solid var(--line-strong);border-radius:var(--radius);padding:10px 12px;font:12px/1.6 var(--mono);background:var(--surface-2);resize:vertical}
.text-area{display:block;width:100%;resize:vertical;line-height:1.6}
.code-block{margin:14px 0 0;padding:14px;border-radius:var(--radius);background:var(--surface-2);border:1px solid var(--line);color:var(--ink-2);font:12px/1.65 var(--mono);white-space:pre-wrap;overflow:auto;max-height:420px}

/* ---------- 表格 ---------- */
.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:var(--radius)}
.table-wrap.flush{border:0;border-radius:0}
table{width:100%;border-collapse:collapse;min-width:820px;table-layout:auto}
table.compact{min-width:640px}
th,td{text-align:left;padding:12px 14px;border-bottom:1px solid var(--line);font-size:13px;vertical-align:middle;overflow-wrap:anywhere}
th{background:var(--surface);color:var(--muted);font-weight:500;font-size:12px;white-space:nowrap}
tbody tr{transition:background .12s}
tbody tr:hover{background:var(--surface-2)}
tr:last-child td{border-bottom:0}
td b{font-weight:600}
td code{color:var(--muted);font-size:12px}
.actions-cell{width:1%;min-width:96px;white-space:nowrap;vertical-align:middle;overflow-wrap:normal}
.cell-link{display:flex;flex-direction:column;align-items:flex-start;gap:2px;border:0;background:transparent;padding:0;text-align:left;cursor:pointer;color:var(--ink)}
.cell-link:hover b{color:var(--brand)}
.draft-mark{margin-left:6px;font-size:12px;color:var(--warn)}
.actions-cell .small-btn{margin:1px 4px 1px 0}
#usersBody td{vertical-align:middle}
#usersBody td:nth-child(1){min-width:160px;max-width:220px}
#usersBody td:nth-child(2){min-width:140px;max-width:240px}
#usersBody td:nth-child(3){min-width:140px;max-width:220px}
#usersBody td:nth-child(4),#usersBody td:nth-child(6){min-width:72px;white-space:nowrap}
#usersBody td:nth-child(5){min-width:240px;line-height:1.7}
.table-wrap:has(#usersBody) table{min-width:1100px}
.muted{color:var(--muted)}
.tag-wrap{display:flex;flex-wrap:wrap;gap:4px;align-items:center;max-width:520px}
.tag-wrap .tag{margin:0}
.tag{display:inline-flex;align-items:center;border-radius:6px;padding:1px 8px;margin:1px 3px 1px 0;background:var(--surface-3);color:var(--ink-2);font-size:12px;line-height:1.6;white-space:nowrap;font-weight:400}
.more-mark{font-size:12px;color:var(--muted)}
.tag.ask{background:var(--surface-3);color:var(--ink-2)}
.tag.plain{background:var(--surface-3);color:var(--ink-2)}
.status-tag{display:inline-flex;align-items:center;gap:6px;color:var(--ink-2);font-size:13px;line-height:1.6;white-space:nowrap}
.status-tag:before{content:"";width:7px;height:7px;border-radius:50%;background:var(--ok-dot)}
.status-tag.off{color:var(--faint)}
.status-tag.off:before{background:var(--line-strong)}
.toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px;flex-wrap:wrap}
.toolbar .filters{display:flex;gap:8px;flex-wrap:wrap;min-width:0}
.toolbar input,.toolbar select{width:180px}
.pager{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:14px;flex-wrap:wrap}
.empty{text-align:center;padding:40px 20px;color:var(--muted);font-size:13px}
td.empty{padding:40px 20px}

/* 分段筛选 */
.seg{display:inline-flex;flex-wrap:wrap;gap:6px}
.seg button{height:32px;padding:0 14px;border:1px solid var(--line);border-radius:999px;background:var(--surface);color:var(--ink-2);font-size:13px;font-weight:400;cursor:pointer;display:inline-flex;align-items:center;gap:6px}
.seg button:hover{background:var(--surface-2)}
.seg button.active{background:var(--ink);border-color:var(--ink);color:#fff}
.seg button i{font-style:normal;font-size:12px;opacity:.55}

/* ---------- Skill ---------- */
.filterbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:0 0 16px}
.filterbar select{min-width:150px}
.filterbar-hint{display:none}
.skill-filterbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:14px 0}
.skill-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:12px}
.skill-card{border:1px solid var(--line);border-radius:var(--radius-lg);padding:18px;background:var(--surface);display:flex;flex-direction:column;transition:background .15s}
.skill-card:hover{background:var(--surface-2)}
.skill-card-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:6px}
.skill-card h3{font-size:15px;margin:0 0 6px;font-weight:600}
.skill-card p{font-size:13px;line-height:1.65;color:var(--muted);margin:0 0 12px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.skill-meta{font-size:12px;color:var(--muted);margin-bottom:12px}
.skill-actions{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin-top:auto}
.skill-preview-section{padding:16px 0;border-bottom:1px solid var(--line)}
.skill-preview-section:first-child{padding-top:0}
.skill-preview-section:last-child{border-bottom:0}
.skill-preview-section h4{margin:0 0 10px;font-size:14px}
.skill-preview-section p,.skill-preview-section li{font-size:13px;line-height:1.7}
.chip-row{display:flex;gap:6px;flex-wrap:wrap}
.chip{display:inline-flex;align-items:center;gap:5px;padding:2px 8px;border-radius:6px;background:var(--ok-soft);color:var(--ok);font-size:12px;line-height:1.6}
.chip.missing{background:var(--surface-3);color:var(--muted)}
.markdown-preview{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius);padding:14px;white-space:pre-wrap;font-size:13px;line-height:1.72;max-height:320px;overflow:auto}

/* ---------- 查询工作台 ---------- */
.query-workbench{display:grid;grid-template-columns:260px minmax(0,1fr);min-height:640px;border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--surface);overflow:hidden}
.query-sidebar{border-right:1px solid var(--line);background:#f9f9f9;padding:14px;overflow:auto}
.query-sidebar-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px}
.query-sidebar-head b{font-size:13px;display:flex;align-items:center;gap:6px}
.query-list{display:grid;gap:6px}
.query-list-item{width:100%;border:1px solid transparent;border-radius:var(--radius);padding:10px 12px;text-align:left;background:transparent;cursor:pointer;white-space:normal;word-break:break-word}
.query-list-item:hover{background:var(--surface);border-color:var(--line)}
.query-list-item.active{background:#ececec}
.query-list-item b,.query-list-item span{display:block}
.query-list-item b{font-size:13px;margin-bottom:3px;font-weight:600}
.query-list-item span{font-size:11px;color:var(--muted);font-family:var(--mono)}
.query-editor{padding:20px;min-width:0}
.query-header-grid{display:grid;grid-template-columns:minmax(180px,.8fr) minmax(180px,1fr) minmax(180px,1fr);gap:12px;margin-bottom:14px}
.query-sql{display:block;width:100%;min-height:220px;resize:vertical;border:1px solid var(--line-strong);border-radius:var(--radius);padding:14px;background:var(--surface-2);color:var(--ink);font:13px/1.7 var(--mono);tab-size:2}
.query-sql:focus{border-color:var(--brand)}
.query-params-head{padding:0;min-height:46px;border-bottom:0;margin-top:8px}
.query-param-list{display:grid;gap:8px;margin:6px 0 16px}
.query-param-row{display:grid;grid-template-columns:120px 90px 74px minmax(100px,.8fr) minmax(140px,1.2fr) minmax(110px,.8fr);gap:8px;align-items:center}
.query-param-row input,.query-param-row select{width:100%;height:34px}
.query-param-name{font:12px var(--mono);color:var(--ink-2)}
.query-result{margin-top:16px;border-top:1px solid var(--line);padding-top:14px}
.query-result-meta{font-size:12px;color:var(--muted);margin-bottom:8px}
.query-result .table-wrap{max-height:320px}
.query-result table{min-width:640px}

/* ---------- 对话框 ---------- */
dialog{width:min(720px,calc(100% - 24px));max-height:calc(100vh - 24px);border:1px solid var(--line);border-radius:14px;padding:0;box-shadow:var(--shadow-lg);color:var(--ink)}
dialog::backdrop{background:rgba(0,0,0,.32)}
dialog[open]{animation:dlg-in .16s ease-out}
@keyframes dlg-in{from{opacity:0;transform:translateY(8px) scale(.99)}to{opacity:1;transform:none}}
.dialog-head{min-height:60px;border-bottom:1px solid var(--line);padding:0 20px;display:flex;align-items:center;justify-content:space-between;gap:12px}
.dialog-head h3{margin:0;font-size:16px;line-height:1.35;font-weight:600}
.dialog-close{width:34px;height:34px;min-width:34px;border:0;background:transparent;font-size:22px;color:var(--muted);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--radius)}
.dialog-close:hover{background:var(--surface-3);color:var(--ink)}
.dialog-body{padding:20px;max-height:calc(100vh - 160px);overflow:auto}
.dialog-foot{padding:14px 20px;border-top:1px solid var(--line);background:var(--surface);display:flex;justify-content:flex-end;align-items:center;gap:8px;flex-wrap:wrap}
.choice-list{display:grid;gap:10px}
.choice{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:18px;padding:14px 16px;border:1px solid var(--line);border-radius:var(--radius)}
.choice:hover{border-color:var(--line-strong)}
.choice b{display:block;font-size:14px;margin-bottom:2px;font-weight:600}
.choice span{display:block;color:var(--muted);font-size:12px;line-height:1.55}

/* ---------- 响应式 ---------- */
/* ---------- 调用看板 ---------- */
.dash-head{margin-bottom:16px}
@media(min-width:1181px){.dash-head{margin-top:-58px;margin-bottom:20px;justify-content:flex-end}}
.dash-kpis{margin-bottom:16px}
.dash-kpis .kpi{padding:12px 18px;gap:2px}
.dash-kpis .kpi strong{font-size:24px}
.dash-kpis .kpi:not([data-dash-filter]){cursor:default}
.dash-kpis .kpi:not([data-dash-filter]):hover{background:var(--surface)}
.kpi-foot{font-size:12px;color:var(--muted)}
.kpi.is-warn strong{color:var(--danger)}
.dash-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);gap:16px;margin-bottom:16px}
.dash-row.even{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
.dash-row .panel{margin-bottom:0}
.count-pill.warn{background:var(--danger-soft);color:var(--danger)}
.dash-ok{display:flex;align-items:center;gap:10px;padding:10px 20px 12px;color:var(--ok);font-size:13px;font-weight:500}
.dash-ok .dot{width:8px;height:8px;border-radius:50%;background:var(--ok-dot)}
.attention-list li,.rank-list li{cursor:pointer;padding-top:9px;padding-bottom:9px}
.dash-row .panel-head{min-height:48px;padding-top:12px}
.attention-list li:hover,.rank-list li:hover{background:var(--surface-2)}
.sev{width:8px;height:8px;border-radius:50%;flex:0 0 8px;background:var(--line-strong)}
.sev.high{background:var(--danger-strong)}
.sev.medium{background:#f79009}
.sev.info{background:var(--brand)}
.attention-list li:has(.sev.high) b{color:var(--danger)}
.dash-more{display:block;width:100%;height:38px;border:0;border-top:1px solid var(--line);background:transparent;color:var(--brand);font-size:13px;cursor:pointer}
.dash-more:hover{background:var(--brand-softer)}
.chart-legend{display:flex;gap:14px;font-size:12px;color:var(--muted)}
.chart-legend span{display:inline-flex;align-items:center;gap:6px}
.chart-legend i{width:10px;height:10px;border-radius:3px}
.lg-ok{background:var(--brand)}
.lg-bad{background:var(--danger-strong)}
.trend-chart{position:relative}
.trend-chart svg{display:block;width:100%;height:auto;max-height:230px}
.trend-chart .bar-ok{fill:var(--brand)}
.trend-chart .bar-bad{fill:var(--danger-strong)}
.trend-chart .grid{stroke:var(--line);stroke-width:1}
.trend-chart .tick{fill:var(--muted);font-size:11px}
.trend-chart .hit{fill:transparent;cursor:default}
.trend-chart .hit:hover{fill:rgba(22,100,217,.06)}
.chart-tip{position:absolute;top:0;min-width:120px;padding:8px 10px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow-sm);font-size:12px;pointer-events:none;display:flex;flex-direction:column;gap:2px}
.chart-tip b{font-weight:600;color:var(--ink)}
.chart-tip span{color:var(--ink-2)}
.chart-tip .bad{color:var(--danger)}
.rank-list li{gap:14px}
.rank-list .grow b em{font-style:normal;font-weight:400;color:var(--muted);font-size:12px;margin-left:4px}
.rank-bar{flex:0 0 22%;height:6px;border-radius:3px;background:var(--brand-soft);overflow:hidden}
.rank-bar i{display:block;height:100%;border-radius:3px;background:var(--brand)}
.rank-num{flex:0 0 48px;text-align:right;font-weight:600;font-variant-numeric:tabular-nums;font-size:13px}
.rank-flag{flex:0 0 76px;display:flex;gap:6px;justify-content:flex-end;font-size:12px;white-space:nowrap}
.rank-flag em{font-style:normal;color:var(--muted)}
.rank-flag em.bad{color:var(--danger)}
.tag.write{background:var(--warn-soft);color:var(--warn);font-size:11px;padding:0 6px}
@media(max-width:1180px){
  .kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .split{grid-template-columns:1fr}
  .split .panel{margin-bottom:18px}
  .dash-row,.dash-row.even{grid-template-columns:1fr}
  .endpoint-chip{display:none}
}
@media(max-width:900px){
  .app-view{display:block;background:var(--surface)}
  .sidebar{position:sticky;top:0;height:auto;flex-direction:row;align-items:center;border-bottom:1px solid var(--line)}
  .side-brand{height:52px;border-bottom:0;padding:0 12px;flex:0 0 auto}
  .side-brand .brand-name{display:none}
  .side-nav{display:flex;gap:4px;padding:8px 8px 8px 0;overflow-x:auto;scrollbar-width:none}
  .side-nav::-webkit-scrollbar{display:none}
  .nav-group{display:contents}
  .nav-label{display:none}
  .nav-btn{width:auto;flex:0 0 auto;height:34px;margin:0;padding:0 10px;font-size:13px;gap:6px}
  .nav-btn .btn-icon{width:16px;height:16px;flex-basis:16px}
  .nav-btn.active:before{display:none}
  .side-foot{display:none}
  .topbar{top:52px;height:50px;padding:0 16px}
  .content{padding:18px 16px 40px}
  .page-tabs{overflow-x:auto;flex-wrap:nowrap}
  .page-tab{flex:0 0 auto}
  .query-workbench{grid-template-columns:1fr}
  .query-sidebar{border-right:0;border-bottom:1px solid var(--line);max-height:210px}
  .query-header-grid{grid-template-columns:1fr 1fr}
  .query-param-row{grid-template-columns:110px 100px 80px minmax(120px,1fr)}
  .query-param-row .query-param-desc{grid-column:1/-1}
  .filterbar-hint{margin-left:0;flex-basis:100%}
}
@media(max-width:560px){
  .user-pill,.crumbs>span,.crumbs>.btn-icon,#logoutButton span{display:none}
  .page-head{align-items:flex-start}
  .page-head h1{font-size:20px}
  .kpi-grid{grid-template-columns:1fr 1fr;gap:10px}
  .kpi{padding:12px 14px}
  .kpi strong{font-size:22px}
  .connect-card{padding:16px}
  .connect-url code{font-size:15px}
  .connect-facts{gap:18px}
  .panel-head{padding:12px 14px;flex-wrap:wrap}
  .panel-body{padding:14px}
  .list li{padding:10px 14px}
  .url-row,.form-grid,.scope-grid{grid-template-columns:1fr}
  .field.wide{grid-column:auto}
  .toolbar{align-items:stretch;flex-direction:column}
  .toolbar .filters{display:grid;grid-template-columns:1fr 1fr;width:100%}
  .toolbar input,.toolbar select{width:100%}
  .skill-grid,.domain-grid{grid-template-columns:1fr}
  .rank-bar{display:none}
  .rank-flag{flex-basis:auto}
  .dialog-head{padding:0 14px}
  .dialog-body{padding:16px 14px}
  .dialog-foot{padding:12px 14px}
  .dialog-foot .primary-btn,.dialog-foot .ghost-btn,.dialog-foot .danger-btn{flex:1 1 auto}
  .choice{grid-template-columns:1fr;gap:10px}
  .choice button{justify-self:start}
  .query-header-grid,.query-param-row{grid-template-columns:1fr}
  .query-param-row .query-param-desc{grid-column:auto}
  .query-editor{padding:14px}
  .query-params-head{align-items:flex-start;flex-direction:column;justify-content:center;padding:8px 0}
}
