/* GuDuu Nexus 控制台样式
 * ------------------------------------------------
 * 与大屏同一设计语言（面板/圆角/橙色品牌点缀），双主题：
 *   默认暗色（:root，与大屏一致）；html[data-theme="light"] = 白色风格
 *   （取色对齐官网浅段米白 #fbf5ed 系）。所有组件只允许用变量取色，
 *   新增样式禁止硬编码颜色——否则 light 主题会漏。
 */

:root {
  --bg: #100f0e;
  --bg-glow-a: rgba(232, 133, 51, .12);
  --bg-glow-b: rgba(109, 91, 183, .1);
  --topbar: rgba(16, 15, 14, .82);
  --panel: rgba(24, 20, 17, .5);
  --panel-strong: rgba(24, 20, 17, .72);
  --card: rgba(255, 252, 247, .04);
  --input-bg: rgba(255, 252, 247, .05);
  --hover-row: rgba(255, 252, 247, .03);
  --line: rgba(255, 239, 224, .12);
  --line-strong: rgba(255, 239, 224, .3);
  --ink: #f4efe9;
  --muted: #9e9187;
  --orange: #e88533;
  --orange-deep: #d96f1e;
  --green: #57e6a5;
  --red: #ff7a6b;
  --manual: #b79cff;
  --manual-bg: rgba(183, 156, 255, .13);
  --badge-green-bg: rgba(87, 230, 165, .12);
  --badge-orange-bg: rgba(232, 133, 51, .14);
  --badge-red-bg: rgba(255, 122, 107, .12);
  --badge-idle-bg: rgba(255, 252, 247, .07);
  --issued-bg: rgba(232, 133, 51, .08);
  --toast-bg: rgba(24, 20, 17, .95);
  --mono: "SF Mono", ui-monospace, Menlo, Consolas, monospace;
}

/* —— 白色风格（与暗色同构，只换明暗；橙/语义色加深保对比度）—— */
html[data-theme="light"] {
  --bg: #f6f0e8;
  --bg-glow-a: rgba(232, 133, 51, .1);
  --bg-glow-b: rgba(109, 91, 183, .07);
  --topbar: rgba(251, 245, 237, .88);
  --panel: rgba(255, 253, 249, .8);
  --panel-strong: rgba(255, 253, 249, .95);
  --card: #fffdf9;
  --input-bg: rgba(36, 33, 31, .04);
  --hover-row: rgba(36, 33, 31, .03);
  --line: rgba(36, 33, 31, .13);
  --line-strong: rgba(36, 33, 31, .3);
  --ink: #24211f;
  --muted: #8a7e72;
  --orange: #d96f1e;
  --orange-deep: #c4620f;
  --green: #1f9d63;
  --red: #d5493a;
  --manual: #7357bd;
  --manual-bg: rgba(115, 87, 189, .12);
  --badge-green-bg: rgba(31, 157, 99, .12);
  --badge-orange-bg: rgba(217, 111, 30, .14);
  --badge-red-bg: rgba(213, 73, 58, .12);
  --badge-idle-bg: rgba(36, 33, 31, .07);
  --issued-bg: rgba(232, 133, 51, .1);
  --toast-bg: rgba(255, 253, 249, .97);
}

* { margin: 0; padding: 0; box-sizing: border-box; }
/* hidden 属性必须压过任何 display 设定(否则 .login-wrap{display:grid} 会让 hidden 失效) */
[hidden] { display: none !important; }
.sr-only {
  position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0;
}

body {
  min-height: 100vh;
  color: var(--ink);
  background:
    radial-gradient(circle at 85% 8%, var(--bg-glow-a), transparent 32%),
    radial-gradient(circle at 8% 90%, var(--bg-glow-b), transparent 34%),
    var(--bg);
  font: 14px/1.65 -apple-system, "PingFang SC", "Microsoft YaHei", sans-serif;
  transition: background .25s ease, color .25s ease;
}

/* —— 部署中心：官网尚未独立拆仓前，由 Nexus 同源承载完整部署入口 —— */
.deploy-wrap { width: min(1120px, calc(100% - 40px)); margin: 0 auto; padding: 72px 0; }
.deploy-hero { max-width: 760px; margin-bottom: 42px; }
.deploy-hero h1 { margin: 8px 0 14px; font-size: clamp(32px, 5vw, 56px); line-height: 1.12; }
.deploy-hero > p:not(.eyebrow) { color: var(--muted); font-size: 17px; }
.eyebrow { color: var(--orange); font-weight: 700; letter-spacing: .12em; }
.deploy-actions { display: flex; gap: 12px; margin-top: 24px; }
.deploy-link { display: inline-block; text-decoration: none; }
.deploy-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.deploy-grid .panel, .deploy-requirements { padding: 24px; }
.deploy-grid small { color: var(--orange); font: 700 13px var(--mono); }
.deploy-grid h2 { margin: 8px 0; }
.deploy-grid p, .deploy-requirements li { color: var(--muted); }
.deploy-requirements { margin-top: 16px; }
.deploy-requirements ul { margin: 12px 0 16px 22px; }
.deploy-requirements pre { overflow-x: auto; padding: 13px 15px; border: 1px solid var(--line); border-radius: 10px; background: var(--soft); }
.deploy-requirements code { font: 12px/1.7 var(--mono); white-space: pre; user-select: all; }
@media (max-width: 700px) { .deploy-grid { grid-template-columns: 1fr; } .deploy-actions { flex-direction: column; } }

/* —— 顶栏 —— */
.topbar {
  display: flex; align-items: center; justify-content: space-between;
  padding: 14px 28px; border-bottom: 1px solid var(--line);
  position: sticky; top: 0; backdrop-filter: blur(8px); background: var(--topbar); z-index: 5;
}
.brand { display: flex; align-items: center; gap: 10px; }
.brand-dot { width: 10px; height: 10px; border-radius: 50%; background: var(--orange); box-shadow: 0 0 12px var(--orange); }
.brand b { letter-spacing: .04em; }
.brand em { font-style: normal; color: var(--muted); font-size: 12.5px; }
.topnav { display: flex; align-items: center; gap: 14px; }
.topnav a { color: var(--muted); text-decoration: none; font-size: 13px; }
.topnav a:hover { color: var(--orange); }
.who { font-size: 12.5px; color: var(--muted); padding: 4px 10px; border: 1px solid var(--line); border-radius: 999px; }
.who.admin { color: var(--orange); border-color: var(--orange); }

/* —— 通用按钮/表单 —— */
button { cursor: pointer; font: inherit; }
.primary {
  padding: 9px 22px; border: 0; border-radius: 9px; color: #fff; font-weight: 600;
  background: linear-gradient(135deg, #f09a4e, var(--orange-deep));
}
.primary:hover { box-shadow: 0 8px 22px rgba(232,133,51,.32); }
.primary:disabled, .ghost:disabled { opacity: .5; cursor: not-allowed; box-shadow: none; }
.primary.small { padding: 5px 12px; font-size: 12.5px; }
.ghost {
  padding: 7px 16px; border-radius: 9px; background: transparent;
  border: 1px solid var(--line); color: var(--muted);
}
.ghost:hover { color: var(--ink); border-color: var(--line-strong); }
.ghost.small { padding: 4px 12px; font-size: 12.5px; }
input {
  width: 100%; padding: 9px 12px; border-radius: 9px; color: var(--ink);
  background: var(--input-bg); border: 1px solid var(--line); font: inherit;
}
input::placeholder { color: var(--muted); opacity: .75; }
input:focus { outline: none; border-color: var(--orange); }
label { display: block; font-size: 12.5px; color: var(--muted); margin-bottom: 12px; }
label input { margin-top: 5px; }

/* —— 登录 —— */
.login-wrap { display: grid; place-items: center; min-height: calc(100vh - 62px); padding: 30px; }
.login-card {
  width: 400px; max-width: 94vw; padding: 30px 30px 24px;
  border: 1px solid var(--line); border-radius: 16px;
  background: var(--panel-strong); backdrop-filter: blur(10px);
}
.login-card h1 { font-size: 19px; margin-bottom: 18px; }
.login-card h1 + .login-subtitle { margin-top: -12px; margin-bottom: 18px; }
.login-subtitle { color: var(--muted); font-size: 12.5px; }
.admin-entry .login-card { border-color: var(--line-strong); }
.admin-entry .login-card h1 { color: var(--orange); }
.tabs {
  display: flex; gap: 3px; margin-bottom: 18px; overflow-x: auto;
  border-bottom: 1px solid var(--line); scrollbar-width: none;
}
.tabs::-webkit-scrollbar { display: none; }
.tab {
  padding: 7px 9px; background: none; border: 0; color: var(--muted); font-size: 12.5px;
  white-space: nowrap;
  border-bottom: 2px solid transparent; margin-bottom: -1px;
}
.tab.on { color: var(--orange); border-bottom-color: var(--orange); font-weight: 600; }
.pane .primary { width: 100%; margin-top: 4px; }
.code-field { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 8px; margin-top: 5px; }
.code-field input { margin-top: 0; }
.code-send { min-width: 104px; padding-inline: 11px; white-space: nowrap; }
.captcha-wrap { margin: 2px 0 13px; }
.captcha-slot { min-height: 0; overflow: hidden; }
.captcha-slot.has-inline-widget { min-height: 65px; }
.captcha-slot iframe { max-width: 100%; }
.captcha-wrap .hint { margin-top: 5px; }
.captcha-message.bad { color: var(--red); font-weight: 600; }
.captcha-message.ok { color: var(--green); font-weight: 600; }
.hint { font-size: 12px; color: var(--muted); margin-top: 10px; }
.err { margin-top: 12px; color: var(--red); font-size: 13px; }
.ok { margin-top: 10px; color: var(--green); font-size: 13px; }

/* —— 页面/面板 —— */
.page { max-width: 1060px; margin: 0 auto; padding: 30px 24px 70px; }
.page-title { font-size: 21px; margin-bottom: 20px; letter-spacing: .02em; }
.panel {
  border: 1px solid var(--line); border-radius: 14px; padding: 18px 20px;
  background: var(--panel); margin-bottom: 20px;
}
.panel-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 12px; }
.panel-head h2 { font-size: 15px; letter-spacing: .02em; }
.inline-form { display: flex; gap: 10px; margin-bottom: 8px; flex-wrap: wrap; }
.inline-form input { width: auto; min-width: 180px; }

/* —— 横排小表单（实名认证、成员与岗位、代理商进货/发码、关联方标记等）——
   全局 label 是 display:block，没有这组规则时这些表单会塌成“每个字段独占一行、
   按钮孤零零挂在最下面”，与同页 .inline-form 的排版完全不一致。 */
.form-row { display: flex; flex-wrap: wrap; gap: 10px 12px; align-items: flex-end; margin-bottom: 8px; }
.form-row > label,
.form-row > span > label { margin-bottom: 0; }
/* :not([hidden]) 是必须的：企业/个人两组字段靠 hidden 互斥，
   若无条件写 display:flex 会把 hidden 覆盖掉，两组字段同时显示。 */
.form-row > span:not([hidden]) { display: flex; flex-wrap: wrap; gap: 10px 12px; align-items: flex-end; }
/* 授权勾选这类整行说明必须独占一整行，不能被挤成一列。 */
.form-row > label.realname-consent {
  flex-basis: 100%; display: flex; gap: 7px; align-items: flex-start;
  margin: 8px 0; font-weight: 400; color: var(--ink);
}
.form-row > label.realname-consent input { width: auto; margin-top: 2px; flex: none; }
.form-row button { flex: none; }

/* —— 策略类小表单：字段自适应网格，操作按钮独占一行靠右 —— */
.form-grid {
  display: grid; gap: 10px 14px; align-items: end; margin-bottom: 10px;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
}
.form-grid > label { margin-bottom: 0; min-width: 0; }
.form-grid > label.check { display: flex; gap: 7px; align-items: center; }
.form-grid > label.check input { width: auto; margin-top: 0; flex: none; }
.form-actions { grid-column: 1 / -1; display: flex; justify-content: flex-end; gap: 10px; }

@media (max-width: 560px) {
  .form-row { gap: 10px; }
  .form-row > label,
  .form-row > span { flex-basis: 100%; }
  .form-row button { width: 100%; }
  .form-actions { justify-content: stretch; }
  .form-actions button { width: 100%; }
}

/* —— OEM 授权申请：结构化资料替代单行自由备注 —— */
.license-product-current {
  display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 12px;
  align-items: center; margin-bottom: 12px; padding: 14px 16px;
  border: 1px solid var(--orange); border-radius: 12px; background: var(--issued-bg);
}
.license-product-current b { display: block; font-size: 15px; }
.license-product-current p { margin-top: 2px; color: var(--muted); font-size: 12px; }
.license-catalog-grid {
  display: grid; grid-template-columns: minmax(0, 1fr); gap: 10px;
}
.license-product-card {
  min-width: 0; padding: 14px; border: 1px solid var(--line); border-radius: 12px;
  background: var(--issued-bg); border-color: var(--orange);
}
.license-product-card-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 8px; }
.license-product-card h3 { font-size: 14px; }
.license-product-card p { margin-top: 8px; color: var(--muted); font-size: 11.5px; }
.license-product-card small { display: block; margin-top: 10px; color: var(--muted); }
.license-request-form {
  display: grid; grid-template-columns: repeat(12, minmax(0, 1fr));
  gap: 13px 14px; align-items: end;
  padding: 16px; border: 1px solid var(--line); border-radius: 12px; background: var(--card);
}
.license-request-form label { min-width: 0; margin: 0; }
.license-request-form input, .license-request-form select {
  width: 100%; min-width: 0; margin-top: 6px;
}
.license-domain, .license-purpose { grid-column: span 6; }
.license-ip-auto-note {
  grid-column: 1 / -1; padding: 11px 12px; border: 1px solid var(--line);
  border-radius: 10px; background: var(--input-bg);
}
.license-ip-auto-note b, .license-ip-auto-note small { display: block; }
.license-ip-auto-note small { margin-top: 5px; color: var(--muted); }
.license-request-form small { display: block; margin-top: 5px; color: var(--muted); }
.license-date, .license-payment { grid-column: span 6; }
.license-conditional { grid-column: 1 / -1; }
.license-token-control {
  padding: 11px 12px; border: 1px solid var(--line); border-radius: 10px;
  background: var(--input-bg);
}
.license-token-control.is-disabled { color: var(--muted); background: var(--card); }
.license-token-control.is-disabled input {
  color: var(--muted); background: var(--panel); cursor: not-allowed; opacity: .72;
}
.license-request-form textarea {
  width: 100%; margin-top: 5px; padding: 9px 12px; resize: vertical;
  border: 1px solid var(--line); border-radius: 9px; color: var(--ink);
  background: var(--input-bg); font: inherit;
}
.license-request-form textarea:focus { outline: none; border-color: var(--orange); }
.license-request-note { grid-column: span 8; }
.license-request-submit { grid-column: span 4; display: flex; align-items: flex-end; }
.license-request-submit .primary { width: 100%; min-height: 42px; }
.license-transfer-fields {
  grid-column: 1 / -1; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px 12px; padding: 12px; border: 1px solid var(--manual); border-radius: 10px;
  background: var(--manual-bg);
}
.license-transfer-fields[hidden] { display: none; }
.license-transfer-fields input[type="file"] { padding: 7px 8px; }
.license-price-summary {
  grid-column: 1 / -1; padding: 9px 12px; border-radius: 9px;
  color: var(--orange); background: var(--badge-orange-bg); font-size: 12.5px;
}
.request-key-value {
  display: inline-block; max-width: 310px; padding: 5px 9px; border: 1px solid var(--orange);
  border-radius: 7px; color: var(--orange); background: var(--issued-bg); user-select: all;
  overflow-wrap: anywhere;
}

/* —— 超管授权中心：状态标签、搜索和审计时间线 —— */
.license-admin-head { align-items: flex-start; }
.request-search { width: min(330px, 44%); }
.request-filters {
  display: flex; gap: 5px; overflow-x: auto; margin-bottom: 10px;
  border-bottom: 1px solid var(--line); scrollbar-width: none;
}
.request-filters::-webkit-scrollbar { display: none; }
.request-filters .tab { white-space: nowrap; }
.request-filters .tab em {
  display: inline-block; min-width: 20px; margin-left: 4px; padding: 0 6px;
  border-radius: 999px; background: var(--badge-idle-bg); font: normal 10px/1.7 var(--mono);
}
.request-detail-modal { width: min(760px, 94vw); }
.token-finance-modal { width: min(680px, 94vw); }
.token-finance-units {
  display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px;
  margin-bottom: 10px;
}
.token-finance-units > div {
  padding: 13px 15px; border: 1px solid var(--line); border-radius: 11px;
  background: var(--card);
}
.token-finance-units small { display: block; color: var(--muted); }
.token-finance-units b { display: block; margin-top: 5px; font: 650 17px/1.3 var(--mono); }
.token-finance-warning {
  margin: 0 0 14px; padding: 10px 12px; border: 1px solid color-mix(in srgb, var(--orange) 42%, var(--line));
  border-radius: 9px; background: color-mix(in srgb, var(--orange) 8%, var(--card));
  color: var(--muted); font-size: 12px; line-height: 1.55;
}
.token-finance-modal form { display: grid; gap: 10px; }
.token-finance-modal form label { margin: 0; }
.audit-timeline { display: grid; gap: 0; }
.audit-event {
  position: relative; margin-left: 8px; padding: 0 0 16px 24px;
  border-left: 1px solid var(--line);
}
.audit-event:last-child { padding-bottom: 0; }
.audit-event::before {
  content: ""; position: absolute; left: -5px; top: 5px; width: 9px; height: 9px;
  border-radius: 50%; background: var(--orange); box-shadow: 0 0 0 4px var(--badge-orange-bg);
}
.audit-event-head { display: flex; justify-content: space-between; gap: 14px; }
.audit-event-head b { font-size: 12.5px; }
.audit-event-head time { color: var(--muted); font: 10.5px var(--mono); }
.audit-event p { margin-top: 3px; color: var(--muted); font-size: 11.5px; }

@media (max-width: 820px) {
  .license-request-form { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .license-domain, .license-purpose, .license-ip-auto-note { grid-column: 1 / -1; }
  .license-date, .license-payment { grid-column: span 1; }
  .license-conditional { grid-column: 1 / -1; }
  .license-transfer-fields { grid-template-columns: 1fr 1fr; }
  .license-request-note { grid-column: 1 / -1; }
  .license-request-submit { grid-column: 1 / -1; }
  .license-admin-head { display: block; }
  .request-search { width: 100%; margin-top: 10px; }
}

@media (max-width: 520px) {
  .license-product-current { grid-template-columns: 1fr; }
  .license-catalog-grid { grid-template-columns: 1fr; }
  .license-request-form { grid-template-columns: 1fr; }
  .license-transfer-fields { grid-template-columns: 1fr; }
  .license-domain, .license-purpose, .license-ip-auto-note,
  .license-date, .license-payment,
  .license-conditional, .license-request-note, .license-request-submit {
    grid-column: auto;
  }
}

/* —— 超级管理员工作台：桌面左侧导航 + 独立功能页 —— */
.admin-shell {
  width: min(1600px, 100%); margin: 0 auto; padding: 24px;
  display: grid; grid-template-columns: 224px minmax(0, 1fr); gap: 24px;
  align-items: start;
}
.admin-sidebar {
  position: sticky; top: 86px; min-height: calc(100vh - 110px);
  display: flex; flex-direction: column; padding: 18px 12px 14px;
  border: 1px solid var(--line); border-radius: 16px;
  background: var(--panel-strong); backdrop-filter: blur(10px);
}
.admin-sidebar-head { padding: 3px 10px 16px; border-bottom: 1px solid var(--line); }
.admin-sidebar-head small, .admin-workspace-head small {
  display: block; color: var(--muted); font: 10px/1.4 var(--mono); letter-spacing: .12em;
}
.admin-sidebar-head b { display: block; margin-top: 4px; font-size: 16px; }
.admin-menu { display: grid; gap: 5px; padding: 14px 0; }
.admin-menu-item {
  width: 100%; display: grid; grid-template-columns: 26px 1fr auto; align-items: center;
  gap: 8px; min-height: 42px; padding: 7px 10px; border: 1px solid transparent;
  border-radius: 10px; background: transparent; color: var(--muted); text-align: left;
  text-decoration: none; font: inherit; transition: .16s ease;
}
.admin-menu-item:hover { color: var(--ink); background: var(--hover-row); border-color: var(--line); }
.admin-menu-item.on {
  color: var(--orange); background: var(--badge-orange-bg); border-color: var(--orange);
}
.admin-menu-icon { font: 17px/1 var(--mono); text-align: center; }
.admin-menu-item em {
  min-width: 23px; padding: 1px 7px; border-radius: 999px; color: var(--muted);
  background: var(--badge-idle-bg); font: normal 10.5px/1.7 var(--mono); text-align: center;
}
.admin-menu-item.on em { color: var(--orange); background: var(--panel-strong); }
.admin-menu-item i { color: var(--muted); font: normal 12px var(--mono); }
.admin-sidebar-foot { margin-top: auto; padding: 12px 10px 0; border-top: 1px solid var(--line); color: var(--muted); font-size: 11px; }
.admin-workspace { min-width: 0; }
.admin-workspace-head {
  display: flex; align-items: center; justify-content: space-between; gap: 18px;
  min-height: 56px; margin-bottom: 18px;
}
.admin-workspace-head h1 { margin-top: 2px; font-size: 22px; letter-spacing: .02em; }
.admin-workspace-actions { display: flex; align-items: center; gap: 9px; }
.admin-page { min-width: 0; }
.admin-page > .panel:last-child { margin-bottom: 0; }


.oem-tutorial-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr)); gap: 16px; padding-top: 24px; }
.oem-tutorial-card { display: block; padding: 22px; border: 1px solid var(--line); border-radius: 14px; color: inherit; text-decoration: none; }
.oem-tutorial-card:hover { border-color: var(--orange); }
.oem-tutorial-card:focus-visible { outline: 2px solid var(--orange); outline-offset: 4px; }
.oem-tutorial-card small, .oem-tutorial-card span { color: var(--orange); font-size: 12px; }
.oem-tutorial-card h3 { margin: 10px 0; font-size: 17px; }
.oem-tutorial-card p { margin: 0 0 18px; color: var(--muted); font-size: 13px; line-height: 1.8; }

/* —— 超管使用教程：正文保持文档阅读密度，右上复制按钮复用工作区操作位 —— */
.admin-guide-panel { padding: 28px clamp(20px, 4vw, 56px); }
.admin-guide-hero {
  display: flex; align-items: flex-start; justify-content: space-between; gap: 24px;
  padding-bottom: 22px; border-bottom: 1px solid var(--line);
}
.admin-guide-hero small {
  color: var(--orange); font: 10px/1.4 var(--mono); letter-spacing: .14em;
}
.admin-guide-hero h2 { margin-top: 7px; font-size: clamp(22px, 3vw, 30px); }
.admin-guide-hero .hint { max-width: 720px; margin-top: 8px; line-height: 1.7; }
.admin-guide-updated {
  flex: 0 0 auto; padding: 6px 10px; border-radius: 999px;
  color: var(--muted); background: var(--badge-idle-bg); font: 11px var(--mono);
}
.admin-guide-content { max-width: 900px; margin: 0 auto; }
.admin-guide-section { padding: 25px 0; border-bottom: 1px solid var(--line); }
.admin-guide-section:last-child { border-bottom: 0; padding-bottom: 4px; }
.admin-guide-section h3 { margin-bottom: 10px; font-size: 17px; }
.admin-guide-section p,
.admin-guide-section li { color: var(--muted); font-size: 13px; line-height: 1.8; }
.admin-guide-section p { margin: 0 0 9px; }
.admin-guide-section ul,
.admin-guide-section ol { display: grid; gap: 7px; margin: 0; padding-left: 22px; }
.admin-guide-section li::marker { color: var(--orange); font-family: var(--mono); }
.admin-guide-note {
  display: flex; align-items: flex-start; gap: 10px; margin-top: 14px; padding: 12px 14px;
  border: 1px solid var(--manual); border-radius: 10px; background: var(--manual-bg);
}
.admin-guide-note b { flex: 0 0 auto; color: var(--orange); font-size: 12px; }
.admin-guide-note span { color: var(--muted); font-size: 12px; line-height: 1.7; }

/* 超管登录后在主内容区明确展示大屏入口，避免只放在顶栏而被误认为普通导航。 */
.dashboard-entry {
  display: flex; align-items: center; justify-content: space-between; gap: 20px;
}
.dashboard-entry h2 { font-size: 15px; }
.dashboard-entry .hint { margin: 5px 0 0; }
.dashboard-entry .primary { flex: 0 0 auto; text-decoration: none; }

/* —— 版本发布中心 —— */
.release-form {
  display: grid; grid-template-columns: 160px 110px 140px 1fr 180px; gap: 10px;
  padding-bottom: 14px; border-bottom: 1px solid var(--line);
}
.release-form label { margin: 0; }
.release-form select { width: 100%; margin-top: 5px; }
.release-target-field {
  grid-column: 1 / -1; min-width: 0; margin: 0; padding: 0 0 4px;
  border: 0;
}
.release-target-field legend { margin-bottom: 7px; color: var(--muted); font-size: 12px; }
.release-target-options { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.release-target-option {
  position: relative; display: grid; grid-template-columns: 42px minmax(0, 1fr) auto;
  align-items: center; gap: 11px; min-height: 72px; padding: 12px 14px;
  border: 1px solid var(--line); border-radius: 12px; background: var(--card);
  cursor: pointer; transition: border-color .18s ease, background .18s ease, box-shadow .18s ease;
}
.release-target-option:hover { border-color: var(--line-strong); }
.release-target-option input {
  position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none;
}
.release-target-option:has(input:focus-visible) { outline: 2px solid var(--ink); outline-offset: 2px; }
.release-target-node:has(input:checked) {
  border-color: var(--orange); background: var(--badge-orange-bg);
  box-shadow: inset 3px 0 0 var(--orange);
}
.release-target-nexus:has(input:checked) {
  border-color: var(--manual); background: var(--manual-bg);
  box-shadow: inset 3px 0 0 var(--manual);
}
.release-target-mark {
  display: grid; place-items: center; width: 42px; height: 42px; border: 1px solid var(--line);
  border-radius: 11px; background: var(--input-bg); color: var(--muted); font: 700 12px var(--mono);
}
.release-target-node:has(input:checked) .release-target-mark { border-color: var(--orange); color: var(--orange); }
.release-target-nexus:has(input:checked) .release-target-mark { border-color: var(--manual); color: var(--manual); }
.release-target-copy { display: grid; gap: 2px; min-width: 0; }
.release-target-copy b { color: var(--ink); font-size: 14px; }
.release-target-copy small { overflow-wrap: anywhere; color: var(--muted); font-size: 11px; line-height: 1.45; }
.release-target-state {
  padding: 3px 7px; border: 1px solid var(--line); border-radius: 999px;
  color: var(--muted); font-size: 10px; white-space: nowrap;
}
.release-target-node:has(input:checked) .release-target-state { border-color: var(--orange); color: var(--orange); }
.release-target-nexus:has(input:checked) .release-target-state { border-color: var(--manual); color: var(--manual); }
.release-image-field { grid-column: 1 / -1; }
.release-head-actions { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.release-routing-fields {
  grid-column: 1 / -1; display: grid;
  grid-template-columns: minmax(0, 2fr) minmax(260px, 1fr); gap: 10px;
}
.release-routing-fields input,
.release-routing-fields select { width: 100%; }
.release-notes-field { grid-column: 1 / -2; }
/* 自动生成的版本说明通常有多条内容，默认展开可以直接完成审阅；
 * 仍保留竖向拖拽，方便超管编辑更长的 OEM 公告。 */
.release-notes-field textarea { min-height: 190px; resize: vertical; }
.release-submit { display: flex; align-items: flex-end; }
.release-submit .primary { width: 100%; }
.release-track-callout {
  margin-top: 12px; padding: 11px 13px; border: 1px solid var(--line);
  border-radius: 10px; background: var(--input-bg); color: var(--muted); font-size: 12px;
}
.release-track-callout.node { border-color: var(--orange); }
.release-track-callout.nexus { border-color: var(--manual); background: var(--manual-bg); }
.release-list { display: grid; gap: 12px; margin-top: 16px; }
.client-release-center { margin-top: 18px; }
.client-release-form,
.client-artifact-form {
  display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px;
  margin-top: 16px; padding: 16px; border: 1px solid var(--line);
  border-radius: 14px; background: var(--input-bg);
}
.client-release-form label, .client-artifact-form label { margin: 0; }
.client-release-form input, .client-release-form select, .client-release-form textarea,
.client-artifact-form input, .client-artifact-form select { width: 100%; margin-top: 5px; }
.client-release-wide { grid-column: span 2; }
.client-artifact-head {
  grid-column: 1 / -1; display: flex; justify-content: space-between;
  align-items: flex-start; gap: 16px;
}
.client-artifact-head h3 { margin: 0 0 3px; font-size: 15px; }
.client-artifact-head p { margin: 0; }
.client-force-field {
  grid-column: span 2; display: flex; align-items: center; gap: 8px; min-height: 42px;
}
.client-force-field input { width: auto; margin: 0; }
.client-artifact-table { margin-top: 12px; }
.release-track-group { display: grid; gap: 10px; }
.release-track-group + .release-track-group { margin-top: 8px; padding-top: 18px; border-top: 1px solid var(--line); }
.release-track-group-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; }
.release-track-group-head h3 { margin: 0; font-size: 15px; }
.release-track-group-head p { margin: 3px 0 0; color: var(--muted); font-size: 12px; }
.release-track-count { flex: 0 0 auto; color: var(--muted); font: 11px var(--mono); }
.release-card {
  padding: 14px 16px; border: 1px solid var(--line); border-radius: 12px;
  background: var(--card);
}
.release-card-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; }
.release-card-title { display: flex; align-items: center; gap: 9px; flex-wrap: wrap; }
.release-card-title b { font: 700 15px var(--mono); }
.release-card-title strong { font-size: 14px; }
.release-meta, .release-counts { color: var(--muted); font-size: 12px; }
.release-notes { margin: 9px 0; white-space: pre-wrap; color: var(--ink); font-size: 13px; }
.release-actions { display: flex; justify-content: flex-end; gap: 7px; flex-wrap: wrap; }
.release-deployments { margin-top: 10px; padding-top: 9px; border-top: 1px solid var(--line); }
.release-deployments summary { cursor: pointer; color: var(--muted); font-size: 12px; }

/* OEM 更新公告直接复用版本发布正文：Nexus 平台公告发布后全租户可见，节点公告仍须
 * 对应实例成功回报。公告正文保留换行，让新增/修复条目在窄屏上仍能快速扫读。 */
.announcement-list { display: grid; gap: 12px; }
.announcement-card {
  padding: 15px 17px; border: 1px solid var(--line); border-radius: 12px;
  background: var(--card);
}
.announcement-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; }
.announcement-head h3 { font-size: 15px; }
.announcement-meta { color: var(--muted); font: 11.5px/1.6 var(--mono); white-space: nowrap; }
.announcement-notes { margin-top: 9px; white-space: pre-wrap; color: var(--ink); font-size: 13px; }

/* OEM 分享中心：链接、二维码与无限层级人数。二维码由 Nexus 本机生成，不调用第三方。 */
.referral-stats { margin: 4px 0 14px; }
.share-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.share-block { padding: 15px; border: 1px solid var(--line); border-radius: 12px; background: var(--card); }
.share-block h3 { margin-bottom: 3px; font-size: 14px; }
.share-item { display: grid; grid-template-columns: 112px minmax(0, 1fr); gap: 14px; align-items: center; margin-top: 12px; }
.share-qr { width: 112px; height: 112px; padding: 5px; border: 1px solid var(--line); border-radius: 10px; background: #fff; object-fit: contain; }
.share-domain { margin-bottom: 7px; color: var(--ink); font: 600 12px var(--mono); }
.share-url { width: 100%; padding: 9px 10px; border: 1px solid var(--line); border-radius: 8px; background: var(--input-bg); color: var(--ink); font: 11px/1.4 var(--mono); }
.share-actions { display: flex; gap: 7px; margin-top: 7px; flex-wrap: wrap; }

@media (max-width: 820px) {
  .share-grid { grid-template-columns: 1fr; }
}

@media (max-width: 520px) {
  .share-item { grid-template-columns: 1fr; }
  .share-qr { width: 132px; height: 132px; }
}

@media (max-width: 820px) {
  .dashboard-entry { align-items: flex-start; flex-direction: column; }
  .announcement-head { display: block; }
  .announcement-meta { margin-top: 4px; white-space: normal; }
  .release-form { grid-template-columns: 1fr 1fr; }
  .release-target-options { grid-template-columns: 1fr; }
  .release-routing-fields { grid-template-columns: 1fr; }
  .release-title-field, .release-notes-field { grid-column: 1 / -1; }
  .release-notes-field textarea { min-height: 150px; }
  .release-submit { grid-column: 1 / -1; }
  .client-release-form, .client-artifact-form { grid-template-columns: 1fr 1fr; }
  .client-release-wide, .client-force-field { grid-column: 1 / -1; }
}

@media (max-width: 520px) {
  .release-target-option { grid-template-columns: 38px minmax(0, 1fr); padding: 11px; }
  .release-target-mark { width: 38px; height: 38px; }
  .release-target-state { grid-column: 2; justify-self: start; }
  .client-release-form, .client-artifact-form { grid-template-columns: 1fr; }
  .client-artifact-head { flex-direction: column; }
}

@media (max-width: 960px) {
  .admin-shell { display: block; padding: 18px 16px 60px; }
  .admin-sidebar {
    position: sticky; top: 61px; z-index: 4; min-height: 0; margin-bottom: 18px;
    padding: 9px; border-radius: 13px;
  }
  .admin-sidebar-head, .admin-sidebar-foot { display: none; }
  .admin-menu {
    display: flex; gap: 7px; padding: 0; overflow-x: auto; scrollbar-width: none;
  }
  .admin-menu::-webkit-scrollbar { display: none; }
  .admin-menu-item {
    width: auto; min-width: max-content; grid-template-columns: 22px auto auto;
    min-height: 38px; padding: 6px 11px;
  }
}

@media (max-width: 620px) {
  .topbar { padding: 12px 14px; }
  .brand em, .who { display: none; }
  .topnav { gap: 7px; }
  .admin-workspace-head { align-items: flex-end; }
  .admin-workspace-head h1 { font-size: 19px; }
  .admin-workspace-actions button { padding-inline: 10px; }
  .admin-guide-panel { padding: 20px 17px; }
  .admin-guide-hero { display: block; }
  .admin-guide-updated { display: inline-block; margin-top: 14px; }
}

/* —— 统计条 —— */
.stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 12px; margin-bottom: 20px; }
.stat {
  border: 1px solid var(--line); border-radius: 12px; padding: 13px 16px;
  background: var(--panel);
}
.stat small { display: block; color: var(--muted); font-size: 12px; }
.stat b { font-size: 21px; font-family: var(--mono); color: var(--orange); }
.stat b.plain { color: var(--ink); }
.stat-note { display: block; margin-top: 3px; color: var(--muted); font-size: 11.5px; }

/* —— OEM 我的 KEY：授权、绑定、运行三类状态独立展示 —— */
.key-summary-head { align-items: flex-start; gap: 18px; }
.key-summary-head .hint, .key-list-head .hint { margin-top: 3px; }
.key-summary-stats { margin: 0; }
.key-install-guide {
  display: flex; align-items: center; flex-wrap: wrap; gap: 8px 18px;
  margin-bottom: 14px; padding: 12px 14px; border: 1px solid var(--line);
  border-radius: 11px; background: var(--panel);
}
.key-install-guide b { color: var(--ink); font-size: 12px; }
.key-install-guide span { color: var(--muted); font-size: 11.5px; }
.key-card-grid {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(360px, 1fr)); gap: 14px;
}
.key-card {
  min-width: 0; padding: 17px; border: 1px solid var(--line); border-radius: 13px;
  background: var(--card);
}
.key-card-head {
  display: flex; align-items: flex-start; justify-content: space-between; gap: 16px;
  padding-bottom: 13px; border-bottom: 1px solid var(--line);
}
.key-card-head small { display: block; color: var(--muted); font: 10.5px/1.4 var(--mono); }
.key-card-head b { display: block; margin-top: 3px; color: var(--ink); font: 700 17px/1.4 var(--mono); }
.key-card-badges { display: flex; justify-content: flex-end; gap: 6px; flex-wrap: wrap; }
.key-card-details {
  display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 11px 18px;
  padding: 14px 0;
}
.key-card-detail { min-width: 0; }
.key-card-detail small { display: block; color: var(--muted); font-size: 11px; }
.key-card-detail b {
  display: block; margin-top: 2px; overflow-wrap: anywhere; color: var(--ink);
  font: 600 12.5px/1.45 var(--mono);
}
.key-card-detail.key-domain { grid-column: 1 / -1; }
.key-card-detail.key-domain b { color: var(--orange); font-size: 13.5px; }
.key-card-foot {
  display: flex; align-items: center; justify-content: space-between; gap: 14px;
  padding-top: 12px; border-top: 1px solid var(--line);
}
.key-card-foot p { max-width: 58%; color: var(--muted); font-size: 11.5px; }
.key-card-actions { display: flex; justify-content: flex-end; gap: 7px; flex-wrap: wrap; }
.key-empty {
  grid-column: 1 / -1; padding: 34px 18px; border: 1px dashed var(--line-strong);
  border-radius: 12px; text-align: center; color: var(--muted);
}
.key-empty b { display: block; color: var(--ink); font-size: 15px; }
.key-empty p { margin: 3px 0 13px; font-size: 12px; }
.key-claim-panel { background: var(--card); }
.key-claim-form {
  display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 10px;
  max-width: 720px;
}
.key-claim-form input { min-width: 0; font-family: var(--mono); letter-spacing: .02em; }
.key-claim-form .ghost { white-space: nowrap; }

@media (max-width: 620px) {
  .key-summary-head, .key-card-head, .key-card-foot { align-items: stretch; flex-direction: column; }
  .key-summary-head .primary { align-self: flex-start; }
  .key-card-grid { grid-template-columns: 1fr; }
  .key-card-badges { justify-content: flex-start; }
  .key-card-details { grid-template-columns: 1fr; }
  .key-card-detail.key-domain { grid-column: auto; }
  .key-card-foot p { max-width: none; }
  .key-card-actions { justify-content: flex-start; }
  .key-claim-form { grid-template-columns: 1fr; }
}

/* —— 舰队总览：把大量同级数字收敛为「核心状态 → 分组详情 → 用量」三层。
 * 指标仍由 portal.js 使用真实接口数据生成；这里只改善信息层级，不隐藏任何口径。 */
.fleet-overview { display: grid; gap: 14px; margin-bottom: 20px; }
.platform-feature-panel { background: var(--panel-strong); }
.platform-settings-list { display: grid; gap: 12px; }
.platform-policy-form {
  display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px;
}
.platform-policy-form label { min-width: 0; }
.platform-policy-form small { display: block; margin-top: 6px; color: var(--muted); }
.platform-policy-check {
  display: flex; align-items: flex-start; gap: 10px; padding: 12px 14px;
  border: 1px solid var(--line); border-radius: 12px; background: var(--panel);
}
.platform-policy-check input { width: auto; margin: 3px 0 0; }
.platform-policy-check span { display: grid; gap: 2px; }
.platform-policy-check small { margin: 0; }
.platform-policy-submit {
  grid-column: 1 / -1; display: flex; align-items: center;
  justify-content: space-between; gap: 16px; padding-top: 14px;
  border-top: 1px solid var(--line);
}
.oem-retail-form { display: grid; gap: 16px; }
.oem-system-form { display: grid; gap: 18px; }
/* —— 全后台悬浮主 AI：像在线客服一样常驻右下角，不占用左侧导航与业务页面 —— */
.assistant-launcher {
  position: fixed; right: 24px; bottom: 24px; z-index: 7;
  display: inline-flex; align-items: center; gap: 9px; min-height: 50px;
  padding: 9px 17px 9px 9px; border: 1px solid color-mix(in srgb, var(--orange) 55%, var(--line));
  border-radius: 999px; color: #fff; background: linear-gradient(135deg, var(--orange), var(--orange-deep));
  box-shadow: 0 14px 38px rgba(0, 0, 0, .32); font-weight: 750; cursor: pointer;
  transition: transform .18s ease, box-shadow .18s ease, opacity .18s ease;
}
.assistant-launcher:hover { transform: translateY(-2px); box-shadow: 0 18px 44px rgba(0, 0, 0, .38); }
.assistant-launcher:focus-visible { outline: 3px solid color-mix(in srgb, var(--orange) 45%, transparent); outline-offset: 3px; }
.assistant-launcher.is-open { opacity: 0; pointer-events: none; transform: translateY(8px) scale(.94); }
.assistant-launcher-icon {
  display: grid; place-items: center; width: 32px; height: 32px; border-radius: 50%;
  color: var(--orange-deep); background: #fff; font-size: 18px; line-height: 1;
}
.assistant-widget {
  position: fixed; right: 24px; bottom: 22px; z-index: 7;
  display: grid; grid-template-rows: auto auto minmax(190px, 1fr) auto auto;
  gap: 12px; width: min(460px, calc(100vw - 48px));
  height: min(720px, calc(100dvh - 44px)); padding: 16px;
  border: 1px solid var(--line-strong); border-radius: 20px;
  background: var(--panel-strong); box-shadow: 0 24px 70px rgba(0, 0, 0, .46);
  backdrop-filter: blur(18px); overflow: hidden;
}
.assistant-widget-head { display: flex; align-items: center; gap: 10px; min-width: 0; }
.assistant-widget-identity { display: flex; align-items: center; gap: 10px; min-width: 0; margin-right: auto; }
.assistant-widget-identity > div { display: grid; min-width: 0; line-height: 1.25; }
.assistant-widget-identity b { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 15px; }
.assistant-widget-identity small { color: var(--muted); font-size: 11px; }
.assistant-widget-avatar {
  display: grid; place-items: center; flex: 0 0 auto; width: 38px; height: 38px;
  border-radius: 13px; color: #fff; background: linear-gradient(135deg, var(--orange), var(--manual));
  box-shadow: 0 8px 22px var(--badge-orange-bg); font-size: 19px;
}
.assistant-widget-node { display: flex; align-items: center; gap: 6px; color: var(--muted); font-size: 12px; }
.assistant-widget-node select { width: 142px; padding: 7px 30px 7px 9px; font-size: 12px; }
.assistant-widget-close {
  display: grid; place-items: center; flex: 0 0 auto; width: 34px; height: 34px;
  border: 1px solid var(--line); border-radius: 50%; color: var(--muted);
  background: var(--card); font-size: 24px; line-height: 1; cursor: pointer;
}
.assistant-widget-close:hover { color: var(--ink); border-color: var(--line-strong); }
.oem-assistant-status { padding: 10px 13px; border: 1px solid var(--line); border-radius: 10px; background: var(--soft); }
.oem-assistant-chat {
  min-height: 300px; max-height: 48vh; overflow-y: auto; display: grid; align-content: start;
  gap: 12px; padding: 18px; border: 1px solid var(--line); border-radius: 14px; background: var(--bg);
}
.assistant-widget .oem-assistant-chat { min-height: 0; max-height: none; padding: 13px; }
.oem-assistant-message { max-width: min(760px, 88%); padding: 13px 15px; border-radius: 14px; background: var(--soft); }
.oem-assistant-message.user { justify-self: end; background: var(--badge-orange-bg); border: 1px solid var(--line-strong); }
.oem-assistant-message b { display: block; margin-bottom: 6px; font-size: 12px; color: var(--muted); }
.oem-assistant-message p { margin: 0; white-space: pre-wrap; line-height: 1.7; }
.oem-assistant-proposal { padding: 18px; border: 1px solid var(--orange); border-radius: 14px; background: var(--soft); }
.assistant-widget .oem-assistant-proposal { max-height: 34vh; padding: 13px; overflow-y: auto; }
.oem-assistant-proposal-changes { display: grid; gap: 10px; margin-top: 14px; }
.oem-assistant-change { padding: 12px; border: 1px solid var(--line); border-radius: 10px; background: var(--bg); }
.oem-assistant-change p { margin: 5px 0 8px; }
.oem-assistant-change pre { margin: 0; max-height: 240px; overflow: auto; white-space: pre-wrap; word-break: break-word; font-size: 12px; }
.oem-assistant-proposal-actions { display: flex; align-items: center; justify-content: flex-end; gap: 10px; margin-top: 15px; }
.oem-assistant-proposal-actions p { margin: 0 auto 0 0; }
.oem-assistant-composer { display: grid; gap: 8px; }
.oem-assistant-composer textarea { width: 100%; resize: vertical; }
.assistant-widget .oem-assistant-composer textarea { max-height: 120px; resize: none; }
.oem-assistant-composer > div { display: flex; align-items: center; justify-content: space-between; gap: 14px; }
.assistant-widget .oem-assistant-composer > div small { max-width: 320px; font-size: 11px; line-height: 1.35; }
.oem-operations-form { display: grid; gap: 18px; }
.oem-system-toolbar {
  display: flex; align-items: end; justify-content: space-between; gap: 18px;
  padding: 14px; border: 1px solid var(--line); border-radius: 12px; background: var(--soft);
}
.oem-system-toolbar label { min-width: min(440px, 100%); }
.oem-system-toolbar .mode-note { margin: 0; text-align: right; }
.oem-system-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.oem-system-mode { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.oem-system-payment-card {
  display: grid; gap: 12px; margin-top: 12px; padding: 16px;
  border: 1px solid var(--line); border-radius: 12px; background: var(--panel);
}
.oem-system-logo {
  width: 84px; height: 84px; object-fit: contain; padding: 8px;
  border: 1px solid var(--line); border-radius: 12px; background: #fff;
}
.oem-system-form textarea { resize: vertical; }
.oem-operations-form textarea { resize: vertical; }
.oem-operation-list { display: grid; gap: 10px; }
.oem-operation-row {
  display: grid; gap: 10px; padding: 14px; border: 1px solid var(--line);
  border-radius: 12px; background: var(--card);
}
.oem-operation-row-head {
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
}
.oem-operation-row-head b { font-size: 14px; }
.oem-operation-grid {
  display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px;
}
.oem-operation-grid.two { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.oem-operation-links { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.oem-operation-link {
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
  padding: 12px 14px; border: 1px solid var(--line); border-radius: 12px; background: var(--card);
}
.oem-operation-link span { display: grid; gap: 3px; min-width: 0; }
.oem-operation-link small { color: var(--muted); overflow-wrap: anywhere; }
.oem-retail-instance { max-width: 520px; }
.oem-pool-stats, .oem-daily-grid {
  display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px;
}
.oem-daily-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.oem-package-head, .oem-retail-actions {
  display: flex; align-items: center; justify-content: space-between; gap: 14px;
}
.oem-package-head h3, .oem-package-head p { margin: 0; }
.oem-retail-packages { display: grid; gap: 8px; }
.oem-policy-section {
  display: grid; gap: 10px; padding: 16px; border: 1px solid var(--line);
  border-radius: 14px; background: var(--panel);
}
.oem-gate-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
.oem-gate-item {
  display: grid; grid-template-columns: minmax(0, 1fr) minmax(160px, .55fr);
  align-items: center; gap: 10px; padding: 10px 12px; border: 1px solid var(--line);
  border-radius: 10px; background: var(--card);
}
.oem-gate-item b { font-size: 13px; }
.oem-quota-table { min-width: 720px; }
.oem-quota-table input { min-width: 100px; width: 100%; }
.oem-retail-member-plans { display: grid; gap: 8px; }
.oem-retail-member-plan {
  display: grid; grid-template-columns: minmax(110px, .8fr) minmax(130px, 1.1fr)
    minmax(120px, .8fr) minmax(100px, .65fr) repeat(2, minmax(110px, .75fr)) auto auto;
  gap: 8px; align-items: end; padding: 12px; border: 1px solid var(--line);
  border-radius: 12px; background: var(--card);
}
.oem-retail-member-plan label { min-width: 0; }
.oem-retail-member-plan input, .oem-retail-member-plan select { min-width: 0; width: 100%; }
.oem-retail-package {
  display: grid; grid-template-columns: minmax(120px, 1fr) minmax(130px, 1.2fr)
    repeat(3, minmax(110px, .8fr)) auto auto; gap: 8px; align-items: end;
  padding: 12px; border: 1px solid var(--line); border-radius: 12px; background: var(--card);
}
.oem-retail-package label { min-width: 0; }
.oem-retail-package input { min-width: 0; width: 100%; }
@media (max-width: 820px) {
  .oem-system-toolbar { align-items: stretch; flex-direction: column; }
  .oem-assistant-proposal-actions, .oem-assistant-composer > div { align-items: stretch; flex-direction: column; }
  .oem-assistant-message { max-width: 96%; }
  .oem-system-toolbar .mode-note { text-align: left; }
  .oem-system-grid, .oem-system-mode, .oem-operation-grid, .oem-operation-grid.two, .oem-operation-links { grid-template-columns: 1fr; }
  .oem-pool-stats, .oem-daily-grid { grid-template-columns: 1fr 1fr; }
  .oem-gate-grid, .oem-retail-package, .oem-retail-member-plan { grid-template-columns: 1fr 1fr; }
  .oem-retail-actions { align-items: stretch; flex-direction: column; }
}
@media (max-width: 520px) {
  .assistant-launcher { right: 14px; bottom: 14px; }
  .assistant-widget {
    right: 8px; bottom: 8px; width: calc(100vw - 16px);
    height: calc(100dvh - 16px); padding: 13px; border-radius: 17px;
  }
  .assistant-widget { grid-template-rows: auto auto minmax(150px, 1fr) auto auto; }
  .assistant-widget-node { max-width: 154px; }
  .assistant-widget-node select { width: 108px; }
  .assistant-widget-identity small { display: none; }
  .assistant-widget .oem-assistant-proposal { max-height: 40vh; }
  .assistant-widget .oem-assistant-composer > div small { display: none; }
  .oem-pool-stats, .oem-daily-grid, .oem-gate-grid, .oem-retail-package, .oem-retail-member-plan { grid-template-columns: 1fr; }
  .oem-gate-item { grid-template-columns: 1fr; }
}
.ai-pricing-form { display: grid; gap: 14px; }
.ai-pricing-global {
  display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px;
}
.ai-pricing-global label { min-width: 0; }
.ai-pricing-global small {
  display: block; margin-top: 6px; color: var(--muted); line-height: 1.45;
}
.ai-pricing-table-head,
.ai-model-row {
  display: grid;
  grid-template-columns: minmax(180px, 1.25fr) minmax(250px, 1.8fr) repeat(4, minmax(95px, .7fr)) minmax(112px, .8fr);
  gap: 8px; align-items: center;
}
.ai-pricing-table-head {
  padding: 0 10px; color: var(--muted); font-size: 11px; font-weight: 700;
}
.ai-pricing-models { display: grid; gap: 8px; overflow-x: auto; }
.ai-model-row {
  min-width: 1120px; padding: 10px; border: 1px solid var(--line);
  border-radius: 12px; background: var(--card);
}
.ai-model-row input,
.ai-model-row select { min-width: 0; width: 100%; }
.ai-model-identity { display: grid; grid-template-columns: 1fr; gap: 6px; }
.ai-model-state { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.ai-model-state label { display: inline-flex; align-items: center; gap: 5px; white-space: nowrap; }
.ai-model-state input { width: auto; }
.instance-region-cell { min-width: 190px; }
.instance-region-select { width: 128px; margin: 0 6px 0 0; padding: 6px 8px; }
.table-scroll .instance-table { min-width: 1190px; }
.instance-table th,
.instance-table td { padding-left: 5px; padding-right: 5px; vertical-align: middle; }
.instance-table .instance-region-cell { min-width: 155px; }
.instance-table .instance-domain {
  width: 178px; min-width: 150px; max-width: 178px;
  line-height: 1.5; overflow-wrap: normal; word-break: normal;
}
.instance-table .instance-domain-line { white-space: nowrap; }
.instance-table .instance-company { min-width: 137px; }
.instance-table .instance-company b { display: block; line-height: 1.5; }
.instance-table .instance-company .hint { margin-top: 4px; white-space: nowrap; }
.instance-table .instance-status,
.instance-table .instance-version,
.instance-table .instance-people,
.instance-table .instance-seen,
.instance-table .instance-connect-policy,
.instance-table .instance-member-policy,
.instance-table .instance-actions { white-space: nowrap; word-break: keep-all; }
.instance-table .instance-version { min-width: 68px; }
.instance-table .instance-people { min-width: 88px; }
.instance-table .instance-seen { min-width: 132px; }
.instance-table .instance-connect-policy { min-width: 92px; }
.instance-table .instance-connect-policy button { width: 100%; }
.instance-table .instance-member-policy { min-width: 86px; }
.instance-table .instance-member-policy button { width: 100%; }
.instance-table .instance-member-policy button.active {
  color: var(--green); border-color: var(--green); background: var(--badge-green-bg);
}
.instance-table .instance-actions { min-width: 72px; }
.instance-table .instance-actions button { display: block; width: 100%; }
.instance-table .instance-actions button + button { margin-top: 5px; }
.platform-feature-row {
  display: flex; align-items: center; justify-content: space-between; gap: 24px;
  padding: 14px 16px; border: 1px solid var(--line); border-radius: 12px;
  background: var(--card);
}
.platform-feature-row h3 { font-size: 14px; }
.platform-feature-row p { margin-top: 3px; color: var(--muted); font-size: 12px; }
.feature-switch {
  flex: 0 0 auto; display: inline-flex; align-items: center; gap: 9px;
  min-width: 108px; padding: 7px 10px; border: 1px solid var(--line);
  border-radius: 999px; color: var(--muted); background: var(--input-bg);
}
.feature-switch:hover:not(:disabled) { border-color: var(--line-strong); color: var(--ink); }
.feature-switch:disabled { opacity: .58; cursor: not-allowed; }
.feature-switch-track {
  position: relative; width: 36px; height: 20px; border-radius: 999px;
  background: var(--badge-idle-bg); border: 1px solid var(--line-strong);
  transition: background .18s ease, border-color .18s ease;
}
.feature-switch-track i {
  position: absolute; width: 14px; height: 14px; left: 2px; top: 2px;
  border-radius: 50%; background: var(--muted); transition: transform .18s ease, background .18s ease;
}
.feature-switch.on { color: var(--green); border-color: var(--green); }
.feature-switch.on .feature-switch-track { background: var(--badge-green-bg); border-color: var(--green); }
.feature-switch.on .feature-switch-track i { transform: translateX(16px); background: var(--green); }
.feature-switch b { min-width: 42px; font-size: 12px; text-align: left; }
.topup-transfer-form, .withdraw-form {
  margin-top: 16px; padding: 16px; border: 1px dashed var(--line-strong);
  border-radius: 12px; background: var(--panel-strong);
}
.topup-transfer-form .inline-form, .withdraw-form .inline-form { margin-top: 10px; }
.withdraw-form h3 { margin-bottom: 12px; }
.withdraw-grid {
  display: grid; grid-template-columns: repeat(12, minmax(0, 1fr));
  gap: 13px 14px; align-items: end;
}
.withdraw-grid label { min-width: 0; margin: 0; }
.withdraw-grid input, .withdraw-grid select {
  width: 100%; min-width: 0; margin-top: 6px;
}
.withdraw-amount { grid-column: span 3; }
.withdraw-method { grid-column: span 3; }
.withdraw-recipient { grid-column: span 6; }
.withdraw-account { grid-column: span 6; }
.withdraw-bank { grid-column: span 6; }
.withdraw-note { grid-column: span 8; }
.withdraw-submit {
  grid-column: span 4; display: flex; align-items: flex-end;
}
.withdraw-submit .primary { width: 100%; min-height: 42px; }
.withdraw-form > .hint { margin: 12px 0 0; }
@media (max-width: 820px) {
  .withdraw-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .withdraw-amount, .withdraw-method { grid-column: span 1; }
  .withdraw-recipient, .withdraw-account, .withdraw-bank,
  .withdraw-note, .withdraw-submit { grid-column: 1 / -1; }
}
.oem-income-panel { background: var(--panel-strong); }
.oem-income-stats { margin: 12px 0 16px; }
.reseller-terms {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 10px; margin-bottom: 14px;
}
.reseller-term {
  padding: 12px 14px; border: 1px solid var(--line); border-radius: 10px;
  background: var(--card); font-size: 12px; color: var(--muted);
}
.reseller-term b { display: block; margin-bottom: 4px; color: var(--ink); font-size: 14px; }
.income-history-grid {
  display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr);
  gap: 16px; margin-top: 18px;
}
.income-history-grid h3 { margin-bottom: 9px; }
.income-positive { color: var(--green); font-weight: 700; }
.income-negative { color: var(--orange); font-weight: 700; }
.fleet-summary {
  position: relative; overflow: hidden; padding: 20px;
  border: 1px solid color-mix(in srgb, var(--orange) 24%, var(--line));
  border-radius: 16px;
  background: linear-gradient(135deg, var(--panel-strong), var(--panel));
}
.fleet-summary::after {
  content: ""; position: absolute; width: 280px; height: 280px; right: -120px; top: -170px;
  border-radius: 50%; background: var(--badge-orange-bg); filter: blur(2px); pointer-events: none;
}
.fleet-summary-head, .fleet-group-head {
  display: flex; align-items: flex-start; justify-content: space-between; gap: 18px;
}
.fleet-eyebrow {
  display: block; color: var(--orange); font: 10px/1.4 var(--mono); letter-spacing: .14em;
  text-transform: uppercase;
}
.fleet-summary-head h2 { margin-top: 3px; font-size: 17px; letter-spacing: .02em; }
.fleet-live {
  position: relative; z-index: 1; display: inline-flex; align-items: center; gap: 7px;
  padding: 5px 10px; border: 1px solid var(--line); border-radius: 999px;
  color: var(--muted); background: var(--card); font-size: 11.5px; white-space: nowrap;
}
.fleet-live-dot {
  width: 7px; height: 7px; border-radius: 50%; background: var(--green);
  box-shadow: 0 0 0 4px var(--badge-green-bg);
}
.fleet-live-dot.warn { background: var(--orange); box-shadow: 0 0 0 4px var(--badge-orange-bg); }
.fleet-live-dot.off { background: var(--red); box-shadow: 0 0 0 4px var(--badge-red-bg); }
.fleet-summary-grid {
  position: relative; z-index: 1; display: grid; grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 0; margin-top: 18px;
}
.fleet-kpi { min-width: 0; padding: 4px 18px; border-left: 1px solid var(--line); }
.fleet-kpi:first-child { padding-left: 0; border-left: 0; }
.fleet-kpi:last-child { padding-right: 0; }
.fleet-kpi-label { display: flex; align-items: center; gap: 7px; color: var(--muted); font-size: 11.5px; }
.fleet-kpi-icon {
  display: inline-grid; place-items: center; width: 22px; height: 22px;
  border-radius: 7px; color: var(--orange); background: var(--badge-orange-bg); font: 12px/1 var(--mono);
}
.fleet-kpi b {
  display: block; margin-top: 7px; color: var(--ink); font: 700 27px/1.15 var(--mono);
  letter-spacing: -.03em;
}
.fleet-kpi.accent b { color: var(--orange); }
.fleet-kpi small { display: block; margin-top: 5px; color: var(--muted); font-size: 10.5px; }
.fleet-groups { display: grid; grid-template-columns: minmax(0, .92fr) minmax(0, 1.38fr); gap: 14px; }
.fleet-group {
  min-width: 0; padding: 17px 18px 15px; border: 1px solid var(--line);
  border-radius: 15px; background: var(--panel);
}
.fleet-group-head h3 { font-size: 14px; letter-spacing: .02em; }
.fleet-group-head p { margin-top: 2px; color: var(--muted); font-size: 11px; }
.fleet-group-mark {
  display: grid; place-items: center; flex: 0 0 auto; width: 30px; height: 30px;
  border-radius: 9px; color: var(--orange); background: var(--badge-orange-bg); font: 14px/1 var(--mono);
}
.fleet-metrics { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; margin-top: 13px; }
.fleet-mini {
  min-width: 0; min-height: 79px; padding: 11px 12px; border-radius: 10px;
  background: var(--card); transition: transform .16s ease, background .16s ease;
}
.fleet-mini:hover { transform: translateY(-1px); background: var(--hover-row); }
.fleet-mini-label { display: block; overflow: hidden; color: var(--muted); font-size: 11px; text-overflow: ellipsis; white-space: nowrap; }
.fleet-mini b { display: block; margin-top: 4px; color: var(--ink); font: 700 20px/1.25 var(--mono); }
.fleet-mini.accent b { color: var(--orange); }
.fleet-mini small { display: block; margin-top: 3px; color: var(--muted); font-size: 9.5px; line-height: 1.35; }
.fleet-group-foot { margin-top: 10px; color: var(--muted); font-size: 10px; }
.fleet-usage { grid-column: 1 / -1; }
.fleet-usage .fleet-metrics { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.fleet-usage .fleet-mini { min-height: 68px; }

@media (max-width: 1120px) {
  .fleet-summary-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); row-gap: 16px; }
  .fleet-kpi:nth-child(4) { padding-left: 0; border-left: 0; }
}

@media (max-width: 820px) {
  .fleet-groups { grid-template-columns: 1fr; }
  .fleet-summary-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .fleet-kpi:nth-child(odd) { padding-left: 0; border-left: 0; }
  .fleet-kpi:nth-child(4) { padding-left: 18px; border-left: 1px solid var(--line); }
  .fleet-usage .fleet-metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 520px) {
  .fleet-summary { padding: 16px; }
  .fleet-summary-head { display: block; }
  .fleet-live { margin-top: 10px; }
  .fleet-kpi { padding-inline: 11px; }
  .fleet-metrics { grid-template-columns: 1fr 1fr; }
}

/* —— 舰队总览：资金经营区 —— */
.finance-panel-head { align-items: flex-start; }
.finance-panel-head .hint { margin-top: 3px; }
.finance-stats { margin: 4px 0 14px; }
.finance-details { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
.finance-block {
  padding: 14px 16px; border: 1px solid var(--line); border-radius: 12px;
  background: var(--card);
}
.finance-block h3 { margin-bottom: 8px; font-size: 13px; }
.finance-row {
  display: flex; align-items: center; justify-content: space-between; gap: 14px;
  padding: 7px 0; border-bottom: 1px solid var(--line); color: var(--muted); font-size: 12.5px;
}
.finance-row:last-child { border-bottom: 0; }
.finance-row b { color: var(--ink); font-family: var(--mono); font-weight: 600; }
.finance-row .channel-status { font-family: inherit; }
.finance-row .channel-name { display: block; font-family: inherit; font-weight: 600; }
.finance-row .channel-note { display: block; margin-top: 2px; color: var(--muted); font-size: 10.5px; }
.finance-block-overseas { border-color: color-mix(in srgb, var(--orange) 28%, var(--line)); }
.payment-channel-row {
  width: 100%; border: 0; border-bottom: 1px solid var(--line); border-radius: 0;
  background: transparent; text-align: left; font: inherit;
}
.payment-channel-row:last-of-type { border-bottom: 1px solid var(--line); }
.payment-channel-row:hover { background: var(--hover-row); }
.payment-channel-row .channel-status { display: flex; align-items: center; gap: 6px; }
.payment-channel-row .channel-arrow { color: var(--muted); font: 15px/1 var(--mono); }
.manual-transfer-entry { border-left: 2px solid var(--manual); padding-left: 9px; }
.manual-transfer-entry .channel-name, .manual-money { color: var(--manual) !important; }
.badge.manual { color: var(--manual); background: var(--manual-bg); }
.manual-transfer-row td { background: var(--manual-bg); }
.manual-transfer-row:hover td { background: var(--manual-bg); }
.manual-transfer-row td:first-child { box-shadow: inset 3px 0 0 var(--manual); }

/* —— 企业转账：图片预览、AI 识别与人工确认 —— */
.transfer-modal { width: min(820px, 95vw); max-height: 92vh; }
.transfer-upload-grid {
  display: grid; grid-template-columns: minmax(220px, 310px) minmax(0, 1fr);
  gap: 16px; padding-bottom: 16px; border-bottom: 1px solid var(--line);
}
.transfer-voucher-box {
  min-height: 165px; display: grid; place-items: center; overflow: hidden;
  border: 1px dashed var(--line-strong); border-radius: 12px; background: var(--card);
  color: var(--muted); font-size: 12px;
}
.transfer-voucher-box img { display: block; width: 100%; max-height: 240px; object-fit: contain; }
.transfer-upload-actions { display: flex; flex-direction: column; align-items: flex-start; gap: 9px; }
.transfer-upload-actions input[type="file"] { font-size: 12px; }
.transfer-upload-actions .hint { margin: 0; line-height: 1.55; }
.transfer-fields {
  display: grid; grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0 12px; margin-top: 16px;
}
.transfer-fields label { margin-bottom: 10px; }
.transfer-fields select { width: 100%; margin-top: 5px; }
.transfer-note-field { grid-column: 1 / -1; }
.transfer-recognition-result {
  margin: 4px 0 12px; padding: 9px 12px; border: 1px solid var(--manual);
  border-radius: 10px; color: var(--manual); background: var(--manual-bg); font-size: 12px;
}
.transfer-confirm {
  display: flex; align-items: flex-start; gap: 9px; margin: 4px 0 14px;
  padding: 10px 12px; border: 1px solid var(--line); border-radius: 10px;
}
.transfer-confirm input { width: auto; margin: 3px 0 0; }
.transfer-confirm span { color: var(--ink); }
.transfer-submit-row { display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.transfer-submit-row .hint { margin: 0; }

/* —— 支付配置中心：动态字段、回调地址与分层验证状态 —— */
.payment-modal { width: min(720px, 94vw); max-height: min(820px, 92vh); overflow: auto; }
.payment-modal .modal-head { align-items: flex-start; }
.payment-modal .modal-head .hint { margin: 2px 0 0; }
.payment-state {
  margin: 4px 0 14px; padding: 10px 12px; border: 1px solid var(--line);
  border-radius: 10px; color: var(--muted); background: var(--card); font-size: 12.5px;
}
.payment-state strong { color: var(--ink); }
/* 真实交易放行开关：与验证状态分开呈现，避免"填过 Key"被误当成可收款。 */
.payment-release {
  display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 12px;
  margin: 0 0 14px; padding: 10px 12px; border: 1px solid var(--line);
  border-radius: 10px; background: var(--card);
}
.payment-release-text b { font-size: 13px; color: var(--ink); }
.payment-release-text .hint { margin: 3px 0 0; }
.payment-callback { padding-bottom: 14px; margin-bottom: 14px; border-bottom: 1px solid var(--line); }
.payment-callback label { margin: 0 0 5px; }
.payment-copy-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 8px; }
.payment-copy-row input { font-family: var(--mono); font-size: 12px; }
.payment-fields { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px 12px; }
.payment-fields label { margin: 0; }
.payment-fields label:has(textarea) { grid-column: 1 / -1; }
.payment-fields textarea, .payment-fields select {
  width: 100%; margin-top: 5px; padding: 9px 12px; border: 1px solid var(--line);
  border-radius: 9px; color: var(--ink); background: var(--input-bg); font: inherit;
}
.payment-fields textarea { min-height: 104px; resize: vertical; font: 11.5px/1.5 var(--mono); }
.payment-fields textarea:focus, .payment-fields select:focus { outline: none; border-color: var(--orange); }
.payment-field-help { display: block; margin-top: 4px; color: var(--muted); font-size: 10.5px; line-height: 1.45; }
.payment-actions { display: flex; justify-content: flex-end; align-items: center; gap: 8px; margin-top: 16px; flex-wrap: wrap; }
.payment-actions a { text-decoration: none; margin-right: auto; }

@media (max-width: 680px) {
  .payment-fields { grid-template-columns: 1fr; }
  .payment-fields label:has(textarea) { grid-column: auto; }
  .payment-actions a { width: 100%; margin-right: 0; text-align: center; }
  .transfer-upload-grid, .transfer-fields { grid-template-columns: 1fr; }
  .transfer-note-field { grid-column: auto; }
  .transfer-submit-row { align-items: stretch; flex-direction: column; }
}

@media (max-width: 980px) {
  .finance-details { grid-template-columns: 1fr; }
}

/* —— 表格 —— */
.table-scroll { max-width: 100%; overflow-x: auto; }
.table-scroll .tbl { min-width: 760px; }
.tbl { width: 100%; border-collapse: collapse; font-size: 13px; }
.tbl th { text-align: left; color: var(--muted); font-weight: 500; font-size: 12px; padding: 7px 10px; border-bottom: 1px solid var(--line); white-space: nowrap; }
.tbl td { padding: 8px 10px; border-bottom: 1px solid var(--line); font-family: var(--mono); }
.tbl td.zh { font-family: inherit; }
.tbl tr:hover td { background: var(--hover-row); }
.admin-oem-table { min-width: 1380px !important; table-layout: fixed; }
.admin-oem-table .admin-oem-col-id { width: 44px; }
.admin-oem-table .admin-oem-col-email { width: 180px; }
.admin-oem-table .admin-oem-col-company { width: 185px; }
.admin-oem-table .admin-oem-col-hierarchy { width: 190px; }
.admin-oem-table .admin-oem-col-users { width: 82px; }
.admin-oem-table .admin-oem-col-downline { width: 92px; }
.admin-oem-table .admin-oem-col-status { width: 96px; }
.admin-oem-table .admin-oem-col-license { width: 108px; }
.admin-oem-table .admin-oem-col-membership { width: 128px; }
.admin-oem-table .admin-oem-col-partner { width: 150px; }
.admin-oem-table .admin-oem-col-created { width: 126px; }
.admin-oem-table .admin-oem-col-actions { width: 86px; }
.admin-oem-table tbody tr { height: 78px; }
.admin-oem-table td { vertical-align: middle; overflow: hidden; }
.admin-oem-table .admin-oem-primary,
.admin-oem-table .admin-oem-subline { display: block; min-width: 0; line-height: 1.45; }
.admin-oem-table .admin-oem-primary { font-weight: 600; white-space: nowrap; }
.admin-oem-table .admin-oem-subline { margin-top: 5px; color: var(--muted); font-size: 12px; white-space: nowrap; }
.admin-oem-table .admin-oem-ellipsis { overflow: hidden; text-overflow: ellipsis; }
.admin-oem-table .admin-oem-company {
  display: -webkit-box; overflow: hidden; line-height: 1.45;
  -webkit-box-orient: vertical; -webkit-line-clamp: 2;
}
.admin-oem-table .admin-oem-status,
.admin-oem-table .admin-oem-license,
.admin-oem-table .admin-oem-membership { white-space: nowrap; }
.admin-oem-table .admin-oem-member-policy { width: 112px; margin: 0; }
.admin-oem-table .admin-oem-member-policy.active {
  color: var(--green); border-color: var(--green); background: var(--badge-green-bg);
}
.admin-oem-table .admin-oem-actions { display: grid; justify-items: start; gap: 5px; }
.admin-oem-table .admin-oem-actions .small { width: 54px; margin: 0; }
.badge { display: inline-block; padding: 2px 9px; border-radius: 999px; font-size: 11.5px; font-family: inherit; white-space: nowrap; }
.badge.active { color: var(--green); background: var(--badge-green-bg); }
.badge.warning { color: var(--orange); background: var(--badge-orange-bg); }
.badge.offline, .badge.revoked, .badge.disabled, .badge.cancelled { color: var(--red); background: var(--badge-red-bg); }
.badge.needs_info, .badge.suspended { color: var(--orange); background: var(--badge-orange-bg); }
.badge.idle { color: var(--muted); background: var(--badge-idle-bg); }

/* —— OEM 实例卡 —— */
.cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 14px; }
.inst-card { border: 1px solid var(--line); border-radius: 12px; padding: 15px 17px; background: var(--card); }
.inst-card-button {
  width: 100%; color: var(--ink); text-align: left; font: inherit; cursor: pointer;
  transition: transform .16s ease, border-color .16s ease, box-shadow .16s ease;
}
.inst-card-button:hover, .inst-card-button:focus-visible {
  transform: translateY(-2px); border-color: var(--orange); outline: none;
  box-shadow: 0 10px 26px var(--bg-glow-a);
}
.inst-card-button.selected {
  border-color: var(--orange); background: var(--badge-orange-bg);
  box-shadow: 0 0 0 1px var(--orange);
}
.inst-card h3 { font-size: 15px; margin-bottom: 6px; font-family: var(--mono); }
.inst-card .row { display: flex; justify-content: space-between; font-size: 12.5px; color: var(--muted); padding: 2.5px 0; }
.inst-card .row b { color: var(--ink); font-family: var(--mono); font-weight: 500; }
.inst-card .row b.low { color: var(--red); }
.inst-card-open {
  display: flex; align-items: center; justify-content: space-between; margin-top: 10px;
  padding-top: 9px; border-top: 1px solid var(--line); color: var(--orange); font-size: 12px;
}
.inst-card-open::after { content: "→"; font: 15px var(--mono); }
.inst-card-button.selected .inst-card-open::after { content: "↓"; }
.empty { color: var(--muted); font-size: 13px; padding: 8px 0; }

/* OEM 节点详情属于首页正文的一部分，不使用遮罩和弹窗。实例较多时仍只展示
 * 当前选中节点，避免纵向堆叠多份心跳快照造成误读。 */
.oem-instance-detail {
  margin-top: 18px; padding: 20px; border: 1px solid var(--line);
  border-radius: 14px; background: var(--panel-soft);
}
.oem-instance-detail-head {
  display: flex; justify-content: space-between; align-items: flex-start;
  gap: 16px; margin-bottom: 14px;
}
.oem-instance-detail-head small {
  color: var(--orange); font: 11px var(--mono); letter-spacing: .08em;
}
.oem-instance-detail-head h3 { margin-top: 3px; font-size: 18px; }
.oem-instance-detail-head .hint { margin-top: 2px; }
.oem-instance-detail-source { margin: 16px 0 0; }
.oem-admin-recovery { margin-top: 18px; padding-top: 18px; border-top: 1px solid var(--line); }
.oem-admin-recovery-form { align-items: flex-end; }
.oem-admin-recovery-form label { min-width: 220px; }
.oem-admin-recovery-form input { width: min(300px, 100%); }
.oem-admin-recovery-result {
  display: flex; flex-wrap: wrap; align-items: center; gap: 9px; margin-top: 14px;
  padding: 13px; border: 1px solid var(--line); border-radius: 10px; background: var(--card);
}
.oem-admin-recovery-result p { flex-basis: 100%; margin: 0; font-size: 13px; }
.oem-admin-recovery-result a { color: var(--orange); font-weight: 650; overflow-wrap: anywhere; }
.oem-admin-recovery-result small { flex-basis: 100%; color: var(--muted); }

.oem-update-panel { max-width: 1120px; }
.oem-update-head { align-items: flex-end; gap: 24px; }
.oem-update-head > div:first-child { max-width: 720px; }
.oem-update-picker {
  display: grid; grid-template-columns: auto minmax(220px, 1fr) auto;
  align-items: center; gap: 9px; min-width: 430px;
}
.oem-update-picker label { color: var(--muted); font-size: 13px; }
.oem-update-picker select { min-width: 0; }
.oem-update-card {
  margin-top: 20px; border: 1px solid var(--line); border-radius: 16px;
  background: var(--card); overflow: hidden;
}
.oem-update-summary {
  display: grid; grid-template-columns: 1.5fr repeat(3, minmax(120px, 1fr));
  border-bottom: 1px solid var(--line);
}
.oem-update-summary > div { padding: 18px 20px; border-right: 1px solid var(--line); }
.oem-update-summary > div:last-child { border-right: 0; }
.oem-update-summary small { display: block; color: var(--muted); margin-bottom: 7px; }
.oem-update-summary b { font-size: 16px; }
.oem-update-summary b + span { display: block; margin-top: 7px; }
.oem-update-release { padding: 22px 24px 18px; }
.oem-update-release-title { display: flex; align-items: flex-start; justify-content: space-between; gap: 18px; }
.oem-update-release-title > span { flex: none; }
.oem-update-release-title small { color: var(--muted); }
.oem-update-release-title h3 { margin: 4px 0 0; font-size: 18px; }
.oem-update-release .release-notes { margin: 15px 0 0; line-height: 1.75; }
.oem-update-detail { padding: 0 24px 18px; color: var(--muted); font-size: 13px; }
.oem-update-detail:empty { display: none; }
.oem-update-actions {
  display: flex; align-items: center; justify-content: space-between; gap: 20px;
  padding: 16px 24px; border-top: 1px solid var(--line);
  background: var(--hover-row);
}
.oem-update-actions .hint { margin: 0; max-width: 760px; }
.oem-update-actions button { flex: 0 0 auto; }

/* —— OEM 下属目录：清单与邀请区分开，让层级关系可以直接核对 —— */
.network-directory-panel { margin-top: 16px; }
.network-total {
  flex: none; padding: 5px 11px; border: 1px solid var(--line); border-radius: 999px;
  color: var(--muted); background: var(--card); font: 11.5px var(--mono);
}
.network-list-block { margin-top: 16px; padding-top: 16px; border-top: 1px solid var(--line); }
.network-list-head {
  display: flex; align-items: flex-start; justify-content: space-between; gap: 14px;
  margin-bottom: 8px;
}
.network-list-head h3 { font-size: 14px; }
.network-list-head .hint { margin-top: 1px; }
.network-table { min-width: 900px !important; }
.network-user-table { min-width: 760px !important; }
.network-company { display: flex; align-items: center; gap: 8px; min-width: 150px; }
.network-company b { font-weight: 600; }
.network-status-dot {
  width: 7px; height: 7px; flex: none; border-radius: 50%; background: var(--muted);
}
.network-status-dot.active { background: var(--green); box-shadow: 0 0 0 3px var(--badge-green-bg); }
.network-status-dot.disabled { background: var(--red); box-shadow: 0 0 0 3px var(--badge-red-bg); }
.network-relation { display: flex; align-items: center; gap: 7px; min-width: 150px; }
.network-relation small, .network-cell-note { color: var(--muted); font-size: 10.5px; }
.network-empty { padding: 22px 10px !important; text-align: center; }
.network-limit-note { margin-top: 12px; color: var(--orange); }

@media (max-width: 620px) {
  .network-directory-panel .panel-head, .network-list-head { align-items: stretch; flex-direction: column; }
  .network-total, .network-list-head .badge { align-self: flex-start; }
}

/* —— 购买与充值 —— */
.admin-page[data-oem-view="commerce"] { min-width: 0; }
.shop-row { display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 12px 0; border-bottom: 1px solid var(--line); flex-wrap: wrap; }
.shop-row:last-of-type { border-bottom: 0; }
.shop-info { min-width: 0; }
.shop-info b { display: block; font-size: 14px; }
.shop-info small {
  display: block; overflow-wrap: anywhere; color: var(--muted); font-size: 12.5px;
}
.shop-price { color: var(--orange); font-family: var(--mono); font-size: 17px; font-weight: 700; margin-right: 10px; }
.shop-actions { display: inline-flex; max-width: 100%; align-items: center; gap: 8px; flex-wrap: wrap; }
select { padding: 8px 10px; border-radius: 9px; color: var(--ink); background: var(--input-bg); border: 1px solid var(--line); font: inherit; }
select:focus { outline: none; border-color: var(--orange); }

/* —— 签发结果 —— */
.issued { border: 1px solid var(--orange); background: var(--issued-bg); border-radius: 10px; padding: 12px 15px; margin: 10px 0; font-size: 13px; }
.issued pre { font-family: var(--mono); margin-top: 7px; user-select: all; line-height: 1.9; }

/* —— 通用对话框（替代浏览器 confirm/prompt） —— */
.dlg {
  width: 400px; max-width: 92vw;
  background: var(--panel-strong); border: 1px solid var(--line);
  border-radius: 14px; padding: 22px 24px 18px; backdrop-filter: blur(10px);
  box-shadow: 0 24px 70px rgba(0, 0, 0, .28);
}
.dlg.has-detail { width: 560px; }
.dlg p { font-size: 14px; line-height: 1.7; white-space: pre-line; }
.dlg-preview {
  display: block;
  max-width: 100%;
  max-height: min(52vh, 520px);
  margin: 14px auto 0;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: #fff;
  object-fit: contain;
}
.dlg-preview[hidden] { display: none; }
.dlg-detail {
  max-height: min(52vh, 520px);
  margin: 14px 0 0;
  padding: 12px;
  overflow: auto;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--input-bg);
  font: 12px/1.65 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  white-space: pre-wrap;
  word-break: break-word;
}
.dlg input { margin-top: 14px; }
.dlg-actions { display: flex; justify-content: flex-end; gap: 10px; margin-top: 18px; }
/* 危险动作（吊销/停用/删除）的确认按钮：红渐变区别于常规橙 */
.primary.danger { background: linear-gradient(135deg, #ff8a76, #d5493a); }
.primary.danger:hover { box-shadow: 0 8px 22px rgba(213, 73, 58, .32); }

/* —— 卡片式选择（替代原生下拉框） —— */
.shop-col { padding: 12px 0; border-bottom: 1px solid var(--line); }
.shop-col:last-of-type { border-bottom: 0; }
.topup-config { margin-top: 10px; }
.pick-label { font-size: 12px; color: var(--muted); margin: 10px 0 6px; }
.pick-group { display: flex; gap: 8px; flex-wrap: wrap; }
.pick {
  display: flex; flex-direction: column; align-items: flex-start; gap: 2px;
  padding: 9px 15px; border-radius: 10px; border: 1px solid var(--line);
  background: var(--input-bg); color: var(--ink); font: inherit; font-size: 13px;
  cursor: pointer; transition: border-color .15s ease, background .15s ease;
}
.pick small { color: var(--muted); font-size: 11.5px; font-family: var(--mono); }
.pick:hover { border-color: var(--line-strong); }
.pick.on { border-color: var(--orange); background: var(--badge-orange-bg); color: var(--orange); }
.pick.on small { color: var(--orange); }

/* OEM 购买与充值页在手机上按“信息 → 选择 → 动作”单列阅读。这里单独约束
 * 表单和按钮宽度，避免通用 inline-form 的桌面最小宽度撑破 320px 竖屏。 */
@media (max-width: 620px) {
  .admin-page[data-oem-view="commerce"] > .panel { padding: 16px 14px; }
  .admin-page[data-oem-view="commerce"] .panel-head { align-items: flex-start; }
  .shop-row { align-items: stretch; flex-direction: column; }
  .shop-actions {
    display: grid; width: 100%; grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .shop-actions .shop-price { grid-column: 1 / -1; margin-right: 0; }
  .shop-actions button { width: 100%; min-width: 0; }
  .pick-group { display: grid; grid-template-columns: minmax(0, 1fr); }
  .pick { width: 100%; min-width: 0; overflow-wrap: anywhere; }
  .topup-transfer-form, .withdraw-form { padding: 14px 12px; }
  .topup-transfer-form .inline-form {
    display: grid; grid-template-columns: minmax(0, 1fr); gap: 12px;
  }
  .topup-transfer-form .inline-form label { min-width: 0; margin-bottom: 0; }
  .topup-transfer-form .inline-form input,
  .topup-transfer-form .inline-form button {
    width: 100%; min-width: 0; max-width: 100%;
  }
  .oem-income-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .oem-income-stats .stat { min-width: 0; padding: 11px 12px; }
  .oem-income-stats .stat b { overflow-wrap: anywhere; font-size: 18px; }
  .reseller-terms { grid-template-columns: minmax(0, 1fr); }
  .income-history-grid > div { min-width: 0; }
  .commerce-orders-scroll { margin-inline: -2px; }
  #pay-pending { overflow-wrap: anywhere; }
}

@media (max-width: 360px) {
  .shop-actions { grid-template-columns: minmax(0, 1fr); }
  .shop-actions .shop-price { grid-column: auto; }
}

/* —— 客户详情弹窗 —— */
.mask { position: fixed; inset: 0; background: rgba(10, 8, 7, .48); display: grid; place-items: center; z-index: 8; }
.modal {
  width: 680px; max-width: 94vw; max-height: 86vh; overflow: auto;
  background: var(--panel-strong); border: 1px solid var(--line);
  border-radius: 16px; padding: 22px 24px; backdrop-filter: blur(10px);
}
.modal-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 14px; }
.modal-head b { font-size: 16px; }
.modal-sec { margin-top: 16px; padding-top: 14px; border-top: 1px solid var(--line); }
.modal-sec h3 { font-size: 13.5px; margin-bottom: 8px; color: var(--muted); font-weight: 600; }
.topup-modal { width: min(700px, 94vw); }
.topup-balance-card {
  display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 9px;
  margin-bottom: 16px;
}
.topup-balance-card span {
  min-width: 0; padding: 11px 12px; border: 1px solid var(--line); border-radius: 10px;
  color: var(--muted); background: var(--card); font-size: 11.5px;
}
.topup-balance-card b { display: block; margin-top: 3px; color: var(--ink); font: 600 14px var(--mono); overflow-wrap: anywhere; }
.topup-balance-card span:last-child { border-color: var(--orange); background: var(--badge-orange-bg); }
.topup-presets { margin-bottom: 14px; }
.topup-presets .pick { flex: 1 1 130px; }
.topup-exact-label input { font: 600 16px var(--mono); }
.topup-submit-row { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-top: 18px; }
.topup-submit-row .hint { max-width: 430px; }
.finance-ledger-head { align-items: flex-end; }
.finance-ledger-filter { width: 160px; margin: 0; }
.finance-ledger-filter select { width: 100%; margin-top: 5px; }
.finance-ledger-summary { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 12px; }
.finance-ledger-summary span { padding: 6px 10px; border: 1px solid var(--line); border-radius: 999px; color: var(--muted); font-size: 12px; }
.finance-ledger-summary b { color: var(--ink); font-family: var(--mono); }
.finance-token { white-space: nowrap; font-family: var(--mono); font-weight: 600; }
.finance-no-payment { color: var(--muted); font-size: 12px; }
.request-box { margin-top: 18px; padding-top: 18px; border-top: 1px solid var(--line); }
.entitlement-form {
  display: grid; grid-template-columns: minmax(180px, .8fr) minmax(220px, 1fr) minmax(260px, 1.4fr) auto;
  align-items: end; gap: 12px; margin: 14px 0 18px;
}
.entitlement-form label { margin: 0; min-width: 0; }
.entitlement-form .entitlement-note { min-width: 0; }
.entitlement-form button { min-height: 42px; white-space: nowrap; }
#form-lifetime-request { grid-template-columns: minmax(220px, .8fr) minmax(300px, 1.5fr) auto; }
#oem-lifetime-requests td:nth-child(2), #oem-token-purchase-requests td:nth-child(2),
#admin-lifetime-requests td:nth-child(3), #admin-token-purchase-requests td:nth-child(3) {
  max-width: 250px; overflow-wrap: anywhere;
}
@media (max-width: 620px) {
  .topup-balance-card { grid-template-columns: minmax(0, 1fr); }
  .topup-submit-row, .finance-ledger-head { align-items: stretch; flex-direction: column; }
  .topup-submit-row .primary, .finance-ledger-filter { width: 100%; }
  .entitlement-form, #form-lifetime-request { grid-template-columns: minmax(0, 1fr); }
  .entitlement-form button { width: 100%; }
  .token-finance-units { grid-template-columns: 1fr; }
}
.kv { display: grid; grid-template-columns: 96px 1fr 96px 1fr; gap: 6px 10px; font-size: 13px; }
.kv small { color: var(--muted); }
.kv b { font-weight: 500; word-break: break-all; }
.instance-detail-modal { width: min(860px, 94vw); }
.instance-detail-state {
  display: flex; align-items: center; gap: 9px; margin-bottom: 14px;
  padding: 10px 12px; border: 1px solid var(--line); border-radius: 10px;
  background: var(--card); color: var(--muted); font-size: 12px;
}
.instance-stat-grid {
  display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 9px;
}
.instance-stat {
  min-width: 0; padding: 10px 12px; border: 1px solid var(--line);
  border-radius: 10px; background: var(--card);
}
.instance-stat small { display: block; color: var(--muted); font-size: 11px; }
.instance-stat b {
  display: block; margin-top: 4px; overflow-wrap: anywhere;
  color: var(--ink); font: 600 14px/1.35 var(--mono);
}
.instance-stat-note {
  grid-column: 1 / -1;
  margin: 0;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.6;
}
.instance-metric-source {
  margin: 10px 1px 0;
  color: var(--muted);
  font-size: 11.5px;
  line-height: 1.65;
}
.instance-detail-actions {
  display: flex; justify-content: space-between; align-items: center;
  gap: 14px; margin-top: 18px;
}
.instance-detail-actions .hint { margin: 0; }
.file-row { display: flex; justify-content: space-between; align-items: center; gap: 10px; padding: 7px 0; border-bottom: 1px solid var(--line); font-size: 13px; }
.file-row:last-child { border-bottom: 0; }
.file-row .fname { flex: 1; word-break: break-all; }
.file-row small { color: var(--muted); white-space: nowrap; }
textarea { width: 100%; font: inherit; color: var(--ink); background: var(--input-bg); border: 1px solid var(--line); border-radius: 9px; padding: 9px 12px; }
textarea:focus { outline: none; border-color: var(--orange); }

/* —— 平台安全：具名管理员与全局审计 —— */
.emergency-login {
  margin-top: 14px; padding-top: 12px; border-top: 1px solid var(--line);
}
.emergency-login summary { color: var(--muted); font-size: 12px; cursor: pointer; }
.emergency-login[open] summary { margin-bottom: 10px; }
.passkey-login { width: 100%; margin-top: 10px; }
.passkey-list { display: grid; gap: 10px; }
.passkey-item {
  display: flex; align-items: center; justify-content: space-between; gap: 14px;
  padding: 13px 15px; border: 1px solid var(--line); border-radius: 11px;
  background: var(--card);
}
.passkey-item div { display: grid; gap: 4px; }
.passkey-item span { color: var(--muted); font-size: 12px; }
.security-identity {
  display: flex; align-items: baseline; gap: 14px; padding: 14px 16px;
  border: 1px solid var(--line); border-radius: 11px; background: var(--card);
}
.security-identity b { font-size: 16px; }
.security-identity span { color: var(--muted); font-size: 12px; }
.admin-create-form {
  display: grid; grid-template-columns: 1fr 1.4fr 1fr auto;
  align-items: end; gap: 12px; margin-bottom: 18px;
}
.admin-create-form label { margin: 0; }
.admin-create-form button { min-height: 42px; }
.audit-filter-row {
  display: grid; grid-template-columns: minmax(180px, 1fr) 220px auto;
  gap: 10px; margin-bottom: 14px;
}
#admin-audit td { max-width: 260px; overflow-wrap: anywhere; }
.danger-text { color: var(--red); }

@media (max-width: 620px) {
  .platform-feature-row { align-items: flex-start; flex-direction: column; gap: 14px; }
  .platform-policy-form { grid-template-columns: 1fr; }
  .platform-policy-submit { align-items: stretch; flex-direction: column; }
  .ai-pricing-global { grid-template-columns: 1fr; }
  .ai-pricing-table-head { display: none; }
  .income-history-grid { grid-template-columns: 1fr; }
  .withdraw-grid { grid-template-columns: 1fr; }
  .withdraw-amount, .withdraw-method, .withdraw-recipient,
  .withdraw-account, .withdraw-bank, .withdraw-note, .withdraw-submit {
    grid-column: auto;
  }
  .instance-detail-modal .kv, .oem-instance-detail .kv {
    grid-template-columns: 88px minmax(0, 1fr);
  }
  .instance-stat-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .instance-detail-actions { align-items: stretch; flex-direction: column; }
  .oem-instance-detail { padding: 16px 14px; }
  .oem-instance-detail-head { align-items: stretch; flex-direction: column; }
  .oem-instance-detail-head button { align-self: flex-start; }
  .oem-update-head { align-items: stretch; flex-direction: column; }
  .oem-update-picker { grid-template-columns: 1fr; min-width: 0; width: 100%; }
  .oem-update-summary { grid-template-columns: 1fr 1fr; }
  .oem-update-summary > div:nth-child(2) { border-right: 0; }
  .oem-update-summary > div { border-bottom: 1px solid var(--line); }
  .oem-update-summary > div:nth-last-child(-n+2) { border-bottom: 0; }
  .oem-update-release-title, .oem-update-actions { align-items: stretch; flex-direction: column; }
  .oem-update-actions button { width: 100%; }
  .security-identity { align-items: flex-start; flex-direction: column; gap: 5px; }
  .admin-create-form, .audit-filter-row { grid-template-columns: 1fr; }
}

/* —— toast —— */
.toast {
  position: fixed; left: 50%; bottom: 34px; transform: translateX(-50%);
  padding: 10px 20px; border-radius: 10px; background: var(--toast-bg);
  border: 1px solid var(--line); font-size: 13px; z-index: 9;
  box-shadow: 0 10px 32px rgba(0, 0, 0, .18);
}
.toast.bad { border-color: var(--red); color: var(--red); }

/* —— 官方公告 Agent —— */
.announcement-center { display: grid; gap: 18px; }
.official-agent-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.official-agent-card,
.official-announcement-card {
  border: 1px solid var(--line); border-radius: 14px; background: var(--panel);
  padding: 16px; display: grid; gap: 10px;
}
.official-agent-card header,
.official-announcement-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
.official-agent-card p,
.official-announcement-card p { margin: 0; }
.official-agent-meta { color: var(--muted); font-size: 12px; line-height: 1.6; }
.official-announcement-create { display: grid; grid-template-columns: minmax(220px, .4fr) minmax(0, 1fr); gap: 12px; }
.official-announcement-create label,
.official-announcement-editor label { display: grid; gap: 6px; color: var(--muted); font-size: 12px; }
.official-announcement-create textarea { min-height: 118px; }
.official-announcement-create .release-submit { grid-column: 1 / -1; }
.official-announcement-list { display: grid; gap: 14px; }
.official-announcement-editor { display: grid; grid-template-columns: 180px minmax(0, 1fr); gap: 10px; }
.official-announcement-editor .wide { grid-column: 1 / -1; }
.official-announcement-editor textarea { min-height: 104px; resize: vertical; }
.official-announcement-actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 8px; }
.official-announcement-delivery { padding: 8px 10px; border-radius: 9px; background: var(--hover-row); color: var(--muted); font-size: 12px; }
@media (max-width: 820px) {
  .official-agent-grid,
  .official-announcement-create,
  .official-announcement-editor { grid-template-columns: 1fr; }
  .official-announcement-create .release-submit,
  .official-announcement-editor .wide { grid-column: auto; }
}

/* —— 侧栏分组导航 ——
   菜单项过多时（OEM 门户曾平铺 14 项）难以扫读：按业务域折叠成几组，
   默认只展开当前页所在组。组头沿用菜单项的栅格，保证图标与文字对齐。 */
.nav-group { display: block; }
.nav-group-head {
  width: 100%; display: grid; grid-template-columns: 26px 1fr auto auto;
  align-items: center; gap: 8px; min-height: 42px; padding: 7px 10px;
  border: 1px solid transparent; border-radius: 10px; background: transparent;
  color: var(--muted); text-align: left; font: inherit; cursor: pointer;
  transition: .16s ease;
}
.nav-group-head:hover { color: var(--ink); background: var(--hover-row); border-color: var(--line); }
/* 组内有当前页时高亮组头，收起状态下也能看出自己在哪一块 */
.nav-group.has-active > .nav-group-head { color: var(--ink); font-weight: 600; }
.nav-group-caret {
  font: 13px/1 var(--mono); font-style: normal; color: var(--muted);
  transition: transform .16s ease;
}
.nav-group-head[aria-expanded="true"] .nav-group-caret { transform: rotate(90deg); }
/* 收起时把组内待办数汇总到组头，避免折叠后看不到有事要处理 */
.nav-group-count {
  min-width: 23px; padding: 1px 7px; border-radius: 999px; color: var(--muted);
  background: var(--badge-idle-bg); font: normal 10.5px/1.7 var(--mono);
  text-align: center; font-style: normal;
}
.nav-group-body { display: grid; gap: 2px; margin: 2px 0 2px 12px; }
/* 子项左侧留出层级缩进线，视觉上从属于组头。
   子项不再重复显示图标：组头已标明类别，省下的 34px 留给文字，
   否则「节点系统配置」「会员与 Token」这类标签会在 198px 侧栏里折行。 */
.nav-group-body > .admin-menu-item {
  border-left: 1px solid var(--line); border-radius: 0 10px 10px 0;
  padding-left: 10px; grid-template-columns: 1fr auto;
}
.nav-group-body > .admin-menu-item > .admin-menu-icon { display: none; }
.nav-group-body > .admin-menu-item.on { border-left-color: var(--orange); }

/* 节点应用接入：把 MCN、MuuZi 与通用 Connect 收拢成同一条四段门禁。 */
.connect-hub-panel { overflow: hidden; }
.connect-gate-guide {
  display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px;
  margin: 18px 0 20px; padding: 0; list-style: none;
}
.connect-gate-guide li {
  position: relative; display: flex; align-items: center; gap: 10px;
  min-width: 0; padding: 12px; border: 1px solid var(--line); border-radius: 13px;
  background: var(--card); color: var(--ink);
}
.connect-gate-guide li:not(:last-child)::after {
  content: "›"; position: absolute; right: -9px; z-index: 1; color: var(--muted);
  font: 18px/1 var(--mono); background: var(--panel); padding: 2px;
}
.connect-gate-guide li > b {
  display: grid; place-items: center; flex: 0 0 28px; width: 28px; height: 28px;
  border-radius: 9px; background: var(--ink); color: var(--bg); font: 700 12px/1 var(--mono);
}
.connect-gate-guide span { display: grid; min-width: 0; gap: 2px; }
.connect-gate-guide strong { font-size: 13px; }
.connect-gate-guide small { overflow: hidden; color: var(--muted); font-size: 11px; text-overflow: ellipsis; white-space: nowrap; }
.connect-summary-grid {
  display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px;
}
.connect-summary-card {
  display: grid; gap: 12px; min-width: 0; padding: 16px;
  border: 1px solid var(--line); border-radius: 15px; background: var(--panel);
}
.connect-summary-head, .connect-summary-stats { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.connect-summary-head > div { min-width: 0; }
.connect-summary-head h3 { margin: 0; font-size: 15px; }
.connect-summary-head p { margin: 3px 0 0; overflow: hidden; color: var(--muted); font: 11px/1.4 var(--mono); text-overflow: ellipsis; white-space: nowrap; }
.connect-summary-icon {
  display: grid; place-items: center; flex: 0 0 38px; width: 38px; height: 38px;
  border-radius: 12px; background: var(--card); color: var(--ink); font-weight: 800;
}
.connect-summary-icon.mcn { background: var(--badge-orange-bg); color: var(--orange); }
.connect-summary-icon.muuzi { background: var(--manual-bg); color: var(--manual); }
.connect-summary-stats { justify-content: flex-start; flex-wrap: wrap; }
.connect-summary-stats span { color: var(--muted); font-size: 11px; }
.connect-summary-stats b { color: var(--ink); font: 700 12px/1 var(--mono); }
.connect-summary-card .ghost { justify-self: start; }
.connect-node-gates { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 6px; }
.connect-node-gate {
  padding: 3px 7px; border: 1px solid var(--line); border-radius: 999px;
  background: var(--card); color: var(--muted); font-size: 10.5px; white-space: nowrap;
}
.connect-node-gate.done { border-color: var(--green); background: var(--badge-green-bg); color: var(--green); }
.connect-node-gate.wait { border-color: var(--orange); background: var(--badge-orange-bg); color: var(--orange); }
.connect-node-panel {
  overflow: hidden; border: 1px solid var(--line); border-radius: 13px; background: var(--card);
}
.connect-node-panel > summary {
  display: flex; align-items: center; gap: 9px; padding: 13px 15px;
  color: var(--ink); cursor: pointer; list-style: none;
}
.connect-node-panel > summary::-webkit-details-marker { display: none; }
.connect-node-panel > summary::before {
  content: "›"; color: var(--muted); font: 700 17px/1 var(--mono);
  transition: transform .16s ease;
}
.connect-node-panel[open] > summary::before { transform: rotate(90deg); }
.connect-node-panel > summary b { font-size: 13.5px; }
.connect-node-panel > summary span { margin-left: auto; color: var(--muted); font-size: 11.5px; }
.connect-task-list { display: grid; gap: 10px; }
.connect-task-row {
  display: flex; align-items: center; gap: 12px; min-width: 0; padding: 13px 14px;
  border: 1px solid var(--line); border-radius: 14px; background: var(--card);
}
.connect-task-icon {
  display: inline-flex; align-items: center; justify-content: center; width: 32px; height: 32px;
  flex: 0 0 32px; border-radius: 10px; background: var(--badge-orange-bg); color: var(--orange); font-weight: 800;
}
.connect-task-row > div { flex: 1; min-width: 0; }
.connect-task-row > div b, .connect-task-row > div small { display: block; }
.connect-task-row > div small { margin-top: 4px; color: var(--muted); }
.connect-task-row > .badge { flex: 0 0 auto; }
.connect-task-row > button { flex: 0 0 auto; }
.connect-node-list { display: grid; gap: 10px; padding: 12px; border-top: 1px solid var(--line); }
.connect-register-panel {
  margin-bottom: 14px; border: 1px solid var(--line); border-radius: 13px; background: var(--card);
}
.connect-register-panel > summary { padding: 13px 15px; color: var(--ink); font-weight: 650; cursor: pointer; }
.connect-register-panel[open] > summary { border-bottom: 1px solid var(--line); }
.connect-register-panel > .oem-system-form { padding: 15px; }

@media (max-width: 900px) {
  .connect-gate-guide { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .connect-gate-guide li::after { display: none; }
  .connect-summary-grid { grid-template-columns: 1fr; }
}

@media (max-width: 560px) {
  .connect-gate-guide { grid-template-columns: 1fr; }
  .connect-node-panel > summary { align-items: flex-start; flex-wrap: wrap; }
  .connect-node-panel > summary span { width: 100%; margin-left: 25px; }
  .connect-task-row { align-items: flex-start; flex-wrap: wrap; }
  .connect-task-row > button { margin-left: 44px; }
}

.connect-access-card { margin: 0 0 20px; padding: 16px; border: 1px solid var(--line, #e6ded5); border-radius: 12px; }
.connect-node-entry > .platform-policy-check { margin-bottom: 8px; }
.connect-access-card dl { margin: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.connect-access-card dt { font-weight: 650; }
.connect-access-card dd { margin: 4px 0 0; font-size: 13px; opacity: .8; }
.connect-access-card input { display: block; width: 100%; box-sizing: border-box; margin-top: 6px; }
.connect-access-actions { display: flex; align-items: center; flex-wrap: wrap; gap: 12px; margin-top: 12px; }
@media (max-width: 680px) { .connect-access-card dl { grid-template-columns: 1fr; } }

/* Tutorial reading layout stays inside the existing OEM shell. */
.oem-tutorial-detail { width: 100%; padding: clamp(22px, 3vw, 44px); min-width: 0; font-size: 15px; line-height: 1.9; overflow-wrap: anywhere; }
.oem-tutorial-detail > a:first-child { display: inline-flex; align-items: center; min-height: 36px; margin-bottom: 24px; padding: 4px 12px; border: 1px solid var(--line); border-radius: 8px; color: var(--muted); font-size: 13px; text-decoration: none; }
.oem-tutorial-detail > .eyebrow { margin: 0 0 12px; color: var(--orange); font-size: 11px; font-weight: 600; letter-spacing: .12em; }
.oem-tutorial-detail > h2 { margin: 0 0 16px; font-size: clamp(23px, 2.2vw, 30px); line-height: 1.5; letter-spacing: -.02em; }
.oem-tutorial-detail > h2 + p { margin: 0 0 28px; color: var(--muted); font-size: 15px; }
.oem-tutorial-detail h3 { margin: 32px 0 12px; font-size: 17px; }
.oem-tutorial-detail > ol { margin: 28px 0; padding-left: 30px; }
.oem-tutorial-detail > ol > li { margin: 0 0 14px; padding: 14px 18px; border: 1px solid var(--line); border-radius: 12px; background: var(--card); }
.oem-tutorial-detail > ol > li::marker { color: var(--orange); font-weight: 700; font-variant-numeric: tabular-nums; }
.oem-tutorial-detail > ol > li > strong:first-child { display: block; margin-bottom: 4px; font-size: 16px; }
.oem-tutorial-detail ul { padding-left: 24px; }
.oem-tutorial-detail ul > li { margin: 10px 0; }
.oem-tutorial-detail .meta { margin: 24px 0; color: var(--muted); font-size: 13px; }
.oem-tutorial-detail .note { margin: 28px 0 20px; padding: 18px 22px; border-left: 3px solid var(--orange); border-radius: 0 10px 10px 0; background: var(--badge-orange-bg); font-size: 14px; }
.oem-tutorial-detail .actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 32px; padding-top: 24px; border-top: 1px solid var(--line); }
.oem-tutorial-detail .actions a { display: inline-flex; align-items: center; justify-content: center; min-height: 42px; padding: 8px 16px; border: 1px solid var(--line); border-radius: 9px; color: var(--ink); font-size: 14px; text-decoration: none; }
.oem-tutorial-detail .actions a:first-child { border-color: var(--orange); background: var(--badge-orange-bg); color: var(--orange); font-weight: 600; }
.oem-tutorial-detail a { color: var(--orange); text-underline-offset: 4px; }
.oem-tutorial-detail a:hover { color: var(--orange-deep); }
.oem-tutorial-detail a:focus-visible { outline: 2px solid var(--orange); outline-offset: 4px; }
.oem-tutorial-detail pre { margin: 20px 0; padding: 20px; white-space: pre-wrap; overflow-wrap: anywhere; background: var(--card); border: 1px solid var(--line); border-radius: 12px; font-size: 13px; line-height: 1.8; }
.oem-tutorial-detail > section { margin-top: 28px; padding-top: 24px; border-top: 1px solid var(--line); }
.oem-tutorial-detail > section h2 { margin: 0 0 16px; font-size: 20px; }
.oem-shell:has([data-oem-view="guide"]:not([hidden])) #btn-oem-refresh { display: none; }
@media (max-width: 680px) {
  .oem-tutorial-detail { padding: 22px 18px; font-size: 14px; }
  .oem-tutorial-detail > ol { padding-left: 22px; }
  .oem-tutorial-detail > ol > li { padding: 12px; }
  .oem-tutorial-detail > ol > li > strong:first-child { font-size: 15px; }
  .oem-tutorial-detail .actions a { flex: 1 1 100%; }
}

/* Shared OEM/superadmin website choice and its deployment guide. */
.website-entry-panel h3 { margin-bottom: 12px; overflow-wrap: anywhere; }
.website-entry-panel [data-status] { margin-bottom: 20px; color: var(--muted); line-height: 1.7; }
.website-entry-panel select { display: block; width: 100%; margin-top: 6px; }
.website-entry-panel .actions { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; margin-top: 18px; }
.website-entry-panel a, .website-deployment-guide a { color: var(--orange); text-underline-offset: 3px; }
.website-entry-panel [data-links] { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 20px; }
.website-entry-panel [data-error] { color: var(--red); margin-top: 12px; }
.website-deployment-guide { max-width: 900px; margin: 40px auto; padding: 24px; line-height: 1.8; }
.website-deployment-guide h1, .website-deployment-guide h2, .website-deployment-guide h3 { margin: 24px 0 12px; }
.website-deployment-guide ol, .website-deployment-guide ul { padding-left: 24px; }
.website-deployment-guide li { margin-bottom: 8px; }
.website-deployment-guide pre { overflow: auto; padding: 20px; margin: 16px 0; background: var(--panel); border: 1px solid var(--line); border-radius: 12px; }

.app-workspace-dialog { width: min(760px, calc(100vw - 32px)); max-height: 90vh; margin: auto; padding: 24px; color: var(--ink); background: var(--panel-strong); border: 1px solid var(--line); border-radius: 18px; overflow: auto; }
.app-workspace-dialog::backdrop { background: rgba(0,0,0,.55); }
.app-workspace-dialog header, .app-workspace-dialog nav, .app-workspace-dialog .actions { display: flex; flex-wrap: wrap; gap: 12px; align-items: center; margin-bottom: 18px; }
.app-workspace-dialog header { justify-content: space-between; }
.app-workspace-dialog h2 { font-size: 18px; overflow-wrap: anywhere; }
.app-workspace-dialog a { color: var(--orange); }
.app-workspace-dialog p { line-height: 1.8; margin: 12px 0; overflow-wrap: anywhere; }
.app-workspace-dialog [data-fields] { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(280px,100%),1fr)); gap: 12px; }
.app-workspace-dialog [role=alert] { color: var(--red); }

/* Application integration: node first, one focused workbench, progressive setup. */
.connect-page, .connect-admin-page { min-width: 0; }
.connect-intro { background: linear-gradient(125deg, var(--panel-strong), var(--panel)); }
.connect-intro h2 { font-size: clamp(22px, 2.2vw, 30px); letter-spacing: -.04em; }
.connect-toolbar { display: flex; align-items: center; flex-wrap: wrap; gap: 12px; padding: 20px 0; border-bottom: 1px solid var(--line); }
.connect-toolbar label { margin: 0; font-weight: 600; }
.connect-toolbar select { width: min(380px, 100%); }
.connect-intro .connect-gate-guide { grid-template-columns: repeat(3, minmax(0, 1fr)); margin: 20px 0 0; }
.connect-app-card { border: 1px solid var(--line); border-radius: 16px; overflow: hidden; background: var(--panel-strong); }
.connect-app-card > summary { list-style: none; display: flex; align-items: center; gap: 16px; cursor: pointer; padding: 22px; }
.connect-app-card > summary::-webkit-details-marker { display: none; }
.connect-app-card > summary::after { content: '+'; color: var(--muted); font-size: 22px; margin-left: 8px; }
.connect-app-card[open] > summary::after { content: '−'; }
.connect-app-card[open] > summary { border-bottom: 1px solid var(--line); }
.connect-app-mark { flex: 0 0 46px; height: 46px; border: 1px solid var(--line); border-radius: 14px; display: grid; place-items: center; font-size: 21px; color: var(--orange); background: var(--panel); }
.connect-app-copy { display: grid; gap: 6px; min-width: 0; flex: 1; }
.connect-app-copy strong { font-size: 17px; }
.connect-app-copy small { color: var(--muted); line-height: 1.6; }
.connect-app-body { padding: 0 22px 22px; }
.connect-app-body > h3 { font-size: 15px; margin-top: 24px; }
.connect-workspace-entry { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 18px; border-radius: 12px; background: var(--panel); border: 1px solid var(--line); }
.connect-workspace-entry h3 { margin: 0; font-size: 15px; }
.connect-workspace-entry p { margin: 6px 0 0; }
.connect-secondary { border: 1px solid var(--line); border-radius: 12px; padding: 16px; margin-top: 16px; }
.connect-secondary > summary { cursor: pointer; font-weight: 600; font-size: 14px; }
.connect-secondary > summary span { font-weight: 400; color: var(--muted); font-size: 12px; margin-left: 14px; }
.connect-secondary[open] > summary { margin-bottom: 18px; }
.connect-secondary .oem-system-form { margin-top: 16px; }
.connect-secondary.panel { padding: 20px 24px; }
.connect-footer { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 12px; margin: 0 4px 24px; }
.connect-app-body .connect-access-card { padding: 0; border: 0; }
.connect-app-body .connect-access-card dl { gap: 10px; }
.connect-app-body .connect-access-card dl > div { background: var(--panel); border-radius: 10px; padding: 14px; border: 1px solid var(--line); }
.connect-app-body .connect-access-card dt { font-weight: 600; color: var(--ink); }
.connect-app-body .connect-access-card dd { margin: 8px 0 0; font-size: 12px; line-height: 1.65; color: var(--muted); }
.connect-app-body .connect-access-actions { margin-top: 16px; }
.connect-admin-page:not([hidden]) { display: flex; flex-direction: column; }
.connect-summary-card.selected { border-color: var(--orange); box-shadow: inset 0 0 0 1px var(--orange); }
.connect-summary-card button { width: 100%; margin-top: 14px; }
.connect-summary-card button[aria-pressed="true"] { color: var(--orange); }
.connect-admin-page #connect-app-list > [hidden] { display: none; }
.connect-admin-page .connect-gate-guide { margin-bottom: 22px; }
.connect-admin-page .connect-register-panel { margin-bottom: 20px; }
.app-workspace-dialog fieldset { min-width: 0; border: 1px solid var(--line); border-radius: 14px; margin: 22px 0; padding: 18px; }
.app-workspace-dialog legend { padding: 0 8px; font-weight: 600; font-size: 15px; }
.app-workspace-dialog legend span { color: var(--orange); font-size: 12px; margin-right: 10px; }
.app-workspace-dialog .workspace-status { border-radius: 10px; padding: 14px 16px; background: var(--panel); border: 1px solid var(--line); font-size: 13px; }
.app-workspace-dialog .workspace-shortcuts h3, .workspace-approval h3 { font-size: 14px; }
.workspace-shortcuts a { border: 1px solid var(--line); padding: 8px 12px; border-radius: 8px; font-size: 13px; text-decoration: none; }
.app-workspace-dialog .workspace-save { padding-top: 16px; border-top: 1px solid var(--line); }
.workspace-approval { padding: 18px; border-radius: 12px; background: var(--panel); }
.connect-app-card summary:focus-visible, .connect-secondary summary:focus-visible { outline: 2px solid var(--orange); outline-offset: -3px; }
@media (max-width: 680px) {
  .connect-intro .connect-gate-guide { grid-template-columns: 1fr; }
  .connect-toolbar { align-items: stretch; flex-direction: column; }
  .connect-toolbar select { width: 100%; }
  .connect-app-card > summary { padding: 16px; gap: 10px; flex-wrap: wrap; }
  .connect-app-copy { flex-basis: calc(100% - 70px); }
  .connect-app-card > summary > .badge { margin-left: 56px; }
  .connect-app-card > summary::after { margin-left: auto; }
  .connect-app-body { padding: 0 14px 16px; }
  .connect-workspace-entry { align-items: stretch; flex-direction: column; }
  .connect-secondary > summary span { display: block; margin: 8px 0 0; }
  .app-workspace-dialog { padding: 18px; }
  .app-workspace-dialog fieldset { padding: 12px; }
}

.connect-page a, .connect-admin-page a { color: var(--orange); }
@media (max-width: 680px) {
  .connect-intro .panel-head { flex-direction: column; align-items: flex-start; }
  .connect-intro .panel-head > a { white-space: nowrap; }
  .connect-intro .connect-gate-guide { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .connect-intro .connect-gate-guide li { flex-direction: column; align-items: flex-start; padding: 10px; gap: 8px; }
  .connect-intro .connect-gate-guide small { display: none; }
  .connect-intro .connect-gate-guide strong { font-size: 12px; }
}

.oem-federation-peers { display: grid; gap: 10px; margin: 20px 0; }
.oem-federation-peer { display: flex; align-items: center; gap: 12px; padding: 14px; border: 1px solid var(--line, #ddd); flex-wrap: wrap; }
.oem-federation-peer span { flex: 1; min-width: 160px; overflow-wrap: anywhere; }
.oem-federation-peer small { color: var(--muted, #666); }
.oem-federation-peer input[type="checkbox"] { width: 18px; height: 18px; flex: 0 0 18px; margin: 0; }
